Fix colors in glium (srgb issue)
This commit is contained in:
parent
49cbd3fe07
commit
74eeaf27ce
1 changed files with 30 additions and 0 deletions
|
@ -41,8 +41,18 @@ impl Painter {
|
|||
in vec4 v_color;
|
||||
in vec2 v_tc;
|
||||
out vec4 f_color;
|
||||
|
||||
// glium expects linear output.
|
||||
vec3 linear_from_srgb(vec3 srgb) {
|
||||
bvec3 cutoff = lessThan(srgb, vec3(0.04045));
|
||||
vec3 higher = pow((srgb + vec3(0.055)) / vec3(1.055), vec3(2.4));
|
||||
vec3 lower = srgb / vec3(12.92);
|
||||
return mix(higher, lower, cutoff);
|
||||
}
|
||||
|
||||
void main() {
|
||||
f_color = v_color;
|
||||
f_color.rgb = linear_from_srgb(f_color.rgb);
|
||||
f_color.a *= texture(u_sampler, v_tc).r;
|
||||
}
|
||||
"
|
||||
|
@ -74,8 +84,18 @@ impl Painter {
|
|||
uniform sampler2D u_sampler;
|
||||
varying vec4 v_color;
|
||||
varying vec2 v_tc;
|
||||
|
||||
// glium expects linear output.
|
||||
vec3 linear_from_srgb(vec3 srgb) {
|
||||
bvec3 cutoff = lessThan(srgb, vec3(0.04045));
|
||||
vec3 higher = pow((srgb + vec3(0.055)) / vec3(1.055), vec3(2.4));
|
||||
vec3 lower = srgb / vec3(12.92);
|
||||
return mix(higher, lower, cutoff);
|
||||
}
|
||||
|
||||
void main() {
|
||||
gl_FragColor = v_color;
|
||||
gl_FragColor.rgb = linear_from_srgb(gl_FragColor.rgb);
|
||||
gl_FragColor.a *= texture2D(u_sampler, v_tc).r;
|
||||
}
|
||||
",
|
||||
|
@ -107,8 +127,18 @@ impl Painter {
|
|||
uniform sampler2D u_sampler;
|
||||
varying mediump vec4 v_color;
|
||||
varying mediump vec2 v_tc;
|
||||
|
||||
// glium expects linear output.
|
||||
vec3 linear_from_srgb(vec3 srgb) {
|
||||
bvec3 cutoff = lessThan(srgb, vec3(0.04045));
|
||||
vec3 higher = pow((srgb + vec3(0.055)) / vec3(1.055), vec3(2.4));
|
||||
vec3 lower = srgb / vec3(12.92);
|
||||
return mix(higher, lower, cutoff);
|
||||
}
|
||||
|
||||
void main() {
|
||||
gl_FragColor = v_color;
|
||||
gl_FragColor.rgb = linear_from_srgb(gl_FragColor.rgb);
|
||||
gl_FragColor.a *= texture2D(u_sampler, v_tc).r;
|
||||
}
|
||||
",
|
||||
|
|
Loading…
Reference in a new issue