chunkMaterial.go 985 B

12345678910111213141516171819202122232425262728293031323334
  1. // Copyright 2016 The G3N Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package shader
  5. func init() {
  6. AddChunk("material", chunkMaterial)
  7. }
  8. const chunkMaterial = `
  9. // Material uniforms
  10. uniform vec3 Material[5];
  11. // Macros to access elements inside the Material uniform array
  12. #define MatAmbientColor Material[0]
  13. #define MatDiffuseColor Material[1]
  14. #define MatSpecularColor Material[2]
  15. #define MatEmissiveColor Material[3]
  16. #define MatShininess Material[4].x
  17. #define MatOpacity Material[4].y
  18. {{if .MatTexturesMax}}
  19. // Textures uniforms
  20. uniform sampler2D MatTexture[{{.MatTexturesMax}}];
  21. uniform mat3 MatTexinfo[{{.MatTexturesMax}}];
  22. // Macros to access elements inside MatTexinfo uniform
  23. #define MatTexOffset(a) MatTexinfo[a][0].xy
  24. #define MatTexRepeat(a) MatTexinfo[a][1].xy
  25. #define MatTexFlipY(a) bool(MatTexinfo[a][2].x)
  26. #define MatTexVisible(a) bool(MatTexinfo[a][2].y)
  27. {{ end }}
  28. `