render3d: under a fog wall the volumetric air is marched only to it, SSGI stops where it is solid, and card casters that fill the wall stop rebuilding
The volumetric pass marched 800 m in a fixed number of steps whatever the wall: it now stops at the wall with steps in proportion (at least 8) - 0.57 -> 0.33 ms at 30 m by the pass timers. SSGI skipped only past 900 m; it now also skips past 0.85 of a wall, where the fog is solid (u_ao_far). applyFog samples the fog's colour only where its weight is above zero. A card layer whose casters inside the wall are 80% or more of it (a kilometre's wall) casts from its static list and is not refiltered and re-uploaded every 4 m of camera motion. Fog off: the frame unchanged (0 pixels over 8). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
5b3cfac48e
commit
329439cf61
32 changed files with 36 additions and 14 deletions
|
|
@ -319,7 +319,7 @@ vec3 applyFog(vec3 col, vec3 wpos, float dist) {
|
|||
if (u_fog_wall > 0.0) {
|
||||
// full by 0.85 of the wall, so whatever is cut at the wall is cut inside solid fog
|
||||
float w = smoothstep(0.3 * u_fog_wall, 0.85 * u_fog_wall, dist);
|
||||
col = mix(col, fogWallCol(dir), w);
|
||||
if (w > 0.0) col = mix(col, fogWallCol(dir), w);
|
||||
}
|
||||
return col;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue