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 step = (tEnd - tStart) / 32.0;',
'float t = tStart + step * 0.5;', 'float t = tStart + step * 0.5;',
'float tau = 0.0;', 'float tau = 0.0;',
'float hitsTerrain = hitsInner;',
'vec3 scatter = vec3(0.0);', 'vec3 scatter = vec3(0.0);',
'float cosTA = dot(rd, uSunDir);', 'float cosTA = dot(rd, uSunDir);',
'float cosTM = dot(rd, uMoonDir);', 'float cosTM = dot(rd, uMoonDir);',
@@ -366,6 +367,7 @@ var FRAG_SRC = [
'for (int i = 0; i < 32; i++) {', 'for (int i = 0; i < 32; i++) {',
'vec3 p = ro + rd * t;', 'vec3 p = ro + rd * t;',
'float alt = max(0.0, length(p - C) - R);', '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 dens = exp(-alt / Hs) / Hs;',
'float dtau = uAtmoDensity * dens * step;', 'float dtau = uAtmoDensity * dens * step;',
'float transBefore = exp(-tau);', 'float transBefore = exp(-tau);',
@@ -376,7 +378,7 @@ var FRAG_SRC = [
't += step;', 't += step;',
'}', '}',
'float rawAlpha = clamp(1.0 - exp(-tau), 0.0, 1.0);', '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);', 'vec3 col = scatter / max(rawAlpha, 1e-4);',
'gl_FragColor = vec4(col, alpha);', 'gl_FragColor = vec4(col, alpha);',
'return;', 'return;',