[Bf-blender-cvs] [e0fbea9c0d5] master: Overlay Engine: Armature: Fix bones disapearing with custom bone color

Clément Foucault noreply at git.blender.org
Wed Dec 11 00:30:05 CET 2019


Commit: e0fbea9c0d52744c082454a90487768f406bff5a
Author: Clément Foucault
Date:   Wed Dec 11 00:26:52 2019 +0100
Branches: master
https://developer.blender.org/rBe0fbea9c0d52744c082454a90487768f406bff5a

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.

===================================================================

M	source/blender/draw/engines/overlay/shaders/armature_envelope_solid_frag.glsl
M	source/blender/draw/engines/overlay/shaders/armature_shape_solid_frag.glsl
M	source/blender/draw/engines/overlay/shaders/armature_sphere_solid_frag.glsl
M	source/blender/draw/engines/overlay/shaders/armature_stick_frag.glsl

===================================================================

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);
 }



More information about the Bf-blender-cvs mailing list