lights.glsl 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. //
  2. // Lights uniforms
  3. //
  4. #if AMB_LIGHTS>0
  5. // Ambient lights color uniform
  6. uniform vec3 AmbientLightColor[AMB_LIGHTS];
  7. #endif
  8. #if DIR_LIGHTS>0
  9. // Directional lights uniform array. Each directional light uses 2 elements
  10. uniform vec3 DirLight[2*DIR_LIGHTS];
  11. // Macros to access elements inside the DirectionalLight uniform array
  12. #define DirLightColor(a) DirLight[2*a]
  13. #define DirLightPosition(a) DirLight[2*a+1]
  14. #endif
  15. #if POINT_LIGHTS>0
  16. // Point lights uniform array. Each point light uses 3 elements
  17. uniform vec3 PointLight[3*POINT_LIGHTS];
  18. // Macros to access elements inside the PointLight uniform array
  19. #define PointLightColor(a) PointLight[3*a]
  20. #define PointLightPosition(a) PointLight[3*a+1]
  21. #define PointLightLinearDecay(a) PointLight[3*a+2].x
  22. #define PointLightQuadraticDecay(a) PointLight[3*a+2].y
  23. #endif
  24. #if SPOT_LIGHTS>0
  25. // Spot lights uniforms. Each spot light uses 5 elements
  26. uniform vec3 SpotLight[5*SPOT_LIGHTS];
  27. // Macros to access elements inside the PointLight uniform array
  28. #define SpotLightColor(a) SpotLight[5*a]
  29. #define SpotLightPosition(a) SpotLight[5*a+1]
  30. #define SpotLightDirection(a) SpotLight[5*a+2]
  31. #define SpotLightAngularDecay(a) SpotLight[5*a+3].x
  32. #define SpotLightCutoffAngle(a) SpotLight[5*a+3].y
  33. #define SpotLightLinearDecay(a) SpotLight[5*a+3].z
  34. #define SpotLightQuadraticDecay(a) SpotLight[5*a+4].x
  35. #endif