mirror of https://github.com/bsnes-emu/bsnes.git
34 lines
845 B
Forth
34 lines
845 B
Forth
|
#version 150
|
||
|
|
||
|
#define INV_SQRT_2_PI 0.38 // Doesn't have to be accurate.
|
||
|
|
||
|
#define HORIZ_GAUSS_WIDTH 0.5
|
||
|
|
||
|
uniform sampler2D source[];
|
||
|
uniform vec4 sourceSize[];
|
||
|
|
||
|
in Vertex {
|
||
|
vec2 vTexCoord;
|
||
|
float data_pix_no;
|
||
|
float data_one;
|
||
|
};
|
||
|
|
||
|
out vec4 FragColor;
|
||
|
|
||
|
void main() {
|
||
|
float texel = floor(data_pix_no);
|
||
|
float phase = data_pix_no - texel;
|
||
|
float base_phase = phase - 0.5;
|
||
|
vec2 tex = vec2((texel + 0.5) * sourceSize[0].z, vTexCoord.y);
|
||
|
|
||
|
vec3 col = vec3(0.0);
|
||
|
for (int i = -2; i <= 2; i++)
|
||
|
{
|
||
|
float phase = base_phase - float(i);
|
||
|
float g = INV_SQRT_2_PI * exp(-0.5 * phase * phase / (HORIZ_GAUSS_WIDTH * HORIZ_GAUSS_WIDTH)) / HORIZ_GAUSS_WIDTH;
|
||
|
col += texture(source[0], tex + vec2(float(i) * data_one, 0.0)).rgb * g;
|
||
|
}
|
||
|
|
||
|
FragColor = vec4(col, 1.0);
|
||
|
}
|