GLSL shader that performs YCoCg conversion and can be used for drawing Hap Q frames.

November 19, 2017 ยท View on GitHub

uniform sampler2D cocgsy_src;

const vec4 offsets = vec4(-0.50196078431373, -0.50196078431373, 0.0, 0.0);

void main() { vec4 CoCgSY = texture2D(cocgsy_src, gl_TexCoord[0].xy);

CoCgSY += offsets;

float scale = ( CoCgSY.z * ( 255.0 / 8.0 ) ) + 1.0;

float Co = CoCgSY.x / scale;
float Cg = CoCgSY.y / scale;
float Y = CoCgSY.w;

vec4 rgba = vec4(Y + Co - Cg, Y + Cg, Y - Co - Cg, 1.0);

gl_FragColor = rgba;

}