#version 460 core out vec4 FragColor; in vec2 TexCoords; uniform sampler2D screenTexure; const float offset = 1.0/ 300.0; void main(){ FragColor = texture(screenTexure, TexCoords); // Inversion filter //FragColor = vec4( vec3 (1.0 - texture(screenTexure, TexCoords) ), 1.0) ; // Simple Grayscale //FragColor = texture(screenTexure, TexCoords); //float average = (FragColor.r + FragColor.g + FragColor.b) / 3.0; //FragColor = vec4(average, average, average, 1.0); // physically accurate grayscale //FragColor = texture(screenTexure, TexCoords); //float average = 0.2126 * FragColor.r + 0.7152 * FragColor.g + 0.0722 * FragColor.b; //FragColor = vec4(average,average,average, 1.0);*/ vec2 offset[9] = vec2[] ( vec2(-offset, offset), // top-left vec2(0.0f, offset), // top-center vec2(offset, offset), // top-right vec2(-offset, 0.0f), // center-left vec2(0.0f, 0.0f), // center-center vec2(offset, 0.0f), // center-right vec2(-offset, -offset), // bottom-left vec2(0.0f, -offset), // bottom-center vec2(offset, -offset) // bottom-right ); // sharpen float sharpen_kernel[9] = float[]( -1, -1, -1, -1, 9, -1, -1, -1, -1 ); // blur float blur_kernel[9] = float[]( 1.0 /16, 2.0 /16, 1.0 /16, 2.0 /16, 4.0 /16, 2.0 /16, 1.0 /16, 2.0 /16, 1.0 /16 ); // Edge-detection float edgeDetection_kernel[9] = float[] ( 1, 1, 1, 1, -8, 1, 1, 1, 1 ); //vec3 sampleTex[9]; //for (int i= 0; i < 9; i++) { // sampleTex[i] = vec3(texture(screenTexure, TexCoords.st + offset[i])); //} //vec3 col = vec3(0.0); //for (int i = 0; i < 9; i++) { // col += sampleTex[i] * kernel[i]; //} //FragColor = vec4(col, 1.0); }