diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-03-09 19:08:07 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-03-09 19:09:32 +0300 |
commit | 3912a2a227c9674476795407003e019ff9abc34d (patch) | |
tree | 58227907f63b345c927362623c01a4fb060aabb9 /source | |
parent | 4d0d43ce8ec68746a76b2001dfec7db7ca633fe4 (diff) |
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.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/draw/engines/overlay/shaders/extra_loose_point_frag.glsl | 11 | ||||
-rw-r--r-- | source/blender/draw/engines/overlay/shaders/particle_frag.glsl | 5 |
2 files changed, 13 insertions, 3 deletions
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); } |