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 <j.bakker@atmind.nl>2019-07-04 16:38:47 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2019-07-05 16:21:11 +0300
commitd1349bd0c7da2993b408bfd9a8eda0ab802272ed (patch)
tree3edc00dedf7ff2b7cc82c886a784cec9861411a0 /source/blender/draw/modes/shaders
parent15cc4c4cb3cd6e5d19678a2440e99d1e7fda6416 (diff)
TexturePaint: Force Workbench Texture Color Mode
When in texture paint mode and in solid mode the object that is being texture painted will be rendered by the workbench engine with textures. All other objects would render the same. For other cases the texture paint draw engine will still draw the texture. The texture mode draw engine now only drawn the masks. The opacity sliders influences the texture mask. This change has been implemented conserably. In the future we need to look into making this better, like adding support that every object can be colored differently. Currently when rendering in the workbench we can have up to 3 different color types active (what the user selected, the fallback in case no materials have been configured and this one, forcing textures) Reviewed By: fclem, brecht Differential Revision: https://developer.blender.org/D5190
Diffstat (limited to 'source/blender/draw/modes/shaders')
-rw-r--r--source/blender/draw/modes/shaders/paint_texture_frag.glsl23
-rw-r--r--source/blender/draw/modes/shaders/paint_texture_vert.glsl12
2 files changed, 2 insertions, 33 deletions
diff --git a/source/blender/draw/modes/shaders/paint_texture_frag.glsl b/source/blender/draw/modes/shaders/paint_texture_frag.glsl
index e8722590802..edd7c2af001 100644
--- a/source/blender/draw/modes/shaders/paint_texture_frag.glsl
+++ b/source/blender/draw/modes/shaders/paint_texture_frag.glsl
@@ -1,35 +1,17 @@
-
-in vec2 uv_interp;
-#ifdef TEXTURE_PAINT_MASK
in vec2 masking_uv_interp;
-#endif
out vec4 fragColor;
-uniform sampler2D image;
-uniform bool imagePremultiplied;
uniform float alpha = 1.0;
-uniform bool nearestInterp;
-#ifdef TEXTURE_PAINT_MASK
uniform sampler2D maskingImage;
uniform bool maskingImagePremultiplied;
uniform vec3 maskingColor;
uniform bool maskingInvertStencil;
-#endif
void main()
{
- vec2 uv = uv_interp;
- if (nearestInterp) {
- vec2 tex_size = vec2(textureSize(image, 0).xy);
- uv = (floor(uv_interp * tex_size) + 0.5) / tex_size;
- }
-
- vec4 color = texture_read_as_srgb(image, imagePremultiplied, uv);
- color.a *= alpha;
-#ifdef TEXTURE_PAINT_MASK
vec4 mask = vec4(
texture_read_as_srgb(maskingImage, maskingImagePremultiplied, masking_uv_interp).rgb, 1.0);
if (maskingInvertStencil) {
@@ -37,8 +19,7 @@ void main()
}
float mask_step = smoothstep(0, 3.0, mask.r + mask.g + mask.b);
mask.rgb *= maskingColor;
- color = mix(color, mask, mask_step);
-#endif
+ mask.a = mask_step * alpha;
- fragColor = color;
+ fragColor = mask;
}
diff --git a/source/blender/draw/modes/shaders/paint_texture_vert.glsl b/source/blender/draw/modes/shaders/paint_texture_vert.glsl
index 564f988348e..ddfc2b51437 100644
--- a/source/blender/draw/modes/shaders/paint_texture_vert.glsl
+++ b/source/blender/draw/modes/shaders/paint_texture_vert.glsl
@@ -1,27 +1,15 @@
-in vec2 u; /* active uv map */
in vec3 pos;
-
-#ifdef TEXTURE_PAINT_MASK
in vec2 mu; /* masking uv map */
-#endif
-
-out vec2 uv_interp;
-#ifdef TEXTURE_PAINT_MASK
out vec2 masking_uv_interp;
-#endif
void main()
{
vec3 world_pos = point_object_to_world(pos);
gl_Position = point_world_to_ndc(world_pos);
- uv_interp = u;
-
-#ifdef TEXTURE_PAINT_MASK
masking_uv_interp = mu;
-#endif
#ifdef USE_WORLD_CLIP_PLANES
world_clip_planes_calc_clip_distance(world_pos);