[Bf-blender-cvs] [3912a2a227c] master: Fix T74438: Overlay: Loose verts and particle not draw in some conditions

Clément Foucault noreply at git.blender.org
Mon Mar 9 17:09:44 CET 2020


Commit: 3912a2a227c9674476795407003e019ff9abc34d
Author: Clément Foucault
Date:   Mon Mar 9 17:08:07 2020 +0100
Branches: master
https://developer.blender.org/rB3912a2a227c9674476795407003e019ff9abc34d

Fix T74438: Overlay: Loose verts and particle not draw in some conditions

This was caused by a missing output variable for lineOutput.
This triggered some undefined behavior.

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

M	source/blender/draw/engines/overlay/shaders/extra_loose_point_frag.glsl
M	source/blender/draw/engines/overlay/shaders/particle_frag.glsl

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

diff --git a/source/blender/draw/engines/overlay/shaders/extra_loose_point_frag.glsl b/source/blender/draw/engines/overlay/shaders/extra_loose_point_frag.glsl
index c27061f8f97..fd3518523ab 100644
--- a/source/blender/draw/engines/overlay/shaders/extra_loose_point_frag.glsl
+++ b/source/blender/draw/engines/overlay/shaders/extra_loose_point_frag.glsl
@@ -1,7 +1,8 @@
 
 in vec4 finalColor;
 
-out vec4 fragColor;
+layout(location = 0) out vec4 fragColor;
+layout(location = 1) out vec4 lineOutput;
 
 void main()
 {
@@ -9,7 +10,13 @@ void main()
   float dist = max(centered.x, centered.y);
 
   float fac = dist * dist * 4.0;
-  fragColor = mix(colorEditMeshMiddle, finalColor, 0.45 + fac * 0.65);
+  /* Non linear blend. */
+  vec4 col1 = sqrt(colorEditMeshMiddle);
+  vec4 col2 = sqrt(finalColor);
+  fragColor = mix(col1, col2, 0.45 + fac * 0.65);
+  fragColor *= fragColor;
+
+  lineOutput = vec4(0.0);
 
   /* Make the effect more like a fresnel by offsetting
    * the depth and creating mini-spheres.
diff --git a/source/blender/draw/engines/overlay/shaders/particle_frag.glsl b/source/blender/draw/engines/overlay/shaders/particle_frag.glsl
index 36928d0c776..a087aae2b2b 100644
--- a/source/blender/draw/engines/overlay/shaders/particle_frag.glsl
+++ b/source/blender/draw/engines/overlay/shaders/particle_frag.glsl
@@ -1,7 +1,8 @@
 
 in vec4 finalColor;
 
-out vec4 fragColor;
+layout(location = 0) out vec4 fragColor;
+layout(location = 1) out vec4 lineOutput;
 
 void main()
 {
@@ -13,4 +14,6 @@ void main()
   /* Nice sphere falloff. */
   float intensity = sqrt(1.0 - dist * 2.0) * 0.5 + 0.5;
   fragColor = finalColor * vec4(intensity, intensity, intensity, 1.0);
+
+  lineOutput = vec4(0.0);
 }



More information about the Bf-blender-cvs mailing list