pbrBlockFinalLitComponents.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // Do not edit.
  2. import { ShaderStore } from "../../Engines/shaderStore.js";
  3. const name = "pbrBlockFinalLitComponents";
  4. const shader = `aggShadow=aggShadow/numLights;
  5. #if defined(ENVIRONMENTBRDF)
  6. #ifdef MS_BRDF_ENERGY_CONSERVATION
  7. vec3 energyConservationFactor=getEnergyConservationFactor(clearcoatOut.specularEnvironmentR0,environmentBrdf);
  8. #endif
  9. #endif
  10. #ifndef METALLICWORKFLOW
  11. #ifdef SPECULAR_GLOSSINESS_ENERGY_CONSERVATION
  12. surfaceAlbedo.rgb=(1.-reflectance)*surfaceAlbedo.rgb;
  13. #endif
  14. #endif
  15. #if defined(SHEEN) && defined(SHEEN_ALBEDOSCALING) && defined(ENVIRONMENTBRDF)
  16. surfaceAlbedo.rgb=sheenOut.sheenAlbedoScaling*surfaceAlbedo.rgb;
  17. #endif
  18. #ifdef REFLECTION
  19. vec3 finalIrradiance=reflectionOut.environmentIrradiance;
  20. #if defined(CLEARCOAT)
  21. finalIrradiance*=clearcoatOut.conservationFactor;
  22. #if defined(CLEARCOAT_TINT)
  23. finalIrradiance*=clearcoatOut.absorption;
  24. #endif
  25. #endif
  26. #if defined(SS_REFRACTION)
  27. finalIrradiance*=subSurfaceOut.refractionFactorForIrradiance;
  28. #endif
  29. #if defined(SS_TRANSLUCENCY)
  30. finalIrradiance*=(1.0-subSurfaceOut.translucencyIntensity);finalIrradiance+=subSurfaceOut.refractionIrradiance;
  31. #endif
  32. finalIrradiance*=surfaceAlbedo.rgb;finalIrradiance*=vLightingIntensity.z;finalIrradiance*=aoOut.ambientOcclusionColor;
  33. #endif
  34. #ifdef SPECULARTERM
  35. vec3 finalSpecular=specularBase;finalSpecular=max(finalSpecular,0.0);vec3 finalSpecularScaled=finalSpecular*vLightingIntensity.x*vLightingIntensity.w;
  36. #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
  37. finalSpecularScaled*=energyConservationFactor;
  38. #endif
  39. #if defined(SHEEN) && defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
  40. finalSpecularScaled*=sheenOut.sheenAlbedoScaling;
  41. #endif
  42. #endif
  43. #ifdef REFLECTION
  44. vec3 finalRadiance=reflectionOut.environmentRadiance.rgb;finalRadiance*=subSurfaceOut.specularEnvironmentReflectance;vec3 finalRadianceScaled=finalRadiance*vLightingIntensity.z;
  45. #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
  46. finalRadianceScaled*=energyConservationFactor;
  47. #endif
  48. #if defined(SHEEN) && defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
  49. finalRadianceScaled*=sheenOut.sheenAlbedoScaling;
  50. #endif
  51. #endif
  52. #ifdef SHEEN
  53. vec3 finalSheen=sheenBase*sheenOut.sheenColor;finalSheen=max(finalSheen,0.0);vec3 finalSheenScaled=finalSheen*vLightingIntensity.x*vLightingIntensity.w;
  54. #if defined(CLEARCOAT) && defined(REFLECTION) && defined(ENVIRONMENTBRDF)
  55. sheenOut.finalSheenRadianceScaled*=clearcoatOut.conservationFactor;
  56. #if defined(CLEARCOAT_TINT)
  57. sheenOut.finalSheenRadianceScaled*=clearcoatOut.absorption;
  58. #endif
  59. #endif
  60. #endif
  61. #ifdef CLEARCOAT
  62. vec3 finalClearCoat=clearCoatBase;finalClearCoat=max(finalClearCoat,0.0);vec3 finalClearCoatScaled=finalClearCoat*vLightingIntensity.x*vLightingIntensity.w;
  63. #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
  64. finalClearCoatScaled*=clearcoatOut.energyConservationFactorClearCoat;
  65. #endif
  66. #ifdef SS_REFRACTION
  67. subSurfaceOut.finalRefraction*=clearcoatOut.conservationFactor;
  68. #ifdef CLEARCOAT_TINT
  69. subSurfaceOut.finalRefraction*=clearcoatOut.absorption;
  70. #endif
  71. #endif
  72. #endif
  73. #ifdef ALPHABLEND
  74. float luminanceOverAlpha=0.0;
  75. #if defined(REFLECTION) && defined(RADIANCEOVERALPHA)
  76. luminanceOverAlpha+=getLuminance(finalRadianceScaled);
  77. #if defined(CLEARCOAT)
  78. luminanceOverAlpha+=getLuminance(clearcoatOut.finalClearCoatRadianceScaled);
  79. #endif
  80. #endif
  81. #if defined(SPECULARTERM) && defined(SPECULAROVERALPHA)
  82. luminanceOverAlpha+=getLuminance(finalSpecularScaled);
  83. #endif
  84. #if defined(CLEARCOAT) && defined(CLEARCOATOVERALPHA)
  85. luminanceOverAlpha+=getLuminance(finalClearCoatScaled);
  86. #endif
  87. #if defined(RADIANCEOVERALPHA) || defined(SPECULAROVERALPHA) || defined(CLEARCOATOVERALPHA)
  88. alpha=saturate(alpha+luminanceOverAlpha*luminanceOverAlpha);
  89. #endif
  90. #endif
  91. `;
  92. // Sideeffect
  93. ShaderStore.IncludesShadersStore[name] = shader;
  94. /** @internal */
  95. export const pbrBlockFinalLitComponents = { name, shader };
  96. //# sourceMappingURL=pbrBlockFinalLitComponents.js.map