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:
authorClément Foucault <foucault.clem@gmail.com>2019-12-11 02:26:52 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-12-11 02:26:52 +0300
commite0fbea9c0d52744c082454a90487768f406bff5a (patch)
tree259f9782fee9311ebb6913c1df5da879ad54aa35
parente760972221e68d3c81f2ee3687cc71836dde8ae9 (diff)
Overlay Engine: Armature: Fix bones disapearing with custom bone color
This seems to only affect some drivers. Rendering to multiple targets without all output variables defined seems to be undefined behavior. Thanks to gaiaclary for reporting on blendercoders.
-rw-r--r--source/blender/draw/engines/overlay/shaders/armature_envelope_solid_frag.glsl4
-rw-r--r--source/blender/draw/engines/overlay/shaders/armature_shape_solid_frag.glsl4
-rw-r--r--source/blender/draw/engines/overlay/shaders/armature_sphere_solid_frag.glsl4
-rw-r--r--source/blender/draw/engines/overlay/shaders/armature_stick_frag.glsl4
4 files changed, 12 insertions, 4 deletions
diff --git a/source/blender/draw/engines/overlay/shaders/armature_envelope_solid_frag.glsl b/source/blender/draw/engines/overlay/shaders/armature_envelope_solid_frag.glsl
index d0a8e48657e..1be9a46e8c7 100644
--- a/source/blender/draw/engines/overlay/shaders/armature_envelope_solid_frag.glsl
+++ b/source/blender/draw/engines/overlay/shaders/armature_envelope_solid_frag.glsl
@@ -6,7 +6,8 @@ flat in vec3 finalStateColor;
flat in vec3 finalBoneColor;
in vec3 normalView;
-out vec4 fragColor;
+layout(location = 0) out vec4 fragColor;
+layout(location = 1) out vec4 lineOutput;
void main()
{
@@ -22,4 +23,5 @@ void main()
fragColor.rgb = mix(finalStateColor, finalBoneColor, fac);
fragColor.a = alpha;
}
+ lineOutput = vec4(0.0);
}
diff --git a/source/blender/draw/engines/overlay/shaders/armature_shape_solid_frag.glsl b/source/blender/draw/engines/overlay/shaders/armature_shape_solid_frag.glsl
index 39963344dd8..54cd807edaa 100644
--- a/source/blender/draw/engines/overlay/shaders/armature_shape_solid_frag.glsl
+++ b/source/blender/draw/engines/overlay/shaders/armature_shape_solid_frag.glsl
@@ -3,9 +3,11 @@ uniform float alpha = 0.6;
in vec4 finalColor;
-out vec4 fragColor;
+layout(location = 0) out vec4 fragColor;
+layout(location = 1) out vec4 lineOutput;
void main()
{
fragColor = vec4(finalColor.rgb, alpha);
+ lineOutput = vec4(0.0);
}
diff --git a/source/blender/draw/engines/overlay/shaders/armature_sphere_solid_frag.glsl b/source/blender/draw/engines/overlay/shaders/armature_sphere_solid_frag.glsl
index 94f339c4561..0ff0fdf0870 100644
--- a/source/blender/draw/engines/overlay/shaders/armature_sphere_solid_frag.glsl
+++ b/source/blender/draw/engines/overlay/shaders/armature_sphere_solid_frag.glsl
@@ -11,7 +11,8 @@ in vec3 viewPosition;
layout(depth_greater) out float gl_FragDepth;
#endif
-out vec4 fragColor;
+layout(location = 0) out vec4 fragColor;
+layout(location = 1) out vec4 lineOutput;
#define cameraPos ViewMatrixInverse[3].xyz
@@ -70,6 +71,7 @@ void main()
dither *= (1.0 / 255.0); /* Assume 8bit per color buffer. */
fragColor = vec4(fragColor.rgb + dither, alpha);
+ lineOutput = vec4(0.0);
t /= ray_len;
gl_FragDepth = get_depth_from_view_z(ray_dir_view.z * t + ray_ori_view.z);
diff --git a/source/blender/draw/engines/overlay/shaders/armature_stick_frag.glsl b/source/blender/draw/engines/overlay/shaders/armature_stick_frag.glsl
index ba89619e051..e7696c1ea7d 100644
--- a/source/blender/draw/engines/overlay/shaders/armature_stick_frag.glsl
+++ b/source/blender/draw/engines/overlay/shaders/armature_stick_frag.glsl
@@ -3,11 +3,13 @@ noperspective in float colorFac;
flat in vec4 finalWireColor;
flat in vec4 finalInnerColor;
-out vec4 fragColor;
+layout(location = 0) out vec4 fragColor;
+layout(location = 1) out vec4 lineOutput;
void main()
{
float fac = smoothstep(1.0, 0.2, colorFac);
fragColor.rgb = mix(finalInnerColor.rgb, finalWireColor.rgb, fac);
fragColor.a = 1.0;
+ lineOutput = vec4(0.0);
}