- Render graph passes kept one PassData between them: the builder put it back in its pool as each pass's
usingended, so the next pass filled the same object and every recorded draw ran with the last one's values (Nitrate's eleven atmosphere passes all drew its last pass, with beams off). Pass data now goes back to the pool after the graph has run, as Unity's does. - Physical cameras' lens shift and gate fit change the projection (CameraAbi, API 59: the shift, the sensor's aspect and the gate fit; the frame's vertical field of view comes from the sensor fitted to the frame), in Camera.projectionMatrix too; focalLength follows the field of view.
- The main light's shadows reach as far as the URP asset's Shadow Distance (or QualitySettings.shadowDistance a script sets;
RenderSetShadowDistance, API 60); Tassix's 50 m stays the default. - Project shaders' materials cast shadows when their shader has a ShadowCaster pass or a fallback with one (not unlit, sprite or UI fallbacks), drawn into the shadow map as their mesh (their vertex functions and alpha tests aren't run there yet). Shader Graphs get a ShadowCaster pass when their target casts shadows.
- A camera's render graph carries the size it was recorded for (API 61); the first frame of another size (a screenshot's) scales the graph's textures instead of drawing into a corner.
- Nitrate's frame now matches its README's: the mill against the moon, fog from the figure's plane, the water mirror, the light shafts through the sails' shadows, the depth-blur ladder and the film print. Its lantern glow is pinker and its shafts softer than Unity's. Checked by lens_shift_and_gate_fit_move_and_size_the_frame and Nitrate's debug views (shadow at depth, beams only, fog amount).
Phase 6 · Slice 67 ·