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) {',
|
'if (distTex.a > 0.5) {',
|
||||||
'float distNorm = (distTex.r * 65536.0 + distTex.g * 256.0 + distTex.b) / 16777215.0;',
|
'float distNorm = (distTex.r * 65536.0 + distTex.g * 256.0 + distTex.b) / 16777215.0;',
|
||||||
'float dist = distNorm * max(1.0, uFarPlane);',
|
'float dist = distNorm * max(1.0, uFarPlane);',
|
||||||
'if (dist < tEnter - 0.05) { gl_FragColor = vec4(0.0); return; }',
|
'vec3 pT = uCamPos + rd * dist;',
|
||||||
'tExit = min(tExit, max(tEnter, 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);',
|
'tExit = min(tExit, tEnter + 30.0);',
|
||||||
@@ -6855,7 +6856,7 @@ window.clouds3dRender = function(target) {
|
|||||||
gl.activeTexture(gl.TEXTURE7);
|
gl.activeTexture(gl.TEXTURE7);
|
||||||
gl.bindTexture(gl.TEXTURE_2D, terrainDistTex || null);
|
gl.bindTexture(gl.TEXTURE_2D, terrainDistTex || null);
|
||||||
gl.uniform1i(s.uTerrainDistTex, 7);
|
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.disable(gl.DEPTH_TEST);
|
||||||
gl.depthMask(false);
|
gl.depthMask(false);
|
||||||
gl.enable(gl.BLEND);
|
gl.enable(gl.BLEND);
|
||||||
|
|||||||
Reference in new issue
Block a user