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:
authorJeroen Bakker <jeroen@blender.org>2021-01-05 15:43:32 +0300
committerJeroen Bakker <jeroen@blender.org>2021-01-05 15:53:33 +0300
commit7cd6f667e33e60f3d53e465023bb75f90f499b07 (patch)
treef799d32f50aa4c84e0c446f7d95edf3f6e83b1ae /source/blender/draw/engines/overlay/shaders
parentf41de6dc46ad0849d93b72580fefffdde4546cba (diff)
Fix T84053: Mask overlay in image editor not working
The mask overlay wasn't part of the overlay engine. The reasoning nehind this was that more editors used the mask overlay and most of them used old drawing code. This patch adds the mask overlay drawing to the draw overlay engine. This code path will only be used by the image editor VSE, Compositor and Movie Clip editor will still use the previous method. During this patch some alternatives have been researched: 1. `ED_mask_draw_region`: this would lead to different code paths when drawing in the image editor, and some hacks to retrieve the correct framebuffer. 2. Add mask drawing to image engine: Would lead to incorrect color management when viewing the mask. 3. Add mask drawing to image engine and overlay engine: Would lead to duplicated code. 4. Add mask drawing to overlay engine and for combined overlay select the correct framebuffer. Option 4 was chosen as the exception (switching framebuffers) can be done without hacks. The code stays clean.
Diffstat (limited to 'source/blender/draw/engines/overlay/shaders')
-rw-r--r--source/blender/draw/engines/overlay/shaders/edit_uv_image_mask_frag.glsl14
-rw-r--r--source/blender/draw/engines/overlay/shaders/edit_uv_image_vert.glsl (renamed from source/blender/draw/engines/overlay/shaders/edit_uv_stencil_image_vert.glsl)0
2 files changed, 14 insertions, 0 deletions
diff --git a/source/blender/draw/engines/overlay/shaders/edit_uv_image_mask_frag.glsl b/source/blender/draw/engines/overlay/shaders/edit_uv_image_mask_frag.glsl
new file mode 100644
index 00000000000..0b579d6067c
--- /dev/null
+++ b/source/blender/draw/engines/overlay/shaders/edit_uv_image_mask_frag.glsl
@@ -0,0 +1,14 @@
+#pragma BLENDER_REQUIRE(common_colormanagement_lib.glsl)
+
+uniform sampler2D imgTexture;
+uniform vec4 color;
+
+in vec2 uvs;
+out vec4 fragColor;
+
+void main()
+{
+ vec2 uvs_clamped = clamp(uvs, 0.0, 1.0);
+ float mask_value = texture_read_as_linearrgb(imgTexture, true, uvs_clamped).r;
+ fragColor = vec4(color.rgb * mask_value, color.a);
+}
diff --git a/source/blender/draw/engines/overlay/shaders/edit_uv_stencil_image_vert.glsl b/source/blender/draw/engines/overlay/shaders/edit_uv_image_vert.glsl
index d22cc795e66..d22cc795e66 100644
--- a/source/blender/draw/engines/overlay/shaders/edit_uv_stencil_image_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/edit_uv_image_vert.glsl