diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_fill_frag.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_fill_frag.glsl index 632c63a39aa..68671a00337 100644 --- a/source/blender/draw/engines/gpencil/shaders/gpencil_fill_frag.glsl +++ b/source/blender/draw/engines/gpencil/shaders/gpencil_fill_frag.glsl @@ -177,7 +177,7 @@ void main() /* set zdepth */ if (xraymode == GP_XRAY_FRONT) { - gl_FragDepth = 0.000001; + gl_FragDepth = min(0.000001, (gl_FragCoord.z / gl_FragCoord.w)); } else if (xraymode == GP_XRAY_3DSPACE) { /* if 3D mode, move slightly the fill to avoid z-fighting between stroke and fill on same stroke */ diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_point_geom.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_point_geom.glsl index 2fb48ac5147..a80598d9b63 100644 --- a/source/blender/draw/engines/gpencil/shaders/gpencil_point_geom.glsl +++ b/source/blender/draw/engines/gpencil/shaders/gpencil_point_geom.glsl @@ -31,7 +31,7 @@ vec2 toScreenSpace(vec4 vertex) float getZdepth(vec4 point) { if (xraymode == GP_XRAY_FRONT) { - return 0.000001; + return min(0.000001, (point.z / point.w)); } if (xraymode == GP_XRAY_3DSPACE) { return (point.z / point.w); diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_geom.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_geom.glsl index 7e62d6f0d64..20b066019c8 100644 --- a/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_geom.glsl +++ b/source/blender/draw/engines/gpencil/shaders/gpencil_stroke_geom.glsl @@ -35,7 +35,7 @@ vec2 toScreenSpace(vec4 vertex) float getZdepth(vec4 point) { if (xraymode == GP_XRAY_FRONT) { - return 0.000001; + return min(0.000001, (point.z / point.w)); } if (xraymode == GP_XRAY_3DSPACE) { return (point.z / point.w);