diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-12-14 21:16:35 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-12-17 19:05:57 +0300 |
commit | 29877fb1a443e1daebf1466fa3a048ef5cefd807 (patch) | |
tree | 5ac180d6963df592bfeebd638b0a7386c2bc5a97 /source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl | |
parent | 0d511e05d38e47a610c304a7625f5f0da9c9a9d2 (diff) |
Workbench: Fix srgb texture not being color managed in texture color mode
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 | 18 |
1 files changed, 18 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 76b00469f15..25942b162ee 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_common_lib.glsl @@ -141,3 +141,21 @@ vec2 matcap_uv_compute(vec3 I, vec3 N, bool flipped) } return matcap_uv * 0.496 + 0.5; } + +float srgb_to_linearrgb(float c) +{ + if (c < 0.04045) + return (c < 0.0) ? 0.0 : c * (1.0 / 12.92); + else + return pow((c + 0.055) * (1.0 / 1.055), 2.4); +} + +vec4 srgb_to_linearrgb(vec4 col_from) +{ + vec4 col_to; + col_to.r = srgb_to_linearrgb(col_from.r); + col_to.g = srgb_to_linearrgb(col_from.g); + col_to.b = srgb_to_linearrgb(col_from.b); + col_to.a = col_from.a; + return col_to; +} |