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:
Diffstat (limited to 'source/blender/draw/engines/overlay/shaders/edit_mesh_vert.glsl')
-rw-r--r--source/blender/draw/engines/overlay/shaders/edit_mesh_vert.glsl11
1 files changed, 10 insertions, 1 deletions
diff --git a/source/blender/draw/engines/overlay/shaders/edit_mesh_vert.glsl b/source/blender/draw/engines/overlay/shaders/edit_mesh_vert.glsl
index 8759ef80888..768b0596d17 100644
--- a/source/blender/draw/engines/overlay/shaders/edit_mesh_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/edit_mesh_vert.glsl
@@ -26,6 +26,14 @@ bool test_occlusion()
return ndc.z > texture(depthTex, ndc.xy).r;
}
+vec3 non_linear_blend_color(vec3 col1, vec3 col2, float fac)
+{
+ col1 = pow(col1, vec3(1.0 / 2.2));
+ col2 = pow(col2, vec3(1.0 / 2.2));
+ vec3 col = mix(col1, col2, fac);
+ return pow(col, vec3(2.2));
+}
+
void main()
{
GPU_INTEL_VERTEX_SHADER_WORKAROUND
@@ -88,7 +96,8 @@ void main()
float facing = dot(view_vec, view_normal);
facing = 1.0 - abs(facing) * 0.2;
- finalColor.rgb = mix(colorEditMeshMiddle.rgb, finalColor.rgb, facing);
+ /* Do interpolation in a non-linear space to have a better visual result. */
+ finalColor.rgb = non_linear_blend_color(colorEditMeshMiddle.rgb, finalColor.rgb, facing);
#endif
#ifdef USE_WORLD_CLIP_PLANES