crates/shaderlab(tassix_shaderlab): ShaderLab parsed (properties with their defaults and attributes, Category, SubShader and pass tags, render state fixed or from properties, inherited down, CGPROGRAM/HLSLPROGRAM with the shader's and subshader's includes, keyword sets). Programs are rewritten into what DXC takes (sampler2D split into a texture and its sampler, DX9 output semantics, vertex inputs pinned to the locations the renderer feeds, packed colors and sprite UVs decoded), compiled to SPIR-V with DXC (hassle-rs;cargo xtask buildfetches dxcompiler.dll beside the player), to WGSL with naga, and reflected (uniform blocks with members, offsets and types; textures; samplers; vertex inputs).- Tassix's own include files stand in for Unity's: TassixCore (Unity's built-ins in a per-camera and a per-draw buffer, matrices, DX9 sampling functions), UnityCG.cginc, UnityUI.cginc and URP's Core.hlsl family. Other Unity includes are empty, with a warning.
- Shader.Find and imported materials find project .shader files by name (the runtime indexes them); the native side parses them and describes their properties, queue and defaults for Material. Materials send every property and keyword; a material's variant compiles the first time it draws. Uniforms are packed as Unity packs them (colors linear; textures' _ST, _TexelSize, _HDR; Shader.SetGlobal* for what the material doesn't set).
- The renderer draws custom materials' items per view with their own pipelines (ShaderLab's Blend, ZWrite, ZTest flipped for reverse-Z, Cull, ColorMask), one draw per forward pass, outside GPU culling and shadow casting. UI batches take a graphic's project-shader material, with the UI's vertex layout (uv1 and uv2 added to UI vertices). _CameraSortingLayerTexture, _CameraOpaqueTexture and _GrabTexture are the scene behind the UI: while a frame needs it, views draw into a texture of their own, captured before the overlay canvases at URP 2D's downsampling and presented at the end.
- Compiled programs are kept in the asset cache, keyed by the expanded source, entry points and defines; DXC loads only on a miss.
- Checked: render tests (programs, uniforms, blending, fallback, the backdrop's orientation), compile and cache tests, an e2e test (a project shader on a quad and a UI Image, with a global), the corpus: Beltz's background, belts and frosted glass draw with their own shaders; all five corpus shaders compile.
- Not yet: surface shaders, GrabPass passes, fixed-function passes, UsePass, shadow casters, project shaders on particles, texture defaults other than white.
Phase 6 · Slice 40 ·