in vec2 vert; in vec4 color; out vec4 frag_color; vec4 linear_to_srgb(vec4 linear_color) { vec3 linear = linear_color.rgb; vec3 selector = ceil(linear - 0.0031308); vec3 less_than_branch = linear * 12.92; vec3 greater_than_branch = pow(linear, vec3(1.0/2.4)) * 1.055 - 0.055; return vec4( mix(less_than_branch, greater_than_branch, selector), linear_color.a ); } void main() { frag_color = linear_to_srgb(color); }