- The custom shaders' per-camera buffer carries the view's own shading data: the main light's shadow matrix, strength, softness, biases and fade distance, and the point and spot lights (position and range, color, spot direction and cone); the shadow map is bound beside it, loaded as floats and compared in the program (3x3 when soft), as Tassix's shading does.
- Built-in includes: SHADOW_COORDS, TRANSFER_SHADOW (from
v.vertex, as Unity's macros), SHADOW_ATTENUATION, LIGHTING_COORDS, UNITY_LIGHT_ATTENUATION and the rest sample the main light's shadows; unity_4LightPos*, unity_4LightAtten0, unity_LightColor and Shade4PointLights give the first four point lights. - URP includes: TransformWorldToShadowCoord, GetMainLight with shadow coordinates, MainLightRealtimeShadow, GetAdditionalLightsCount and GetAdditionalLight (Tassix's falloff and spot cone), LIGHT_LOOP_BEGIN/END; UniversalFragmentPBR and UniversalFragmentBlinnPhong add the additional lights and shadows. _MAIN_LIGHT_SHADOWS and _ADDITIONAL_LIGHTS are on for every variant, as URP turns them on.
- GrabPass: its texture (named, or _GrabTexture) is the backdrop; a view stops its pass before its first transparent item reading the backdrop to capture the scene so far.
- Checked: an e2e test (a URP shader lit by a point light; a cube's shadow on a wall under URP and built-in shaders; a GrabPass inverting the wall behind a quad); the corpus shaders compile; conformance unchanged.
- Not yet: point and spot light shadows, ForwardAdd passes, GrabPasses of opaque items (they see the last capture), fog through the shaders' fog macros, reflections.
- Next: whatever the corpus asks for next.
Phase 6 · Slice 44 ·