standard_fragment.glsl 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. //
  2. // Fragment Shader template
  3. //
  4. precision highp float;
  5. #include <material>
  6. // Inputs from Vertex shader
  7. in vec3 ColorFrontAmbdiff;
  8. in vec3 ColorFrontSpec;
  9. in vec3 ColorBackAmbdiff;
  10. in vec3 ColorBackSpec;
  11. in vec2 FragTexcoord;
  12. // Output
  13. out vec4 FragColor;
  14. void main() {
  15. // Mix material color with textures colors
  16. vec4 texMixed = vec4(1);
  17. #if MAT_TEXTURES==1
  18. texMixed = MIX_TEXTURE(texMixed, FragTexcoord, 0);
  19. #elif MAT_TEXTURES==2
  20. texMixed = MIX_TEXTURE(texMixed, FragTexcoord, 0);
  21. texMixed = MIX_TEXTURE(texMixed, FragTexcoord, 1);
  22. #elif MAT_TEXTURES==3
  23. texMixed = MIX_TEXTURE(texMixed, FragTexcoord, 0);
  24. texMixed = MIX_TEXTURE(texMixed, FragTexcoord, 1);
  25. texMixed = MIX_TEXTURE(texMixed, FragTexcoord, 2);
  26. #endif
  27. vec4 colorAmbDiff;
  28. vec4 colorSpec;
  29. if (gl_FrontFacing) {
  30. colorAmbDiff = vec4(ColorFrontAmbdiff, MatOpacity);
  31. colorSpec = vec4(ColorFrontSpec, 0);
  32. } else {
  33. colorAmbDiff = vec4(ColorBackAmbdiff, MatOpacity);
  34. colorSpec = vec4(ColorBackSpec, 0);
  35. }
  36. FragColor = min(colorAmbDiff * texMixed + colorSpec, vec4(1));
  37. }