#version 150 struct Color { float emulateSRGB; }; uniform Color _color; uniform sampler2D tex; in vec2 vUV; out vec4 fragColor; vec3 RGBtosRGB(vec3 rgb) { bvec3 cutoff = greaterThanEqual(rgb, vec3(0.003130800090730190277099609375)); vec3 below = vec3(12.9200000762939453125) * rgb; vec3 above = (vec3(1.05499994754791259765625) * pow(rgb, vec3(0.416660010814666748046875))) - vec3(0.054999999701976776123046875); return vec3(cutoff.x ? above.x : below.x, cutoff.y ? above.y : below.y, cutoff.z ? above.z : below.z); } void main() { vec4 texel = texture(tex, vUV); if (_color.emulateSRGB == 0.0) { vec3 param = texel.xyz; vec3 _71 = RGBtosRGB(param); texel.x = _71.x; texel.y = _71.y; texel.z = _71.z; } fragColor = texel; }