1$input v_color0, v_texcoord0
2
3// license:BSD-3-Clause
4// copyright-holders:Ryan Holtz
5
6#include "common.sh"
7
8// Samplers
9SAMPLER2D(s_tex, 0);
10
11#define round(X) floor((X)+0.5)
12
13uniform vec4 u_tex_size0;
14uniform vec4 u_inv_tex_size0;
15
16vec3 ycc_to_rgb(float y, float cb, float cr)
17{
18	float r = saturate(y + 1.40200 * (cr - 0.5));
19	float g = saturate(y - 0.34414 * (cb - 0.5) - 0.71414 * (cr - 0.5));
20	float b = saturate(y + 1.77200 * (cb - 0.5));
21	return vec3(r, g, b);
22}
23
24void main()
25{
26	vec2 size_minus_one = u_tex_size0.xy - vec2(1.0, 1.0);
27	vec2 original_uv = round(v_texcoord0.xy * size_minus_one);
28	float mod_val = mod(original_uv.x, 2.0);
29	vec2 rounded_uv = round(vec2(original_uv.x - mod_val, original_uv.y));
30	vec2 next_uv = rounded_uv + vec2(1.0, 0.0);
31	vec2 srcpix0 = texture2D(s_tex, rounded_uv / size_minus_one).rg;
32	vec2 srcpix1 = texture2D(s_tex, next_uv / size_minus_one).rg;
33	float cr = srcpix1.r;
34	float cb = srcpix0.r;
35	if (mod_val < 1.0)
36		gl_FragColor = vec4(ycc_to_rgb(srcpix0.g, cb, cr), 1.0) * v_color0;
37	else
38		gl_FragColor = vec4(ycc_to_rgb(srcpix1.g, cb, cr), 1.0) * v_color0;
39}
40