lygia
/color
/space
/rgb2srgb
)Converts a linear RGB color to sRGB.
Dependencies:
Use:
<float|vec3\vec4> rgb2srgb(<float|vec3|vec4> rgb)
#ifndef SRGB_EPSILON
#define SRGB_EPSILON 1e-10
#endif
#ifndef FNC_RGB2SRGB
#define FNC_RGB2SRGB
float rgb2srgb(const in float c) { return (c < 0.0031308) ? c * 12.92 : 1.055 * pow(c, 0.4166666666666667) - 0.055; }
vec3 rgb2srgb(const in vec3 rgb) { return saturate(vec3( rgb2srgb(rgb.r - SRGB_EPSILON),
rgb2srgb(rgb.g - SRGB_EPSILON),
rgb2srgb(rgb.b - SRGB_EPSILON))); }
vec4 rgb2srgb(const in vec4 rgb) { return vec4(rgb2srgb(rgb.rgb), rgb.a); }
#endif
Use:
<float|float3\float4> rgb2srgb(<float|float3|float4> rgb)
#ifndef RGB2SRGB_EPSILON
#define RGB2SRGB_EPSILON 0.00000001
#endif
#ifndef FNC_RGB2SRGB
#define FNC_RGB2SRGB
// 1.0 / 2.4 = 0.4166666666666667
float rgb2srgb(float c) { return (c < 0.0031308) ? c * 12.92 : 1.055 * pow(c, 0.4166666666666667) - 0.055; }
float3 rgb2srgb(float3 rgb) { return saturate(float3( rgb2srgb(rgb[0] - RGB2SRGB_EPSILON),
rgb2srgb(rgb[1] - RGB2SRGB_EPSILON),
rgb2srgb(rgb[2] - RGB2SRGB_EPSILON))); }
float4 rgb2srgb(float4 rgb) { return float4(rgb2srgb(rgb.rgb), rgb.a);}
#endif
Dependencies:
Use:
<float|float3\float4> rgb2srgb(<float|float3|float4> rgb)
#ifndef SRGB_EPSILON
#define SRGB_EPSILON 1e-10
#endif
#ifndef FNC_RGB2SRGB
#define FNC_RGB2SRGB
float rgb2srgb( float c) { return (c < 0.0031308) ? c * 12.92 : 1.055 * pow(c, 0.4166666666666667) - 0.055; }
float3 rgb2srgb( float3 rgb) { return saturate(float3( rgb2srgb(rgb.r - SRGB_EPSILON),
rgb2srgb(rgb.g - SRGB_EPSILON),
rgb2srgb(rgb.b - SRGB_EPSILON))); }
float4 rgb2srgb( float4 rgb) { return float4(rgb2srgb(rgb.rgb), rgb.a); }
#endif
fn rgb2srgb_mono(channel: f32) -> f32 {
if (channel < 0.0031308) {
return 12.92 * channel;
}
else {
return (1.055) * pow(channel, 0.4166666666666667) - 0.055;
}
}
fn rgb2srgb(rgb: vec3f) -> vec3f {
return saturate(vec3(rgb2srgb_mono(rgb.r), rgb2srgb_mono(rgb.g), rgb2srgb_mono(rgb.b)));
}
LYGIA is dual-licensed under the Prosperity License and the Patron License for sponsors and contributors.
Sponsors and contributors are automatically added to the Patron License and they can ignore the any non-commercial rule of the Prosperity Licensed software (please take a look to the exception).
It's also possible to get a permanent comercial license hook to a single and specific version of LYGIA.
Sign up for the news letter bellow, joing the LYGIA's channel on Discord or follow the Github repository