[client] egl: implement pixel perfect upscaling

This commit is contained in:
Geoffrey McRae
2019-04-19 11:23:51 +10:00
parent 6f77ba8aea
commit ba50fbdc3e
6 changed files with 51 additions and 17 deletions

View File

@@ -3,7 +3,10 @@
in highp vec2 uv;
out highp vec4 color;
uniform int nv;
uniform int nearest;
uniform highp vec2 size;
uniform int nv;
uniform highp float nvGain;
uniform sampler2D sampler1;
@@ -12,12 +15,26 @@ uniform sampler2D sampler3;
void main()
{
highp vec4 yuv = vec4(
texture(sampler1, uv).r,
texture(sampler2, uv).r,
texture(sampler3, uv).r,
1.0
);
highp vec4 yuv;
if(nearest == 1)
{
yuv = vec4(
texture(sampler1, uv).r,
texture(sampler2, uv).r,
texture(sampler3, uv).r,
1.0
);
}
else
{
highp ivec2 px = ivec2(uv * size);
yuv = vec4(
texelFetch(sampler1, px, 0).r,
texelFetch(sampler2, px, 0).r,
texelFetch(sampler3, px, 0).r,
1.0
);
}
highp mat4 yuv_to_rgb = mat4(
1.0, 0.0 , 1.402, -0.701,