LitParticle.frag 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include "Uniforms.frag"
  2. #include "Samplers.frag"
  3. #include "Lighting.frag"
  4. #include "Fog.frag"
  5. varying vec2 vTexCoord;
  6. #ifdef VERTEXCOLOR
  7. varying vec4 vColor;
  8. #endif
  9. varying vec4 vLightVec;
  10. #ifdef SPOTLIGHT
  11. varying vec4 vSpotPos;
  12. #endif
  13. #ifdef POINTLIGHT
  14. varying vec3 vCubeMaskVec;
  15. #endif
  16. void main()
  17. {
  18. #ifdef DIFFMAP
  19. vec4 diffColor = cMatDiffColor * texture2D(sDiffMap, vTexCoord);
  20. #else
  21. vec4 diffColor = cMatDiffColor;
  22. #endif
  23. #ifdef VERTEXCOLOR
  24. diffColor *= vColor;
  25. #endif
  26. vec3 lightColor;
  27. vec3 lightVec;
  28. vec3 finalColor;
  29. float diff;
  30. #ifdef DIRLIGHT
  31. diff = GetDiffuseDirVolumetric();
  32. #else
  33. diff = GetDiffusePointOrSpotVolumetric(vLightVec.xyz);
  34. #endif
  35. #if defined(SPOTLIGHT)
  36. lightColor = vSpotPos.w > 0.0 ? texture2DProj(sLightSpotMap, vSpotPos).rgb * cLightColor.rgb : vec3(0.0, 0.0, 0.0);
  37. #elif defined(CUBEMASK)
  38. lightColor = textureCube(sLightCubeMap, vCubeMaskVec).rgb * cLightColor.rgb;
  39. #else
  40. lightColor = cLightColor.rgb;
  41. #endif
  42. finalColor = diff * lightColor * diffColor.rgb;
  43. #ifdef AMBIENT
  44. finalColor += cAmbientColor * diffColor.rgb;
  45. gl_FragColor = vec4(GetFog(finalColor, vLightVec.w), diffColor.a);
  46. #else
  47. gl_FragColor = vec4(GetLitFog(finalColor, vLightVec.w), diffColor.a);
  48. #endif
  49. }