lightFragment.fx 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #ifdef LIGHT{X}
  2. #if defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X}) && defined(LIGHTMAPNOSPECULAR{X})
  3. //No light calculation
  4. #else
  5. #ifndef SPECULARTERM
  6. vec3 vLightSpecular{X} = vec3(0.);
  7. #endif
  8. #ifdef SPOTLIGHT{X}
  9. info = computeSpotLighting(viewDirectionW, normalW, vLightData{X}, vLightDirection{X}, vLightDiffuse{X}.rgb, vLightSpecular{X}, vLightDiffuse{X}.a, glossiness);
  10. #endif
  11. #ifdef HEMILIGHT{X}
  12. info = computeHemisphericLighting(viewDirectionW, normalW, vLightData{X}, vLightDiffuse{X}.rgb, vLightSpecular{X}, vLightGround{X}, glossiness);
  13. #endif
  14. #if defined(POINTLIGHT{X}) || defined(DIRLIGHT{X})
  15. info = computeLighting(viewDirectionW, normalW, vLightData{X}, vLightDiffuse{X}.rgb, vLightSpecular{X}, vLightDiffuse{X}.a, glossiness);
  16. #endif
  17. #endif
  18. #ifdef SHADOW{X}
  19. #ifdef SHADOWVSM{X}
  20. shadow = computeShadowWithVSM(vPositionFromLight{X}, shadowSampler{X}, shadowsInfo{X}.z, shadowsInfo{X}.x);
  21. #else
  22. #ifdef SHADOWPCF{X}
  23. #if defined(POINTLIGHT{X})
  24. shadow = computeShadowWithPCFCube(vLightData{X}.xyz, shadowSampler{X}, shadowsInfo{X}.y, shadowsInfo{X}.z, shadowsInfo{X}.x);
  25. #else
  26. shadow = computeShadowWithPCF(vPositionFromLight{X}, shadowSampler{X}, shadowsInfo{X}.y, shadowsInfo{X}.z, shadowsInfo{X}.x);
  27. #endif
  28. #else
  29. #if defined(POINTLIGHT{X})
  30. shadow = computeShadowCube(vLightData{X}.xyz, shadowSampler{X}, shadowsInfo{X}.x, shadowsInfo{X}.z);
  31. #else
  32. shadow = computeShadow(vPositionFromLight{X}, shadowSampler{X}, shadowsInfo{X}.x, shadowsInfo{X}.z);
  33. #endif
  34. #endif
  35. #endif
  36. #else
  37. shadow = 1.;
  38. #endif
  39. #if defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X})
  40. diffuseBase += lightmapColor * shadow;
  41. #ifdef SPECULARTERM
  42. #ifndef LIGHTMAPNOSPECULAR{X}
  43. specularBase += info.specular * shadow * lightmapColor;
  44. #endif
  45. #endif
  46. #else
  47. diffuseBase += info.diffuse * shadow;
  48. #ifdef SPECULARTERM
  49. specularBase += info.specular * shadow;
  50. #endif
  51. #endif
  52. #endif