比较当前深度与较旧深度

时间:2018-03-16 13:08:00

标签: three.js

我们有一个渲染到WebGLRenderTarget的场景,其深度纹理被传递给ShaderMaterial在不同场景中的tDepth。以下是ShaderMaterial的片段着色器。它进行深度检查,然后渲染到画布上。 (我可以禁用autoclear的深度并让它工作,但我想要一个自定义深度函数,因此代码)。

varying vec2 vUv; 
uniform sampler2D tDepth;
uniform float width;
uniform float height;

void main() {
    vec2 clipCoord = vec2(gl_FragCoord.x / width , gl_FragCoord.y / height)
    float oldDepth = texture2D(tDepth, clipCoord).r; // Gets wrong value.
    float currentDepth = gl_FragCoord.z;
    if (oldDepth > currentDepth) {
        gl_FragColor = vec4(1,0,0,0);
    } else {
        discard;
    }
}

如何获得oldDepth的正确值?

0 个答案:

没有答案