[Bf-blender-cvs] [dc689fe407a] blender2.8: GP: Redo blur z-depth fix

Antonioya noreply at git.blender.org
Tue Oct 2 11:09:49 CEST 2018


Commit: dc689fe407ace5122a59d48726695aa8aa74a142
Author: Antonioya
Date:   Tue Oct 2 11:09:17 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBdc689fe407ace5122a59d48726695aa8aa74a142

GP: Redo blur z-depth fix

The problem with previous fix was that only the original pixels were blurred, but the surrounding pixels no.

===================================================================

M	source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_blur_frag.glsl

===================================================================

diff --git a/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_blur_frag.glsl b/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_blur_frag.glsl
index a96eaf05972..c2bf1dbc1a7 100644
--- a/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_blur_frag.glsl
+++ b/source/blender/draw/engines/gpencil/shaders/fx/gpencil_fx_blur_frag.glsl
@@ -25,8 +25,21 @@ void main()
 	float dy = (ProjectionMatrix[3][3] == 0.0) ? (noffset[1] / (nloc.z * defaultpixsize)) : (noffset[1] / defaultpixsize);
 
 	/* apply blurring, using a 9-tap filter with predefined gaussian weights */
-	/* depth */
-	gl_FragDepth = texelFetch(strokeDepth, ivec2(uv.x, uv.y), 0).r;
+	/* depth (get the minimum value of the surrounding pixels) */
+    float outdepth = 0;
+    outdepth = texelFetch(strokeDepth, ivec2(uv.x - 1.0 * dx, uv.y + 1.0 * dy), 0).r;
+    outdepth = min(outdepth, texelFetch(strokeDepth, ivec2(uv.x - 0.0 * dx, uv.y + 1.0 * dy), 0).r);
+    outdepth = min(outdepth, texelFetch(strokeDepth, ivec2(uv.x + 1.0 * dx, uv.y + 1.0 * dy), 0).r);
+    outdepth = min(outdepth, texelFetch(strokeDepth, ivec2(uv.x - 1.0 * dx, uv.y + 0.0 * dy), 0).r);
+
+    outdepth = min(outdepth, texelFetch(strokeDepth, ivec2(uv.x, uv.y), 0).r);
+
+    outdepth = min(outdepth, texelFetch(strokeDepth, ivec2(uv.x + 1.0 * dx, uv.y + 0.0 * dy), 0).r);
+    outdepth = min(outdepth, texelFetch(strokeDepth, ivec2(uv.x - 1.0 * dx, uv.y - 1.0 * dy), 0).r);
+    outdepth = min(outdepth, texelFetch(strokeDepth, ivec2(uv.x + 0.0 * dx, uv.y - 1.0 * dy), 0).r);
+    outdepth = min(outdepth, texelFetch(strokeDepth, ivec2(uv.x + 1.0 * dx, uv.y - 1.0 * dy), 0).r);
+
+    gl_FragDepth = outdepth;
 
 	/* color */
 	vec4 outcolor = vec4(0.0);



More information about the Bf-blender-cvs mailing list