diff --git a/vendor/clouds3d.js b/vendor/clouds3d.js index e37e024..3ccaf5f 100644 --- a/vendor/clouds3d.js +++ b/vendor/clouds3d.js @@ -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);