uniform sampler2D uTexSceneDepth;
uniform vec3 uInverseRatioDepth;
uniform vec3 uInverseRatioMain;
-uniform bool uDepthCompare;
+uniform int uDepthMode;
+uniform float uDitherCutoff;
float linear_depth( float depth, float near, float far ) {
float z = depth * 2.0 - 1.0;
return (2.0 * near * far) / (far + near - z * (far - near));
}
-void depth_compare_dither(){
- if( uDepthCompare ){
+void depth_compare_dither()
+{
+ if( uDepthMode == 1 )
+ {
vec2 back_coord = gl_FragCoord.xy * uInverseRatioMain.xy
* uInverseRatioDepth.xy;
float back_depth = texture( uTexSceneDepth, back_coord ).r;
if( step(0.0,diff)+dither<0.3 )
discard;
}
+
+ if( uDepthMode == 2 )
+ {
+ vec2 ssuv = gl_FragCoord.xy;
+ vec3 vDither = vec3( dot( vec2( 171.0, 231.0 ), ssuv) );
+ float dither = fract( vDither.g / 71.0 );
+ if( dither<uDitherCutoff ) discard;
+ }
}