standard_fragment.glsl 966 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. vec4 texColor;
  18. #if MAT_TEXTURES==1
  19. MIX_TEXTURE(0)
  20. #elif MAT_TEXTURES==2
  21. MIX_TEXTURE(0)
  22. MIX_TEXTURE(1)
  23. #elif MAT_TEXTURES==3
  24. MIX_TEXTURE(0)
  25. MIX_TEXTURE(1)
  26. MIX_TEXTURE(2)
  27. #endif
  28. vec4 colorAmbDiff;
  29. vec4 colorSpec;
  30. if (gl_FrontFacing) {
  31. colorAmbDiff = vec4(ColorFrontAmbdiff, MatOpacity);
  32. colorSpec = vec4(ColorFrontSpec, 0);
  33. } else {
  34. colorAmbDiff = vec4(ColorBackAmbdiff, MatOpacity);
  35. colorSpec = vec4(ColorBackSpec, 0);
  36. }
  37. FragColor = min(colorAmbDiff * texMixed + colorSpec, vec4(1));
  38. }