atmosphere: apply haze to terrain rays that hit elevated terrain

This commit is contained in:
Richard Zink committed 2026-10-12 17:09:04 +02:00
1 parent 97c78ceca3
commit 5146d17599
1 file changed
+3 -1
+3 -1
View File
@@ -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;',