Я пытаюсь научиться использовать шейдеры и использовать GLSL. Один из шейдеров работает, но искажает текстуру спрайта, над которым он работает. Я делаю все это на SFML.
Искаженная текстура слева, фактическая текстура справа:
![img](https://i.imgur.com/AVleFbj.png)
Проблема исходит от этой строки
Когда я начинал, текстура рендерилась вверх ногами, но вычитание y-компонента кординатов из 1 решило эту проблему. Строка, вызывающая проблему:
vec2 texCoord = (gl_FragCoord.xy / sourceSize.xy);
Где sourceSize - это равномерное прохождение в разрешении чего-либо как vec2. Я передавал различные значения в это и получал различные искаженные версии текстуры. Мне было интересно, есть ли какое-то отношение, чтобы передать или что-то, чтобы избежать этого искажения.
Размер текстуры в пикселях: 512x512
Передается в значениях для изображения выше: 512x512
Shader
uniform sampler2D source;
uniform vec2 sourceSize;
uniform float time;
void main( void )
{
vec2 texCoord = (gl_FragCoord.xy / sourceSize.xy); //Gets the pixel position in a range of 0.0 to 1
texCoord = vec2 (texCoord.x,1.0-texCoord.y);//Inverts the y co ordinate
vec4 Color = texture2D(source, texCoord);//Gets the current pixture colour
gl_FragColor = Color;//Output
}