// // Fragment Shader template // #include // Inputs from Vertex shader in vec3 ColorFrontAmbdiff; in vec3 ColorFrontSpec; in vec3 ColorBackAmbdiff; in vec3 ColorBackSpec; in vec2 FragTexcoord; // Output out vec4 FragColor; void main() { vec4 texCombined = vec4(1); #if MAT_TEXTURES > 0 // Combine all texture colors and opacity for (int i = 0; i < MAT_TEXTURES; i++) { if (MatTexVisible(i) == false) { continue; } vec4 texcolor = texture(MatTexture[i], FragTexcoord * MatTexRepeat(i) + MatTexOffset(i)); if (i == 0) { texCombined = texcolor; } else { texCombined = mix(texCombined, texcolor, texcolor.a); } } #endif vec4 colorAmbDiff; vec4 colorSpec; if (gl_FrontFacing) { colorAmbDiff = vec4(ColorFrontAmbdiff, MatOpacity); colorSpec = vec4(ColorFrontSpec, 0); } else { colorAmbDiff = vec4(ColorBackAmbdiff, MatOpacity); colorSpec = vec4(ColorBackSpec, 0); } FragColor = min(colorAmbDiff * texCombined + colorSpec, vec4(1)); }