diff options
Diffstat (limited to 'source/blender/gpu/shaders/common/gpu_shader_common_color_ramp.glsl')
-rw-r--r-- | source/blender/gpu/shaders/common/gpu_shader_common_color_ramp.glsl | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/source/blender/gpu/shaders/common/gpu_shader_common_color_ramp.glsl b/source/blender/gpu/shaders/common/gpu_shader_common_color_ramp.glsl new file mode 100644 index 00000000000..17240da4050 --- /dev/null +++ b/source/blender/gpu/shaders/common/gpu_shader_common_color_ramp.glsl @@ -0,0 +1,37 @@ +void valtorgb_opti_constant( + float fac, float edge, vec4 color1, vec4 color2, out vec4 outcol, out float outalpha) +{ + outcol = (fac > edge) ? color2 : color1; + outalpha = outcol.a; +} + +void valtorgb_opti_linear( + float fac, vec2 mulbias, vec4 color1, vec4 color2, out vec4 outcol, out float outalpha) +{ + fac = clamp(fac * mulbias.x + mulbias.y, 0.0, 1.0); + outcol = mix(color1, color2, fac); + outalpha = outcol.a; +} + +void valtorgb_opti_ease( + float fac, vec2 mulbias, vec4 color1, vec4 color2, out vec4 outcol, out float outalpha) +{ + fac = clamp(fac * mulbias.x + mulbias.y, 0.0, 1.0); + fac = fac * fac * (3.0 - 2.0 * fac); + outcol = mix(color1, color2, fac); + outalpha = outcol.a; +} + +void valtorgb(float fac, sampler1DArray colormap, float layer, out vec4 outcol, out float outalpha) +{ + outcol = texture(colormap, vec2(fac, layer)); + outalpha = outcol.a; +} + +void valtorgb_nearest( + float fac, sampler1DArray colormap, float layer, out vec4 outcol, out float outalpha) +{ + fac = clamp(fac, 0.0, 1.0); + outcol = texelFetch(colormap, ivec2(fac * (textureSize(colormap, 0).x - 1), layer), 0); + outalpha = outcol.a; +} |