lightFragment.fx 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #ifdef LIGHT{X}
  2. #if defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X}) && defined(LIGHTMAPNOSPECULAR{X})
  3. //No light calculation
  4. #else
  5. #ifdef PBR
  6. #ifdef SPOTLIGHT{X}
  7. info = computeSpotLighting(viewDirectionW, normalW, light{X}.vLightData, light{X}.vLightDirection, light{X}.vLightDiffuse.rgb, light{X}.vLightSpecular, light{X}.vLightDiffuse.a, roughness, NdotV, specularEnvironmentR90, NdotL);
  8. #endif
  9. #ifdef HEMILIGHT{X}
  10. info = computeHemisphericLighting(viewDirectionW, normalW, light{X}.vLightData, light{X}.vLightDiffuse.rgb, light{X}.vLightSpecular, light{X}.vLightGround, roughness, NdotV, specularEnvironmentR90, NdotL);
  11. #endif
  12. #if defined(POINTLIGHT{X}) || defined(DIRLIGHT{X})
  13. info = computeLighting(viewDirectionW, normalW, light{X}.vLightData, light{X}.vLightDiffuse.rgb, light{X}.vLightSpecular, light{X}.vLightDiffuse.a, roughness, NdotV, specularEnvironmentR90, NdotL);
  14. #endif
  15. #else
  16. #ifdef SPOTLIGHT{X}
  17. info = computeSpotLighting(viewDirectionW, normalW, light{X}.vLightData, light{X}.vLightDirection, light{X}.vLightDiffuse.rgb, light{X}.vLightSpecular, light{X}.vLightDiffuse.a, glossiness);
  18. #endif
  19. #ifdef HEMILIGHT{X}
  20. info = computeHemisphericLighting(viewDirectionW, normalW, light{X}.vLightData, light{X}.vLightDiffuse.rgb, light{X}.vLightSpecular, light{X}.vLightGround, glossiness);
  21. #endif
  22. #if defined(POINTLIGHT{X}) || defined(DIRLIGHT{X})
  23. info = computeLighting(viewDirectionW, normalW, light{X}.vLightData, light{X}.vLightDiffuse.rgb, light{X}.vLightSpecular, light{X}.vLightDiffuse.a, glossiness);
  24. #endif
  25. #endif
  26. #endif
  27. #ifdef SHADOW{X}
  28. #ifdef SHADOWCLOSEESM{X}
  29. #if defined(SHADOWCUBE{X})
  30. shadow = computeShadowWithCloseESMCube(light{X}.vLightData.xyz, shadowSampler{X}, light{X}.shadowsInfo.x, light{X}.shadowsInfo.z, light{X}.depthValues);
  31. #else
  32. shadow = computeShadowWithCloseESM(vPositionFromLight{X}, vDepthMetric{X}, shadowSampler{X}, light{X}.shadowsInfo.x, light{X}.shadowsInfo.z);
  33. #endif
  34. #else
  35. #ifdef SHADOWESM{X}
  36. #if defined(SHADOWCUBE{X})
  37. shadow = computeShadowWithESMCube(light{X}.vLightData.xyz, shadowSampler{X}, light{X}.shadowsInfo.x, light{X}.shadowsInfo.z, light{X}.depthValues);
  38. #else
  39. shadow = computeShadowWithESM(vPositionFromLight{X}, vDepthMetric{X}, shadowSampler{X}, light{X}.shadowsInfo.x, light{X}.shadowsInfo.z);
  40. #endif
  41. #else
  42. #ifdef SHADOWPCF{X}
  43. #if defined(SHADOWCUBE{X})
  44. shadow = computeShadowWithPCFCube(light{X}.vLightData.xyz, shadowSampler{X}, light{X}.shadowsInfo.y, light{X}.shadowsInfo.x, light{X}.depthValues);
  45. #else
  46. shadow = computeShadowWithPCF(vPositionFromLight{X}, vDepthMetric{X}, shadowSampler{X}, light{X}.shadowsInfo.y, light{X}.shadowsInfo.x);
  47. #endif
  48. #else
  49. #if defined(SHADOWCUBE{X})
  50. shadow = computeShadowCube(light{X}.vLightData.xyz, shadowSampler{X}, light{X}.shadowsInfo.x, light{X}.depthValues);
  51. #else
  52. shadow = computeShadow(vPositionFromLight{X}, vDepthMetric{X}, shadowSampler{X}, light{X}.shadowsInfo.x);
  53. #endif
  54. #endif
  55. #endif
  56. #endif
  57. #else
  58. shadow = 1.;
  59. #endif
  60. #ifdef CUSTOMUSERLIGHTING
  61. diffuseBase += computeCustomDiffuseLighting(info, diffuseBase, shadow);
  62. #ifdef SPECULARTERM
  63. specularBase += computeCustomSpecularLighting(info, specularBase, shadow);
  64. #endif
  65. #elif defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X})
  66. diffuseBase += lightmapColor * shadow;
  67. #ifdef SPECULARTERM
  68. #ifndef LIGHTMAPNOSPECULAR{X}
  69. specularBase += info.specular * shadow * lightmapColor;
  70. #endif
  71. #endif
  72. #else
  73. diffuseBase += info.diffuse * shadow;
  74. #ifdef SPECULARTERM
  75. specularBase += info.specular * shadow;
  76. #endif
  77. #endif
  78. #endif