[Bf-blender-cvs] [f64db794ee6] temp-gpencil-drw-engine: GPencil: Add monochromatic alpha estimation for blend layers

Clément Foucault noreply at git.blender.org
Mon Jul 1 12:21:00 CEST 2019


Commit: f64db794ee690f05905ace0a66d81d2e75549b90
Author: Clément Foucault
Date:   Mon Jul 1 12:20:41 2019 +0200
Branches: temp-gpencil-drw-engine
https://developer.blender.org/rBf64db794ee690f05905ace0a66d81d2e75549b90

GPencil: Add monochromatic alpha estimation for blend layers

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

M	source/blender/draw/engines/gpencil/shaders/gpencil_blend_frag.glsl

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

diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_blend_frag.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_blend_frag.glsl
index 0596304d4b9..240d2091a51 100644
--- a/source/blender/draw/engines/gpencil/shaders/gpencil_blend_frag.glsl
+++ b/source/blender/draw/engines/gpencil/shaders/gpencil_blend_frag.glsl
@@ -39,36 +39,33 @@ void main()
        * */
       src.rgb = mix(vec3(0.5), src.rgb, src.a);
       vec3 q0 = vec3(greaterThanEqual(src.rgb, vec3(0.5)));
-      vec3 q1 = ((q0 - 0.5) * 2.0);
+      vec3 q1 = q0 * 2.0 - 1.0;
       vec3 src2 = 2.0 * src.rgb;
       FragColor0.rgb = src2 * q0 - q0;
-      FragColor0.a = 0.0;
       FragColor1.rgb = 2.0 * q0 - src2 * q1;
-      FragColor1.a = 1.0;
       break;
     case MODE_ADD:
       FragColor0.rgb = src.rgb * src.a;
-      FragColor0.a = 0.0;
-      FragColor1 = vec4(1.0);
+      FragColor1.rgb = vec3(1.0);
       break;
     case MODE_SUB:
       FragColor0.rgb = -src.rgb * src.a;
-      FragColor0.a = 0.0;
-      FragColor1 = vec4(1.0);
+      FragColor1.rgb = vec3(1.0);
       break;
     case MODE_MULTIPLY:
-      FragColor0 = vec4(0.0);
+      FragColor0.rgb = vec3(0.0);
       FragColor1.rgb = mix(vec3(1.0), src.rgb, src.a);
-      FragColor1.a = 1.0;
       break;
     case MODE_DIVIDE:
-      FragColor0 = vec4(0.0);
+      FragColor0.rgb = vec3(0.0);
       FragColor1.rgb = 1.0 / mix(vec3(1.0), src.rgb, src.a);
-      FragColor1.a = 1.0;
       break;
     default:
       FragColor0 = vec4(0.0);
       FragColor1 = vec4(1.0);
       break;
   }
+
+  FragColor0.a = 1.0 - clamp(dot(vec3(1.0 / 3.0), FragColor1.rgb), 0.0, 1.0);
+  FragColor1.a = 1.0 - FragColor0.a;
 }



More information about the Bf-blender-cvs mailing list