|
@@ -13,6 +13,8 @@ export default /* glsl */`
|
|
|
#include <logdepthbuf_pars_fragment>
|
|
|
#include <clipping_planes_pars_fragment>
|
|
|
|
|
|
+varying vec2 vHighPrecisionZW;
|
|
|
+
|
|
|
void main() {
|
|
|
|
|
|
#include <clipping_planes_fragment>
|
|
@@ -31,13 +33,16 @@ void main() {
|
|
|
|
|
|
#include <logdepthbuf_fragment>
|
|
|
|
|
|
+ // Higher precision equivalent of gl_FragCoord.z. This assumes depthRange has been left to its default values.
|
|
|
+ float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;
|
|
|
+
|
|
|
#if DEPTH_PACKING == 3200
|
|
|
|
|
|
- gl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );
|
|
|
+ gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );
|
|
|
|
|
|
#elif DEPTH_PACKING == 3201
|
|
|
|
|
|
- gl_FragColor = packDepthToRGBA( gl_FragCoord.z );
|
|
|
+ gl_FragColor = packDepthToRGBA( fragCoordZ );
|
|
|
|
|
|
#endif
|
|
|
|