postfx subpixel
This commit is contained in:
@@ -31,9 +31,10 @@ out vec4 FragColor;
|
||||
// Uniforms
|
||||
uniform sampler2D Texture;
|
||||
uniform vec2 TextureSize;
|
||||
uniform float uVignette; // 0 = sin viñeta, 1 = máxima
|
||||
uniform float uScanlines; // 0 = desactivadas, 1 = plenas
|
||||
uniform float uChroma; // 0 = sin aberración, 1 = máxima
|
||||
uniform float uVignette; // 0 = sin viñeta, 1 = máxima
|
||||
uniform float uScanlines; // 0 = desactivadas, 1 = plenas
|
||||
uniform float uChroma; // 0 = sin aberración, 1 = máxima
|
||||
uniform float uOutputHeight; // altura del viewport en pixels de pantalla
|
||||
|
||||
#if defined(CURVATURE)
|
||||
vec2 Distort(vec2 coord)
|
||||
@@ -103,8 +104,20 @@ void main()
|
||||
#else
|
||||
float tempY = floor(texcoordInPixels.y) + 0.5;
|
||||
float yCoord = tempY / TextureSize.y;
|
||||
|
||||
// Scanline en espacio de pantalla (subpíxel)
|
||||
float scaleY = uOutputHeight / TextureSize.y;
|
||||
float screenY = vTexCoord.y * uOutputHeight;
|
||||
float posInRow = mod(screenY, scaleY);
|
||||
float scanLineDY = posInRow / scaleY - 0.5;
|
||||
float localFilterWidth = 1.0 / scaleY;
|
||||
float scanLineWeight = CalcScanLineWeight(scanLineDY);
|
||||
scanLineWeight += CalcScanLineWeight(scanLineDY - localFilterWidth);
|
||||
scanLineWeight += CalcScanLineWeight(scanLineDY + localFilterWidth);
|
||||
scanLineWeight *= 0.3333333;
|
||||
|
||||
// Phosphor blur en espacio textura (sin cambios)
|
||||
float dy = texcoordInPixels.y - tempY;
|
||||
float scanLineWeight = CalcScanLine(dy);
|
||||
float signY = sign(dy);
|
||||
dy = dy * dy;
|
||||
dy = dy * dy;
|
||||
|
||||
@@ -34,9 +34,10 @@ out vec4 FragColor;
|
||||
// Uniforms
|
||||
uniform sampler2D Texture;
|
||||
uniform vec2 TextureSize;
|
||||
uniform float uVignette; // 0 = sin viñeta, 1 = máxima
|
||||
uniform float uScanlines; // 0 = desactivadas, 1 = plenas
|
||||
uniform float uChroma; // 0 = sin aberración, 1 = máxima
|
||||
uniform float uVignette; // 0 = sin viñeta, 1 = máxima
|
||||
uniform float uScanlines; // 0 = desactivadas, 1 = plenas
|
||||
uniform float uChroma; // 0 = sin aberración, 1 = máxima
|
||||
uniform float uOutputHeight; // altura del viewport en pixels de pantalla
|
||||
|
||||
#if defined(CURVATURE)
|
||||
vec2 Distort(vec2 coord)
|
||||
@@ -106,8 +107,20 @@ void main()
|
||||
#else
|
||||
float tempY = floor(texcoordInPixels.y) + 0.5;
|
||||
float yCoord = tempY / TextureSize.y;
|
||||
|
||||
// Scanline en espacio de pantalla (subpíxel)
|
||||
float scaleY = uOutputHeight / TextureSize.y;
|
||||
float screenY = vTexCoord.y * uOutputHeight;
|
||||
float posInRow = mod(screenY, scaleY);
|
||||
float scanLineDY = posInRow / scaleY - 0.5;
|
||||
float localFilterWidth = 1.0 / scaleY;
|
||||
float scanLineWeight = CalcScanLineWeight(scanLineDY);
|
||||
scanLineWeight += CalcScanLineWeight(scanLineDY - localFilterWidth);
|
||||
scanLineWeight += CalcScanLineWeight(scanLineDY + localFilterWidth);
|
||||
scanLineWeight *= 0.3333333;
|
||||
|
||||
// Phosphor blur en espacio textura (sin cambios)
|
||||
float dy = texcoordInPixels.y - tempY;
|
||||
float scanLineWeight = CalcScanLine(dy);
|
||||
float signY = sign(dy);
|
||||
dy = dy * dy;
|
||||
dy = dy * dy;
|
||||
|
||||
Reference in New Issue
Block a user