clouds: occlude clouds only for terrain above cloud deck
This commit is contained in:
1 parent
8d4ea42e2f
commit
3cc741e86f
1 file changed
+4
-3
Vendored
+4
-3
@@ -674,8 +674,9 @@ var FRAG_SRC = [
|
||||
'if (distTex.a > 0.5) {',
|
||||
'float distNorm = (distTex.r * 65536.0 + distTex.g * 256.0 + distTex.b) / 16777215.0;',
|
||||
'float dist = distNorm * max(1.0, uFarPlane);',
|
||||
'if (dist < tEnter - 0.05) { gl_FragColor = vec4(0.0); return; }',
|
||||
'tExit = min(tExit, max(tEnter, dist));',
|
||||
'vec3 pT = uCamPos + rd * dist;',
|
||||
'float terrainAlt = pT.y + earthDrop(pT.xz);',
|
||||
'if (terrainAlt > uCloudTop + 0.05) { gl_FragColor = vec4(0.0); return; }',
|
||||
'}',
|
||||
'}',
|
||||
'tExit = min(tExit, tEnter + 30.0);',
|
||||
@@ -6855,7 +6856,7 @@ window.clouds3dRender = function(target) {
|
||||
gl.activeTexture(gl.TEXTURE7);
|
||||
gl.bindTexture(gl.TEXTURE_2D, terrainDistTex || null);
|
||||
gl.uniform1i(s.uTerrainDistTex, 7);
|
||||
gl.uniform1f(s.uTerrainDistOk, 0.0); // test: clouds ignore terrain occlusion
|
||||
gl.uniform1f(s.uTerrainDistOk, (terrainDistOk && terrainDistTex) ? 1.0 : 0.0);
|
||||
gl.disable(gl.DEPTH_TEST);
|
||||
gl.depthMask(false);
|
||||
gl.enable(gl.BLEND);
|
||||
|
||||
Reference in new issue
Block a user