diff options
Diffstat (limited to 'source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl')
-rw-r--r-- | source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl b/source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl index e9d9b8c02e8..1902a9587d2 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl @@ -33,3 +33,20 @@ vec2 normal_encode(vec3 n) float p = sqrt(n.z * 8.0 + 8.0); return vec2(n.xy / p + 0.5); } + +/* Linear to srgb conversion */ +const float SRGB_ALPHA = 0.055; +float linear_to_srgb(float channel) { + if(channel <= 0.0031308) { + return 12.92 * channel; + } else { + return (1.0 + SRGB_ALPHA) * pow(channel, 1.0/2.4) - SRGB_ALPHA; + } +} +vec3 linearrgb_to_srgb(vec3 rgb) { + return vec3( + linear_to_srgb(rgb.r), + linear_to_srgb(rgb.g), + linear_to_srgb(rgb.b) + ); +}
\ No newline at end of file |