diff options
Diffstat (limited to 'math.cginc')
| -rwxr-xr-x | math.cginc | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -251,4 +251,16 @@ float median(float3 x) { return (x.r + x.g + x.b) - (x_min + x_max); } +float3 linear_to_srgb(float3 linear_color) { + float3 lo = 12.92f * linear_color; + float3 hi = 1.055f * pow(linear_color, 1.0f / 2.4f) - 0.055f; + return lerp(lo, hi, step(0.0031308f, linear_color)); +} + +float3 srgb_to_linear(float3 srgb_color) { + float3 lo = srgb_color / 12.92f; + float3 hi = pow((srgb_color + 0.055f) / 1.055f, 2.4f); + return lerp(lo, hi, step(0.04045f, srgb_color)); +} + #endif // __MATH_INC |
