Created
January 6, 2025 13:17
-
-
Save Allakazan/63c94fc88b3172eb0ca820912edd0ac9 to your computer and use it in GitHub Desktop.
Some color correction functions for WebGL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
vec4 GammaToLinear( in vec4 value, in float gammaFactor ) { | |
return vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a ); | |
} | |
vec4 LinearToGamma( in vec4 value, in float gammaFactor ) { | |
return vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a ); | |
} | |
vec4 sRGBToLinear( in vec4 value ) { | |
return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a ); | |
} | |
vec4 LinearTosRGB( in vec4 value ) { | |
return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); | |
} | |
vec4 RGBEToLinear( in vec4 value ) { | |
return vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 ); | |
} | |
vec4 LinearToRGBE( in vec4 value ) { | |
float maxComponent = max( max( value.r, value.g ), value.b ); | |
float fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 ); | |
return vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 ); | |
// return vec4( value.brg, ( 3.0 + 128.0 ) / 256.0 ); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment