diff options
Diffstat (limited to 'chroma.glsl')
-rw-r--r-- | chroma.glsl | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/chroma.glsl b/chroma.glsl index dd103b1..44f1bc2 100644 --- a/chroma.glsl +++ b/chroma.glsl @@ -17,11 +17,26 @@ uniform sampler2D img_input; uniform mediump vec2 sample_offsets[4]; -uniform mediump mat3 colorspace; -uniform mediump vec3 ranges[2]; - varying mediump vec2 texcoord; +const mediump mat3 kColorSpace = mat3( + 0.299, 0.587, 0.114, + -0.168736, -0.331264, 0.5, + 0.5, -0.418688, -0.081312 +); + +const mediump vec3 kColorRangeBase = vec3( + 16.0 / 255.0, + 16.0 / 255.0, + 16.0 / 255.0 +); + +const mediump vec3 kColorRangeScale = vec3( + (235.0 - 16.0) / 255.0, + (240.0 - 16.0) / 255.0, + (240.0 - 16.0) / 255.0 +); + mediump vec4 supersample() { return texture2D(img_input, texcoord + sample_offsets[0]) + texture2D(img_input, texcoord + sample_offsets[1]) + @@ -30,8 +45,8 @@ mediump vec4 supersample() { } mediump vec3 rgb2yuv(in mediump vec3 rgb) { - mediump vec3 yuv = colorspace * rgb.rgb + vec3(0.0, 0.5, 0.5); - return ranges[0] + yuv * ranges[1]; + mediump vec3 yuv = kColorSpace * rgb.rgb + vec3(0.0, 0.5, 0.5); + return kColorRangeBase + yuv * kColorRangeScale; } void main() { |