#version 430 layout (location = 0) out vec3 worldPosition; layout (location = 1) out vec3 worldNormal; layout (location = 2) out vec4 worldColor; layout (binding = 0) uniform sampler2D samp; uniform bool useTexture; uniform bool useColor; uniform bool useMixColor; uniform vec4 mixColor; uniform bool useNormals; in vec3 varPosition; in vec2 varTextureCoord; in vec4 varColor; in vec3 varNormal; void main(void) { vec4 color = vec4(0, 0, 0, 1); if(useTexture) { color = texture(samp, varTextureCoord); if(useColor) { if(useMixColor) { color = (color + mixColor) * 0.5; } else { color = vec4(varColor.xyz, color.w); } } } else { color = varColor; } worldPosition = varPosition; worldNormal = normalize(varNormal); worldColor = color; }