diff options
Diffstat (limited to 'source/blender/draw/engines/overlay/shaders/paint_texture_frag.glsl')
-rw-r--r-- | source/blender/draw/engines/overlay/shaders/paint_texture_frag.glsl | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/source/blender/draw/engines/overlay/shaders/paint_texture_frag.glsl b/source/blender/draw/engines/overlay/shaders/paint_texture_frag.glsl new file mode 100644 index 00000000000..4d0692039a4 --- /dev/null +++ b/source/blender/draw/engines/overlay/shaders/paint_texture_frag.glsl @@ -0,0 +1,23 @@ +in vec2 uv_interp; + +out vec4 fragColor; + +uniform float opacity = 1.0; + +uniform sampler2D maskImage; +uniform bool maskImagePremultiplied; +uniform vec3 maskColor; +uniform bool maskInvertStencil; + +void main() +{ + vec4 mask = vec4(texture_read_as_srgb(maskImage, maskImagePremultiplied, uv_interp).rgb, 1.0); + if (maskInvertStencil) { + mask.rgb = 1.0 - mask.rgb; + } + float mask_step = smoothstep(0, 3.0, mask.r + mask.g + mask.b); + mask.rgb *= maskColor; + mask.a = mask_step * opacity; + + fragColor = mask; +} |