'Using gl_FragDepth in WebGL

I am writing a 3D application in webgl, and need to provide my own depth data that is contained within a texture, my current code does this:

VS:

    varying vec2 vUv;

    void main() {
        vUv = uv;
    }

FS:

    uniform sampler2D depthTex;

    varying vec2 vUv;

    void main() {
        gl_FragDepth = texture2D(depthTex, vUv).r;
    }

however gl_FragDepth is disabled in opengl-es (and therefor webgl) is there anyway to somehow enable it, or any way to provide my own depth data that doesnt involve heavy manipulation of render targets?



Solution 1:[1]

The EXT_frag_depth extension enables the use of gl_FragDepthEXT. You can check if your browser supports it here. At the moment it's only supported in Firefox.

The extension can be loaded using

gl.getExtension("EXT_frag_depth");

And you can check if it is available programatically using

gl.getSupportedExtensions().indexOf("EXT_frag_depth") >= 0

Solution 2:[2]

WebGL2 supports gl_FragDepth as core functionality, and the previously mentioned EXT_frag_depth extension is therefore no longer available for WebGL2.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Patrik Oldsberg
Solution 2