12345678910111213141516171819202122232425262728293031323334 |
- #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);
- }
|