52 lines
1.1 KiB
GLSL
52 lines
1.1 KiB
GLSL
#version 300 es
|
|
|
|
// OpenGL ES 3.0 - Compatible con Raspberry Pi 5
|
|
precision highp float;
|
|
|
|
// Configuración
|
|
#define SCANLINES
|
|
#define MULTISAMPLE
|
|
#define GAMMA
|
|
//#define FAKE_GAMMA
|
|
//#define CURVATURE
|
|
//#define SHARPER
|
|
#define MASK_TYPE 2
|
|
|
|
#define CURVATURE_X 0.05
|
|
#define CURVATURE_Y 0.1
|
|
#define MASK_BRIGHTNESS 0.80
|
|
#define SCANLINE_WEIGHT 6.0
|
|
#define SCANLINE_GAP_BRIGHTNESS 0.12
|
|
#define BLOOM_FACTOR 3.5
|
|
#define INPUT_GAMMA 2.4
|
|
#define OUTPUT_GAMMA 2.2
|
|
|
|
// Inputs (desde VAO)
|
|
layout(location = 0) in vec2 aPosition;
|
|
layout(location = 1) in vec2 aTexCoord;
|
|
|
|
// Outputs al fragment shader
|
|
out vec2 vTexCoord;
|
|
out float vFilterWidth;
|
|
#if defined(CURVATURE)
|
|
out vec2 vScreenScale;
|
|
#endif
|
|
|
|
// Uniforms
|
|
uniform vec2 TextureSize;
|
|
|
|
void main()
|
|
{
|
|
#if defined(CURVATURE)
|
|
vScreenScale = vec2(1.0, 1.0);
|
|
#endif
|
|
// Calcula filterWidth dinámicamente basándose en la altura de la textura
|
|
vFilterWidth = (768.0 / TextureSize.y) / 3.0;
|
|
|
|
// Pasar coordenadas de textura (invertir Y para SDL)
|
|
vTexCoord = vec2(aTexCoord.x, 1.0 - aTexCoord.y) * 1.0001;
|
|
|
|
// Posición del vértice (ya en espacio de clip [-1, 1])
|
|
gl_Position = vec4(aPosition, 0.0, 1.0);
|
|
}
|