acdream/src/AcDream.App/Rendering/Shaders
Erik cc42edc8e3 fix #427: sky drawn without fog like retail; world fog range is the keyframe's authored MinWorldFog/MaxWorldFog
Two April stand-ins, neither registered, met at the horizon from altitude as
a hard line between the dome's rim and the fog-coloured clear:

1. sky.frag fogged every non-additive sky layer with a 0.2 floor. Retail's
   GameSky::Draw @0x00506FF0 disables fixed-function fog around the whole
   sky draw unless an AdminEnvirons fog override is active (SetFFFogEnable(
   LScape::m_override_enabled ? 1 : 0)); additive layers stay unfogged via
   SetFFFogAlphaDisabled(1) at D3DPolyRender::SetSurface 0x59c882. The sky
   pass now sets ApplyFog only for (override active && !additive), with no
   floor.
2. WorldRenderFrameBuilder overwrote the authored fog range with one derived
   from the streaming window (538..2189 m always). Retail sets FOGSTART/
   FOGEND straight from the keyframe's MinWorldFog/MaxWorldFog
   (SkyDesc::GetWorldFog @0x00500CE0 -> SetFFFogProperties @0x005A2F70) with
   no draw-distance scaling; zfar is a constant 4000 m. The builder now
   leaves SceneLightingUbo.Build's values alone; ACDREAM_FOG_START_MULT /
   _END_MULT are deleted from RuntimeOptions.

