Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/draw/engines/gpencil/shaders/gpencil_zdepth_mix_frag.glsl')
-rw-r--r--source/blender/draw/engines/gpencil/shaders/gpencil_zdepth_mix_frag.glsl25
1 files changed, 25 insertions, 0 deletions
diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_zdepth_mix_frag.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_zdepth_mix_frag.glsl
index eb64947999e..4497828fbd5 100644
--- a/source/blender/draw/engines/gpencil/shaders/gpencil_zdepth_mix_frag.glsl
+++ b/source/blender/draw/engines/gpencil/shaders/gpencil_zdepth_mix_frag.glsl
@@ -5,6 +5,8 @@ out vec4 FragColor;
uniform sampler2D strokeColor;
uniform sampler2D strokeDepth;
uniform int tonemapping;
+uniform vec4 select_color;
+uniform int do_select;
float srgb_to_linearrgb(float c)
{
@@ -26,6 +28,20 @@ float linearrgb_to_srgb(float c)
}
}
+bool check_borders(ivec2 uv, int size)
+{
+ for (int x = -size; x <= size; x++) {
+ for (int y = -size; y <= size; y++) {
+ vec4 stroke_color = texelFetch(strokeColor, ivec2(uv.x + x, uv.y + y), 0).rgba;
+ if (stroke_color.a > 0) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+}
+
void main()
{
ivec2 uv = ivec2(gl_FragCoord.xy);
@@ -46,4 +62,13 @@ void main()
FragColor = clamp(stroke_color, 0.0, 1.0);
gl_FragDepth = clamp(stroke_depth, 0.0, 1.0);
+
+ if (do_select == 1) {
+ if (stroke_color.a == 0) {
+ if (check_borders(uv, 1)) {
+ FragColor = select_color;
+ gl_FragDepth = 0.000001;
+ }
+ }
+ }
}