Я пытаюсь реализовать некоторую простую обработку изображений в glsl, например создание серой и негативной текстуры из изображения, но, похоже, я не могу понять, почему это не работает в фрагментном шейдере.Стиль 2, который должен превратить изображение в серый, работает как задумано, но стиль 3, который должен создавать негативное изображение, просто отображает пустое изображение.
#version 140
in vec2 textureCoords;
out vec4 out_Color;
uniform sampler2D guiTexture;
uniform int style;
void main(void)
{
if(style==1)
{
out_Color = texture(guiTexture,textureCoords);
}
else if(style==2)
{
out_Color = texture(guiTexture,textureCoords);
float grayscale = (out_Color.x+out_Color.y + out_Color.z)/3;
out_Color = vec4(grayscale,grayscale,grayscale,out_Color.w);
}
else if(style==3)
{
out_Color = texture(guiTexture,textureCoords);
float Newr = (255.0 - out_Color.x);
float Newg = (255.0 - out_Color.y);
float Newb = (255.0 - out_Color.z);
out_Color =vec4( Newr, Newg, Newb , out_Color.w);
}
}