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 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;',
|
||||
|
||||
Reference in new issue
Block a user