acdream/src/AcDream.App/Rendering/Shaders
Erik e4bc6de7ba chore(sky): post-merge cleanups — CullFace save/restore + stale comments
Three small hygiene items flagged by external code-review reports
during the sky/weather investigation:

1. CullFace state leak in SkyRenderer.RenderPass.
   Disabled CullFace at the start of the sky pass without restoring it
   on exit. Benign today — the global convention in this codebase is
   CullFace=off and subsequent renderers (InstancedMeshRenderer,
   StaticMeshRenderer) explicitly enable on entry / disable on exit —
   but a future caller assuming culling stays on across the sky pass
   would have silently broken. Wrap with an IsEnabled save / Enable
   restore using TextRenderer.cs's pattern.

2. Stale comment in SubMeshGpu.SurfTranslucency doc.
   Said "the shader multiplies output alpha by (1 - x)". After commit
   97fc1b5 the shader uses translucency DIRECTLY as opacity per retail
   D3DPolyRender::SetSurface at 0x59c7a6 (decomp 425255-425260).
   Updated to reflect the current formula.

3. Stale comment in sky.frag header.
   Said "fragment.a = texture.a × (1 - uTransparency) × (1 - uSurfTranslucency)".
   Updated to "× uSurfTranslucency" with citation.

Not addressed: Report 2's "uLuminosity declared but never referenced"
claim. Verified false — the uniform was already removed; the only
remaining uLuminosity references are in comments documenting the
historical removal (sky.frag header line 13-14 explicitly says
"removed 2026-04-26"). Report 2 was reading stale content.

1314 tests pass.
2026-04-27 23:34:21 +02:00
..
debug_line.frag feat(ui): debug overlay + refined input controls 2026-04-17 18:45:38 +02:00
debug_line.vert feat(ui): debug overlay + refined input controls 2026-04-17 18:45:38 +02:00
mesh.frag fix(render): shader reserved-word + defensive SkyRenderer dat reads 2026-04-19 11:00:34 +02:00
mesh.vert feat(render): Phase G.1/G.2 — SceneLighting UBO + sky renderer + shader integration 2026-04-19 10:39:48 +02:00
mesh_instanced.frag fix(render): shader reserved-word + defensive SkyRenderer dat reads 2026-04-19 11:00:34 +02:00
mesh_instanced.vert feat(render): Phase G.1/G.2 — SceneLighting UBO + sky renderer + shader integration 2026-04-19 10:39:48 +02:00
particle.frag feat(render): Phase G.1 — billboard particle renderer for weather + spells 2026-04-19 10:42:05 +02:00
particle.vert feat(render): Phase G.1 — billboard particle renderer for weather + spells 2026-04-19 10:42:05 +02:00
sky.frag chore(sky): post-merge cleanups — CullFace save/restore + stale comments 2026-04-27 23:34:21 +02:00
sky.vert sky(phase-5b): port retail vertex fog onto sky meshes 2026-04-24 11:06:57 +02:00
terrain.frag feat(render): Phase G.1/G.2 — SceneLighting UBO + sky renderer + shader integration 2026-04-19 10:39:48 +02:00
terrain.vert sky(phase-8): retail-faithful night sky + README refresh 2026-04-24 20:34:36 +02:00
ui_text.frag feat(ui): debug overlay + refined input controls 2026-04-17 18:45:38 +02:00
ui_text.vert feat(ui): debug overlay + refined input controls 2026-04-17 18:45:38 +02:00