20 lines
635 B
GLSL
20 lines
635 B
GLSL
/*
|
|
LUT color grading from MariENB
|
|
(C)2012-2021 Marisa Kirisame
|
|
*/
|
|
|
|
void main()
|
|
{
|
|
vec2 coord = TexCoord;
|
|
vec4 res = texture(InputTexture,coord);
|
|
vec3 lc = clamp(res.rgb,0.,63./64.);
|
|
vec2 lcoord = vec2((lc.r+lutindex)/32.,lc.g/64.)+vec2(1./4096.,1./8192.);
|
|
double minb = floor(lc.b*64.)/64.;
|
|
double maxb = ceil(lc.b*64.)/64.;
|
|
double theta = fract(lc.b*64.);
|
|
vec3 luta = textureLod(LUTTexture,lcoord+vec2(0,minb),0.).rgb;
|
|
vec3 lutb = textureLod(LUTTexture,lcoord+vec2(0,maxb),0.).rgb;
|
|
vec3 lutm = mix(luta,lutb,vec3(theta)); // has to be vec3 for whatever reason
|
|
res.rgb = mix(res.rgb,lutm,lutblend);
|
|
FragColor = res;
|
|
}
|