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/gpu/intern/gpu_shader_material.glsl')
-rw-r--r--source/blender/gpu/intern/gpu_shader_material.glsl32
1 files changed, 32 insertions, 0 deletions
diff --git a/source/blender/gpu/intern/gpu_shader_material.glsl b/source/blender/gpu/intern/gpu_shader_material.glsl
index 0d7e00a541b..e59be0217b5 100644
--- a/source/blender/gpu/intern/gpu_shader_material.glsl
+++ b/source/blender/gpu/intern/gpu_shader_material.glsl
@@ -563,6 +563,38 @@ void mix_color(float fac, vec4 col1, vec4 col2, out vec4 outcol)
}
}
+void mix_soft(float fac, vec4 col1, vec4 col2, out vec4 outcol)
+{
+ fac = clamp(fac, 0.0, 1.0);
+ float facm = 1.0 - fac;
+
+ vec4 one= vec4(1.0);
+ vec4 scr= one - (one - col2)*(one - col1);
+ outcol = facm*col1 + fac*((one - col1)*col2*col1 + col1*scr);
+}
+
+void mix_linear(float fac, vec4 col1, vec4 col2, out vec4 outcol)
+{
+ fac = clamp(fac, 0.0, 1.0);
+
+ outcol = col1;
+
+ if(col2.r > 0.5)
+ outcol.r= col1.r + fac*(2.0*(col2.r - 0.5));
+ else
+ outcol.r= col1.r + fac*(2.0*(col2.r) - 1.0);
+
+ if(col2.g > 0.5)
+ outcol.g= col1.g + fac*(2.0*(col2.g - 0.5));
+ else
+ outcol.g= col1.g + fac*(2.0*(col2.g) - 1.0);
+
+ if(col2.b > 0.5)
+ outcol.b= col1.b + fac*(2.0*(col2.b - 0.5));
+ else
+ outcol.b= col1.b + fac*(2.0*(col2.b) - 1.0);
+}
+
void valtorgb(float fac, sampler1D colormap, out vec4 outcol, out float outalpha)
{
outcol = texture1D(colormap, fac);