#version 430 out vec4 FragColor; in vec2 TexCoords; uniform sampler2D gPosition; uniform sampler2D gNormal; uniform sampler2D gAlbedoSpec; subroutine vec4 shading_t(); subroutine uniform shading_t Shading; subroutine(shading_t) vec4 DisplayAlbedo() { vec3 Albedo = texture(gAlbedoSpec, TexCoords).rgb; return vec4(Albedo, 0); } subroutine(shading_t) vec4 DisplayPositions() { vec3 FragPos = texture(gPosition, TexCoords).rgb; return vec4(FragPos, 0); } subroutine(shading_t) vec4 DisplayNormals() { vec3 Normal = texture(gNormal, TexCoords).rgb; return vec4(Normal, 0); } void main(void) { FragColor = Shading(); }