atmosphere: apply haze to terrain rays that hit elevated terrain
This commit is contained in:
1 parent
97c78ceca3
commit
5146d17599
1 file changed
+3
-1
Vendored
+3
-1
@@ -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;',
|
||||||
|
|||||||
Reference in new issue
Block a user