fragment.fs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #version 430
  2. uniform sampler2D samp;
  3. uniform mat4 viewMatrix;
  4. uniform mat4 modelMatrix;
  5. uniform vec3 ambientLight;
  6. struct Light {
  7. vec2 pos;
  8. float strength;
  9. vec3 color;
  10. };
  11. uniform Light lights[32];
  12. uniform bool useTexture;
  13. uniform bool useColor;
  14. uniform bool useLight;
  15. uniform bool useMixColor;
  16. uniform vec4 mixColor;
  17. in vec2 tc;
  18. in vec2 loc;
  19. in vec4 vColor;
  20. out vec4 color;
  21. vec3 getLight() {
  22. vec3 light = vec3(0, 0, 0);
  23. for(int i = 0; i < 32; i++) {
  24. light += lights[i].color * max(1 - lights[i].strength * length(loc - lights[i].pos), 0);
  25. }
  26. return light;
  27. }
  28. void main(void) {
  29. if(useTexture) {
  30. color = texture(samp, tc);
  31. if(color.a == 0.0){
  32. discard;
  33. }
  34. if(useColor) {
  35. if(useMixColor) {
  36. color = (color + mixColor) * 0.5;
  37. } else{
  38. color = vColor;
  39. }
  40. }
  41. } else {
  42. color = vColor;
  43. }
  44. if(useLight) {
  45. color = vec4(pow(pow(color.xyz, vec3(1 / 2.2)) * (ambientLight + getLight()), vec3(2.2)), color.w);
  46. }
  47. }