Guards: SkyFogRuleTests (source-level, the sky renderer has no hermetic
harness); sky.frag.spv re-pinned in VulkanShaderManifestTests with the
reason. Research note 2026-04-23-sky-fog.md carries a correction banner.
App hermetic 6,070/0, Core 4,707/0 (Release). Owner look gate owed: night
and rain fog are now retail's shorter authored ranges.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 13:42:42 +02:00
..
spv fix #427: sky drawn without fog like retail; world fog range is the keyframe's authored MinWorldFog/MaxWorldFog 2026-08-23 13:42:42 +02:00
atmospheric_bloom_blur.frag feat(render): Atmospheric post stack runs in linear light; neutral preset is numerically the pack-off image (Campaign VM VM3) 2026-08-22 23:10:57 +02:00
atmospheric_bloom_blur.vert feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
atmospheric_bloom_downsample.frag feat(render): Atmospheric post stack runs in linear light; neutral preset is numerically the pack-off image (Campaign VM VM3) 2026-08-22 23:10:57 +02:00
atmospheric_bloom_downsample.vert feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
atmospheric_common.glsl feat(render): shader ABI v2 - AtmosphericFrame gains clock/wind blocks; caster pass binds it (Campaign VM VM6a) 2026-08-23 00:30:02 +02:00
atmospheric_filmic.frag fix(render): VM3 review fixes - pin the filmic decodes, re-derive vignette for linear, name the authored sun colour 2026-08-22 23:40:48 +02:00
atmospheric_filmic.vert feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
atmospheric_sun_occlusion.frag feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
atmospheric_sun_occlusion.vert feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
atmospheric_sun_rays.frag feat(render): Atmospheric post stack runs in linear light; neutral preset is numerically the pack-off image (Campaign VM VM3) 2026-08-22 23:10:57 +02:00
atmospheric_sun_rays.vert feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
atmospheric_volumetric.frag feat(render): Atmospheric post stack runs in linear light; neutral preset is numerically the pack-off image (Campaign VM VM3) 2026-08-22 23:10:57 +02:00
atmospheric_volumetric.vert feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
debug_line.frag feat(ui): debug overlay + refined input controls 2026-04-17 18:45:38 +02:00
debug_line.vert feat(render): put the retained UI and debug lines on both backends 2026-07-28 08:51:32 +02:00
directional_shadow_common.glsl feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
directional_shadow_receiver.glsl feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
directional_shadow_terrain.frag feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
directional_shadow_terrain.vert feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
directional_shadow_terrain_multiview.frag feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
directional_shadow_terrain_multiview.vert feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
directional_shadow_world_cutout.frag feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
directional_shadow_world_cutout.vert feat(render): weather-driven foliage wind for procedural scenery, shadows follow (Campaign VM VM6b) 2026-08-23 00:56:34 +02:00
directional_shadow_world_cutout_multiview.frag feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
directional_shadow_world_cutout_multiview.vert feat(render): weather-driven foliage wind for procedural scenery, shadows follow (Campaign VM VM6b) 2026-08-23 00:56:34 +02:00
directional_shadow_world_opaque.frag feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
directional_shadow_world_opaque.vert feat(render): weather-driven foliage wind for procedural scenery, shadows follow (Campaign VM VM6b) 2026-08-23 00:56:34 +02:00
directional_shadow_world_opaque_multiview.frag feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
directional_shadow_world_opaque_multiview.vert feat(render): weather-driven foliage wind for procedural scenery, shadows follow (Campaign VM VM6b) 2026-08-23 00:56:34 +02:00
foliage_wind.glsl fix(render): production packed classifier carries the foliage flags; deferred-alpha replay keeps them (Campaign VM VM6 review 2) 2026-08-23 02:28:17 +02:00
mesh_atmospheric.frag feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
mesh_atmospheric.vert test(render): foliage-wind receiver fallback guard asserts branch shape; cascade-0 publish covered (Campaign VM VM6 review 5 nits) 2026-08-23 04:19:05 +02:00
mesh_detail.frag fix(render): detail overlay is fogged after the combine like retail; VM1 review fixes 2026-08-22 22:39:58 +02:00
mesh_detail.vert fix(render): detail overlay is fogged after the combine like retail; VM1 review fixes 2026-08-22 22:39:58 +02:00
mesh_modern.frag feat(render): V6e — move the world mesh's texture lookup to where Vulkan can express it 2026-07-28 09:21:22 +02:00
mesh_modern.vert feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00
particle.frag feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00
particle.vert feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00
particle_mesh.frag feat(render): V6e — both particle shaders cross the dialect 2026-07-28 09:26:13 +02:00
particle_mesh.vert fix(ui): restore radar, retail wield switching, and protection meshes 2026-07-14 20:52:45 +02:00
portal_depth.frag feat(render): Campaign V slice V6l commit 2 - the portal mask draws on Vulkan 2026-07-28 17:36:45 +02:00
portal_depth.vert feat(render): Campaign V slice V6l commit 2 - the portal mask draws on Vulkan 2026-07-28 17:36:45 +02:00
sky.frag fix #427: sky drawn without fog like retail; world fog range is the keyframe's authored MinWorldFog/MaxWorldFog 2026-08-23 13:42:42 +02:00
sky.vert feat(render): V6e — the sky's uniforms become a buffer and its texture a table slot 2026-07-28 09:54:13 +02:00
terrain_atmospheric.frag feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
terrain_atmospheric.vert test(render): foliage-wind receiver fallback guard asserts branch shape; cascade-0 publish covered (Campaign VM VM6 review 5 nits) 2026-08-23 04:19:05 +02:00
terrain_modern.frag feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00
terrain_modern.vert fix(render): Campaign V slice V6i-2 commit 1 — the terrain clip block reaches set 1 2026-07-28 13:31:13 +02:00
ui_text.frag feat(render): put the retained UI and debug lines on both backends 2026-07-28 08:51:32 +02:00
ui_text.vert feat(render): put the retained UI and debug lines on both backends 2026-07-28 08:51:32 +02:00
vk_probe.frag feat(render): Campaign V slice V6c - SPIR-V, pipelines, passes, and a Vulkan frame that draws 2026-07-28 08:17:24 +02:00
vk_probe.vert feat(render): Campaign V slice V6c - SPIR-V, pipelines, passes, and a Vulkan frame that draws 2026-07-28 08:17:24 +02:00