add resolution uniform for pp, 16bit uses this for reducing screen resolution (wtf?)
This commit is contained in:
parent
12e84f918a
commit
1c125f0fb4
|
@ -1,109 +1,61 @@
|
||||||
uniform samplerRECT samp0 : register(s0);
|
uniform sampler2D samp9;
|
||||||
|
|
||||||
void main(out float4 ocol0 : COLOR0, in float2 uv0 : TEXCOORD0)
|
out vec4 ocol0;
|
||||||
|
in vec2 uv0;
|
||||||
|
|
||||||
|
uniform vec2 resolution;
|
||||||
|
|
||||||
|
void main()
|
||||||
{
|
{
|
||||||
float4 c0 = texRECT(samp0, uv0).rgba;
|
|
||||||
|
|
||||||
//Change this number to increase the pixel size.
|
//Change this number to increase the pixel size.
|
||||||
int pixelSize = 3;
|
float pixelSize = 3;
|
||||||
|
|
||||||
float red = 0.0;
|
float red = 0.0;
|
||||||
float green = 0.0;
|
float green = 0.0;
|
||||||
float blue = 0.0;
|
float blue = 0.0;
|
||||||
int val = uv0[0];
|
|
||||||
int val2 = uv0[1];
|
|
||||||
|
|
||||||
val = val % pixelSize;
|
|
||||||
val2 = val2 % pixelSize;
|
|
||||||
|
|
||||||
if(val == 0 && val2 == 0 ){
|
|
||||||
if (c0.r < 0.1 && c0.r >= 0)
|
|
||||||
red = 0.1;
|
|
||||||
if (c0.r < 0.20 && c0.r >= 0.1)
|
|
||||||
red = 0.20;
|
|
||||||
if (c0.r <0.40 && c0.r >= 0.20)
|
|
||||||
red = 0.40;
|
|
||||||
if (c0.r <0.60 && c0.r >= 0.40)
|
|
||||||
red = 0.60;
|
|
||||||
if (c0.r <0.80 && c0.r >= 0.60)
|
|
||||||
red = 0.80;
|
|
||||||
if (c0.r >= 0.80)
|
|
||||||
red = 1;
|
|
||||||
|
|
||||||
if (c0.b < 0.1 && c0.b >= 0)
|
|
||||||
blue = 0.1;
|
|
||||||
if (c0.b < 0.20 && c0.b >= 0.1)
|
|
||||||
blue = 0.20;
|
|
||||||
if (c0.b <0.40 && c0.b >= 0.20)
|
|
||||||
blue = 0.40;
|
|
||||||
if (c0.b <0.60 && c0.b >= 0.40)
|
|
||||||
blue = 0.60;
|
|
||||||
if (c0.b <0.80 && c0.b >= 0.60)
|
|
||||||
blue = 0.80;
|
|
||||||
if (c0.b >= 0.80)
|
|
||||||
blue = 1;
|
|
||||||
|
|
||||||
|
|
||||||
if (c0.g < 0.1 && c0.g >= 0)
|
|
||||||
green = 0.1;
|
|
||||||
if (c0.g < 0.20 && c0.g >= 0.1)
|
|
||||||
green = 0.20;
|
|
||||||
if (c0.g <0.40 && c0.g >= 0.20)
|
|
||||||
green = 0.40;
|
|
||||||
if (c0.g <0.60 && c0.g >= 0.40)
|
|
||||||
green = 0.60;
|
|
||||||
if (c0.g <0.80 && c0.g >= 0.60)
|
|
||||||
green = 0.80;
|
|
||||||
if (c0.g >= 0.80)
|
|
||||||
green = 1;
|
|
||||||
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
float4 c1 = texRECT(samp0, uv0-float2(val, val2)).rgba;
|
|
||||||
|
|
||||||
if (c1.r < 0.1 && c1.r >= 0)
|
|
||||||
red = 0.1;
|
|
||||||
if (c1.r < 0.20 && c1.r >= 0.1)
|
|
||||||
red = 0.20;
|
|
||||||
if (c1.r <0.40 && c1.r >= 0.20)
|
|
||||||
red = 0.40;
|
|
||||||
if (c1.r <0.60 && c1.r >= 0.40)
|
|
||||||
red = 0.60;
|
|
||||||
if (c1.r <0.80 && c1.r >= 0.60)
|
|
||||||
red = 0.80;
|
|
||||||
if (c1.r >= 0.80)
|
|
||||||
red = 1;
|
|
||||||
|
|
||||||
if (c1.b < 0.1 && c1.b >= 0)
|
|
||||||
blue = 0.1;
|
|
||||||
if (c1.b < 0.20 && c1.b >= 0.1)
|
|
||||||
blue = 0.20;
|
|
||||||
if (c1.b <0.40 && c1.b >= 0.20)
|
|
||||||
blue = 0.40;
|
|
||||||
if (c1.b <0.60 && c1.b >= 0.40)
|
|
||||||
blue = 0.60;
|
|
||||||
if (c1.b <0.80 && c1.b >= 0.60)
|
|
||||||
blue = 0.80;
|
|
||||||
if (c1.b >= 0.80)
|
|
||||||
blue = 1;
|
|
||||||
|
|
||||||
|
|
||||||
if (c1.g < 0.1 && c1.g >= 0)
|
|
||||||
green = 0.1;
|
|
||||||
if (c1.g < 0.20 && c1.g >= 0.1)
|
|
||||||
green = 0.20;
|
|
||||||
if (c1.g <0.40 && c1.g >= 0.20)
|
|
||||||
green = 0.40;
|
|
||||||
if (c1.g <0.60 && c1.g >= 0.40)
|
|
||||||
green = 0.60;
|
|
||||||
if (c1.g <0.80 && c1.g >= 0.60)
|
|
||||||
green = 0.80;
|
|
||||||
if (c1.g >= 0.80)
|
|
||||||
green = 1;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ocol0 = float4(red, green, blue, c0.a);
|
vec2 pos = round(uv0 * resolution / pixelSize) * resolution / pixelSize;
|
||||||
|
|
||||||
|
vec4 c0 = texture(samp9, uv0);
|
||||||
|
|
||||||
|
if (c0.r < 0.1)
|
||||||
|
red = 0.1;
|
||||||
|
else if (c0.r < 0.20)
|
||||||
|
red = 0.20;
|
||||||
|
else if (c0.r < 0.40)
|
||||||
|
red = 0.40;
|
||||||
|
else if (c0.r < 0.60)
|
||||||
|
red = 0.60;
|
||||||
|
else if (c0.r < 0.80)
|
||||||
|
red = 0.80;
|
||||||
|
else
|
||||||
|
red = 1.0;
|
||||||
|
|
||||||
|
if (c0.b < 0.1)
|
||||||
|
blue = 0.1;
|
||||||
|
else if (c0.b < 0.20)
|
||||||
|
blue = 0.20;
|
||||||
|
else if (c0.b < 0.40)
|
||||||
|
blue = 0.40;
|
||||||
|
else if (c0.b < 0.60)
|
||||||
|
blue = 0.60;
|
||||||
|
else if (c0.b < 0.80)
|
||||||
|
blue = 0.80;
|
||||||
|
else
|
||||||
|
blue = 1.0;
|
||||||
|
|
||||||
|
if (c0.g < 0.1)
|
||||||
|
green = 0.1;
|
||||||
|
else if (c0.g < 0.20)
|
||||||
|
green = 0.20;
|
||||||
|
else if (c0.g < 0.40)
|
||||||
|
green = 0.40;
|
||||||
|
else if (c0.g < 0.60)
|
||||||
|
green = 0.60;
|
||||||
|
else if (c0.g < 0.80)
|
||||||
|
green = 0.80;
|
||||||
|
else
|
||||||
|
green = 1.0;
|
||||||
|
|
||||||
|
ocol0 = vec4(red, green, blue, c0.a);
|
||||||
}
|
}
|
|
@ -1,11 +1,14 @@
|
||||||
//dummy shader:
|
//dummy shader:
|
||||||
uniform samplerRECT samp0 : register(s0);
|
uniform sampler2D samp9;
|
||||||
|
|
||||||
void main(out float4 ocol0 : COLOR0, in float2 uv0 : TEXCOORD0)
|
out vec4 ocol0;
|
||||||
|
in vec2 uv0;
|
||||||
|
|
||||||
|
void main()
|
||||||
{
|
{
|
||||||
float4 c0 = texRECT(samp0, uv0).rgba;
|
ocol0 = texture(samp9, uv0);
|
||||||
ocol0 = float4(c0.r, c0.g, c0.b, c0.a);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
And now that's over with, the contents of this readme file!
|
And now that's over with, the contents of this readme file!
|
||||||
For best results, turn Wordwrap formatting on...
|
For best results, turn Wordwrap formatting on...
|
||||||
|
|
|
@ -40,7 +40,9 @@ static GLuint s_texture;
|
||||||
static GLuint s_vao;
|
static GLuint s_vao;
|
||||||
static GLuint s_vbo;
|
static GLuint s_vbo;
|
||||||
|
|
||||||
static char* s_vertex_shader =
|
static GLuint s_uniform_resolution;
|
||||||
|
|
||||||
|
static char s_vertex_shader[] =
|
||||||
"in vec2 rawpos;\n"
|
"in vec2 rawpos;\n"
|
||||||
"in vec2 tex0;\n"
|
"in vec2 tex0;\n"
|
||||||
"out vec2 uv0;\n"
|
"out vec2 uv0;\n"
|
||||||
|
@ -113,6 +115,9 @@ void BlitToScreen()
|
||||||
|
|
||||||
glBindVertexArray(s_vao);
|
glBindVertexArray(s_vao);
|
||||||
s_shader.Bind();
|
s_shader.Bind();
|
||||||
|
|
||||||
|
glUniform2f(s_uniform_resolution, (float)s_width, (float)s_height);
|
||||||
|
|
||||||
glActiveTexture(GL_TEXTURE0+9);
|
glActiveTexture(GL_TEXTURE0+9);
|
||||||
glBindTexture(GL_TEXTURE_2D, s_texture);
|
glBindTexture(GL_TEXTURE_2D, s_texture);
|
||||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
||||||
|
@ -168,6 +173,9 @@ void ApplyShader()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// read uniform locations
|
||||||
|
s_uniform_resolution = glGetUniformLocation(s_shader.glprogid, "resolution");
|
||||||
|
|
||||||
// successful
|
// successful
|
||||||
s_enable = true;
|
s_enable = true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue