Updates
Progress, a slice at a time.
Every slice that lands is written up in the plan with what it does, how it was checked, and what's next. These are those write-ups, newest first.
Bindless materials
crates/render/src/bindless.rs: on devices with texture binding arrays and non-uniform indexing (requested when the adapter has them; TASSIX_BINDLESS=0 opts out), the surface pipelines read every material texture from…
Mesh LODs
crates/render/src/simplify.rs: our own simplifier, quadric error metrics with half-edge collapses (a vertex merges into a neighbor, so every level indexes the original vertices). Border and seam vertices stay…
TextMeshPro distance field effects
A font asset's SDF atlas: glyphs rasterized at 48 px with 6 px of padding, turned into signed distances by an exact Euclidean distance transform (Felzenszwalb and Huttenlocher),…
Particle collision, noise and trails
Collision module (Planes and World): a particle crossing a plane or a collider (a raycast along its step, offset by its radius) stops at the contact, its velocity's…
Input System interactions
IInputInteraction and InputInteractionContext (Started, Performed and its stay-started/stay-performed forms, Canceled, Waiting, SetTimeout, ControlIsActuated, ComputeMagnitude): interactions listed on bindings and…
Animator layers, interruption, behaviours and root motion
A new Unity scene (NEAnimAdvanced, built by SceneSetup) and the animator_advanced scenario recorded in Unity, matched exactly (48 scenarios pass): StateMachineBehaviours (loaded from the controller, copied per…
Sprite lights and soft 2D shadows
Sprite lights (Light2D.LightType.Sprite) draw their lightCookieSprite: the sprite's colors and alpha over its box (pivot, pixels per unit, the light's scale and rotation), with no falloff; a point…
Agent avoidance
NavMeshAvoidance.cs: after all agents step, overlapping agents are pushed apart along the navmesh (a few relaxation passes), then each agent picks its next velocity by adaptive sampling around…
Cooked assets and streaming
crates/assets (tassix_assets): imported models (nodes, meshes, materials, textures with shared images) and decoded images are written as rkyv archives behind a small header (magic, cook version, kind), and…
Benchmark budgets and Unity comparison
bench/scenes: 10,000 scripted spinning cubes (simulated, and rendered at 1280x720), a city of 5,184 towers flown through at street level (rendered with shadows, with and without GPU culling),…
GPU culling and indirect draws
crates/render/src/cull.rs and cull.wgsl: each frame the shared opaque runs' instances go through a compute pass per view: bounding spheres (mesh bounds computed at upload, scaled by the instance's…
LODGroups and culling masks
Draw items carry a view mask: the renderer shares one set of opaque runs for items every view draws and gives the others runs per view; shadows come…
The C# Job System and Collections
tassix_jobs grows a dependency-ordered job scheduler (handles): a job's batches run on the rayon pool once the jobs it depends on finish; handles complete, combine and are never…
Unity.Mathematics
A Unity.Mathematics assembly (same name and namespace as the package): the vector and matrix types over bool, int, uint, float, double and half come from dotnet/Unity.Mathematics/generate.py (constructors, conversions…
Off-mesh links
Links reach the native side (NavMesh.AddLink/RemoveLink, the NavMeshLink component, API 31): paths search a graph whose nodes are the start, the end and the links' ends, with walks…
2D shadows and normal maps
ShadowCaster2D casts: its outline (a shape path; a sprite renderer's bounds, where Unity's editor takes the sprite's own outline; or, as Unity falls back, its renderer's bounds or…
2D lights
Sorting layers are real: the project's TagManager layers (Unity scenes, the MCP's projects, the conformance project), with Unity's IDs (saved unsigned), names and values relative to Default; renderers…
Navigation
A new tassix_navigation crate vendors Recast Navigation 1.6.0 (zlib: Recast and Detour, unmodified) behind our own C shim. It bakes as Unity's bakes show: voxels a third of…
Particles
ParticleSystem simulates on the CPU in managed code, after LateUpdate: the main module, emission by time and distance with bursts (cycles, intervals, probability), and the common shapes; velocity,…
URP post-processing
New assemblies with Unity's names: Unity.RenderPipelines.Core.Runtime: Volume, VolumeProfile, VolumeComponent, every common VolumeParameter type, VolumeManager and VolumeStack; Unity.RenderPipelines.Universal.Runtime…
Cubemaps and reflection probes
Cubemap: six faces in Unity's order with row 0 at the top; SetPixel/GetPixel/SetPixels/GetPixels store colors as the format does (8-bit rounding, half floats); mipmaps; Apply uploads half floats,…
The editor’s RenderSettings and skyboxes
The MCP editor keeps a scene's RenderSettings: a set_render_settings command (undoable and reviewable, checked against RenderSettings' property names; null resets one); scene_open reads them from .unity scenes and…
PBR maps and RenderSettings
Material maps: normal maps (with _BumpScale / glTF's scale), in a tangent frame computed per mesh on upload with Unity's handedness; metallic maps (Standard's and URP's R metallic,…
Text entry and dropdowns
InputField and TMP_InputField, sharing one editing core: typing with validation by content type (integer, decimal, alphanumeric, name, email; TMP's digit, regex and custom validators) and the character limit;…