From 5146d1759957ffb039fdb96dd5268b3eea4db4a4 Mon Sep 17 00:00:00 2001 From: Richard Zink Date: Mon, 12 Oct 2026 17:09:04 +0200 Subject: [PATCH] atmosphere: apply haze to terrain rays that hit elevated terrain --- vendor/clouds3d.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vendor/clouds3d.js b/vendor/clouds3d.js index bef930a..0587cf9 100644 --- a/vendor/clouds3d.js +++ b/vendor/clouds3d.js @@ -358,6 +358,7 @@ var FRAG_SRC = [ 'float step = (tEnd - tStart) / 32.0;', 'float t = tStart + step * 0.5;', 'float tau = 0.0;', + 'float hitsTerrain = hitsInner;', 'vec3 scatter = vec3(0.0);', 'float cosTA = dot(rd, uSunDir);', 'float cosTM = dot(rd, uMoonDir);', @@ -366,6 +367,7 @@ var FRAG_SRC = [ 'for (int i = 0; i < 32; i++) {', 'vec3 p = ro + rd * t;', 'float alt = max(0.0, length(p - C) - R);', + 'if (uElevOn > 0.5 && alt < terrElev(p.xz) * uElevScale) hitsTerrain = 1.0;', 'float dens = exp(-alt / Hs) / Hs;', 'float dtau = uAtmoDensity * dens * step;', 'float transBefore = exp(-tau);', @@ -376,7 +378,7 @@ var FRAG_SRC = [ 't += step;', '}', 'float rawAlpha = clamp(1.0 - exp(-tau), 0.0, 1.0);', - 'float alpha = clamp(rawAlpha * uAtmoGain * hitsInner, 0.0, uAtmoMaxAlpha);', + 'float alpha = clamp(rawAlpha * uAtmoGain * hitsTerrain, 0.0, uAtmoMaxAlpha);', 'vec3 col = scatter / max(rawAlpha, 1e-4);', 'gl_FragColor = vec4(col, alpha);', 'return;',