| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- //
- // Fragment Shader template
- //
- #include <material>
- // 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));
- }
|