@babylonjs/viewer 7.40.2 → 7.40.3-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (615) hide show
  1. package/assets/photoStudio.env +0 -0
  2. package/dist/babylon-viewer.esm.js +2 -0
  3. package/dist/babylon-viewer.esm.js.map +1 -0
  4. package/dist/babylon-viewer.esm.min.js +2 -0
  5. package/dist/babylon-viewer.esm.min.js.map +1 -0
  6. package/dist/chunks/EXT_lights_ies-CD6xLsCy.esm.js +84 -0
  7. package/dist/chunks/EXT_lights_ies-CD6xLsCy.esm.js.map +1 -0
  8. package/dist/chunks/EXT_lights_ies-DS9bIHFP.esm.min.js +2 -0
  9. package/dist/chunks/EXT_lights_ies-DS9bIHFP.esm.min.js.map +1 -0
  10. package/dist/chunks/EXT_lights_image_based-BGdZs5mF.esm.js +171 -0
  11. package/dist/chunks/EXT_lights_image_based-BGdZs5mF.esm.js.map +1 -0
  12. package/dist/chunks/EXT_lights_image_based-DJq0NJF1.esm.min.js +2 -0
  13. package/dist/chunks/EXT_lights_image_based-DJq0NJF1.esm.min.js.map +1 -0
  14. package/dist/chunks/EXT_mesh_gpu_instancing-D70tpOB6.esm.js +86 -0
  15. package/dist/chunks/EXT_mesh_gpu_instancing-D70tpOB6.esm.js.map +1 -0
  16. package/dist/chunks/EXT_mesh_gpu_instancing-DcgiYr6J.esm.min.js +2 -0
  17. package/dist/chunks/EXT_mesh_gpu_instancing-DcgiYr6J.esm.min.js.map +1 -0
  18. package/dist/chunks/EXT_meshopt_compression-hkW0_ox-.esm.min.js +2 -0
  19. package/dist/chunks/EXT_meshopt_compression-hkW0_ox-.esm.min.js.map +1 -0
  20. package/dist/chunks/EXT_meshopt_compression-yaTtGxec.esm.js +134 -0
  21. package/dist/chunks/EXT_meshopt_compression-yaTtGxec.esm.js.map +1 -0
  22. package/dist/chunks/EXT_texture_avif-Chwut1VD.esm.min.js +2 -0
  23. package/dist/chunks/EXT_texture_avif-Chwut1VD.esm.min.js.map +1 -0
  24. package/dist/chunks/EXT_texture_avif-CyxmV9wZ.esm.js +44 -0
  25. package/dist/chunks/EXT_texture_avif-CyxmV9wZ.esm.js.map +1 -0
  26. package/dist/chunks/EXT_texture_webp-C8kKXzMe.esm.min.js +2 -0
  27. package/dist/chunks/EXT_texture_webp-C8kKXzMe.esm.min.js.map +1 -0
  28. package/dist/chunks/EXT_texture_webp-C9fxnRq1.esm.js +43 -0
  29. package/dist/chunks/EXT_texture_webp-C9fxnRq1.esm.js.map +1 -0
  30. package/dist/chunks/ExtrasAsMetadata-B6-h7vlD.esm.min.js +2 -0
  31. package/dist/chunks/ExtrasAsMetadata-B6-h7vlD.esm.min.js.map +1 -0
  32. package/dist/chunks/ExtrasAsMetadata-sw0sAaoo.esm.js +64 -0
  33. package/dist/chunks/ExtrasAsMetadata-sw0sAaoo.esm.js.map +1 -0
  34. package/dist/chunks/KHR_animation_pointer-CP7-gocW.esm.min.js +2 -0
  35. package/dist/chunks/KHR_animation_pointer-CP7-gocW.esm.min.js.map +1 -0
  36. package/dist/chunks/KHR_animation_pointer-lrzgXMw2.esm.js +352 -0
  37. package/dist/chunks/KHR_animation_pointer-lrzgXMw2.esm.js.map +1 -0
  38. package/dist/chunks/KHR_draco_mesh_compression-6ejAggyS.esm.js +610 -0
  39. package/dist/chunks/KHR_draco_mesh_compression-6ejAggyS.esm.js.map +1 -0
  40. package/dist/chunks/KHR_draco_mesh_compression-BaG0uIFE.esm.min.js +2 -0
  41. package/dist/chunks/KHR_draco_mesh_compression-BaG0uIFE.esm.min.js.map +1 -0
  42. package/dist/chunks/KHR_interactivity-BCSmv9s-.esm.js +4033 -0
  43. package/dist/chunks/KHR_interactivity-BCSmv9s-.esm.js.map +1 -0
  44. package/dist/chunks/KHR_interactivity-BwG2kMjm.esm.min.js +2 -0
  45. package/dist/chunks/KHR_interactivity-BwG2kMjm.esm.min.js.map +1 -0
  46. package/dist/chunks/KHR_lights_punctual-BmAkLiea.esm.js +581 -0
  47. package/dist/chunks/KHR_lights_punctual-BmAkLiea.esm.js.map +1 -0
  48. package/dist/chunks/KHR_lights_punctual-D1dtMznV.esm.min.js +2 -0
  49. package/dist/chunks/KHR_lights_punctual-D1dtMznV.esm.min.js.map +1 -0
  50. package/dist/chunks/KHR_materials_anisotropy-CRJDUZsx.esm.js +65 -0
  51. package/dist/chunks/KHR_materials_anisotropy-CRJDUZsx.esm.js.map +1 -0
  52. package/dist/chunks/KHR_materials_anisotropy-Dp1pJfRB.esm.min.js +2 -0
  53. package/dist/chunks/KHR_materials_anisotropy-Dp1pJfRB.esm.min.js.map +1 -0
  54. package/dist/chunks/KHR_materials_clearcoat-BD3XLdt2.esm.min.js +2 -0
  55. package/dist/chunks/KHR_materials_clearcoat-BD3XLdt2.esm.min.js.map +1 -0
  56. package/dist/chunks/KHR_materials_clearcoat-DJKj9xQP.esm.js +96 -0
  57. package/dist/chunks/KHR_materials_clearcoat-DJKj9xQP.esm.js.map +1 -0
  58. package/dist/chunks/KHR_materials_diffuse_transmission-BYYyEZrB.esm.js +97 -0
  59. package/dist/chunks/KHR_materials_diffuse_transmission-BYYyEZrB.esm.js.map +1 -0
  60. package/dist/chunks/KHR_materials_diffuse_transmission-DhA5fNkp.esm.min.js +2 -0
  61. package/dist/chunks/KHR_materials_diffuse_transmission-DhA5fNkp.esm.min.js.map +1 -0
  62. package/dist/chunks/KHR_materials_dispersion-CDCigqMd.esm.js +62 -0
  63. package/dist/chunks/KHR_materials_dispersion-CDCigqMd.esm.js.map +1 -0
  64. package/dist/chunks/KHR_materials_dispersion-CzJ-kzY0.esm.min.js +2 -0
  65. package/dist/chunks/KHR_materials_dispersion-CzJ-kzY0.esm.min.js.map +1 -0
  66. package/dist/chunks/KHR_materials_emissive_strength-C727hCIO.esm.js +55 -0
  67. package/dist/chunks/KHR_materials_emissive_strength-C727hCIO.esm.js.map +1 -0
  68. package/dist/chunks/KHR_materials_emissive_strength-DHmw-T7v.esm.min.js +2 -0
  69. package/dist/chunks/KHR_materials_emissive_strength-DHmw-T7v.esm.min.js.map +1 -0
  70. package/dist/chunks/KHR_materials_ior-CUkwwamZ.esm.min.js +2 -0
  71. package/dist/chunks/KHR_materials_ior-CUkwwamZ.esm.min.js.map +1 -0
  72. package/dist/chunks/KHR_materials_ior-arU1qfpr.esm.js +64 -0
  73. package/dist/chunks/KHR_materials_ior-arU1qfpr.esm.js.map +1 -0
  74. package/dist/chunks/KHR_materials_iridescence-BDFcEA9b.esm.js +72 -0
  75. package/dist/chunks/KHR_materials_iridescence-BDFcEA9b.esm.js.map +1 -0
  76. package/dist/chunks/KHR_materials_iridescence-Dv1MtidF.esm.min.js +2 -0
  77. package/dist/chunks/KHR_materials_iridescence-Dv1MtidF.esm.min.js.map +1 -0
  78. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-IoDqngfZ.esm.js +81 -0
  79. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-IoDqngfZ.esm.js.map +1 -0
  80. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-r32OVvwD.esm.min.js +2 -0
  81. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-r32OVvwD.esm.min.js.map +1 -0
  82. package/dist/chunks/KHR_materials_sheen-BBwukNo5.esm.js +85 -0
  83. package/dist/chunks/KHR_materials_sheen-BBwukNo5.esm.js.map +1 -0
  84. package/dist/chunks/KHR_materials_sheen-upfKannz.esm.min.js +2 -0
  85. package/dist/chunks/KHR_materials_sheen-upfKannz.esm.min.js.map +1 -0
  86. package/dist/chunks/KHR_materials_specular-CLFluGSg.esm.min.js +2 -0
  87. package/dist/chunks/KHR_materials_specular-CLFluGSg.esm.min.js.map +1 -0
  88. package/dist/chunks/KHR_materials_specular-CRQL_z4b.esm.js +75 -0
  89. package/dist/chunks/KHR_materials_specular-CRQL_z4b.esm.js.map +1 -0
  90. package/dist/chunks/KHR_materials_transmission-6oV0DB3N.esm.min.js +2 -0
  91. package/dist/chunks/KHR_materials_transmission-6oV0DB3N.esm.min.js.map +1 -0
  92. package/dist/chunks/KHR_materials_transmission-x9Lwa871.esm.js +307 -0
  93. package/dist/chunks/KHR_materials_transmission-x9Lwa871.esm.js.map +1 -0
  94. package/dist/chunks/KHR_materials_unlit-B_foF8Lt.esm.min.js +2 -0
  95. package/dist/chunks/KHR_materials_unlit-B_foF8Lt.esm.min.js.map +1 -0
  96. package/dist/chunks/KHR_materials_unlit-CDGuKJjb.esm.js +74 -0
  97. package/dist/chunks/KHR_materials_unlit-CDGuKJjb.esm.js.map +1 -0
  98. package/dist/chunks/KHR_materials_variants-DANx-_Mx.esm.js +262 -0
  99. package/dist/chunks/KHR_materials_variants-DANx-_Mx.esm.js.map +1 -0
  100. package/dist/chunks/KHR_materials_variants-DL4EGGiE.esm.min.js +2 -0
  101. package/dist/chunks/KHR_materials_variants-DL4EGGiE.esm.min.js.map +1 -0
  102. package/dist/chunks/KHR_materials_volume-Dlquu8Y2.esm.js +87 -0
  103. package/dist/chunks/KHR_materials_volume-Dlquu8Y2.esm.js.map +1 -0
  104. package/dist/chunks/KHR_materials_volume-LVeMDkB_.esm.min.js +2 -0
  105. package/dist/chunks/KHR_materials_volume-LVeMDkB_.esm.min.js.map +1 -0
  106. package/dist/chunks/KHR_mesh_quantization-C1w2vzgz.esm.js +26 -0
  107. package/dist/chunks/KHR_mesh_quantization-C1w2vzgz.esm.js.map +1 -0
  108. package/dist/chunks/KHR_mesh_quantization-DfOGHc4g.esm.min.js +2 -0
  109. package/dist/chunks/KHR_mesh_quantization-DfOGHc4g.esm.min.js.map +1 -0
  110. package/dist/chunks/KHR_node_hoverability-BxU_AIs6.esm.min.js +2 -0
  111. package/dist/chunks/KHR_node_hoverability-BxU_AIs6.esm.min.js.map +1 -0
  112. package/dist/chunks/KHR_node_hoverability-DODhQaXP.esm.js +39 -0
  113. package/dist/chunks/KHR_node_hoverability-DODhQaXP.esm.js.map +1 -0
  114. package/dist/chunks/KHR_node_visibility-3haIZvsb.esm.js +46 -0
  115. package/dist/chunks/KHR_node_visibility-3haIZvsb.esm.js.map +1 -0
  116. package/dist/chunks/KHR_node_visibility-DDRTTQ-U.esm.min.js +2 -0
  117. package/dist/chunks/KHR_node_visibility-DDRTTQ-U.esm.min.js.map +1 -0
  118. package/dist/chunks/KHR_texture_basisu-CEPiCdOn.esm.min.js +2 -0
  119. package/dist/chunks/KHR_texture_basisu-CEPiCdOn.esm.min.js.map +1 -0
  120. package/dist/chunks/KHR_texture_basisu-gXsppVcQ.esm.js +43 -0
  121. package/dist/chunks/KHR_texture_basisu-gXsppVcQ.esm.js.map +1 -0
  122. package/dist/chunks/KHR_texture_transform-Bjux7yCy.esm.js +63 -0
  123. package/dist/chunks/KHR_texture_transform-Bjux7yCy.esm.js.map +1 -0
  124. package/dist/chunks/KHR_texture_transform-_PXwFDP8.esm.min.js +2 -0
  125. package/dist/chunks/KHR_texture_transform-_PXwFDP8.esm.min.js.map +1 -0
  126. package/dist/chunks/KHR_xmp_json_ld-DpaeEUGt.esm.min.js +2 -0
  127. package/dist/chunks/KHR_xmp_json_ld-DpaeEUGt.esm.min.js.map +1 -0
  128. package/dist/chunks/KHR_xmp_json_ld-DyzNphyu.esm.js +51 -0
  129. package/dist/chunks/KHR_xmp_json_ld-DyzNphyu.esm.js.map +1 -0
  130. package/dist/chunks/MSFT_audio_emitter-BGoxaF5U.esm.min.js +2 -0
  131. package/dist/chunks/MSFT_audio_emitter-BGoxaF5U.esm.min.js.map +1 -0
  132. package/dist/chunks/MSFT_audio_emitter-DEE5n41V.esm.js +2207 -0
  133. package/dist/chunks/MSFT_audio_emitter-DEE5n41V.esm.js.map +1 -0
  134. package/dist/chunks/MSFT_lod-D-_-eQHW.esm.js +337 -0
  135. package/dist/chunks/MSFT_lod-D-_-eQHW.esm.js.map +1 -0
  136. package/dist/chunks/MSFT_lod-XoRI0gWX.esm.min.js +2 -0
  137. package/dist/chunks/MSFT_lod-XoRI0gWX.esm.min.js.map +1 -0
  138. package/dist/chunks/MSFT_minecraftMesh-DO_tijSD.esm.js +46 -0
  139. package/dist/chunks/MSFT_minecraftMesh-DO_tijSD.esm.js.map +1 -0
  140. package/dist/chunks/MSFT_minecraftMesh-_iQvjiZi.esm.min.js +2 -0
  141. package/dist/chunks/MSFT_minecraftMesh-_iQvjiZi.esm.min.js.map +1 -0
  142. package/dist/chunks/MSFT_sRGBFactors-BLHF-pts.esm.js +47 -0
  143. package/dist/chunks/MSFT_sRGBFactors-BLHF-pts.esm.js.map +1 -0
  144. package/dist/chunks/MSFT_sRGBFactors-BTokzGgG.esm.min.js +2 -0
  145. package/dist/chunks/MSFT_sRGBFactors-BTokzGgG.esm.min.js.map +1 -0
  146. package/dist/chunks/animationGroup-BPxpoNna.esm.js +2482 -0
  147. package/dist/chunks/animationGroup-BPxpoNna.esm.js.map +1 -0
  148. package/dist/chunks/animationGroup-TpjYesJi.esm.min.js +2 -0
  149. package/dist/chunks/animationGroup-TpjYesJi.esm.min.js.map +1 -0
  150. package/dist/chunks/assetContainer-C11e8jK9.esm.js +1720 -0
  151. package/dist/chunks/assetContainer-C11e8jK9.esm.js.map +1 -0
  152. package/dist/chunks/assetContainer-DN0guS4J.esm.min.js +2 -0
  153. package/dist/chunks/assetContainer-DN0guS4J.esm.min.js.map +1 -0
  154. package/dist/chunks/audioEngine-BPCDLqX1.esm.js +305 -0
  155. package/dist/chunks/audioEngine-BPCDLqX1.esm.js.map +1 -0
  156. package/dist/chunks/audioEngine-jDnUlloH.esm.min.js +2 -0
  157. package/dist/chunks/audioEngine-jDnUlloH.esm.min.js.map +1 -0
  158. package/dist/chunks/bakedVertexAnimation-Cz6yjm9Z.esm.js +114 -0
  159. package/dist/chunks/bakedVertexAnimation-Cz6yjm9Z.esm.js.map +1 -0
  160. package/dist/chunks/bakedVertexAnimation-QOLg75eL.esm.min.js +2 -0
  161. package/dist/chunks/bakedVertexAnimation-QOLg75eL.esm.min.js.map +1 -0
  162. package/dist/chunks/basisTextureLoader-BoGBC9bq.esm.js +600 -0
  163. package/dist/chunks/basisTextureLoader-BoGBC9bq.esm.js.map +1 -0
  164. package/dist/chunks/basisTextureLoader-D6orCmzb.esm.min.js +2 -0
  165. package/dist/chunks/basisTextureLoader-D6orCmzb.esm.min.js.map +1 -0
  166. package/dist/chunks/dds-DPGLfLtA.esm.js +540 -0
  167. package/dist/chunks/dds-DPGLfLtA.esm.js.map +1 -0
  168. package/dist/chunks/dds-ty-4gLsX.esm.min.js +2 -0
  169. package/dist/chunks/dds-ty-4gLsX.esm.min.js.map +1 -0
  170. package/dist/chunks/ddsTextureLoader-BCk_i6Vj.esm.min.js +2 -0
  171. package/dist/chunks/ddsTextureLoader-BCk_i6Vj.esm.min.js.map +1 -0
  172. package/dist/chunks/ddsTextureLoader-DVbQnnL_.esm.js +88 -0
  173. package/dist/chunks/ddsTextureLoader-DVbQnnL_.esm.js.map +1 -0
  174. package/dist/chunks/decalFragment-BiywWcVN.esm.js +18 -0
  175. package/dist/chunks/decalFragment-BiywWcVN.esm.js.map +1 -0
  176. package/dist/chunks/decalFragment-D06mgECc.esm.min.js +2 -0
  177. package/dist/chunks/decalFragment-D06mgECc.esm.min.js.map +1 -0
  178. package/dist/chunks/default.fragment-B_HQTa4-.esm.min.js +2 -0
  179. package/dist/chunks/default.fragment-B_HQTa4-.esm.min.js.map +1 -0
  180. package/dist/chunks/default.fragment-BiTyj-JR.esm.min.js +2 -0
  181. package/dist/chunks/default.fragment-BiTyj-JR.esm.min.js.map +1 -0
  182. package/dist/chunks/default.fragment-DPPypY0M.esm.js +515 -0
  183. package/dist/chunks/default.fragment-DPPypY0M.esm.js.map +1 -0
  184. package/dist/chunks/default.fragment-Yh18209a.esm.js +446 -0
  185. package/dist/chunks/default.fragment-Yh18209a.esm.js.map +1 -0
  186. package/dist/chunks/default.vertex-BGoXgJxH.esm.min.js +2 -0
  187. package/dist/chunks/default.vertex-BGoXgJxH.esm.min.js.map +1 -0
  188. package/dist/chunks/default.vertex-CHD4PKUY.esm.min.js +2 -0
  189. package/dist/chunks/default.vertex-CHD4PKUY.esm.min.js.map +1 -0
  190. package/dist/chunks/default.vertex-L7AngZxY.esm.js +211 -0
  191. package/dist/chunks/default.vertex-L7AngZxY.esm.js.map +1 -0
  192. package/dist/chunks/default.vertex-bWGrH88y.esm.js +190 -0
  193. package/dist/chunks/default.vertex-bWGrH88y.esm.js.map +1 -0
  194. package/dist/chunks/defaultUboDeclaration-C1wAUiUE.esm.js +15 -0
  195. package/dist/chunks/defaultUboDeclaration-C1wAUiUE.esm.js.map +1 -0
  196. package/dist/chunks/defaultUboDeclaration-Cui4ai4R.esm.min.js +2 -0
  197. package/dist/chunks/defaultUboDeclaration-Cui4ai4R.esm.min.js.map +1 -0
  198. package/dist/chunks/defaultUboDeclaration-DQrGGmYB.esm.min.js +2 -0
  199. package/dist/chunks/defaultUboDeclaration-DQrGGmYB.esm.min.js.map +1 -0
  200. package/dist/chunks/defaultUboDeclaration-DwKq3ipu.esm.js +13 -0
  201. package/dist/chunks/defaultUboDeclaration-DwKq3ipu.esm.js.map +1 -0
  202. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js +11 -0
  203. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js.map +1 -0
  204. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js +2 -0
  205. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js.map +1 -0
  206. package/dist/chunks/dumpTools-CK6KW8rD.esm.js +200 -0
  207. package/dist/chunks/dumpTools-CK6KW8rD.esm.js.map +1 -0
  208. package/dist/chunks/dumpTools-DtuBR0TB.esm.min.js +2 -0
  209. package/dist/chunks/dumpTools-DtuBR0TB.esm.min.js.map +1 -0
  210. package/dist/chunks/engine-CjwHJJ_I.esm.js +2216 -0
  211. package/dist/chunks/engine-CjwHJJ_I.esm.js.map +1 -0
  212. package/dist/chunks/engine-DDdcZyBr.esm.min.js +2 -0
  213. package/dist/chunks/engine-DDdcZyBr.esm.min.js.map +1 -0
  214. package/dist/chunks/engine.common-9BWDtT2M.esm.js +1162 -0
  215. package/dist/chunks/engine.common-9BWDtT2M.esm.js.map +1 -0
  216. package/dist/chunks/engine.common-B3oiG-PJ.esm.min.js +2 -0
  217. package/dist/chunks/engine.common-B3oiG-PJ.esm.min.js.map +1 -0
  218. package/dist/chunks/envTextureLoader-B2kcZ0TS.esm.js +64 -0
  219. package/dist/chunks/envTextureLoader-B2kcZ0TS.esm.js.map +1 -0
  220. package/dist/chunks/envTextureLoader-BJ0RU-N0.esm.min.js +2 -0
  221. package/dist/chunks/envTextureLoader-BJ0RU-N0.esm.min.js.map +1 -0
  222. package/dist/chunks/environmentTextureTools-BDDKxUKH.esm.js +382 -0
  223. package/dist/chunks/environmentTextureTools-BDDKxUKH.esm.js.map +1 -0
  224. package/dist/chunks/environmentTextureTools-BuVOE0iE.esm.min.js +2 -0
  225. package/dist/chunks/environmentTextureTools-BuVOE0iE.esm.min.js.map +1 -0
  226. package/dist/chunks/exrTextureLoader-ByEbgBJq.esm.min.js +2 -0
  227. package/dist/chunks/exrTextureLoader-ByEbgBJq.esm.min.js.map +1 -0
  228. package/dist/chunks/exrTextureLoader-CVJEgA3V.esm.js +1683 -0
  229. package/dist/chunks/exrTextureLoader-CVJEgA3V.esm.js.map +1 -0
  230. package/dist/chunks/fogFragment-BCI6G-ZP.esm.min.js +2 -0
  231. package/dist/chunks/fogFragment-BCI6G-ZP.esm.min.js.map +1 -0
  232. package/dist/chunks/fogFragment-DWRmb1tG.esm.min.js +2 -0
  233. package/dist/chunks/fogFragment-DWRmb1tG.esm.min.js.map +1 -0
  234. package/dist/chunks/fogFragment-Dmcif2rs.esm.js +102 -0
  235. package/dist/chunks/fogFragment-Dmcif2rs.esm.js.map +1 -0
  236. package/dist/chunks/fogFragment-K4UslW3k.esm.js +101 -0
  237. package/dist/chunks/fogFragment-K4UslW3k.esm.js.map +1 -0
  238. package/dist/chunks/fresnelFunction-Byr-DptL.esm.js +12 -0
  239. package/dist/chunks/fresnelFunction-Byr-DptL.esm.js.map +1 -0
  240. package/dist/chunks/fresnelFunction-nqy6Uoot.esm.min.js +2 -0
  241. package/dist/chunks/fresnelFunction-nqy6Uoot.esm.min.js.map +1 -0
  242. package/dist/chunks/glTFLoader-BNHy6PGg.esm.min.js +2 -0
  243. package/dist/chunks/glTFLoader-BNHy6PGg.esm.min.js.map +1 -0
  244. package/dist/chunks/glTFLoader-Bt4XTOHj.esm.js +7658 -0
  245. package/dist/chunks/glTFLoader-Bt4XTOHj.esm.js.map +1 -0
  246. package/dist/chunks/glTFLoaderAnimation-C7bRnMuQ.esm.min.js +2 -0
  247. package/dist/chunks/glTFLoaderAnimation-C7bRnMuQ.esm.min.js.map +1 -0
  248. package/dist/chunks/glTFLoaderAnimation-wzgl1G3Q.esm.js +77 -0
  249. package/dist/chunks/glTFLoaderAnimation-wzgl1G3Q.esm.js.map +1 -0
  250. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js +2 -0
  251. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js.map +1 -0
  252. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js +67 -0
  253. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js.map +1 -0
  254. package/dist/chunks/harmonicsFunctions-CJK-zUAx.esm.min.js +2 -0
  255. package/dist/chunks/harmonicsFunctions-CJK-zUAx.esm.min.js.map +1 -0
  256. package/dist/chunks/harmonicsFunctions-Cc4Kn69U.esm.js +35 -0
  257. package/dist/chunks/harmonicsFunctions-Cc4Kn69U.esm.js.map +1 -0
  258. package/dist/chunks/harmonicsFunctions-D_T4jAii.esm.min.js +2 -0
  259. package/dist/chunks/harmonicsFunctions-D_T4jAii.esm.min.js.map +1 -0
  260. package/dist/chunks/harmonicsFunctions-KLqvdh60.esm.js +34 -0
  261. package/dist/chunks/harmonicsFunctions-KLqvdh60.esm.js.map +1 -0
  262. package/dist/chunks/hdrTextureLoader-C6Df--L1.esm.js +253 -0
  263. package/dist/chunks/hdrTextureLoader-C6Df--L1.esm.js.map +1 -0
  264. package/dist/chunks/hdrTextureLoader-CsfShnoX.esm.min.js +2 -0
  265. package/dist/chunks/hdrTextureLoader-CsfShnoX.esm.min.js.map +1 -0
  266. package/dist/chunks/helperFunctions-DDGAItWp.esm.js +80 -0
  267. package/dist/chunks/helperFunctions-DDGAItWp.esm.js.map +1 -0
  268. package/dist/chunks/helperFunctions-DR_I6MXm.esm.min.js +2 -0
  269. package/dist/chunks/helperFunctions-DR_I6MXm.esm.min.js.map +1 -0
  270. package/dist/chunks/helperFunctions-DciHbMbJ.esm.min.js +2 -0
  271. package/dist/chunks/helperFunctions-DciHbMbJ.esm.min.js.map +1 -0
  272. package/dist/chunks/helperFunctions-Dp1Kzl1o.esm.js +108 -0
  273. package/dist/chunks/helperFunctions-Dp1Kzl1o.esm.js.map +1 -0
  274. package/dist/chunks/iesTextureLoader-6OJu6Vq2.esm.min.js +2 -0
  275. package/dist/chunks/iesTextureLoader-6OJu6Vq2.esm.min.js.map +1 -0
  276. package/dist/chunks/iesTextureLoader-Bm570oWa.esm.js +189 -0
  277. package/dist/chunks/iesTextureLoader-Bm570oWa.esm.js.map +1 -0
  278. package/dist/chunks/index-B6sqDOGz.esm.js +74825 -0
  279. package/dist/chunks/index-B6sqDOGz.esm.js.map +1 -0
  280. package/dist/chunks/index-D3BVnHHq.esm.min.js +57 -0
  281. package/dist/chunks/index-D3BVnHHq.esm.min.js.map +1 -0
  282. package/dist/chunks/ktxTextureLoader-Bqe5q1rf.esm.js +814 -0
  283. package/dist/chunks/ktxTextureLoader-Bqe5q1rf.esm.js.map +1 -0
  284. package/dist/chunks/ktxTextureLoader-CYGltN4N.esm.min.js +2 -0
  285. package/dist/chunks/ktxTextureLoader-CYGltN4N.esm.min.js.map +1 -0
  286. package/dist/chunks/logDepthDeclaration-5ljdm3vC.esm.min.js +2 -0
  287. package/dist/chunks/logDepthDeclaration-5ljdm3vC.esm.min.js.map +1 -0
  288. package/dist/chunks/logDepthDeclaration-BAi1U8tp.esm.js +35 -0
  289. package/dist/chunks/logDepthDeclaration-BAi1U8tp.esm.js.map +1 -0
  290. package/dist/chunks/logDepthDeclaration-BhyTMFMU.esm.js +11 -0
  291. package/dist/chunks/logDepthDeclaration-BhyTMFMU.esm.js.map +1 -0
  292. package/dist/chunks/logDepthDeclaration-TpKbhGMf.esm.min.js +2 -0
  293. package/dist/chunks/logDepthDeclaration-TpKbhGMf.esm.min.js.map +1 -0
  294. package/dist/chunks/logDepthVertex-CAe41JFY.esm.js +77 -0
  295. package/dist/chunks/logDepthVertex-CAe41JFY.esm.js.map +1 -0
  296. package/dist/chunks/logDepthVertex-DSb3D1Hm.esm.js +81 -0
  297. package/dist/chunks/logDepthVertex-DSb3D1Hm.esm.js.map +1 -0
  298. package/dist/chunks/logDepthVertex-I7P1jvLX.esm.min.js +2 -0
  299. package/dist/chunks/logDepthVertex-I7P1jvLX.esm.min.js.map +1 -0
  300. package/dist/chunks/logDepthVertex-JJkSRL9W.esm.min.js +2 -0
  301. package/dist/chunks/logDepthVertex-JJkSRL9W.esm.min.js.map +1 -0
  302. package/dist/chunks/mainUVVaryingDeclaration-BOsqkSBn.esm.js +11 -0
  303. package/dist/chunks/mainUVVaryingDeclaration-BOsqkSBn.esm.js.map +1 -0
  304. package/dist/chunks/mainUVVaryingDeclaration-CInC18r7.esm.js +11 -0
  305. package/dist/chunks/mainUVVaryingDeclaration-CInC18r7.esm.js.map +1 -0
  306. package/dist/chunks/mainUVVaryingDeclaration-CS3E9EgB.esm.min.js +2 -0
  307. package/dist/chunks/mainUVVaryingDeclaration-CS3E9EgB.esm.min.js.map +1 -0
  308. package/dist/chunks/mainUVVaryingDeclaration-ChM_7YDH.esm.min.js +2 -0
  309. package/dist/chunks/mainUVVaryingDeclaration-ChM_7YDH.esm.min.js.map +1 -0
  310. package/dist/chunks/meshUboDeclaration-BJzygYVf.esm.min.js +2 -0
  311. package/dist/chunks/meshUboDeclaration-BJzygYVf.esm.min.js.map +1 -0
  312. package/dist/chunks/meshUboDeclaration-DM7Knmm0.esm.js +26 -0
  313. package/dist/chunks/meshUboDeclaration-DM7Knmm0.esm.js.map +1 -0
  314. package/dist/chunks/objFileLoader-DXh6dEqA.esm.min.js +2 -0
  315. package/dist/chunks/objFileLoader-DXh6dEqA.esm.min.js.map +1 -0
  316. package/dist/chunks/objFileLoader-DzxFwUIY.esm.js +1338 -0
  317. package/dist/chunks/objFileLoader-DzxFwUIY.esm.js.map +1 -0
  318. package/dist/chunks/oitFragment-C2V-9s6u.esm.min.js +2 -0
  319. package/dist/chunks/oitFragment-C2V-9s6u.esm.min.js.map +1 -0
  320. package/dist/chunks/oitFragment-DOPwpc5v.esm.js +1240 -0
  321. package/dist/chunks/oitFragment-DOPwpc5v.esm.js.map +1 -0
  322. package/dist/chunks/oitFragment-kS5s81PF.esm.min.js +2 -0
  323. package/dist/chunks/oitFragment-kS5s81PF.esm.min.js.map +1 -0
  324. package/dist/chunks/oitFragment-yAzK8PUt.esm.js +1078 -0
  325. package/dist/chunks/oitFragment-yAzK8PUt.esm.js.map +1 -0
  326. package/dist/chunks/pass.fragment-5ocLOmrf.esm.js +15 -0
  327. package/dist/chunks/pass.fragment-5ocLOmrf.esm.js.map +1 -0
  328. package/dist/chunks/pass.fragment-BN-f4kEG.esm.js +15 -0
  329. package/dist/chunks/pass.fragment-BN-f4kEG.esm.js.map +1 -0
  330. package/dist/chunks/pass.fragment-CE2yo34Z.esm.min.js +2 -0
  331. package/dist/chunks/pass.fragment-CE2yo34Z.esm.min.js.map +1 -0
  332. package/dist/chunks/pass.fragment-O74A4S0m.esm.min.js +2 -0
  333. package/dist/chunks/pass.fragment-O74A4S0m.esm.min.js.map +1 -0
  334. package/dist/chunks/pbr.fragment-AC22HTP0.esm.js +3273 -0
  335. package/dist/chunks/pbr.fragment-AC22HTP0.esm.js.map +1 -0
  336. package/dist/chunks/pbr.fragment-BsRPu6hA.esm.min.js +2 -0
  337. package/dist/chunks/pbr.fragment-BsRPu6hA.esm.min.js.map +1 -0
  338. package/dist/chunks/pbr.fragment-Dxb2AuuM.esm.js +3232 -0
  339. package/dist/chunks/pbr.fragment-Dxb2AuuM.esm.js.map +1 -0
  340. package/dist/chunks/pbr.fragment-Jz2EDvVc.esm.min.js +2 -0
  341. package/dist/chunks/pbr.fragment-Jz2EDvVc.esm.min.js.map +1 -0
  342. package/dist/chunks/pbr.vertex-BkRM-a3D.esm.min.js +2 -0
  343. package/dist/chunks/pbr.vertex-BkRM-a3D.esm.min.js.map +1 -0
  344. package/dist/chunks/pbr.vertex-DC-IeqOc.esm.js +348 -0
  345. package/dist/chunks/pbr.vertex-DC-IeqOc.esm.js.map +1 -0
  346. package/dist/chunks/pbr.vertex-DFq751_7.esm.js +223 -0
  347. package/dist/chunks/pbr.vertex-DFq751_7.esm.js.map +1 -0
  348. package/dist/chunks/pbr.vertex-NaenLCtj.esm.min.js +2 -0
  349. package/dist/chunks/pbr.vertex-NaenLCtj.esm.min.js.map +1 -0
  350. package/dist/chunks/postprocess.vertex-CCzNHvuk.esm.js +20 -0
  351. package/dist/chunks/postprocess.vertex-CCzNHvuk.esm.js.map +1 -0
  352. package/dist/chunks/postprocess.vertex-Mo0vpVxw.esm.min.js +2 -0
  353. package/dist/chunks/postprocess.vertex-Mo0vpVxw.esm.min.js.map +1 -0
  354. package/dist/chunks/rawTexture-DsvWY4wf.esm.js +191 -0
  355. package/dist/chunks/rawTexture-DsvWY4wf.esm.js.map +1 -0
  356. package/dist/chunks/rawTexture-Ub3t-s7i.esm.min.js +2 -0
  357. package/dist/chunks/rawTexture-Ub3t-s7i.esm.min.js.map +1 -0
  358. package/dist/chunks/ray-BRtIhzin.esm.min.js +2 -0
  359. package/dist/chunks/ray-BRtIhzin.esm.min.js.map +1 -0
  360. package/dist/chunks/ray-DGNoxqma.esm.js +946 -0
  361. package/dist/chunks/ray-DGNoxqma.esm.js.map +1 -0
  362. package/dist/chunks/rgbdDecode.fragment-CZhZbezW.esm.min.js +2 -0
  363. package/dist/chunks/rgbdDecode.fragment-CZhZbezW.esm.min.js.map +1 -0
  364. package/dist/chunks/rgbdDecode.fragment-CgKBbbD1.esm.js +13 -0
  365. package/dist/chunks/rgbdDecode.fragment-CgKBbbD1.esm.js.map +1 -0
  366. package/dist/chunks/rgbdDecode.fragment-LHNdHf3k.esm.min.js +2 -0
  367. package/dist/chunks/rgbdDecode.fragment-LHNdHf3k.esm.min.js.map +1 -0
  368. package/dist/chunks/rgbdDecode.fragment-fiTenc35.esm.js +13 -0
  369. package/dist/chunks/rgbdDecode.fragment-fiTenc35.esm.js.map +1 -0
  370. package/dist/chunks/rgbdEncode.fragment-9S80Pwpo.esm.min.js +2 -0
  371. package/dist/chunks/rgbdEncode.fragment-9S80Pwpo.esm.min.js.map +1 -0
  372. package/dist/chunks/rgbdEncode.fragment-BqEeZloN.esm.js +13 -0
  373. package/dist/chunks/rgbdEncode.fragment-BqEeZloN.esm.js.map +1 -0
  374. package/dist/chunks/rgbdEncode.fragment-DNHQ71A7.esm.min.js +2 -0
  375. package/dist/chunks/rgbdEncode.fragment-DNHQ71A7.esm.min.js.map +1 -0
  376. package/dist/chunks/rgbdEncode.fragment-Opuv8m2e.esm.js +13 -0
  377. package/dist/chunks/rgbdEncode.fragment-Opuv8m2e.esm.js.map +1 -0
  378. package/dist/chunks/splatFileLoader-ZYsB_KqH.esm.js +3379 -0
  379. package/dist/chunks/splatFileLoader-ZYsB_KqH.esm.js.map +1 -0
  380. package/dist/chunks/splatFileLoader-vkPYxHIT.esm.min.js +2 -0
  381. package/dist/chunks/splatFileLoader-vkPYxHIT.esm.min.js.map +1 -0
  382. package/dist/chunks/spotLight-BlYHhPZ5.esm.js +701 -0
  383. package/dist/chunks/spotLight-BlYHhPZ5.esm.js.map +1 -0
  384. package/dist/chunks/spotLight-CbgIfMbz.esm.min.js +2 -0
  385. package/dist/chunks/spotLight-CbgIfMbz.esm.min.js.map +1 -0
  386. package/dist/chunks/standardMaterial-2SzHzTgX.esm.js +1806 -0
  387. package/dist/chunks/standardMaterial-2SzHzTgX.esm.js.map +1 -0
  388. package/dist/chunks/standardMaterial-BuAbZl_Z.esm.min.js +2 -0
  389. package/dist/chunks/standardMaterial-BuAbZl_Z.esm.min.js.map +1 -0
  390. package/dist/chunks/stlFileLoader-5Kq215Ci.esm.js +238 -0
  391. package/dist/chunks/stlFileLoader-5Kq215Ci.esm.js.map +1 -0
  392. package/dist/chunks/stlFileLoader-wv5ATvZu.esm.min.js +2 -0
  393. package/dist/chunks/stlFileLoader-wv5ATvZu.esm.min.js.map +1 -0
  394. package/dist/chunks/tgaTextureLoader-DWICU4Mc.esm.js +349 -0
  395. package/dist/chunks/tgaTextureLoader-DWICU4Mc.esm.js.map +1 -0
  396. package/dist/chunks/tgaTextureLoader-bJsNfJzG.esm.min.js +2 -0
  397. package/dist/chunks/tgaTextureLoader-bJsNfJzG.esm.min.js.map +1 -0
  398. package/dist/chunks/thinEngine-BeWECwt6.esm.js +3848 -0
  399. package/dist/chunks/thinEngine-BeWECwt6.esm.js.map +1 -0
  400. package/dist/chunks/thinEngine-DFwbHE_G.esm.min.js +2 -0
  401. package/dist/chunks/thinEngine-DFwbHE_G.esm.min.js.map +1 -0
  402. package/dist/chunks/thinInstanceMesh-B1pIcpZJ.esm.min.js +2 -0
  403. package/dist/chunks/thinInstanceMesh-B1pIcpZJ.esm.min.js.map +1 -0
  404. package/dist/chunks/thinInstanceMesh-CwRJpzmW.esm.js +314 -0
  405. package/dist/chunks/thinInstanceMesh-CwRJpzmW.esm.js.map +1 -0
  406. package/dist/chunks/vertexColorMixing-BKr2fbgc.esm.js +531 -0
  407. package/dist/chunks/vertexColorMixing-BKr2fbgc.esm.js.map +1 -0
  408. package/dist/chunks/vertexColorMixing-BygjAnHj.esm.min.js +2 -0
  409. package/dist/chunks/vertexColorMixing-BygjAnHj.esm.min.js.map +1 -0
  410. package/dist/chunks/vertexColorMixing-HfObYyiq.esm.min.js +2 -0
  411. package/dist/chunks/vertexColorMixing-HfObYyiq.esm.min.js.map +1 -0
  412. package/dist/chunks/vertexColorMixing-_UoBUkRQ.esm.js +421 -0
  413. package/dist/chunks/vertexColorMixing-_UoBUkRQ.esm.js.map +1 -0
  414. package/dist/chunks/webgpuEngine-BPO8q4wr.esm.js +11533 -0
  415. package/dist/chunks/webgpuEngine-BPO8q4wr.esm.js.map +1 -0
  416. package/dist/chunks/webgpuEngine-DvdhZwbl.esm.min.js +2 -0
  417. package/dist/chunks/webgpuEngine-DvdhZwbl.esm.min.js.map +1 -0
  418. package/dist/chunks/workerPool-BUOov2K1.esm.js +122 -0
  419. package/dist/chunks/workerPool-BUOov2K1.esm.js.map +1 -0
  420. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js +2 -0
  421. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js.map +1 -0
  422. package/lib/index.d.ts +591 -0
  423. package/lib/index.js +2165 -0
  424. package/lib/index.js.map +1 -0
  425. package/package.json +19 -28
  426. package/readme.md +28 -28
  427. package/configuration/configuration.d.ts +0 -107
  428. package/configuration/configuration.js +0 -16
  429. package/configuration/configuration.js.map +0 -1
  430. package/configuration/configurationCompatibility.d.ts +0 -8
  431. package/configuration/configurationCompatibility.js +0 -66
  432. package/configuration/configurationCompatibility.js.map +0 -1
  433. package/configuration/configurationContainer.d.ts +0 -10
  434. package/configuration/configurationContainer.js +0 -10
  435. package/configuration/configurationContainer.js.map +0 -1
  436. package/configuration/globals.d.ts +0 -6
  437. package/configuration/globals.js +0 -18
  438. package/configuration/globals.js.map +0 -1
  439. package/configuration/index.d.ts +0 -2
  440. package/configuration/index.js +0 -4
  441. package/configuration/index.js.map +0 -1
  442. package/configuration/interfaces/cameraConfiguration.d.ts +0 -31
  443. package/configuration/interfaces/cameraConfiguration.js +0 -2
  444. package/configuration/interfaces/cameraConfiguration.js.map +0 -1
  445. package/configuration/interfaces/colorGradingConfiguration.d.ts +0 -81
  446. package/configuration/interfaces/colorGradingConfiguration.js +0 -2
  447. package/configuration/interfaces/colorGradingConfiguration.js.map +0 -1
  448. package/configuration/interfaces/defaultRenderingPipelineConfiguration.d.ts +0 -20
  449. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js +0 -2
  450. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js.map +0 -1
  451. package/configuration/interfaces/environmentMapConfiguration.d.ts +0 -22
  452. package/configuration/interfaces/environmentMapConfiguration.js +0 -2
  453. package/configuration/interfaces/environmentMapConfiguration.js.map +0 -1
  454. package/configuration/interfaces/groundConfiguration.d.ts +0 -24
  455. package/configuration/interfaces/groundConfiguration.js +0 -2
  456. package/configuration/interfaces/groundConfiguration.js.map +0 -1
  457. package/configuration/interfaces/imageProcessingConfiguration.d.ts +0 -45
  458. package/configuration/interfaces/imageProcessingConfiguration.js +0 -2
  459. package/configuration/interfaces/imageProcessingConfiguration.js.map +0 -1
  460. package/configuration/interfaces/index.d.ts +0 -15
  461. package/configuration/interfaces/index.js +0 -16
  462. package/configuration/interfaces/index.js.map +0 -1
  463. package/configuration/interfaces/lightConfiguration.d.ts +0 -60
  464. package/configuration/interfaces/lightConfiguration.js +0 -2
  465. package/configuration/interfaces/lightConfiguration.js.map +0 -1
  466. package/configuration/interfaces/modelAnimationConfiguration.d.ts +0 -26
  467. package/configuration/interfaces/modelAnimationConfiguration.js +0 -2
  468. package/configuration/interfaces/modelAnimationConfiguration.js.map +0 -1
  469. package/configuration/interfaces/modelConfiguration.d.ts +0 -65
  470. package/configuration/interfaces/modelConfiguration.js +0 -2
  471. package/configuration/interfaces/modelConfiguration.js.map +0 -1
  472. package/configuration/interfaces/observersConfiguration.d.ts +0 -5
  473. package/configuration/interfaces/observersConfiguration.js +0 -2
  474. package/configuration/interfaces/observersConfiguration.js.map +0 -1
  475. package/configuration/interfaces/sceneConfiguration.d.ts +0 -48
  476. package/configuration/interfaces/sceneConfiguration.js +0 -2
  477. package/configuration/interfaces/sceneConfiguration.js.map +0 -1
  478. package/configuration/interfaces/sceneOptimizerConfiguration.d.ts +0 -23
  479. package/configuration/interfaces/sceneOptimizerConfiguration.js +0 -2
  480. package/configuration/interfaces/sceneOptimizerConfiguration.js.map +0 -1
  481. package/configuration/interfaces/skyboxConfiguration.d.ts +0 -21
  482. package/configuration/interfaces/skyboxConfiguration.js +0 -2
  483. package/configuration/interfaces/skyboxConfiguration.js.map +0 -1
  484. package/configuration/interfaces/templateConfiguration.d.ts +0 -67
  485. package/configuration/interfaces/templateConfiguration.js +0 -2
  486. package/configuration/interfaces/templateConfiguration.js.map +0 -1
  487. package/configuration/interfaces/vrConfiguration.d.ts +0 -16
  488. package/configuration/interfaces/vrConfiguration.js +0 -2
  489. package/configuration/interfaces/vrConfiguration.js.map +0 -1
  490. package/configuration/loader.d.ts +0 -4
  491. package/configuration/loader.js +0 -17
  492. package/configuration/loader.js.map +0 -1
  493. package/configuration/mappers.d.ts +0 -43
  494. package/configuration/mappers.js +0 -193
  495. package/configuration/mappers.js.map +0 -1
  496. package/configuration/renderOnlyLoader.d.ts +0 -33
  497. package/configuration/renderOnlyLoader.js +0 -162
  498. package/configuration/renderOnlyLoader.js.map +0 -1
  499. package/configuration/types/default.d.ts +0 -6
  500. package/configuration/types/default.js +0 -121
  501. package/configuration/types/default.js.map +0 -1
  502. package/configuration/types/environmentMap.d.ts +0 -5
  503. package/configuration/types/environmentMap.js +0 -14
  504. package/configuration/types/environmentMap.js.map +0 -1
  505. package/configuration/types/extended.d.ts +0 -6
  506. package/configuration/types/extended.js +0 -317
  507. package/configuration/types/extended.js.map +0 -1
  508. package/configuration/types/index.d.ts +0 -14
  509. package/configuration/types/index.js +0 -51
  510. package/configuration/types/index.js.map +0 -1
  511. package/configuration/types/minimal.d.ts +0 -6
  512. package/configuration/types/minimal.js +0 -43
  513. package/configuration/types/minimal.js.map +0 -1
  514. package/configuration/types/renderOnlyDefault.d.ts +0 -30
  515. package/configuration/types/renderOnlyDefault.js +0 -31
  516. package/configuration/types/renderOnlyDefault.js.map +0 -1
  517. package/configuration/types/shadowLight.d.ts +0 -9
  518. package/configuration/types/shadowLight.js +0 -64
  519. package/configuration/types/shadowLight.js.map +0 -1
  520. package/helper/index.d.ts +0 -29
  521. package/helper/index.js +0 -66
  522. package/helper/index.js.map +0 -1
  523. package/index.d.ts +0 -30
  524. package/index.js +0 -46
  525. package/index.js.map +0 -1
  526. package/initializer.d.ts +0 -11
  527. package/initializer.js +0 -35
  528. package/initializer.js.map +0 -1
  529. package/interfaces.d.ts +0 -5
  530. package/interfaces.js +0 -7
  531. package/interfaces.js.map +0 -1
  532. package/labs/environmentSerializer.d.ts +0 -126
  533. package/labs/environmentSerializer.js +0 -191
  534. package/labs/environmentSerializer.js.map +0 -1
  535. package/labs/texture.d.ts +0 -183
  536. package/labs/texture.js +0 -351
  537. package/labs/texture.js.map +0 -1
  538. package/labs/viewerLabs.d.ts +0 -51
  539. package/labs/viewerLabs.js +0 -134
  540. package/labs/viewerLabs.js.map +0 -1
  541. package/loader/modelLoader.d.ts +0 -56
  542. package/loader/modelLoader.js +0 -202
  543. package/loader/modelLoader.js.map +0 -1
  544. package/loader/plugins/applyMaterialConfig.d.ts +0 -12
  545. package/loader/plugins/applyMaterialConfig.js +0 -16
  546. package/loader/plugins/applyMaterialConfig.js.map +0 -1
  547. package/loader/plugins/extendedMaterialLoaderPlugin.d.ts +0 -9
  548. package/loader/plugins/extendedMaterialLoaderPlugin.js +0 -16
  549. package/loader/plugins/extendedMaterialLoaderPlugin.js.map +0 -1
  550. package/loader/plugins/index.d.ts +0 -19
  551. package/loader/plugins/index.js +0 -44
  552. package/loader/plugins/index.js.map +0 -1
  553. package/loader/plugins/loaderPlugin.d.ts +0 -24
  554. package/loader/plugins/loaderPlugin.js +0 -2
  555. package/loader/plugins/loaderPlugin.js.map +0 -1
  556. package/loader/plugins/msftLodLoaderPlugin.d.ts +0 -12
  557. package/loader/plugins/msftLodLoaderPlugin.js +0 -21
  558. package/loader/plugins/msftLodLoaderPlugin.js.map +0 -1
  559. package/loader/plugins/telemetryLoaderPlugin.d.ts +0 -12
  560. package/loader/plugins/telemetryLoaderPlugin.js +0 -36
  561. package/loader/plugins/telemetryLoaderPlugin.js.map +0 -1
  562. package/managers/observablesManager.d.ts +0 -66
  563. package/managers/observablesManager.js +0 -35
  564. package/managers/observablesManager.js.map +0 -1
  565. package/managers/sceneManager.d.ts +0 -245
  566. package/managers/sceneManager.js +0 -1375
  567. package/managers/sceneManager.js.map +0 -1
  568. package/managers/telemetryManager.d.ts +0 -78
  569. package/managers/telemetryManager.js +0 -117
  570. package/managers/telemetryManager.js.map +0 -1
  571. package/model/modelAnimation.d.ts +0 -215
  572. package/model/modelAnimation.js +0 -237
  573. package/model/modelAnimation.js.map +0 -1
  574. package/model/viewerModel.d.ts +0 -233
  575. package/model/viewerModel.js +0 -673
  576. package/model/viewerModel.js.map +0 -1
  577. package/optimizer/custom/extended.d.ts +0 -13
  578. package/optimizer/custom/extended.js +0 -101
  579. package/optimizer/custom/extended.js.map +0 -1
  580. package/optimizer/custom/index.d.ts +0 -9
  581. package/optimizer/custom/index.js +0 -26
  582. package/optimizer/custom/index.js.map +0 -1
  583. package/renderOnlyIndex.d.ts +0 -11
  584. package/renderOnlyIndex.js +0 -18
  585. package/renderOnlyIndex.js.map +0 -1
  586. package/templating/eventManager.d.ts +0 -35
  587. package/templating/eventManager.js +0 -66
  588. package/templating/eventManager.js.map +0 -1
  589. package/templating/plugins/hdButtonPlugin.d.ts +0 -9
  590. package/templating/plugins/hdButtonPlugin.js +0 -22
  591. package/templating/plugins/hdButtonPlugin.js.map +0 -1
  592. package/templating/plugins/printButton.d.ts +0 -9
  593. package/templating/plugins/printButton.js +0 -41
  594. package/templating/plugins/printButton.js.map +0 -1
  595. package/templating/templateManager.d.ts +0 -197
  596. package/templating/templateManager.js +0 -561
  597. package/templating/templateManager.js.map +0 -1
  598. package/templating/viewerTemplatePlugin.d.ts +0 -21
  599. package/templating/viewerTemplatePlugin.js +0 -69
  600. package/templating/viewerTemplatePlugin.js.map +0 -1
  601. package/viewer/defaultViewer.d.ts +0 -130
  602. package/viewer/defaultViewer.js +0 -672
  603. package/viewer/defaultViewer.js.map +0 -1
  604. package/viewer/renderOnlyViewer.d.ts +0 -9
  605. package/viewer/renderOnlyViewer.js +0 -46
  606. package/viewer/renderOnlyViewer.js.map +0 -1
  607. package/viewer/viewer.d.ts +0 -258
  608. package/viewer/viewer.js +0 -783
  609. package/viewer/viewer.js.map +0 -1
  610. package/viewer/viewerManager.d.ts +0 -58
  611. package/viewer/viewerManager.js +0 -91
  612. package/viewer/viewerManager.js.map +0 -1
  613. package/viewer/viewerWithTemplate.d.ts +0 -9
  614. package/viewer/viewerWithTemplate.js +0 -20
  615. package/viewer/viewerWithTemplate.js.map +0 -1
@@ -0,0 +1,3232 @@
1
+ import { i as ShaderStore } from './index-B6sqDOGz.esm.js';
2
+ import './oitFragment-yAzK8PUt.esm.js';
3
+ import './harmonicsFunctions-KLqvdh60.esm.js';
4
+ import './mainUVVaryingDeclaration-BOsqkSBn.esm.js';
5
+ import './fogFragment-K4UslW3k.esm.js';
6
+ import './logDepthDeclaration-BhyTMFMU.esm.js';
7
+ import './helperFunctions-DDGAItWp.esm.js';
8
+ import './decalFragment-BiywWcVN.esm.js';
9
+ import './meshUboDeclaration-DM7Knmm0.esm.js';
10
+
11
+ // Do not edit.
12
+ const name$z = "pbrFragmentExtraDeclaration";
13
+ const shader$z = `varying vPositionW: vec3f;
14
+ #if DEBUGMODE>0
15
+ varying vClipSpacePosition: vec4f;
16
+ #endif
17
+ #include<mainUVVaryingDeclaration>[1..7]
18
+ #ifdef NORMAL
19
+ varying vNormalW: vec3f;
20
+ #if defined(USESPHERICALFROMREFLECTIONMAP) && defined(USESPHERICALINVERTEX)
21
+ varying vEnvironmentIrradiance: vec3f;
22
+ #endif
23
+ #endif
24
+ #if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)
25
+ varying vColor: vec4f;
26
+ #endif
27
+ `;
28
+ // Sideeffect
29
+ ShaderStore.IncludesShadersStoreWGSL[name$z] = shader$z;
30
+
31
+ // Do not edit.
32
+ const name$y = "samplerFragmentAlternateDeclaration";
33
+ const shader$y = `#ifdef _DEFINENAME_
34
+ #if _DEFINENAME_DIRECTUV==1
35
+ #define v_VARYINGNAME_UV vMainUV1
36
+ #elif _DEFINENAME_DIRECTUV==2
37
+ #define v_VARYINGNAME_UV vMainUV2
38
+ #elif _DEFINENAME_DIRECTUV==3
39
+ #define v_VARYINGNAME_UV vMainUV3
40
+ #elif _DEFINENAME_DIRECTUV==4
41
+ #define v_VARYINGNAME_UV vMainUV4
42
+ #elif _DEFINENAME_DIRECTUV==5
43
+ #define v_VARYINGNAME_UV vMainUV5
44
+ #elif _DEFINENAME_DIRECTUV==6
45
+ #define v_VARYINGNAME_UV vMainUV6
46
+ #else
47
+ varying v_VARYINGNAME_UV: vec2f;
48
+ #endif
49
+ #endif
50
+ `;
51
+ // Sideeffect
52
+ ShaderStore.IncludesShadersStoreWGSL[name$y] = shader$y;
53
+
54
+ // Do not edit.
55
+ const name$x = "pbrFragmentSamplersDeclaration";
56
+ const shader$x = `#include<samplerFragmentDeclaration>(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_SAMPLERNAME_,albedo)
57
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,AMBIENT,_VARYINGNAME_,Ambient,_SAMPLERNAME_,ambient)
58
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,OPACITY,_VARYINGNAME_,Opacity,_SAMPLERNAME_,opacity)
59
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,EMISSIVE,_VARYINGNAME_,Emissive,_SAMPLERNAME_,emissive)
60
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,LIGHTMAP,_VARYINGNAME_,Lightmap,_SAMPLERNAME_,lightmap)
61
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,REFLECTIVITY,_VARYINGNAME_,Reflectivity,_SAMPLERNAME_,reflectivity)
62
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,MICROSURFACEMAP,_VARYINGNAME_,MicroSurfaceSampler,_SAMPLERNAME_,microSurface)
63
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,METALLIC_REFLECTANCE,_VARYINGNAME_,MetallicReflectance,_SAMPLERNAME_,metallicReflectance)
64
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,REFLECTANCE,_VARYINGNAME_,Reflectance,_SAMPLERNAME_,reflectance)
65
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,DECAL,_VARYINGNAME_,Decal,_SAMPLERNAME_,decal)
66
+ #ifdef CLEARCOAT
67
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,CLEARCOAT_TEXTURE,_VARYINGNAME_,ClearCoat,_SAMPLERNAME_,clearCoat)
68
+ #include<samplerFragmentAlternateDeclaration>(_DEFINENAME_,CLEARCOAT_TEXTURE_ROUGHNESS,_VARYINGNAME_,ClearCoatRoughness)
69
+ #if defined(CLEARCOAT_TEXTURE_ROUGHNESS)
70
+ var clearCoatRoughnessSamplerSampler: sampler;var clearCoatRoughnessSampler: texture_2d<f32>;
71
+ #endif
72
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,CLEARCOAT_BUMP,_VARYINGNAME_,ClearCoatBump,_SAMPLERNAME_,clearCoatBump)
73
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,CLEARCOAT_TINT_TEXTURE,_VARYINGNAME_,ClearCoatTint,_SAMPLERNAME_,clearCoatTint)
74
+ #endif
75
+ #ifdef IRIDESCENCE
76
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,IRIDESCENCE_TEXTURE,_VARYINGNAME_,Iridescence,_SAMPLERNAME_,iridescence)
77
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,IRIDESCENCE_THICKNESS_TEXTURE,_VARYINGNAME_,IridescenceThickness,_SAMPLERNAME_,iridescenceThickness)
78
+ #endif
79
+ #ifdef SHEEN
80
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SHEEN_TEXTURE,_VARYINGNAME_,Sheen,_SAMPLERNAME_,sheen)
81
+ #include<samplerFragmentAlternateDeclaration>(_DEFINENAME_,SHEEN_TEXTURE_ROUGHNESS,_VARYINGNAME_,SheenRoughness)
82
+ #if defined(SHEEN_ROUGHNESS) && defined(SHEEN_TEXTURE_ROUGHNESS)
83
+ var sheenRoughnessSamplerSampler: sampler;var sheenRoughnessSampler: texture_2d<f32>;
84
+ #endif
85
+ #endif
86
+ #ifdef ANISOTROPIC
87
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,ANISOTROPIC_TEXTURE,_VARYINGNAME_,Anisotropy,_SAMPLERNAME_,anisotropy)
88
+ #endif
89
+ #ifdef REFLECTION
90
+ #ifdef REFLECTIONMAP_3D
91
+ var reflectionSamplerSampler: sampler;var reflectionSampler: texture_cube<f32>;
92
+ #ifdef LODBASEDMICROSFURACE
93
+ #else
94
+ var reflectionLowSamplerSampler: sampler;var reflectionLowSampler: texture_cube<f32>;var reflectionHighSamplerSampler: sampler;var reflectionHighSampler: texture_cube<f32>;
95
+ #endif
96
+ #ifdef USEIRRADIANCEMAP
97
+ var irradianceSamplerSampler: sampler;var irradianceSampler: texture_cube<f32>;
98
+ #endif
99
+ #else
100
+ var reflectionSamplerSampler: sampler;var reflectionSampler: texture_2d<f32>;
101
+ #ifdef LODBASEDMICROSFURACE
102
+ #else
103
+ var reflectionLowSamplerSampler: sampler;var reflectionLowSampler: texture_2d<f32>;var reflectionHighSamplerSampler: sampler;var reflectionHighSampler: texture_2d<f32>;
104
+ #endif
105
+ #ifdef USEIRRADIANCEMAP
106
+ var irradianceSamplerSampler: sampler;var irradianceSampler: texture_2d<f32>;
107
+ #endif
108
+ #endif
109
+ #ifdef REFLECTIONMAP_SKYBOX
110
+ varying vPositionUVW: vec3f;
111
+ #else
112
+ #if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)
113
+ varying vDirectionW: vec3f;
114
+ #endif
115
+ #endif
116
+ #endif
117
+ #ifdef ENVIRONMENTBRDF
118
+ var environmentBrdfSamplerSampler: sampler;var environmentBrdfSampler: texture_2d<f32>;
119
+ #endif
120
+ #ifdef SUBSURFACE
121
+ #ifdef SS_REFRACTION
122
+ #ifdef SS_REFRACTIONMAP_3D
123
+ var refractionSamplerSampler: sampler;var refractionSampler: texture_cube<f32>;
124
+ #ifdef LODBASEDMICROSFURACE
125
+ #else
126
+ var refractionLowSamplerSampler: sampler;var refractionLowSampler: texture_cube<f32>;var refractionHighSamplerSampler: sampler;var refractionHighSampler: texture_cube<f32>;
127
+ #endif
128
+ #else
129
+ var refractionSamplerSampler: sampler;var refractionSampler: texture_2d<f32>;
130
+ #ifdef LODBASEDMICROSFURACE
131
+ #else
132
+ var refractionLowSamplerSampler: sampler;var refractionLowSampler: texture_2d<f32>;var refractionHighSamplerSampler: sampler;var refractionHighSampler: texture_2d<f32>;
133
+ #endif
134
+ #endif
135
+ #endif
136
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SS_THICKNESSANDMASK_TEXTURE,_VARYINGNAME_,Thickness,_SAMPLERNAME_,thickness)
137
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SS_REFRACTIONINTENSITY_TEXTURE,_VARYINGNAME_,RefractionIntensity,_SAMPLERNAME_,refractionIntensity)
138
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SS_TRANSLUCENCYINTENSITY_TEXTURE,_VARYINGNAME_,TranslucencyIntensity,_SAMPLERNAME_,translucencyIntensity)
139
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SS_TRANSLUCENCYCOLOR_TEXTURE,_VARYINGNAME_,TranslucencyColor,_SAMPLERNAME_,translucencyColor)
140
+ #endif
141
+ #ifdef IBL_CDF_FILTERING
142
+ var icdfxSamplerSampler: sampler;var icdfxSampler: texture_2d<f32>;var icdfySamplerSampler: sampler;var icdfySampler: texture_2d<f32>;
143
+ #endif
144
+ `;
145
+ // Sideeffect
146
+ ShaderStore.IncludesShadersStoreWGSL[name$x] = shader$x;
147
+
148
+ // Do not edit.
149
+ const name$w = "subSurfaceScatteringFunctions";
150
+ const shader$w = `fn testLightingForSSS(diffusionProfile: f32)->bool
151
+ {return diffusionProfile<1.;}`;
152
+ // Sideeffect
153
+ ShaderStore.IncludesShadersStoreWGSL[name$w] = shader$w;
154
+
155
+ // Do not edit.
156
+ const name$v = "importanceSampling";
157
+ const shader$v = `fn hemisphereCosSample(u: vec2f)->vec3f {var phi: f32=2.*PI*u.x;var cosTheta2: f32=1.-u.y;var cosTheta: f32=sqrt(cosTheta2);var sinTheta: f32=sqrt(1.-cosTheta2);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}
158
+ fn hemisphereImportanceSampleDggx(u: vec2f,a: f32)->vec3f {var phi: f32=2.*PI*u.x;var cosTheta2: f32=(1.-u.y)/(1.+(a+1.)*((a-1.)*u.y));var cosTheta: f32=sqrt(cosTheta2);var sinTheta: f32=sqrt(1.-cosTheta2);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}
159
+ fn hemisphereImportanceSampleDCharlie(u: vec2f,a: f32)->vec3f {
160
+ var phi: f32=2.*PI*u.x;var sinTheta: f32=pow(u.y,a/(2.*a+1.));var cosTheta: f32=sqrt(1.-sinTheta*sinTheta);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}`;
161
+ // Sideeffect
162
+ ShaderStore.IncludesShadersStoreWGSL[name$v] = shader$v;
163
+
164
+ // Do not edit.
165
+ const name$u = "pbrHelperFunctions";
166
+ const shader$u = `#define MINIMUMVARIANCE 0.0005
167
+ fn convertRoughnessToAverageSlope(roughness: f32)->f32
168
+ {return roughness*roughness+MINIMUMVARIANCE;}
169
+ fn fresnelGrazingReflectance(reflectance0: f32)->f32 {var reflectance90: f32=saturate(reflectance0*25.0);return reflectance90;}
170
+ fn getAARoughnessFactors(normalVector: vec3f)->vec2f {
171
+ #ifdef SPECULARAA
172
+ var nDfdx: vec3f=dpdx(normalVector.xyz);var nDfdy: vec3f=dpdy(normalVector.xyz);var slopeSquare: f32=max(dot(nDfdx,nDfdx),dot(nDfdy,nDfdy));var geometricRoughnessFactor: f32=pow(saturate(slopeSquare),0.333);var geometricAlphaGFactor: f32=sqrt(slopeSquare);geometricAlphaGFactor*=0.75;return vec2f(geometricRoughnessFactor,geometricAlphaGFactor);
173
+ #else
174
+ return vec2f(0.);
175
+ #endif
176
+ }
177
+ #ifdef ANISOTROPIC
178
+ #ifdef ANISOTROPIC_LEGACY
179
+ fn getAnisotropicRoughness(alphaG: f32,anisotropy: f32)->vec2f {var alphaT: f32=max(alphaG*(1.0+anisotropy),MINIMUMVARIANCE);var alphaB: f32=max(alphaG*(1.0-anisotropy),MINIMUMVARIANCE);return vec2f(alphaT,alphaB);}
180
+ fn getAnisotropicBentNormals(T: vec3f,B: vec3f,N: vec3f,V: vec3f,anisotropy: f32,roughness: f32)->vec3f {var anisotropicFrameDirection: vec3f=select(T,B,anisotropy>=0.0);var anisotropicFrameTangent: vec3f=cross(normalize(anisotropicFrameDirection),V);var anisotropicFrameNormal: vec3f=cross(anisotropicFrameTangent,anisotropicFrameDirection);var anisotropicNormal: vec3f=normalize(mix(N,anisotropicFrameNormal,abs(anisotropy)));return anisotropicNormal;}
181
+ #else
182
+ fn getAnisotropicRoughness(alphaG: f32,anisotropy: f32)->vec2f {var alphaT: f32=max(mix(alphaG,1.0,anisotropy*anisotropy),MINIMUMVARIANCE);var alphaB: f32=max(alphaG,MINIMUMVARIANCE);return vec2f(alphaT,alphaB);}
183
+ fn getAnisotropicBentNormals(T: vec3f,B: vec3f,N: vec3f,V: vec3f,anisotropy: f32,roughness: f32)->vec3f {var bentNormal: vec3f=cross(B,V);bentNormal=normalize(cross(bentNormal,B));var sq=1.0-anisotropy*(1.0-roughness);var a: f32=sq*sq*sq*sq;bentNormal=normalize(mix(bentNormal,N,a));return bentNormal;}
184
+ #endif
185
+ #endif
186
+ #if defined(CLEARCOAT) || defined(SS_REFRACTION)
187
+ fn cocaLambertVec3(alpha: vec3f,distance: f32)->vec3f {return exp(-alpha*distance);}
188
+ fn cocaLambert(NdotVRefract: f32,NdotLRefract: f32,alpha: vec3f,thickness: f32)->vec3f {return cocaLambertVec3(alpha,(thickness*((NdotLRefract+NdotVRefract)/(NdotLRefract*NdotVRefract))));}
189
+ fn computeColorAtDistanceInMedia(color: vec3f,distance: f32)->vec3f {return -log(color)/distance;}
190
+ fn computeClearCoatAbsorption(NdotVRefract: f32,NdotLRefract: f32,clearCoatColor: vec3f,clearCoatThickness: f32,clearCoatIntensity: f32)->vec3f {var clearCoatAbsorption: vec3f=mix( vec3f(1.0),
191
+ cocaLambert(NdotVRefract,NdotLRefract,clearCoatColor,clearCoatThickness),
192
+ clearCoatIntensity);return clearCoatAbsorption;}
193
+ #endif
194
+ #ifdef MICROSURFACEAUTOMATIC
195
+ fn computeDefaultMicroSurface(microSurface: f32,reflectivityColor: vec3f)->f32
196
+ {const kReflectivityNoAlphaWorkflow_SmoothnessMax: f32=0.95;var reflectivityLuminance: f32=getLuminance(reflectivityColor);var reflectivityLuma: f32=sqrt(reflectivityLuminance);var resultMicroSurface=reflectivityLuma*kReflectivityNoAlphaWorkflow_SmoothnessMax;return resultMicroSurface;}
197
+ #endif
198
+ `;
199
+ // Sideeffect
200
+ ShaderStore.IncludesShadersStoreWGSL[name$u] = shader$u;
201
+
202
+ // Do not edit.
203
+ const name$t = "pbrDirectLightingSetupFunctions";
204
+ const shader$t = `struct preLightingInfo
205
+ {lightOffset: vec3f,
206
+ lightDistanceSquared: f32,
207
+ lightDistance: f32,
208
+ attenuation: f32,
209
+ L: vec3f,
210
+ H: vec3f,
211
+ NdotV: f32,
212
+ NdotLUnclamped: f32,
213
+ NdotL: f32,
214
+ VdotH: f32,
215
+ roughness: f32,
216
+ #ifdef IRIDESCENCE
217
+ iridescenceIntensity: f32
218
+ #endif
219
+ };fn computePointAndSpotPreLightingInfo(lightData: vec4f,V: vec3f,N: vec3f,posW: vec3f)->preLightingInfo {var result: preLightingInfo;result.lightOffset=lightData.xyz-posW;result.lightDistanceSquared=dot(result.lightOffset,result.lightOffset);result.lightDistance=sqrt(result.lightDistanceSquared);result.L=normalize(result.lightOffset);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));result.NdotLUnclamped=dot(N,result.L);result.NdotL=saturateEps(result.NdotLUnclamped);return result;}
220
+ fn computeDirectionalPreLightingInfo(lightData: vec4f,V: vec3f,N: vec3f)->preLightingInfo {var result: preLightingInfo;result.lightDistance=length(-lightData.xyz);result.L=normalize(-lightData.xyz);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));result.NdotLUnclamped=dot(N,result.L);result.NdotL=saturateEps(result.NdotLUnclamped);return result;}
221
+ fn computeHemisphericPreLightingInfo(lightData: vec4f,V: vec3f,N: vec3f)->preLightingInfo {var result: preLightingInfo;result.NdotL=dot(N,lightData.xyz)*0.5+0.5;result.NdotL=saturateEps(result.NdotL);result.NdotLUnclamped=result.NdotL;
222
+ #ifdef SPECULARTERM
223
+ result.L=normalize(lightData.xyz);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));
224
+ #endif
225
+ return result;}`;
226
+ // Sideeffect
227
+ ShaderStore.IncludesShadersStoreWGSL[name$t] = shader$t;
228
+
229
+ // Do not edit.
230
+ const name$s = "pbrDirectLightingFalloffFunctions";
231
+ const shader$s = `fn computeDistanceLightFalloff_Standard(lightOffset: vec3f,range: f32)->f32
232
+ {return max(0.,1.0-length(lightOffset)/range);}
233
+ fn computeDistanceLightFalloff_Physical(lightDistanceSquared: f32)->f32
234
+ {return 1.0/maxEps(lightDistanceSquared);}
235
+ fn computeDistanceLightFalloff_GLTF(lightDistanceSquared: f32,inverseSquaredRange: f32)->f32
236
+ {var lightDistanceFalloff: f32=1.0/maxEps(lightDistanceSquared);var factor: f32=lightDistanceSquared*inverseSquaredRange;var attenuation: f32=saturate(1.0-factor*factor);attenuation*=attenuation;lightDistanceFalloff*=attenuation;return lightDistanceFalloff;}
237
+ fn computeDirectionalLightFalloff_IES(lightDirection: vec3f,directionToLightCenterW: vec3f,iesLightTexture: texture_2d<f32>,iesLightTextureSampler: sampler)->f32
238
+ {var cosAngle: f32=dot(-lightDirection,directionToLightCenterW);var angle=acos(cosAngle)/PI;return textureSampleLevel(iesLightTexture,iesLightTextureSampler,vec2f(angle,0),0.).r;}
239
+ fn computeDistanceLightFalloff(lightOffset: vec3f,lightDistanceSquared: f32,range: f32,inverseSquaredRange: f32)->f32
240
+ {
241
+ #ifdef USEPHYSICALLIGHTFALLOFF
242
+ return computeDistanceLightFalloff_Physical(lightDistanceSquared);
243
+ #elif defined(USEGLTFLIGHTFALLOFF)
244
+ return computeDistanceLightFalloff_GLTF(lightDistanceSquared,inverseSquaredRange);
245
+ #else
246
+ return computeDistanceLightFalloff_Standard(lightOffset,range);
247
+ #endif
248
+ }
249
+ fn computeDirectionalLightFalloff_Standard(lightDirection: vec3f,directionToLightCenterW: vec3f,cosHalfAngle: f32,exponent: f32)->f32
250
+ {var falloff: f32=0.0;var cosAngle: f32=maxEps(dot(-lightDirection,directionToLightCenterW));if (cosAngle>=cosHalfAngle)
251
+ {falloff=max(0.,pow(cosAngle,exponent));}
252
+ return falloff;}
253
+ fn computeDirectionalLightFalloff_Physical(lightDirection: vec3f,directionToLightCenterW: vec3f,cosHalfAngle: f32)->f32
254
+ {const kMinusLog2ConeAngleIntensityRatio: f32=6.64385618977;
255
+ var concentrationKappa: f32=kMinusLog2ConeAngleIntensityRatio/(1.0-cosHalfAngle);var lightDirectionSpreadSG: vec4f= vec4f(-lightDirection*concentrationKappa,-concentrationKappa);var falloff: f32=exp2(dot( vec4f(directionToLightCenterW,1.0),lightDirectionSpreadSG));return falloff;}
256
+ fn computeDirectionalLightFalloff_GLTF(lightDirection: vec3f,directionToLightCenterW: vec3f,lightAngleScale: f32,lightAngleOffset: f32)->f32
257
+ {var cd: f32=dot(-lightDirection,directionToLightCenterW);var falloff: f32=saturate(cd*lightAngleScale+lightAngleOffset);falloff*=falloff;return falloff;}
258
+ fn computeDirectionalLightFalloff(lightDirection: vec3f,directionToLightCenterW: vec3f,cosHalfAngle: f32,exponent: f32,lightAngleScale: f32,lightAngleOffset: f32)->f32
259
+ {
260
+ #ifdef USEPHYSICALLIGHTFALLOFF
261
+ return computeDirectionalLightFalloff_Physical(lightDirection,directionToLightCenterW,cosHalfAngle);
262
+ #elif defined(USEGLTFLIGHTFALLOFF)
263
+ return computeDirectionalLightFalloff_GLTF(lightDirection,directionToLightCenterW,lightAngleScale,lightAngleOffset);
264
+ #else
265
+ return computeDirectionalLightFalloff_Standard(lightDirection,directionToLightCenterW,cosHalfAngle,exponent);
266
+ #endif
267
+ }`;
268
+ // Sideeffect
269
+ ShaderStore.IncludesShadersStoreWGSL[name$s] = shader$s;
270
+
271
+ // Do not edit.
272
+ const name$r = "pbrBRDFFunctions";
273
+ const shader$r = `#define FRESNEL_MAXIMUM_ON_ROUGH 0.25
274
+ #ifdef MS_BRDF_ENERGY_CONSERVATION
275
+ fn getEnergyConservationFactor(specularEnvironmentR0: vec3f,environmentBrdf: vec3f)->vec3f {return 1.0+specularEnvironmentR0*(1.0/environmentBrdf.y-1.0);}
276
+ #endif
277
+ #ifdef ENVIRONMENTBRDF
278
+ fn getBRDFLookup(NdotV: f32,perceptualRoughness: f32)->vec3f {var UV: vec2f= vec2f(NdotV,perceptualRoughness);var brdfLookup: vec4f= textureSample(environmentBrdfSampler,environmentBrdfSamplerSampler,UV);
279
+ #ifdef ENVIRONMENTBRDF_RGBD
280
+ brdfLookup=vec4f(fromRGBD(brdfLookup.rgba),brdfLookup.a);
281
+ #endif
282
+ return brdfLookup.rgb;}
283
+ fn getReflectanceFromBRDFWithEnvLookup(specularEnvironmentR0: vec3f,specularEnvironmentR90: vec3f,environmentBrdf: vec3f)->vec3f {
284
+ #ifdef BRDF_V_HEIGHT_CORRELATED
285
+ var reflectance: vec3f=(specularEnvironmentR90-specularEnvironmentR0)*environmentBrdf.x+specularEnvironmentR0*environmentBrdf.y;
286
+ #else
287
+ var reflectance: vec3f=specularEnvironmentR0*environmentBrdf.x+specularEnvironmentR90*environmentBrdf.y;
288
+ #endif
289
+ return reflectance;}
290
+ fn getReflectanceFromBRDFLookup(specularEnvironmentR0: vec3f,environmentBrdf: vec3f)->vec3f {
291
+ #ifdef BRDF_V_HEIGHT_CORRELATED
292
+ var reflectance: vec3f=mix(environmentBrdf.xxx,environmentBrdf.yyy,specularEnvironmentR0);
293
+ #else
294
+ var reflectance: vec3f=specularEnvironmentR0*environmentBrdf.x+environmentBrdf.y;
295
+ #endif
296
+ return reflectance;}
297
+ #endif
298
+ /* NOT USED
299
+ #if defined(SHEEN) && defined(SHEEN_SOFTER)
300
+ fn getBRDFLookupCharlieSheen(NdotV: f32,perceptualRoughness: f32)->f32
301
+ {var c: f32=1.0-NdotV;var c3: f32=c*c*c;return 0.65584461*c3+1.0/(4.16526551+exp(-7.97291361*perceptualRoughness+6.33516894));}
302
+ #endif
303
+ */
304
+ #if !defined(ENVIRONMENTBRDF) || defined(REFLECTIONMAP_SKYBOX) || defined(ALPHAFRESNEL)
305
+ fn getReflectanceFromAnalyticalBRDFLookup_Jones(VdotN: f32,reflectance0: vec3f,reflectance90: vec3f,smoothness: f32)->vec3f
306
+ {var weight: f32=mix(FRESNEL_MAXIMUM_ON_ROUGH,1.0,smoothness);return reflectance0+weight*(reflectance90-reflectance0)*pow5(saturate(1.0-VdotN));}
307
+ #endif
308
+ #if defined(SHEEN) && defined(ENVIRONMENTBRDF)
309
+ /**
310
+ * The sheen BRDF not containing F can be easily stored in the blue channel of the BRDF texture.
311
+ * The blue channel contains DCharlie*VAshikhmin*NdotL as a lokkup table
312
+ */
313
+ fn getSheenReflectanceFromBRDFLookup(reflectance0: vec3f,environmentBrdf: vec3f)->vec3f {var sheenEnvironmentReflectance: vec3f=reflectance0*environmentBrdf.b;return sheenEnvironmentReflectance;}
314
+ #endif
315
+ fn fresnelSchlickGGXVec3(VdotH: f32,reflectance0: vec3f,reflectance90: vec3f)->vec3f
316
+ {return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}
317
+ fn fresnelSchlickGGX(VdotH: f32,reflectance0: f32,reflectance90: f32)->f32
318
+ {return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}
319
+ #ifdef CLEARCOAT
320
+ fn getR0RemappedForClearCoat(f0: vec3f)->vec3f {
321
+ #ifdef CLEARCOAT_DEFAULTIOR
322
+ #ifdef MOBILE
323
+ return saturateVec3(f0*(f0*0.526868+0.529324)-0.0482256);
324
+ #else
325
+ return saturateVec3(f0*(f0*(0.941892-0.263008*f0)+0.346479)-0.0285998);
326
+ #endif
327
+ #else
328
+ var s: vec3f=sqrt(f0);var t: vec3f=(uniforms.vClearCoatRefractionParams.z+uniforms.vClearCoatRefractionParams.w*s)/(uniforms.vClearCoatRefractionParams.w+uniforms.vClearCoatRefractionParams.z*s);return squareVec3(t);
329
+ #endif
330
+ }
331
+ #endif
332
+ #ifdef IRIDESCENCE
333
+ const XYZ_TO_REC709: mat3x3f= mat3x3f(
334
+ 3.2404542,-0.9692660, 0.0556434,
335
+ -1.5371385, 1.8760108,-0.2040259,
336
+ -0.4985314, 0.0415560, 1.0572252
337
+ );fn getIORTfromAirToSurfaceR0(f0: vec3f)->vec3f {var sqrtF0: vec3f=sqrt(f0);return (1.+sqrtF0)/(1.-sqrtF0);}
338
+ fn getR0fromIORsVec3(iorT: vec3f,iorI: f32)->vec3f {return squareVec3((iorT- vec3f(iorI))/(iorT+ vec3f(iorI)));}
339
+ fn getR0fromIORs(iorT: f32,iorI: f32)->f32 {return square((iorT-iorI)/(iorT+iorI));}
340
+ fn evalSensitivity(opd: f32,shift: vec3f)->vec3f {var phase: f32=2.0*PI*opd*1.0e-9;const val: vec3f= vec3f(5.4856e-13,4.4201e-13,5.2481e-13);const pos: vec3f= vec3f(1.6810e+06,1.7953e+06,2.2084e+06);const vr: vec3f= vec3f(4.3278e+09,9.3046e+09,6.6121e+09);var xyz: vec3f=val*sqrt(2.0*PI*vr)*cos(pos*phase+shift)*exp(-square(phase)*vr);xyz.x+=9.7470e-14*sqrt(2.0*PI*4.5282e+09)*cos(2.2399e+06*phase+shift[0])*exp(-4.5282e+09*square(phase));xyz/=1.0685e-7;var srgb: vec3f=XYZ_TO_REC709*xyz;return srgb;}
341
+ fn evalIridescence(outsideIOR: f32,eta2: f32,cosTheta1: f32,thinFilmThickness: f32,baseF0: vec3f)->vec3f {var I: vec3f= vec3f(1.0);var iridescenceIOR: f32=mix(outsideIOR,eta2,smoothstep(0.0,0.03,thinFilmThickness));var sinTheta2Sq: f32=square(outsideIOR/iridescenceIOR)*(1.0-square(cosTheta1));var cosTheta2Sq: f32=1.0-sinTheta2Sq;if (cosTheta2Sq<0.0) {return I;}
342
+ var cosTheta2: f32=sqrt(cosTheta2Sq);var R0: f32=getR0fromIORs(iridescenceIOR,outsideIOR);var R12: f32=fresnelSchlickGGX(cosTheta1,R0,1.);var R21: f32=R12;var T121: f32=1.0-R12;var phi12: f32=0.0;if (iridescenceIOR<outsideIOR) {phi12=PI;}
343
+ var phi21: f32=PI-phi12;var baseIOR: vec3f=getIORTfromAirToSurfaceR0(clamp(baseF0,vec3f(0.0),vec3f(0.9999)));
344
+ var R1: vec3f=getR0fromIORsVec3(baseIOR,iridescenceIOR);var R23: vec3f=fresnelSchlickGGXVec3(cosTheta2,R1, vec3f(1.));var phi23: vec3f= vec3f(0.0);if (baseIOR[0]<iridescenceIOR) {phi23[0]=PI;}
345
+ if (baseIOR[1]<iridescenceIOR) {phi23[1]=PI;}
346
+ if (baseIOR[2]<iridescenceIOR) {phi23[2]=PI;}
347
+ var opd: f32=2.0*iridescenceIOR*thinFilmThickness*cosTheta2;var phi: vec3f= vec3f(phi21)+phi23;var R123: vec3f=clamp(R12*R23,vec3f(1e-5),vec3f(0.9999));var r123: vec3f=sqrt(R123);var Rs: vec3f=(T121*T121)*R23/( vec3f(1.0)-R123);var C0: vec3f=R12+Rs;I=C0;var Cm: vec3f=Rs-T121;for (var m: i32=1; m<=2; m++)
348
+ {Cm*=r123;var Sm: vec3f=2.0*evalSensitivity( f32(m)*opd, f32(m)*phi);I+=Cm*Sm;}
349
+ return max(I, vec3f(0.0));}
350
+ #endif
351
+ fn normalDistributionFunction_TrowbridgeReitzGGX(NdotH: f32,alphaG: f32)->f32
352
+ {var a2: f32=alphaG*alphaG;var d: f32=NdotH*NdotH*(a2-1.0)+1.0;return a2/(PI*d*d);}
353
+ #ifdef SHEEN
354
+ fn normalDistributionFunction_CharlieSheen(NdotH: f32,alphaG: f32)->f32
355
+ {var invR: f32=1./alphaG;var cos2h: f32=NdotH*NdotH;var sin2h: f32=1.-cos2h;return (2.+invR)*pow(sin2h,invR*.5)/(2.*PI);}
356
+ #endif
357
+ #ifdef ANISOTROPIC
358
+ fn normalDistributionFunction_BurleyGGX_Anisotropic(NdotH: f32,TdotH: f32,BdotH: f32,alphaTB: vec2f)->f32 {var a2: f32=alphaTB.x*alphaTB.y;var v: vec3f= vec3f(alphaTB.y*TdotH,alphaTB.x *BdotH,a2*NdotH);var v2: f32=dot(v,v);var w2: f32=a2/v2;return a2*w2*w2*RECIPROCAL_PI;}
359
+ #endif
360
+ #ifdef BRDF_V_HEIGHT_CORRELATED
361
+ fn smithVisibility_GGXCorrelated(NdotL: f32,NdotV: f32,alphaG: f32)->f32 {
362
+ #ifdef MOBILE
363
+ var GGXV: f32=NdotL*(NdotV*(1.0-alphaG)+alphaG);var GGXL: f32=NdotV*(NdotL*(1.0-alphaG)+alphaG);return 0.5/(GGXV+GGXL);
364
+ #else
365
+ var a2: f32=alphaG*alphaG;var GGXV: f32=NdotL*sqrt(NdotV*(NdotV-a2*NdotV)+a2);var GGXL: f32=NdotV*sqrt(NdotL*(NdotL-a2*NdotL)+a2);return 0.5/(GGXV+GGXL);
366
+ #endif
367
+ }
368
+ #else
369
+ fn smithVisibilityG1_TrowbridgeReitzGGXFast(dot: f32,alphaG: f32)->f32
370
+ {
371
+ #ifdef MOBILE
372
+ return 1.0/(dot+alphaG+(1.0-alphaG)*dot ));
373
+ #else
374
+ var alphaSquared: f32=alphaG*alphaG;return 1.0/(dot+sqrt(alphaSquared+(1.0-alphaSquared)*dot*dot));
375
+ #endif
376
+ }
377
+ fn smithVisibility_TrowbridgeReitzGGXFast(NdotL: f32,NdotV: f32,alphaG: f32)->f32
378
+ {var visibility: f32=smithVisibilityG1_TrowbridgeReitzGGXFast(NdotL,alphaG)*smithVisibilityG1_TrowbridgeReitzGGXFast(NdotV,alphaG);return visibility;}
379
+ #endif
380
+ #ifdef ANISOTROPIC
381
+ fn smithVisibility_GGXCorrelated_Anisotropic(NdotL: f32,NdotV: f32,TdotV: f32,BdotV: f32,TdotL: f32,BdotL: f32,alphaTB: vec2f)->f32 {var lambdaV: f32=NdotL*length( vec3f(alphaTB.x*TdotV,alphaTB.y*BdotV,NdotV));var lambdaL: f32=NdotV*length( vec3f(alphaTB.x*TdotL,alphaTB.y*BdotL,NdotL));var v: f32=0.5/(lambdaV+lambdaL);return v;}
382
+ #endif
383
+ #ifdef CLEARCOAT
384
+ fn visibility_Kelemen(VdotH: f32)->f32 {return 0.25/(VdotH*VdotH); }
385
+ #endif
386
+ #ifdef SHEEN
387
+ fn visibility_Ashikhmin(NdotL: f32,NdotV: f32)->f32
388
+ {return 1./(4.*(NdotL+NdotV-NdotL*NdotV));}
389
+ /* NOT USED
390
+ #ifdef SHEEN_SOFTER
391
+ fn l(x: f32,alphaG: f32)->f32
392
+ {var oneMinusAlphaSq: f32=(1.0-alphaG)*(1.0-alphaG);var a: f32=mix(21.5473,25.3245,oneMinusAlphaSq);var b: f32=mix(3.82987,3.32435,oneMinusAlphaSq);var c: f32=mix(0.19823,0.16801,oneMinusAlphaSq);var d: f32=mix(-1.97760,-1.27393,oneMinusAlphaSq);var e: f32=mix(-4.32054,-4.85967,oneMinusAlphaSq);return a/(1.0+b*pow(x,c))+d*x+e;}
393
+ fn lambdaSheen(cosTheta: f32,alphaG: f32)->f32
394
+ {return abs(cosTheta)<0.5 ? exp(l(cosTheta,alphaG)) : exp(2.0*l(0.5,alphaG)-l(1.0-cosTheta,alphaG));}
395
+ fn visibility_CharlieSheen(NdotL: f32,NdotV: f32,alphaG: f32)->f32
396
+ {var G: f32=1.0/(1.0+lambdaSheen(NdotV,alphaG)+lambdaSheen(NdotL,alphaG));return G/(4.0*NdotV*NdotL);}
397
+ #endif
398
+ */
399
+ #endif
400
+ fn diffuseBRDF_Burley(NdotL: f32,NdotV: f32,VdotH: f32,roughness: f32)->f32 {var diffuseFresnelNV: f32=pow5(saturateEps(1.0-NdotL));var diffuseFresnelNL: f32=pow5(saturateEps(1.0-NdotV));var diffuseFresnel90: f32=0.5+2.0*VdotH*VdotH*roughness;var fresnel: f32 =
401
+ (1.0+(diffuseFresnel90-1.0)*diffuseFresnelNL) *
402
+ (1.0+(diffuseFresnel90-1.0)*diffuseFresnelNV);return fresnel/PI;}
403
+ #ifdef SS_TRANSLUCENCY
404
+ fn transmittanceBRDF_Burley(tintColor: vec3f,diffusionDistance: vec3f,thickness: f32)->vec3f {var S: vec3f=1./maxEpsVec3(diffusionDistance);var temp: vec3f=exp((-0.333333333*thickness)*S);return tintColor.rgb*0.25*(temp*temp*temp+3.0*temp);}
405
+ fn computeWrappedDiffuseNdotL(NdotL: f32,w: f32)->f32 {var t: f32=1.0+w;var invt2: f32=1.0/(t*t);return saturate((NdotL+w)*invt2);}
406
+ #endif
407
+ `;
408
+ // Sideeffect
409
+ ShaderStore.IncludesShadersStoreWGSL[name$r] = shader$r;
410
+
411
+ // Do not edit.
412
+ const name$q = "hdrFilteringFunctions";
413
+ const shader$q = `#ifdef NUM_SAMPLES
414
+ #if NUM_SAMPLES>0
415
+ fn radicalInverse_VdC(value: u32)->f32
416
+ {var bits=(value<<16u) | (value>>16u);bits=((bits & 0x55555555u)<<1u) | ((bits & 0xAAAAAAAAu)>>1u);bits=((bits & 0x33333333u)<<2u) | ((bits & 0xCCCCCCCCu)>>2u);bits=((bits & 0x0F0F0F0Fu)<<4u) | ((bits & 0xF0F0F0F0u)>>4u);bits=((bits & 0x00FF00FFu)<<8u) | ((bits & 0xFF00FF00u)>>8u);return f32(bits)*2.3283064365386963e-10; }
417
+ fn hammersley(i: u32,N: u32)->vec2f
418
+ {return vec2f( f32(i)/ f32(N),radicalInverse_VdC(i));}
419
+ fn log4(x: f32)->f32 {return log2(x)/2.;}
420
+ const NUM_SAMPLES_FLOAT: f32= f32(NUM_SAMPLES);const NUM_SAMPLES_FLOAT_INVERSED: f32=1./NUM_SAMPLES_FLOAT;const K: f32=4.;fn irradiance(inputTexture: texture_cube<f32>,inputSampler: sampler,inputN: vec3f,filteringInfo: vec2f
421
+ #ifdef IBL_CDF_FILTERING
422
+ ,icdfxSampler: texture_2d<f32>,icdfxSamplerSampler: sampler,icdfySampler: texture_2d<f32>,icdfySamplerSampler: sampler
423
+ #endif
424
+ )->vec3f
425
+ {var n: vec3f=normalize(inputN);var result: vec3f= vec3f(0.0);
426
+ #ifndef IBL_CDF_FILTERING
427
+ var tangent: vec3f=select(vec3f(1.,0.,0.),vec3f(0.,0.,1.),abs(n.z)<0.999);tangent=normalize(cross(tangent,n));var bitangent: vec3f=cross(n,tangent);var tbn: mat3x3f= mat3x3f(tangent,bitangent,n);
428
+ #endif
429
+ var maxLevel: f32=filteringInfo.y;var dim0: f32=filteringInfo.x;var omegaP: f32=(4.*PI)/(6.*dim0*dim0);for(var i: u32=0u; i<NUM_SAMPLES; i++)
430
+ {var Xi: vec2f=hammersley(i,NUM_SAMPLES);
431
+ #ifdef IBL_CDF_FILTERING
432
+ var T: vec2f;T.x=textureSampleLevel(icdfxSampler,icdfxSamplerSampler,vec2(Xi.x,0.0),0.0).x;T.y=textureSampleLevel(icdfySampler,icdfySamplerSampler,vec2(T.x,Xi.y),0.0).x;T.x=1.0-fract(T.x+0.25);vec3 Ls=uv_to_normal(T);float NoL=dot(n,Ls);
433
+ #else
434
+ var Ls: vec3f=hemisphereCosSample(Xi);Ls=normalize(Ls);var Ns: vec3f= vec3f(0.,0.,1.);var NoL: f32=dot(Ns,Ls);
435
+ #endif
436
+ if (NoL>0.) {var pdf_inversed: f32=PI/NoL;var omegaS: f32=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;var l: f32=log4(omegaS)-log4(omegaP)+log4(K);var mipLevel: f32=clamp(l,0.0,maxLevel);
437
+ #ifdef IBL_CDF_FILTERING
438
+ var c: vec3f=textureSampleLevel(inputTexture,inputSampler,Ls,mipLevel).rgb;
439
+ #else
440
+ var c: vec3f=textureSampleLevel(inputTexture,inputSampler,tbn*Ls,mipLevel).rgb;
441
+ #endif
442
+ #ifdef GAMMA_INPUT
443
+ c=toLinearSpaceVec3(c);
444
+ #endif
445
+ #ifdef IBL_CDF_FILTERING
446
+ result+=c*NoL;
447
+ #else
448
+ result+=c;
449
+ #endif
450
+ }}
451
+ result=result*NUM_SAMPLES_FLOAT_INVERSED;return result;}
452
+ fn radiance(alphaG: f32,inputTexture: texture_cube<f32>,inputSampler: sampler,inputN: vec3f,filteringInfo: vec2f)->vec3f
453
+ {var n: vec3f=normalize(inputN);var c: vec3f=textureSample(inputTexture,inputSampler,n).rgb;
454
+ if (alphaG==0.) {
455
+ #ifdef GAMMA_INPUT
456
+ c=toLinearSpace(c);
457
+ #endif
458
+ return c;} else {var result: vec3f= vec3f(0.);var tangent: vec3f=select(vec3f(1.,0.,0.),vec3f(0.,0.,1.),abs(n.z)<0.999);tangent=normalize(cross(tangent,n));var bitangent: vec3f=cross(n,tangent);var tbn: mat3x3f= mat3x3f(tangent,bitangent,n);var maxLevel: f32=filteringInfo.y;var dim0: f32=filteringInfo.x;var omegaP: f32=(4.*PI)/(6.*dim0*dim0);var weight: f32=0.;for(var i: u32=0u; i<NUM_SAMPLES; i++)
459
+ {var Xi: vec2f=hammersley(i,NUM_SAMPLES);var H: vec3f=hemisphereImportanceSampleDggx(Xi,alphaG);var NoV: f32=1.;var NoH: f32=H.z;var NoH2: f32=H.z*H.z;var NoL: f32=2.*NoH2-1.;var L: vec3f= vec3f(2.*NoH*H.x,2.*NoH*H.y,NoL);L=normalize(L);if (NoL>0.) {var pdf_inversed: f32=4./normalDistributionFunction_TrowbridgeReitzGGX(NoH,alphaG);var omegaS: f32=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;var l: f32=log4(omegaS)-log4(omegaP)+log4(K);var mipLevel: f32=clamp( f32(l),0.0,maxLevel);weight+=NoL;var c: vec3f=textureSampleLevel(inputTexture,inputSampler,tbn*L,mipLevel).rgb;
460
+ #ifdef GAMMA_INPUT
461
+ c=toLinearSpace(c);
462
+ #endif
463
+ result+=c*NoL;}}
464
+ result=result/weight;return result;}}
465
+ #endif
466
+ #endif
467
+ `;
468
+ // Sideeffect
469
+ ShaderStore.IncludesShadersStoreWGSL[name$q] = shader$q;
470
+
471
+ // Do not edit.
472
+ const name$p = "pbrDirectLightingFunctions";
473
+ const shader$p = `#define CLEARCOATREFLECTANCE90 1.0
474
+ struct lightingInfo
475
+ {diffuse: vec3f,
476
+ #ifdef SPECULARTERM
477
+ specular: vec3f,
478
+ #endif
479
+ #ifdef CLEARCOAT
480
+ clearCoat: vec4f,
481
+ #endif
482
+ #ifdef SHEEN
483
+ sheen: vec3f
484
+ #endif
485
+ };fn adjustRoughnessFromLightProperties(roughness: f32,lightRadius: f32,lightDistance: f32)->f32 {
486
+ #if defined(USEPHYSICALLIGHTFALLOFF) || defined(USEGLTFLIGHTFALLOFF)
487
+ var lightRoughness: f32=lightRadius/lightDistance;var totalRoughness: f32=saturate(lightRoughness+roughness);return totalRoughness;
488
+ #else
489
+ return roughness;
490
+ #endif
491
+ }
492
+ fn computeHemisphericDiffuseLighting(info: preLightingInfo,lightColor: vec3f,groundColor: vec3f)->vec3f {return mix(groundColor,lightColor,info.NdotL);}
493
+ fn computeDiffuseLighting(info: preLightingInfo,lightColor: vec3f)->vec3f {var diffuseTerm: f32=diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.roughness);return diffuseTerm*info.attenuation*info.NdotL*lightColor;}
494
+ fn computeProjectionTextureDiffuseLighting(projectionLightTexture: texture_2d<f32>,projectionLightSampler: sampler,textureProjectionMatrix: mat4x4f,posW: vec3f)->vec3f{var strq: vec4f=textureProjectionMatrix* vec4f(posW,1.0);strq/=strq.w;var textureColor: vec3f=textureSample(projectionLightTexture,projectionLightSampler,strq.xy).rgb;return toLinearSpaceVec3(textureColor);}
495
+ #ifdef SS_TRANSLUCENCY
496
+ fn computeDiffuseAndTransmittedLighting(info: preLightingInfo,lightColor: vec3f,transmittance: vec3f)->vec3f {var NdotL: f32=absEps(info.NdotLUnclamped);var wrapNdotL: f32=computeWrappedDiffuseNdotL(NdotL,0.02);var trAdapt: f32=step(0.,info.NdotLUnclamped);var transmittanceNdotL: vec3f=mix(transmittance*wrapNdotL, vec3f(wrapNdotL),trAdapt);var diffuseTerm: f32=diffuseBRDF_Burley(NdotL,info.NdotV,info.VdotH,info.roughness);return diffuseTerm*transmittanceNdotL*info.attenuation*lightColor;}
497
+ #endif
498
+ #ifdef SPECULARTERM
499
+ fn computeSpecularLighting(info: preLightingInfo,N: vec3f,reflectance0: vec3f,reflectance90: vec3f,geometricRoughnessFactor: f32,lightColor: vec3f)->vec3f {var NdotH: f32=saturateEps(dot(N,info.H));var roughness: f32=max(info.roughness,geometricRoughnessFactor);var alphaG: f32=convertRoughnessToAverageSlope(roughness);var fresnel: vec3f=fresnelSchlickGGXVec3(info.VdotH,reflectance0,reflectance90);
500
+ #ifdef IRIDESCENCE
501
+ fresnel=mix(fresnel,reflectance0,info.iridescenceIntensity);
502
+ #endif
503
+ var distribution: f32=normalDistributionFunction_TrowbridgeReitzGGX(NdotH,alphaG);
504
+ #ifdef BRDF_V_HEIGHT_CORRELATED
505
+ var smithVisibility: f32=smithVisibility_GGXCorrelated(info.NdotL,info.NdotV,alphaG);
506
+ #else
507
+ var smithVisibility: f32=smithVisibility_TrowbridgeReitzGGXFast(info.NdotL,info.NdotV,alphaG);
508
+ #endif
509
+ var specTerm: vec3f=fresnel*distribution*smithVisibility;return specTerm*info.attenuation*info.NdotL*lightColor;}
510
+ #endif
511
+ #ifdef ANISOTROPIC
512
+ fn computeAnisotropicSpecularLighting(info: preLightingInfo,V: vec3f,N: vec3f,T: vec3f,B: vec3f,anisotropy: f32,reflectance0: vec3f,reflectance90: vec3f,geometricRoughnessFactor: f32,lightColor: vec3f)->vec3f {var NdotH: f32=saturateEps(dot(N,info.H));var TdotH: f32=dot(T,info.H);var BdotH: f32=dot(B,info.H);var TdotV: f32=dot(T,V);var BdotV: f32=dot(B,V);var TdotL: f32=dot(T,info.L);var BdotL: f32=dot(B,info.L);var alphaG: f32=convertRoughnessToAverageSlope(info.roughness);var alphaTB: vec2f=getAnisotropicRoughness(alphaG,anisotropy);alphaTB=max(alphaTB,vec2f(geometricRoughnessFactor*geometricRoughnessFactor));var fresnel: vec3f=fresnelSchlickGGXVec3(info.VdotH,reflectance0,reflectance90);
513
+ #ifdef IRIDESCENCE
514
+ fresnel=mix(fresnel,reflectance0,info.iridescenceIntensity);
515
+ #endif
516
+ var distribution: f32=normalDistributionFunction_BurleyGGX_Anisotropic(NdotH,TdotH,BdotH,alphaTB);var smithVisibility: f32=smithVisibility_GGXCorrelated_Anisotropic(info.NdotL,info.NdotV,TdotV,BdotV,TdotL,BdotL,alphaTB);var specTerm: vec3f=fresnel*distribution*smithVisibility;return specTerm*info.attenuation*info.NdotL*lightColor;}
517
+ #endif
518
+ #ifdef CLEARCOAT
519
+ fn computeClearCoatLighting(info: preLightingInfo,Ncc: vec3f,geometricRoughnessFactor: f32,clearCoatIntensity: f32,lightColor: vec3f)->vec4f {var NccdotL: f32=saturateEps(dot(Ncc,info.L));var NccdotH: f32=saturateEps(dot(Ncc,info.H));var clearCoatRoughness: f32=max(info.roughness,geometricRoughnessFactor);var alphaG: f32=convertRoughnessToAverageSlope(clearCoatRoughness);var fresnel: f32=fresnelSchlickGGX(info.VdotH,uniforms.vClearCoatRefractionParams.x,CLEARCOATREFLECTANCE90);fresnel*=clearCoatIntensity;var distribution: f32=normalDistributionFunction_TrowbridgeReitzGGX(NccdotH,alphaG);var kelemenVisibility: f32=visibility_Kelemen(info.VdotH);var clearCoatTerm: f32=fresnel*distribution*kelemenVisibility;return vec4f(
520
+ clearCoatTerm*info.attenuation*NccdotL*lightColor,
521
+ 1.0-fresnel
522
+ );}
523
+ fn computeClearCoatLightingAbsorption(NdotVRefract: f32,L: vec3f,Ncc: vec3f,clearCoatColor: vec3f,clearCoatThickness: f32,clearCoatIntensity: f32)->vec3f {var LRefract: vec3f=-refract(L,Ncc,uniforms.vClearCoatRefractionParams.y);var NdotLRefract: f32=saturateEps(dot(Ncc,LRefract));var absorption: vec3f=computeClearCoatAbsorption(NdotVRefract,NdotLRefract,clearCoatColor,clearCoatThickness,clearCoatIntensity);return absorption;}
524
+ #endif
525
+ #ifdef SHEEN
526
+ fn computeSheenLighting(info: preLightingInfo,N: vec3f,reflectance0: vec3f,reflectance90: vec3f,geometricRoughnessFactor: f32,lightColor: vec3f)->vec3f {var NdotH: f32=saturateEps(dot(N,info.H));var roughness: f32=max(info.roughness,geometricRoughnessFactor);var alphaG: f32=convertRoughnessToAverageSlope(roughness);var fresnel: f32=1.;var distribution: f32=normalDistributionFunction_CharlieSheen(NdotH,alphaG);/*#ifdef SHEEN_SOFTER
527
+ var visibility: f32=visibility_CharlieSheen(info.NdotL,info.NdotV,alphaG);
528
+ #else */
529
+ var visibility: f32=visibility_Ashikhmin(info.NdotL,info.NdotV);/* #endif */
530
+ var sheenTerm: f32=fresnel*distribution*visibility;return sheenTerm*info.attenuation*info.NdotL*lightColor;}
531
+ #endif
532
+ `;
533
+ // Sideeffect
534
+ ShaderStore.IncludesShadersStoreWGSL[name$p] = shader$p;
535
+
536
+ // Do not edit.
537
+ const name$o = "pbrIBLFunctions";
538
+ const shader$o = `#if defined(REFLECTION) || defined(SS_REFRACTION)
539
+ fn getLodFromAlphaG(cubeMapDimensionPixels: f32,microsurfaceAverageSlope: f32)->f32 {var microsurfaceAverageSlopeTexels: f32=cubeMapDimensionPixels*microsurfaceAverageSlope;var lod: f32=log2(microsurfaceAverageSlopeTexels);return lod;}
540
+ fn getLinearLodFromRoughness(cubeMapDimensionPixels: f32,roughness: f32)->f32 {var lod: f32=log2(cubeMapDimensionPixels)*roughness;return lod;}
541
+ #endif
542
+ #if defined(ENVIRONMENTBRDF) && defined(RADIANCEOCCLUSION)
543
+ fn environmentRadianceOcclusion(ambientOcclusion: f32,NdotVUnclamped: f32)->f32 {var temp: f32=NdotVUnclamped+ambientOcclusion;return saturate(temp*temp-1.0+ambientOcclusion);}
544
+ #endif
545
+ #if defined(ENVIRONMENTBRDF) && defined(HORIZONOCCLUSION)
546
+ fn environmentHorizonOcclusion(view: vec3f,normal: vec3f,geometricNormal: vec3f)->f32 {var reflection: vec3f=reflect(view,normal);var temp: f32=saturate(1.0+1.1*dot(reflection,geometricNormal));return temp*temp;}
547
+ #endif
548
+ #if defined(LODINREFLECTIONALPHA) || defined(SS_LODINREFRACTIONALPHA)
549
+ fn UNPACK_LOD(x: f32)->f32 {return (1.0-x)*255.0;}
550
+ fn getLodFromAlphaGNdotV(cubeMapDimensionPixels: f32,alphaG: f32,NdotV: f32)->f32 {var microsurfaceAverageSlope: f32=alphaG;microsurfaceAverageSlope*=sqrt(abs(NdotV));return getLodFromAlphaG(cubeMapDimensionPixels,microsurfaceAverageSlope);}
551
+ #endif
552
+ `;
553
+ // Sideeffect
554
+ ShaderStore.IncludesShadersStoreWGSL[name$o] = shader$o;
555
+
556
+ // Do not edit.
557
+ const name$n = "pbrBlockAlbedoOpacity";
558
+ const shader$n = `struct albedoOpacityOutParams
559
+ {surfaceAlbedo: vec3f,
560
+ alpha: f32};
561
+ #define pbr_inline
562
+ fn albedoOpacityBlock(
563
+ vAlbedoColor: vec4f
564
+ #ifdef ALBEDO
565
+ ,albedoTexture: vec4f
566
+ ,albedoInfos: vec2f
567
+ #endif
568
+ #ifdef OPACITY
569
+ ,opacityMap: vec4f
570
+ ,vOpacityInfos: vec2f
571
+ #endif
572
+ #ifdef DETAIL
573
+ ,detailColor: vec4f
574
+ ,vDetailInfos: vec4f
575
+ #endif
576
+ #ifdef DECAL
577
+ ,decalColor: vec4f
578
+ ,vDecalInfos: vec4f
579
+ #endif
580
+ )->albedoOpacityOutParams
581
+ {var outParams: albedoOpacityOutParams;var surfaceAlbedo: vec3f=vAlbedoColor.rgb;var alpha: f32=vAlbedoColor.a;
582
+ #ifdef ALBEDO
583
+ #if defined(ALPHAFROMALBEDO) || defined(ALPHATEST)
584
+ alpha*=albedoTexture.a;
585
+ #endif
586
+ #ifdef GAMMAALBEDO
587
+ surfaceAlbedo*=toLinearSpaceVec3(albedoTexture.rgb);
588
+ #else
589
+ surfaceAlbedo*=albedoTexture.rgb;
590
+ #endif
591
+ surfaceAlbedo*=albedoInfos.y;
592
+ #endif
593
+ #ifndef DECAL_AFTER_DETAIL
594
+ #include<decalFragment>
595
+ #endif
596
+ #if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)
597
+ surfaceAlbedo*=fragmentInputs.vColor.rgb;
598
+ #endif
599
+ #ifdef DETAIL
600
+ var detailAlbedo: f32=2.0*mix(0.5,detailColor.r,vDetailInfos.y);surfaceAlbedo=surfaceAlbedo.rgb*detailAlbedo*detailAlbedo;
601
+ #endif
602
+ #ifdef DECAL_AFTER_DETAIL
603
+ #include<decalFragment>
604
+ #endif
605
+ #define CUSTOM_FRAGMENT_UPDATE_ALBEDO
606
+ #ifdef OPACITY
607
+ #ifdef OPACITYRGB
608
+ alpha=getLuminance(opacityMap.rgb);
609
+ #else
610
+ alpha*=opacityMap.a;
611
+ #endif
612
+ alpha*=vOpacityInfos.y;
613
+ #endif
614
+ #if defined(VERTEXALPHA) || defined(INSTANCESCOLOR) && defined(INSTANCES)
615
+ alpha*=fragmentInputs.vColor.a;
616
+ #endif
617
+ #if !defined(SS_LINKREFRACTIONTOTRANSPARENCY) && !defined(ALPHAFRESNEL)
618
+ #ifdef ALPHATEST
619
+ #if DEBUGMODE != 88
620
+ if (alpha<ALPHATESTVALUE) {discard;}
621
+ #endif
622
+ #ifndef ALPHABLEND
623
+ alpha=1.0;
624
+ #endif
625
+ #endif
626
+ #endif
627
+ outParams.surfaceAlbedo=surfaceAlbedo;outParams.alpha=alpha;return outParams;}
628
+ `;
629
+ // Sideeffect
630
+ ShaderStore.IncludesShadersStoreWGSL[name$n] = shader$n;
631
+
632
+ // Do not edit.
633
+ const name$m = "pbrBlockReflectivity";
634
+ const shader$m = `struct reflectivityOutParams
635
+ {microSurface: f32,
636
+ roughness: f32,
637
+ surfaceReflectivityColor: vec3f,
638
+ #ifdef METALLICWORKFLOW
639
+ surfaceAlbedo: vec3f,
640
+ #endif
641
+ #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)
642
+ ambientOcclusionColor: vec3f,
643
+ #endif
644
+ #if DEBUGMODE>0
645
+ #ifdef METALLICWORKFLOW
646
+ metallicRoughness: vec2f,
647
+ #ifdef REFLECTIVITY
648
+ surfaceMetallicColorMap: vec4f,
649
+ #endif
650
+ #ifndef FROSTBITE_REFLECTANCE
651
+ metallicF0: vec3f,
652
+ #endif
653
+ #else
654
+ #ifdef REFLECTIVITY
655
+ surfaceReflectivityColorMap: vec4f,
656
+ #endif
657
+ #endif
658
+ #endif
659
+ };
660
+ #define pbr_inline
661
+ fn reflectivityBlock(
662
+ vReflectivityColor: vec4f
663
+ #ifdef METALLICWORKFLOW
664
+ ,surfaceAlbedo: vec3f
665
+ ,metallicReflectanceFactors: vec4f
666
+ #endif
667
+ #ifdef REFLECTIVITY
668
+ ,reflectivityInfos: vec3f
669
+ ,surfaceMetallicOrReflectivityColorMap: vec4f
670
+ #endif
671
+ #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)
672
+ ,ambientOcclusionColorIn: vec3f
673
+ #endif
674
+ #ifdef MICROSURFACEMAP
675
+ ,microSurfaceTexel: vec4f
676
+ #endif
677
+ #ifdef DETAIL
678
+ ,detailColor: vec4f
679
+ ,vDetailInfos: vec4f
680
+ #endif
681
+ )->reflectivityOutParams
682
+ {var outParams: reflectivityOutParams;var microSurface: f32=vReflectivityColor.a;var surfaceReflectivityColor: vec3f=vReflectivityColor.rgb;
683
+ #ifdef METALLICWORKFLOW
684
+ var metallicRoughness: vec2f=surfaceReflectivityColor.rg;
685
+ #ifdef REFLECTIVITY
686
+ #if DEBUGMODE>0
687
+ outParams.surfaceMetallicColorMap=surfaceMetallicOrReflectivityColorMap;
688
+ #endif
689
+ #ifdef AOSTOREINMETALMAPRED
690
+ var aoStoreInMetalMap: vec3f= vec3f(surfaceMetallicOrReflectivityColorMap.r,surfaceMetallicOrReflectivityColorMap.r,surfaceMetallicOrReflectivityColorMap.r);outParams.ambientOcclusionColor=mix(ambientOcclusionColorIn,aoStoreInMetalMap,reflectivityInfos.z);
691
+ #endif
692
+ #ifdef METALLNESSSTOREINMETALMAPBLUE
693
+ metallicRoughness.r*=surfaceMetallicOrReflectivityColorMap.b;
694
+ #else
695
+ metallicRoughness.r*=surfaceMetallicOrReflectivityColorMap.r;
696
+ #endif
697
+ #ifdef ROUGHNESSSTOREINMETALMAPALPHA
698
+ metallicRoughness.g*=surfaceMetallicOrReflectivityColorMap.a;
699
+ #else
700
+ #ifdef ROUGHNESSSTOREINMETALMAPGREEN
701
+ metallicRoughness.g*=surfaceMetallicOrReflectivityColorMap.g;
702
+ #endif
703
+ #endif
704
+ #endif
705
+ #ifdef DETAIL
706
+ var detailRoughness: f32=mix(0.5,detailColor.b,vDetailInfos.w);var loLerp: f32=mix(0.,metallicRoughness.g,detailRoughness*2.);var hiLerp: f32=mix(metallicRoughness.g,1.,(detailRoughness-0.5)*2.);metallicRoughness.g=mix(loLerp,hiLerp,step(detailRoughness,0.5));
707
+ #endif
708
+ #ifdef MICROSURFACEMAP
709
+ metallicRoughness.g*=microSurfaceTexel.r;
710
+ #endif
711
+ #if DEBUGMODE>0
712
+ outParams.metallicRoughness=metallicRoughness;
713
+ #endif
714
+ #define CUSTOM_FRAGMENT_UPDATE_METALLICROUGHNESS
715
+ microSurface=1.0-metallicRoughness.g;var baseColor: vec3f=surfaceAlbedo;
716
+ #ifdef FROSTBITE_REFLECTANCE
717
+ outParams.surfaceAlbedo=baseColor.rgb*(1.0-metallicRoughness.r);surfaceReflectivityColor=mix(0.16*reflectance*reflectance,baseColor,metallicRoughness.r);
718
+ #else
719
+ var metallicF0: vec3f=metallicReflectanceFactors.rgb;
720
+ #if DEBUGMODE>0
721
+ outParams.metallicF0=metallicF0;
722
+ #endif
723
+ outParams.surfaceAlbedo=mix(baseColor.rgb*(1.0-metallicF0), vec3f(0.,0.,0.),metallicRoughness.r);surfaceReflectivityColor=mix(metallicF0,baseColor,metallicRoughness.r);
724
+ #endif
725
+ #else
726
+ #ifdef REFLECTIVITY
727
+ surfaceReflectivityColor*=surfaceMetallicOrReflectivityColorMap.rgb;
728
+ #if DEBUGMODE>0
729
+ outParams.surfaceReflectivityColorMap=surfaceMetallicOrReflectivityColorMap;
730
+ #endif
731
+ #ifdef MICROSURFACEFROMREFLECTIVITYMAP
732
+ microSurface*=surfaceMetallicOrReflectivityColorMap.a;microSurface*=reflectivityInfos.z;
733
+ #else
734
+ #ifdef MICROSURFACEAUTOMATIC
735
+ microSurface*=computeDefaultMicroSurface(microSurface,surfaceReflectivityColor);
736
+ #endif
737
+ #ifdef MICROSURFACEMAP
738
+ microSurface*=microSurfaceTexel.r;
739
+ #endif
740
+ #define CUSTOM_FRAGMENT_UPDATE_MICROSURFACE
741
+ #endif
742
+ #endif
743
+ #endif
744
+ microSurface=saturate(microSurface);var roughness: f32=1.-microSurface;outParams.microSurface=microSurface;outParams.roughness=roughness;outParams.surfaceReflectivityColor=surfaceReflectivityColor;return outParams;}
745
+ `;
746
+ // Sideeffect
747
+ ShaderStore.IncludesShadersStoreWGSL[name$m] = shader$m;
748
+
749
+ // Do not edit.
750
+ const name$l = "pbrBlockAmbientOcclusion";
751
+ const shader$l = `struct ambientOcclusionOutParams
752
+ {ambientOcclusionColor: vec3f,
753
+ #if DEBUGMODE>0 && defined(AMBIENT)
754
+ ambientOcclusionColorMap: vec3f
755
+ #endif
756
+ };
757
+ #define pbr_inline
758
+ fn ambientOcclusionBlock(
759
+ #ifdef AMBIENT
760
+ ambientOcclusionColorMap_: vec3f,
761
+ vAmbientInfos: vec4f
762
+ #endif
763
+ )->ambientOcclusionOutParams
764
+ {
765
+ var outParams: ambientOcclusionOutParams;var ambientOcclusionColor: vec3f= vec3f(1.,1.,1.);
766
+ #ifdef AMBIENT
767
+ var ambientOcclusionColorMap: vec3f=ambientOcclusionColorMap_*vAmbientInfos.y;
768
+ #ifdef AMBIENTINGRAYSCALE
769
+ ambientOcclusionColorMap= vec3f(ambientOcclusionColorMap.r,ambientOcclusionColorMap.r,ambientOcclusionColorMap.r);
770
+ #endif
771
+ ambientOcclusionColor=mix(ambientOcclusionColor,ambientOcclusionColorMap,vAmbientInfos.z);
772
+ #if DEBUGMODE>0
773
+ outParams.ambientOcclusionColorMap=ambientOcclusionColorMap;
774
+ #endif
775
+ #endif
776
+ outParams.ambientOcclusionColor=ambientOcclusionColor;return outParams;}
777
+ `;
778
+ // Sideeffect
779
+ ShaderStore.IncludesShadersStoreWGSL[name$l] = shader$l;
780
+
781
+ // Do not edit.
782
+ const name$k = "pbrBlockAlphaFresnel";
783
+ const shader$k = `#ifdef ALPHAFRESNEL
784
+ #if defined(ALPHATEST) || defined(ALPHABLEND)
785
+ struct alphaFresnelOutParams
786
+ {alpha: f32};fn faceforward(N: vec3<f32>,I: vec3<f32>,Nref: vec3<f32>)->vec3<f32> {return select(N,-N,dot(Nref,I)>0.0);}
787
+ #define pbr_inline
788
+ fn alphaFresnelBlock(
789
+ normalW: vec3f,
790
+ viewDirectionW: vec3f,
791
+ alpha: f32,
792
+ microSurface: f32
793
+ )->alphaFresnelOutParams
794
+ {var outParams: alphaFresnelOutParams;var opacityPerceptual: f32=alpha;
795
+ #ifdef LINEARALPHAFRESNEL
796
+ var opacity0: f32=opacityPerceptual;
797
+ #else
798
+ var opacity0: f32=opacityPerceptual*opacityPerceptual;
799
+ #endif
800
+ var opacity90: f32=fresnelGrazingReflectance(opacity0);var normalForward: vec3f=faceforward(normalW,-viewDirectionW,normalW);outParams.alpha=getReflectanceFromAnalyticalBRDFLookup_Jones(saturate(dot(viewDirectionW,normalForward)), vec3f(opacity0), vec3f(opacity90),sqrt(microSurface)).x;
801
+ #ifdef ALPHATEST
802
+ if (outParams.alpha<ALPHATESTVALUE) {discard;}
803
+ #ifndef ALPHABLEND
804
+ outParams.alpha=1.0;
805
+ #endif
806
+ #endif
807
+ return outParams;}
808
+ #endif
809
+ #endif
810
+ `;
811
+ // Sideeffect
812
+ ShaderStore.IncludesShadersStoreWGSL[name$k] = shader$k;
813
+
814
+ // Do not edit.
815
+ const name$j = "pbrBlockAnisotropic";
816
+ const shader$j = `#ifdef ANISOTROPIC
817
+ struct anisotropicOutParams
818
+ {anisotropy: f32,
819
+ anisotropicTangent: vec3f,
820
+ anisotropicBitangent: vec3f,
821
+ anisotropicNormal: vec3f,
822
+ #if DEBUGMODE>0 && defined(ANISOTROPIC_TEXTURE)
823
+ anisotropyMapData: vec3f
824
+ #endif
825
+ };
826
+ #define pbr_inline
827
+ fn anisotropicBlock(
828
+ vAnisotropy: vec3f,
829
+ roughness: f32,
830
+ #ifdef ANISOTROPIC_TEXTURE
831
+ anisotropyMapData: vec3f,
832
+ #endif
833
+ TBN: mat3x3f,
834
+ normalW: vec3f,
835
+ viewDirectionW: vec3f
836
+ )->anisotropicOutParams
837
+ {
838
+ var outParams: anisotropicOutParams;var anisotropy: f32=vAnisotropy.b;var anisotropyDirection: vec3f= vec3f(vAnisotropy.xy,0.);
839
+ #ifdef ANISOTROPIC_TEXTURE
840
+ var amd=anisotropyMapData.rg;anisotropy*=anisotropyMapData.b;
841
+ #if DEBUGMODE>0
842
+ outParams.anisotropyMapData=anisotropyMapData;
843
+ #endif
844
+ amd=amd*2.0-1.0;
845
+ #ifdef ANISOTROPIC_LEGACY
846
+ anisotropyDirection=vec3f(anisotropyDirection.xy*amd,anisotropyDirection.z);
847
+ #else
848
+ anisotropyDirection=vec3f(mat2x2f(anisotropyDirection.x,anisotropyDirection.y,-anisotropyDirection.y,anisotropyDirection.x)*normalize(amd),anisotropyDirection.z);
849
+ #endif
850
+ #endif
851
+ var anisoTBN: mat3x3f= mat3x3f(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));var anisotropicTangent: vec3f=normalize(anisoTBN*anisotropyDirection);var anisotropicBitangent: vec3f=normalize(cross(anisoTBN[2],anisotropicTangent));outParams.anisotropy=anisotropy;outParams.anisotropicTangent=anisotropicTangent;outParams.anisotropicBitangent=anisotropicBitangent;outParams.anisotropicNormal=getAnisotropicBentNormals(anisotropicTangent,anisotropicBitangent,normalW,viewDirectionW,anisotropy,roughness);return outParams;}
852
+ #endif
853
+ `;
854
+ // Sideeffect
855
+ ShaderStore.IncludesShadersStoreWGSL[name$j] = shader$j;
856
+
857
+ // Do not edit.
858
+ const name$i = "pbrBlockReflection";
859
+ const shader$i = `#ifdef REFLECTION
860
+ struct reflectionOutParams
861
+ {environmentRadiance: vec4f
862
+ ,environmentIrradiance: vec3f
863
+ #ifdef REFLECTIONMAP_3D
864
+ ,reflectionCoords: vec3f
865
+ #else
866
+ ,reflectionCoords: vec2f
867
+ #endif
868
+ #ifdef SS_TRANSLUCENCY
869
+ #ifdef USESPHERICALFROMREFLECTIONMAP
870
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
871
+ ,irradianceVector: vec3f
872
+ #endif
873
+ #endif
874
+ #endif
875
+ };
876
+ #define pbr_inline
877
+ #ifdef REFLECTIONMAP_3D
878
+ fn createReflectionCoords(
879
+ vPositionW: vec3f,
880
+ normalW: vec3f,
881
+ #ifdef ANISOTROPIC
882
+ anisotropicOut: anisotropicOutParams,
883
+ #endif
884
+ )->vec3f
885
+ {var reflectionCoords: vec3f;
886
+ #else
887
+ fn createReflectionCoords(
888
+ vPositionW: vec3f,
889
+ normalW: vec3f,
890
+ #ifdef ANISOTROPIC
891
+ anisotropicOut: anisotropicOutParams,
892
+ #endif
893
+ )->vec2f
894
+ {
895
+ var reflectionCoords: vec2f;
896
+ #endif
897
+ #ifdef ANISOTROPIC
898
+ var reflectionVector: vec3f=computeReflectionCoords( vec4f(vPositionW,1.0),anisotropicOut.anisotropicNormal);
899
+ #else
900
+ var reflectionVector: vec3f=computeReflectionCoords( vec4f(vPositionW,1.0),normalW);
901
+ #endif
902
+ #ifdef REFLECTIONMAP_OPPOSITEZ
903
+ reflectionVector.z*=-1.0;
904
+ #endif
905
+ #ifdef REFLECTIONMAP_3D
906
+ reflectionCoords=reflectionVector;
907
+ #else
908
+ reflectionCoords=reflectionVector.xy;
909
+ #ifdef REFLECTIONMAP_PROJECTION
910
+ reflectionCoords/=reflectionVector.z;
911
+ #endif
912
+ reflectionCoords.y=1.0-reflectionCoords.y;
913
+ #endif
914
+ return reflectionCoords;}
915
+ #define pbr_inline
916
+ fn sampleReflectionTexture(
917
+ alphaG: f32
918
+ ,vReflectionMicrosurfaceInfos: vec3f
919
+ ,vReflectionInfos: vec2f
920
+ ,vReflectionColor: vec3f
921
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
922
+ ,NdotVUnclamped: f32
923
+ #endif
924
+ #ifdef LINEARSPECULARREFLECTION
925
+ ,roughness: f32
926
+ #endif
927
+ #ifdef REFLECTIONMAP_3D
928
+ ,reflectionSampler: texture_cube<f32>
929
+ ,reflectionSamplerSampler: sampler
930
+ ,reflectionCoords: vec3f
931
+ #else
932
+ ,reflectionSampler: texture_2d<f32>
933
+ ,reflectionSamplerSampler: sampler
934
+ ,reflectionCoords: vec2f
935
+ #endif
936
+ #ifndef LODBASEDMICROSFURACE
937
+ #ifdef REFLECTIONMAP_3D
938
+ ,reflectionLowSampler: texture_cube<f32>
939
+ ,reflectionLowSamplerSampler: sampler
940
+ ,reflectionHighSampler: texture_cube<f32>
941
+ ,reflectionHighSamplerSampler: sampler
942
+ #else
943
+ ,reflectionLowSampler: texture_2d<f32>
944
+ ,reflectionLowSamplerSampler: sampler
945
+ ,reflectionHighSampler: texture_2d<f32>
946
+ ,reflectionHighSamplerSampler: sampler
947
+ #endif
948
+ #endif
949
+ #ifdef REALTIME_FILTERING
950
+ ,vReflectionFilteringInfo: vec2f
951
+ #endif
952
+ )->vec4f
953
+ {var environmentRadiance: vec4f;
954
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
955
+ var reflectionLOD: f32=getLodFromAlphaGNdotV(vReflectionMicrosurfaceInfos.x,alphaG,NdotVUnclamped);
956
+ #elif defined(LINEARSPECULARREFLECTION)
957
+ var reflectionLOD: f32=getLinearLodFromRoughness(vReflectionMicrosurfaceInfos.x,roughness);
958
+ #else
959
+ var reflectionLOD: f32=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG);
960
+ #endif
961
+ #ifdef LODBASEDMICROSFURACE
962
+ reflectionLOD=reflectionLOD*vReflectionMicrosurfaceInfos.y+vReflectionMicrosurfaceInfos.z;
963
+ #ifdef LODINREFLECTIONALPHA
964
+ var automaticReflectionLOD: f32=UNPACK_LOD(textureSample(reflectionSampler,reflectionSamplerSampler,reflectionCoords).a);var requestedReflectionLOD: f32=max(automaticReflectionLOD,reflectionLOD);
965
+ #else
966
+ var requestedReflectionLOD: f32=reflectionLOD;
967
+ #endif
968
+ #ifdef REALTIME_FILTERING
969
+ environmentRadiance= vec4f(radiance(alphaG,reflectionSampler,reflectionSamplerSampler,reflectionCoords,vReflectionFilteringInfo),1.0);
970
+ #else
971
+ environmentRadiance=textureSampleLevel(reflectionSampler,reflectionSamplerSampler,reflectionCoords,reflectionLOD);
972
+ #endif
973
+ #else
974
+ var lodReflectionNormalized: f32=saturate(reflectionLOD/log2(vReflectionMicrosurfaceInfos.x));var lodReflectionNormalizedDoubled: f32=lodReflectionNormalized*2.0;var environmentMid: vec4f=textureSample(reflectionSampler,reflectionSamplerSampler,reflectionCoords);if (lodReflectionNormalizedDoubled<1.0){environmentRadiance=mix(
975
+ textureSample(reflectionHighSampler,reflectionHighSamplerSampler,reflectionCoords),
976
+ environmentMid,
977
+ lodReflectionNormalizedDoubled
978
+ );} else {environmentRadiance=mix(
979
+ environmentMid,
980
+ textureSample(reflectionLowSampler,reflectionLowSamplerSampler,reflectionCoords),
981
+ lodReflectionNormalizedDoubled-1.0
982
+ );}
983
+ #endif
984
+ var envRadiance=environmentRadiance.rgb;
985
+ #ifdef RGBDREFLECTION
986
+ envRadiance=fromRGBD(environmentRadiance);
987
+ #endif
988
+ #ifdef GAMMAREFLECTION
989
+ envRadiance=toLinearSpaceVec3(environmentRadiance.rgb);
990
+ #endif
991
+ envRadiance*=vReflectionInfos.x;envRadiance*=vReflectionColor.rgb;return vec4f(envRadiance,environmentRadiance.a);}
992
+ #define pbr_inline
993
+ fn reflectionBlock(
994
+ vPositionW: vec3f
995
+ ,normalW: vec3f
996
+ ,alphaG: f32
997
+ ,vReflectionMicrosurfaceInfos: vec3f
998
+ ,vReflectionInfos: vec2f
999
+ ,vReflectionColor: vec3f
1000
+ #ifdef ANISOTROPIC
1001
+ ,anisotropicOut: anisotropicOutParams
1002
+ #endif
1003
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
1004
+ ,NdotVUnclamped: f32
1005
+ #endif
1006
+ #ifdef LINEARSPECULARREFLECTION
1007
+ ,roughness: f32
1008
+ #endif
1009
+ #ifdef REFLECTIONMAP_3D
1010
+ ,reflectionSampler: texture_cube<f32>
1011
+ ,reflectionSamplerSampler: sampler
1012
+ #else
1013
+ ,reflectionSampler: texture_2d<f32>
1014
+ ,reflectionSamplerSampler: sampler
1015
+ #endif
1016
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
1017
+ ,vEnvironmentIrradiance: vec3f
1018
+ #endif
1019
+ #ifdef USESPHERICALFROMREFLECTIONMAP
1020
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
1021
+ ,reflectionMatrix: mat4x4f
1022
+ #endif
1023
+ #endif
1024
+ #ifdef USEIRRADIANCEMAP
1025
+ #ifdef REFLECTIONMAP_3D
1026
+ ,irradianceSampler: texture_cube<f32>
1027
+ ,irradianceSamplerSampler: sampler
1028
+ #else
1029
+ ,irradianceSampler: texture_2d<f32>
1030
+ ,irradianceSamplerSampler: sampler
1031
+ #endif
1032
+ #endif
1033
+ #ifndef LODBASEDMICROSFURACE
1034
+ #ifdef REFLECTIONMAP_3D
1035
+ ,reflectionLowSampler: texture_cube<f32>
1036
+ ,reflectionLowSamplerSampler: sampler
1037
+ ,reflectionHighSampler: texture_cube<f32>
1038
+ ,reflectionHighSamplerSampler: sampler
1039
+ #else
1040
+ ,reflectionLowSampler: texture_2d<f32>
1041
+ ,reflectionLowSamplerSampler: sampler
1042
+ ,reflectionHighSampler: texture_2d<f32>
1043
+ ,reflectionHighSamplerSampler: sampler
1044
+ #endif
1045
+ #endif
1046
+ #ifdef REALTIME_FILTERING
1047
+ ,vReflectionFilteringInfo: vec2f
1048
+ #ifdef IBL_CDF_FILTERING
1049
+ ,icdfxSampler: texture_2d<f32>
1050
+ ,icdfxSamplerSampler: sampler
1051
+ ,icdfySampler: texture_2d<f32>
1052
+ ,icdfySamplerSampler: sampler
1053
+ #endif
1054
+ #endif
1055
+ )->reflectionOutParams
1056
+ {var outParams: reflectionOutParams;var environmentRadiance: vec4f= vec4f(0.,0.,0.,0.);
1057
+ #ifdef REFLECTIONMAP_3D
1058
+ var reflectionCoords: vec3f= vec3f(0.);
1059
+ #else
1060
+ var reflectionCoords: vec2f= vec2f(0.);
1061
+ #endif
1062
+ reflectionCoords=createReflectionCoords(
1063
+ vPositionW,
1064
+ normalW,
1065
+ #ifdef ANISOTROPIC
1066
+ anisotropicOut,
1067
+ #endif
1068
+ );environmentRadiance=sampleReflectionTexture(
1069
+ alphaG
1070
+ ,vReflectionMicrosurfaceInfos
1071
+ ,vReflectionInfos
1072
+ ,vReflectionColor
1073
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
1074
+ ,NdotVUnclamped
1075
+ #endif
1076
+ #ifdef LINEARSPECULARREFLECTION
1077
+ ,roughness
1078
+ #endif
1079
+ #ifdef REFLECTIONMAP_3D
1080
+ ,reflectionSampler
1081
+ ,reflectionSamplerSampler
1082
+ ,reflectionCoords
1083
+ #else
1084
+ ,reflectionSampler
1085
+ ,reflectionSamplerSampler
1086
+ ,reflectionCoords
1087
+ #endif
1088
+ #ifndef LODBASEDMICROSFURACE
1089
+ ,reflectionLowSampler
1090
+ ,reflectionLowSamplerSampler
1091
+ ,reflectionHighSampler
1092
+ ,reflectionHighSamplerSampler
1093
+ #endif
1094
+ #ifdef REALTIME_FILTERING
1095
+ ,vReflectionFilteringInfo
1096
+ #endif
1097
+ );var environmentIrradiance: vec3f= vec3f(0.,0.,0.);
1098
+ #ifdef USESPHERICALFROMREFLECTIONMAP
1099
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
1100
+ environmentIrradiance=vEnvironmentIrradiance;
1101
+ #else
1102
+ #ifdef ANISOTROPIC
1103
+ var irradianceVector: vec3f= (reflectionMatrix* vec4f(anisotropicOut.anisotropicNormal,0)).xyz;
1104
+ #else
1105
+ var irradianceVector: vec3f= (reflectionMatrix* vec4f(normalW,0)).xyz;
1106
+ #endif
1107
+ #ifdef REFLECTIONMAP_OPPOSITEZ
1108
+ irradianceVector.z*=-1.0;
1109
+ #endif
1110
+ #ifdef INVERTCUBICMAP
1111
+ irradianceVector.y*=-1.0;
1112
+ #endif
1113
+ #if defined(REALTIME_FILTERING)
1114
+ environmentIrradiance=irradiance(reflectionSampler,reflectionSamplerSampler,irradianceVector,vReflectionFilteringInfo
1115
+ #ifdef IBL_CDF_FILTERING
1116
+ ,icdfxSampler
1117
+ ,icdfxSamplerSampler
1118
+ ,icdfySampler
1119
+ ,icdfySamplerSampler
1120
+ #endif
1121
+ );
1122
+ #else
1123
+ environmentIrradiance=computeEnvironmentIrradiance(irradianceVector);
1124
+ #endif
1125
+ #ifdef SS_TRANSLUCENCY
1126
+ outParams.irradianceVector=irradianceVector;
1127
+ #endif
1128
+ #endif
1129
+ #elif defined(USEIRRADIANCEMAP)
1130
+ var environmentIrradiance4: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,reflectionCoords);environmentIrradiance=environmentIrradiance4.rgb;
1131
+ #ifdef RGBDREFLECTION
1132
+ environmentIrradiance=fromRGBD(environmentIrradiance4);
1133
+ #endif
1134
+ #ifdef GAMMAREFLECTION
1135
+ environmentIrradiance=toLinearSpaceVec3(environmentIrradiance.rgb);
1136
+ #endif
1137
+ #endif
1138
+ environmentIrradiance*=vReflectionColor.rgb;outParams.environmentRadiance=environmentRadiance;outParams.environmentIrradiance=environmentIrradiance;outParams.reflectionCoords=reflectionCoords;return outParams;}
1139
+ #endif
1140
+ `;
1141
+ // Sideeffect
1142
+ ShaderStore.IncludesShadersStoreWGSL[name$i] = shader$i;
1143
+
1144
+ // Do not edit.
1145
+ const name$h = "pbrBlockSheen";
1146
+ const shader$h = `#ifdef SHEEN
1147
+ struct sheenOutParams
1148
+ {sheenIntensity: f32
1149
+ ,sheenColor: vec3f
1150
+ ,sheenRoughness: f32
1151
+ #ifdef SHEEN_LINKWITHALBEDO
1152
+ ,surfaceAlbedo: vec3f
1153
+ #endif
1154
+ #if defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
1155
+ ,sheenAlbedoScaling: f32
1156
+ #endif
1157
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
1158
+ ,finalSheenRadianceScaled: vec3f
1159
+ #endif
1160
+ #if DEBUGMODE>0
1161
+ #ifdef SHEEN_TEXTURE
1162
+ ,sheenMapData: vec4f
1163
+ #endif
1164
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
1165
+ ,sheenEnvironmentReflectance: vec3f
1166
+ #endif
1167
+ #endif
1168
+ };
1169
+ #define pbr_inline
1170
+ fn sheenBlock(
1171
+ vSheenColor: vec4f
1172
+ #ifdef SHEEN_ROUGHNESS
1173
+ ,vSheenRoughness: f32
1174
+ #if defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)
1175
+ ,sheenMapRoughnessData: vec4f
1176
+ #endif
1177
+ #endif
1178
+ ,roughness: f32
1179
+ #ifdef SHEEN_TEXTURE
1180
+ ,sheenMapData: vec4f
1181
+ ,sheenMapLevel: f32
1182
+ #endif
1183
+ ,reflectance: f32
1184
+ #ifdef SHEEN_LINKWITHALBEDO
1185
+ ,baseColor: vec3f
1186
+ ,surfaceAlbedo: vec3f
1187
+ #endif
1188
+ #ifdef ENVIRONMENTBRDF
1189
+ ,NdotV: f32
1190
+ ,environmentBrdf: vec3f
1191
+ #endif
1192
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
1193
+ ,AARoughnessFactors: vec2f
1194
+ ,vReflectionMicrosurfaceInfos: vec3f
1195
+ ,vReflectionInfos: vec2f
1196
+ ,vReflectionColor: vec3f
1197
+ ,vLightingIntensity: vec4f
1198
+ #ifdef REFLECTIONMAP_3D
1199
+ ,reflectionSampler: texture_cube<f32>
1200
+ ,reflectionSamplerSampler: sampler
1201
+ ,reflectionCoords: vec3f
1202
+ #else
1203
+ ,reflectionSampler: texture_2d<f32>
1204
+ ,reflectionSamplerSampler: sampler
1205
+ ,reflectionCoords: vec2f
1206
+ #endif
1207
+ ,NdotVUnclamped: f32
1208
+ #ifndef LODBASEDMICROSFURACE
1209
+ #ifdef REFLECTIONMAP_3D
1210
+ ,reflectionLowSampler: texture_cube<f32>
1211
+ ,reflectionLowSamplerSampler: sampler
1212
+ ,reflectionHighSampler: texture_cube<f32>
1213
+ ,reflectionHighSamplerSampler: sampler
1214
+ #else
1215
+ ,reflectionLowSampler: texture_2d<f32>
1216
+ ,reflectionLowSamplerSampler: sampler
1217
+ ,reflectionHighSampler: texture_2d<f32>
1218
+ ,reflectionHighSamplerSampler: sampler
1219
+ #endif
1220
+ #endif
1221
+ #ifdef REALTIME_FILTERING
1222
+ ,vReflectionFilteringInfo: vec2f
1223
+ #endif
1224
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)
1225
+ ,seo: f32
1226
+ #endif
1227
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
1228
+ ,eho: f32
1229
+ #endif
1230
+ #endif
1231
+ )->sheenOutParams
1232
+ {var outParams: sheenOutParams;var sheenIntensity: f32=vSheenColor.a;
1233
+ #ifdef SHEEN_TEXTURE
1234
+ #if DEBUGMODE>0
1235
+ outParams.sheenMapData=sheenMapData;
1236
+ #endif
1237
+ #endif
1238
+ #ifdef SHEEN_LINKWITHALBEDO
1239
+ var sheenFactor: f32=pow5(1.0-sheenIntensity);var sheenColor: vec3f=baseColor.rgb*(1.0-sheenFactor);var sheenRoughness: f32=sheenIntensity;outParams.surfaceAlbedo=surfaceAlbedo*sheenFactor;
1240
+ #ifdef SHEEN_TEXTURE
1241
+ sheenIntensity*=sheenMapData.a;
1242
+ #endif
1243
+ #else
1244
+ var sheenColor: vec3f=vSheenColor.rgb;
1245
+ #ifdef SHEEN_TEXTURE
1246
+ #ifdef SHEEN_GAMMATEXTURE
1247
+ sheenColor*=toLinearSpaceVec3(sheenMapData.rgb);
1248
+ #else
1249
+ sheenColor*=sheenMapData.rgb;
1250
+ #endif
1251
+ sheenColor*=sheenMapLevel;
1252
+ #endif
1253
+ #ifdef SHEEN_ROUGHNESS
1254
+ var sheenRoughness: f32=vSheenRoughness;
1255
+ #ifdef SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE
1256
+ #if defined(SHEEN_TEXTURE)
1257
+ sheenRoughness*=sheenMapData.a;
1258
+ #endif
1259
+ #elif defined(SHEEN_TEXTURE_ROUGHNESS)
1260
+ sheenRoughness*=sheenMapRoughnessData.a;
1261
+ #endif
1262
+ #else
1263
+ var sheenRoughness: f32=roughness;
1264
+ #ifdef SHEEN_TEXTURE
1265
+ sheenIntensity*=sheenMapData.a;
1266
+ #endif
1267
+ #endif
1268
+ #if !defined(SHEEN_ALBEDOSCALING)
1269
+ sheenIntensity*=(1.-reflectance);
1270
+ #endif
1271
+ sheenColor*=sheenIntensity;
1272
+ #endif
1273
+ #ifdef ENVIRONMENTBRDF
1274
+ /*#ifdef SHEEN_SOFTER
1275
+ var environmentSheenBrdf: vec3f= vec3f(0.,0.,getBRDFLookupCharlieSheen(NdotV,sheenRoughness));
1276
+ #else*/
1277
+ #ifdef SHEEN_ROUGHNESS
1278
+ var environmentSheenBrdf: vec3f=getBRDFLookup(NdotV,sheenRoughness);
1279
+ #else
1280
+ var environmentSheenBrdf: vec3f=environmentBrdf;
1281
+ #endif
1282
+ /*#endif*/
1283
+ #endif
1284
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
1285
+ var sheenAlphaG: f32=convertRoughnessToAverageSlope(sheenRoughness);
1286
+ #ifdef SPECULARAA
1287
+ sheenAlphaG+=AARoughnessFactors.y;
1288
+ #endif
1289
+ var environmentSheenRadiance: vec4f= vec4f(0.,0.,0.,0.);environmentSheenRadiance=sampleReflectionTexture(
1290
+ sheenAlphaG
1291
+ ,vReflectionMicrosurfaceInfos
1292
+ ,vReflectionInfos
1293
+ ,vReflectionColor
1294
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
1295
+ ,NdotVUnclamped
1296
+ #endif
1297
+ #ifdef LINEARSPECULARREFLECTION
1298
+ ,sheenRoughness
1299
+ #endif
1300
+ ,reflectionSampler
1301
+ ,reflectionSamplerSampler
1302
+ ,reflectionCoords
1303
+ #ifndef LODBASEDMICROSFURACE
1304
+ ,reflectionLowSampler
1305
+ ,reflectionLowSamplerSampler
1306
+ ,reflectionHighSampler
1307
+ ,reflectionHighSamplerSampler
1308
+ #endif
1309
+ #ifdef REALTIME_FILTERING
1310
+ ,vReflectionFilteringInfo
1311
+ #endif
1312
+ );var sheenEnvironmentReflectance: vec3f=getSheenReflectanceFromBRDFLookup(sheenColor,environmentSheenBrdf);
1313
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)
1314
+ sheenEnvironmentReflectance*=seo;
1315
+ #endif
1316
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
1317
+ sheenEnvironmentReflectance*=eho;
1318
+ #endif
1319
+ #if DEBUGMODE>0
1320
+ outParams.sheenEnvironmentReflectance=sheenEnvironmentReflectance;
1321
+ #endif
1322
+ outParams.finalSheenRadianceScaled=
1323
+ environmentSheenRadiance.rgb *
1324
+ sheenEnvironmentReflectance *
1325
+ vLightingIntensity.z;
1326
+ #endif
1327
+ #if defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
1328
+ outParams.sheenAlbedoScaling=1.0-sheenIntensity*max(max(sheenColor.r,sheenColor.g),sheenColor.b)*environmentSheenBrdf.b;
1329
+ #endif
1330
+ outParams.sheenIntensity=sheenIntensity;outParams.sheenColor=sheenColor;outParams.sheenRoughness=sheenRoughness;return outParams;}
1331
+ #endif
1332
+ `;
1333
+ // Sideeffect
1334
+ ShaderStore.IncludesShadersStoreWGSL[name$h] = shader$h;
1335
+
1336
+ // Do not edit.
1337
+ const name$g = "pbrBlockClearcoat";
1338
+ const shader$g = `struct clearcoatOutParams
1339
+ {specularEnvironmentR0: vec3f,
1340
+ conservationFactor: f32,
1341
+ clearCoatNormalW: vec3f,
1342
+ clearCoatAARoughnessFactors: vec2f,
1343
+ clearCoatIntensity: f32,
1344
+ clearCoatRoughness: f32,
1345
+ #ifdef REFLECTION
1346
+ finalClearCoatRadianceScaled: vec3f,
1347
+ #endif
1348
+ #ifdef CLEARCOAT_TINT
1349
+ absorption: vec3f,
1350
+ clearCoatNdotVRefract: f32,
1351
+ clearCoatColor: vec3f,
1352
+ clearCoatThickness: f32,
1353
+ #endif
1354
+ #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
1355
+ energyConservationFactorClearCoat: vec3f,
1356
+ #endif
1357
+ #if DEBUGMODE>0
1358
+ #ifdef CLEARCOAT_BUMP
1359
+ TBNClearCoat: mat3x3f,
1360
+ #endif
1361
+ #ifdef CLEARCOAT_TEXTURE
1362
+ clearCoatMapData: vec2f,
1363
+ #endif
1364
+ #if defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)
1365
+ clearCoatTintMapData: vec4f,
1366
+ #endif
1367
+ #ifdef REFLECTION
1368
+ environmentClearCoatRadiance: vec4f,
1369
+ clearCoatEnvironmentReflectance: vec3f,
1370
+ #endif
1371
+ clearCoatNdotV: f32
1372
+ #endif
1373
+ };
1374
+ #ifdef CLEARCOAT
1375
+ #define pbr_inline
1376
+ fn clearcoatBlock(
1377
+ vPositionW: vec3f
1378
+ ,geometricNormalW: vec3f
1379
+ ,viewDirectionW: vec3f
1380
+ ,vClearCoatParams: vec2f
1381
+ #if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_TEXTURE_ROUGHNESS_IDENTICAL) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)
1382
+ ,clearCoatMapRoughnessData: vec4f
1383
+ #endif
1384
+ ,specularEnvironmentR0: vec3f
1385
+ #ifdef CLEARCOAT_TEXTURE
1386
+ ,clearCoatMapData: vec2f
1387
+ #endif
1388
+ #ifdef CLEARCOAT_TINT
1389
+ ,vClearCoatTintParams: vec4f
1390
+ ,clearCoatColorAtDistance: f32
1391
+ ,vClearCoatRefractionParams: vec4f
1392
+ #ifdef CLEARCOAT_TINT_TEXTURE
1393
+ ,clearCoatTintMapData: vec4f
1394
+ #endif
1395
+ #endif
1396
+ #ifdef CLEARCOAT_BUMP
1397
+ ,vClearCoatBumpInfos: vec2f
1398
+ ,clearCoatBumpMapData: vec4f
1399
+ ,vClearCoatBumpUV: vec2f
1400
+ #if defined(TANGENT) && defined(NORMAL)
1401
+ ,vTBN: mat3x3f
1402
+ #else
1403
+ ,vClearCoatTangentSpaceParams: vec2f
1404
+ #endif
1405
+ #ifdef OBJECTSPACE_NORMALMAP
1406
+ ,normalMatrix: mat4x4f
1407
+ #endif
1408
+ #endif
1409
+ #if defined(FORCENORMALFORWARD) && defined(NORMAL)
1410
+ ,faceNormal: vec3f
1411
+ #endif
1412
+ #ifdef REFLECTION
1413
+ ,vReflectionMicrosurfaceInfos: vec3f
1414
+ ,vReflectionInfos: vec2f
1415
+ ,vReflectionColor: vec3f
1416
+ ,vLightingIntensity: vec4f
1417
+ #ifdef REFLECTIONMAP_3D
1418
+ ,reflectionSampler: texture_cube<f32>
1419
+ ,reflectionSamplerSampler: sampler
1420
+ #else
1421
+ ,reflectionSampler: texture_2d<f32>
1422
+ ,reflectionSamplerSampler: sampler
1423
+ #endif
1424
+ #ifndef LODBASEDMICROSFURACE
1425
+ #ifdef REFLECTIONMAP_3D
1426
+ ,reflectionLowSampler: texture_cube<f32>
1427
+ ,reflectionLowSamplerSampler: sampler
1428
+ ,reflectionHighSampler: texture_cube<f32>
1429
+ ,reflectionHighSamplerSampler: sampler
1430
+ #else
1431
+ ,reflectionLowSampler: texture_2d<f32>
1432
+ ,reflectionLowSamplerSampler: sampler
1433
+ ,reflectionHighSampler: texture_2d<f32>
1434
+ ,reflectionHighSamplerSampler: sampler
1435
+ #endif
1436
+ #endif
1437
+ #ifdef REALTIME_FILTERING
1438
+ ,vReflectionFilteringInfo: vec2f
1439
+ #endif
1440
+ #endif
1441
+ #if defined(CLEARCOAT_BUMP) || defined(TWOSIDEDLIGHTING)
1442
+ ,frontFacingMultiplier: f32
1443
+ #endif
1444
+ )->clearcoatOutParams
1445
+ {var outParams: clearcoatOutParams;var clearCoatIntensity: f32=vClearCoatParams.x;var clearCoatRoughness: f32=vClearCoatParams.y;
1446
+ #ifdef CLEARCOAT_TEXTURE
1447
+ clearCoatIntensity*=clearCoatMapData.x;
1448
+ #ifdef CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE
1449
+ clearCoatRoughness*=clearCoatMapData.y;
1450
+ #endif
1451
+ #if DEBUGMODE>0
1452
+ outParams.clearCoatMapData=clearCoatMapData;
1453
+ #endif
1454
+ #endif
1455
+ #if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)
1456
+ clearCoatRoughness*=clearCoatMapRoughnessData.y;
1457
+ #endif
1458
+ outParams.clearCoatIntensity=clearCoatIntensity;outParams.clearCoatRoughness=clearCoatRoughness;
1459
+ #ifdef CLEARCOAT_TINT
1460
+ var clearCoatColor: vec3f=vClearCoatTintParams.rgb;var clearCoatThickness: f32=vClearCoatTintParams.a;
1461
+ #ifdef CLEARCOAT_TINT_TEXTURE
1462
+ #ifdef CLEARCOAT_TINT_GAMMATEXTURE
1463
+ clearCoatColor*=toLinearSpaceVec3(clearCoatTintMapData.rgb);
1464
+ #else
1465
+ clearCoatColor*=clearCoatTintMapData.rgb;
1466
+ #endif
1467
+ clearCoatThickness*=clearCoatTintMapData.a;
1468
+ #if DEBUGMODE>0
1469
+ outParams.clearCoatTintMapData=clearCoatTintMapData;
1470
+ #endif
1471
+ #endif
1472
+ outParams.clearCoatColor=computeColorAtDistanceInMedia(clearCoatColor,clearCoatColorAtDistance);outParams.clearCoatThickness=clearCoatThickness;
1473
+ #endif
1474
+ #ifdef CLEARCOAT_REMAP_F0
1475
+ var specularEnvironmentR0Updated: vec3f=getR0RemappedForClearCoat(specularEnvironmentR0);
1476
+ #else
1477
+ var specularEnvironmentR0Updated: vec3f=specularEnvironmentR0;
1478
+ #endif
1479
+ outParams.specularEnvironmentR0=mix(specularEnvironmentR0,specularEnvironmentR0Updated,clearCoatIntensity);var clearCoatNormalW: vec3f=geometricNormalW;
1480
+ #ifdef CLEARCOAT_BUMP
1481
+ #ifdef NORMALXYSCALE
1482
+ var clearCoatNormalScale: f32=1.0;
1483
+ #else
1484
+ var clearCoatNormalScale: f32=vClearCoatBumpInfos.y;
1485
+ #endif
1486
+ #if defined(TANGENT) && defined(NORMAL)
1487
+ var TBNClearCoat: mat3x3f=vTBN;
1488
+ #else
1489
+ var TBNClearCoatUV: vec2f=vClearCoatBumpUV*frontFacingMultiplier;var TBNClearCoat: mat3x3f=cotangent_frame(clearCoatNormalW*clearCoatNormalScale,vPositionW,TBNClearCoatUV,vClearCoatTangentSpaceParams);
1490
+ #endif
1491
+ #if DEBUGMODE>0
1492
+ outParams.TBNClearCoat=TBNClearCoat;
1493
+ #endif
1494
+ #ifdef OBJECTSPACE_NORMALMAP
1495
+ clearCoatNormalW=normalize(clearCoatBumpMapData.xyz *2.0-1.0);clearCoatNormalW=normalize( mat3x3f(normalMatrix[0].xyz,normalMatrix[1].xyz,normalMatrix[2].xyz)*clearCoatNormalW);
1496
+ #else
1497
+ clearCoatNormalW=perturbNormal(TBNClearCoat,clearCoatBumpMapData.xyz,vClearCoatBumpInfos.y);
1498
+ #endif
1499
+ #endif
1500
+ #if defined(FORCENORMALFORWARD) && defined(NORMAL)
1501
+ clearCoatNormalW*=sign(dot(clearCoatNormalW,faceNormal));
1502
+ #endif
1503
+ #if defined(TWOSIDEDLIGHTING) && defined(NORMAL)
1504
+ clearCoatNormalW=clearCoatNormalW*frontFacingMultiplier;
1505
+ #endif
1506
+ outParams.clearCoatNormalW=clearCoatNormalW;outParams.clearCoatAARoughnessFactors=getAARoughnessFactors(clearCoatNormalW.xyz);var clearCoatNdotVUnclamped: f32=dot(clearCoatNormalW,viewDirectionW);var clearCoatNdotV: f32=absEps(clearCoatNdotVUnclamped);
1507
+ #if DEBUGMODE>0
1508
+ outParams.clearCoatNdotV=clearCoatNdotV;
1509
+ #endif
1510
+ #ifdef CLEARCOAT_TINT
1511
+ var clearCoatVRefract: vec3f=refract(-viewDirectionW,clearCoatNormalW,vClearCoatRefractionParams.y);outParams.clearCoatNdotVRefract=absEps(dot(clearCoatNormalW,clearCoatVRefract));
1512
+ #endif
1513
+ #if defined(ENVIRONMENTBRDF) && (!defined(REFLECTIONMAP_SKYBOX) || defined(MS_BRDF_ENERGY_CONSERVATION))
1514
+ var environmentClearCoatBrdf: vec3f=getBRDFLookup(clearCoatNdotV,clearCoatRoughness);
1515
+ #endif
1516
+ #if defined(REFLECTION)
1517
+ var clearCoatAlphaG: f32=convertRoughnessToAverageSlope(clearCoatRoughness);
1518
+ #ifdef SPECULARAA
1519
+ clearCoatAlphaG+=outParams.clearCoatAARoughnessFactors.y;
1520
+ #endif
1521
+ var environmentClearCoatRadiance: vec4f= vec4f(0.,0.,0.,0.);var clearCoatReflectionVector: vec3f=computeReflectionCoords( vec4f(vPositionW,1.0),clearCoatNormalW);
1522
+ #ifdef REFLECTIONMAP_OPPOSITEZ
1523
+ clearCoatReflectionVector.z*=-1.0;
1524
+ #endif
1525
+ #ifdef REFLECTIONMAP_3D
1526
+ var clearCoatReflectionCoords: vec3f=clearCoatReflectionVector;
1527
+ #else
1528
+ var clearCoatReflectionCoords: vec2f=clearCoatReflectionVector.xy;
1529
+ #ifdef REFLECTIONMAP_PROJECTION
1530
+ clearCoatReflectionCoords/=clearCoatReflectionVector.z;
1531
+ #endif
1532
+ clearCoatReflectionCoords.y=1.0-clearCoatReflectionCoords.y;
1533
+ #endif
1534
+ environmentClearCoatRadiance=sampleReflectionTexture(
1535
+ clearCoatAlphaG
1536
+ ,vReflectionMicrosurfaceInfos
1537
+ ,vReflectionInfos
1538
+ ,vReflectionColor
1539
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
1540
+ ,clearCoatNdotVUnclamped
1541
+ #endif
1542
+ #ifdef LINEARSPECULARREFLECTION
1543
+ ,clearCoatRoughness
1544
+ #endif
1545
+ ,reflectionSampler
1546
+ ,reflectionSamplerSampler
1547
+ ,clearCoatReflectionCoords
1548
+ #ifndef LODBASEDMICROSFURACE
1549
+ ,reflectionLowSampler
1550
+ ,reflectionLowSamplerSampler
1551
+ ,reflectionHighSampler
1552
+ ,reflectionHighSamplerSampler
1553
+ #endif
1554
+ #ifdef REALTIME_FILTERING
1555
+ ,vReflectionFilteringInfo
1556
+ #endif
1557
+ );
1558
+ #if DEBUGMODE>0
1559
+ outParams.environmentClearCoatRadiance=environmentClearCoatRadiance;
1560
+ #endif
1561
+ #if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
1562
+ var clearCoatEnvironmentReflectance: vec3f=getReflectanceFromBRDFLookup(vec3f(uniforms.vClearCoatRefractionParams.x),environmentClearCoatBrdf);
1563
+ #ifdef HORIZONOCCLUSION
1564
+ #ifdef BUMP
1565
+ #ifdef REFLECTIONMAP_3D
1566
+ var clearCoatEho: f32=environmentHorizonOcclusion(-viewDirectionW,clearCoatNormalW,geometricNormalW);clearCoatEnvironmentReflectance*=clearCoatEho;
1567
+ #endif
1568
+ #endif
1569
+ #endif
1570
+ #else
1571
+ var clearCoatEnvironmentReflectance: vec3f=getReflectanceFromAnalyticalBRDFLookup_Jones(clearCoatNdotV, vec3f(1.), vec3f(1.),sqrt(1.-clearCoatRoughness));
1572
+ #endif
1573
+ clearCoatEnvironmentReflectance*=clearCoatIntensity;
1574
+ #if DEBUGMODE>0
1575
+ outParams.clearCoatEnvironmentReflectance=clearCoatEnvironmentReflectance;
1576
+ #endif
1577
+ outParams.finalClearCoatRadianceScaled=
1578
+ environmentClearCoatRadiance.rgb *
1579
+ clearCoatEnvironmentReflectance *
1580
+ vLightingIntensity.z;
1581
+ #endif
1582
+ #if defined(CLEARCOAT_TINT)
1583
+ outParams.absorption=computeClearCoatAbsorption(outParams.clearCoatNdotVRefract,outParams.clearCoatNdotVRefract,outParams.clearCoatColor,clearCoatThickness,clearCoatIntensity);
1584
+ #endif
1585
+ var fresnelIBLClearCoat: f32=fresnelSchlickGGX(clearCoatNdotV,uniforms.vClearCoatRefractionParams.x,CLEARCOATREFLECTANCE90);fresnelIBLClearCoat*=clearCoatIntensity;outParams.conservationFactor=(1.-fresnelIBLClearCoat);
1586
+ #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
1587
+ outParams.energyConservationFactorClearCoat=getEnergyConservationFactor(outParams.specularEnvironmentR0,environmentClearCoatBrdf);
1588
+ #endif
1589
+ return outParams;}
1590
+ #endif
1591
+ `;
1592
+ // Sideeffect
1593
+ ShaderStore.IncludesShadersStoreWGSL[name$g] = shader$g;
1594
+
1595
+ // Do not edit.
1596
+ const name$f = "pbrBlockIridescence";
1597
+ const shader$f = `struct iridescenceOutParams
1598
+ {iridescenceIntensity: f32,
1599
+ iridescenceIOR: f32,
1600
+ iridescenceThickness: f32,
1601
+ specularEnvironmentR0: vec3f};
1602
+ #ifdef IRIDESCENCE
1603
+ fn iridescenceBlock(
1604
+ vIridescenceParams: vec4f
1605
+ ,viewAngle: f32
1606
+ ,specularEnvironmentR0: vec3f
1607
+ #ifdef IRIDESCENCE_TEXTURE
1608
+ ,iridescenceMapData: vec2f
1609
+ #endif
1610
+ #ifdef IRIDESCENCE_THICKNESS_TEXTURE
1611
+ ,iridescenceThicknessMapData: vec2f
1612
+ #endif
1613
+ #ifdef CLEARCOAT
1614
+ ,NdotVUnclamped: f32
1615
+ #ifdef CLEARCOAT_TEXTURE
1616
+ ,clearCoatMapData: vec2f
1617
+ #endif
1618
+ #endif
1619
+ )->iridescenceOutParams
1620
+ {var outParams: iridescenceOutParams;var iridescenceIntensity: f32=vIridescenceParams.x;var iridescenceIOR: f32=vIridescenceParams.y;var iridescenceThicknessMin: f32=vIridescenceParams.z;var iridescenceThicknessMax: f32=vIridescenceParams.w;var iridescenceThicknessWeight: f32=1.;
1621
+ #ifdef IRIDESCENCE_TEXTURE
1622
+ iridescenceIntensity*=iridescenceMapData.x;
1623
+ #endif
1624
+ #if defined(IRIDESCENCE_THICKNESS_TEXTURE)
1625
+ iridescenceThicknessWeight=iridescenceThicknessMapData.g;
1626
+ #endif
1627
+ var iridescenceThickness: f32=mix(iridescenceThicknessMin,iridescenceThicknessMax,iridescenceThicknessWeight);var topIor: f32=1.;
1628
+ #ifdef CLEARCOAT
1629
+ var clearCoatIntensity: f32=vClearCoatParams.x;
1630
+ #ifdef CLEARCOAT_TEXTURE
1631
+ clearCoatIntensity*=clearCoatMapData.x;
1632
+ #endif
1633
+ topIor=mix(1.0,uniforms.vClearCoatRefractionParams.w-1.,clearCoatIntensity);viewAngle=sqrt(1.0+((1.0/topIor)*(1.0/topIor))*((NdotVUnclamped*NdotVUnclamped)-1.0));
1634
+ #endif
1635
+ var iridescenceFresnel: vec3f=evalIridescence(topIor,iridescenceIOR,viewAngle,iridescenceThickness,specularEnvironmentR0);outParams.specularEnvironmentR0=mix(specularEnvironmentR0,iridescenceFresnel,iridescenceIntensity);outParams.iridescenceIntensity=iridescenceIntensity;outParams.iridescenceThickness=iridescenceThickness;outParams.iridescenceIOR=iridescenceIOR;return outParams;}
1636
+ #endif
1637
+ `;
1638
+ // Sideeffect
1639
+ ShaderStore.IncludesShadersStoreWGSL[name$f] = shader$f;
1640
+
1641
+ // Do not edit.
1642
+ const name$e = "pbrBlockSubSurface";
1643
+ const shader$e = `struct subSurfaceOutParams
1644
+ {specularEnvironmentReflectance: vec3f,
1645
+ #ifdef SS_REFRACTION
1646
+ finalRefraction: vec3f,
1647
+ surfaceAlbedo: vec3f,
1648
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
1649
+ alpha: f32,
1650
+ #endif
1651
+ #ifdef REFLECTION
1652
+ refractionFactorForIrradiance: f32,
1653
+ #endif
1654
+ #endif
1655
+ #ifdef SS_TRANSLUCENCY
1656
+ transmittance: vec3f,
1657
+ translucencyIntensity: f32,
1658
+ #ifdef REFLECTION
1659
+ refractionIrradiance: vec3f,
1660
+ #endif
1661
+ #endif
1662
+ #if DEBUGMODE>0
1663
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
1664
+ thicknessMap: vec4f,
1665
+ #endif
1666
+ #ifdef SS_REFRACTION
1667
+ environmentRefraction: vec4f,
1668
+ refractionTransmittance: vec3f
1669
+ #endif
1670
+ #endif
1671
+ };
1672
+ #ifdef SUBSURFACE
1673
+ #ifdef SS_REFRACTION
1674
+ #define pbr_inline
1675
+ fn sampleEnvironmentRefraction(
1676
+ ior: f32
1677
+ ,thickness: f32
1678
+ ,refractionLOD: f32
1679
+ ,normalW: vec3f
1680
+ ,vPositionW: vec3f
1681
+ ,viewDirectionW: vec3f
1682
+ ,view: mat4x4f
1683
+ ,vRefractionInfos: vec4f
1684
+ ,refractionMatrix: mat4x4f
1685
+ ,vRefractionMicrosurfaceInfos: vec4f
1686
+ ,alphaG: f32
1687
+ #ifdef SS_REFRACTIONMAP_3D
1688
+ ,refractionSampler: texture_cube<f32>
1689
+ ,refractionSamplerSampler: sampler
1690
+ #ifndef LODBASEDMICROSFURACE
1691
+ ,refractionLowSampler: texture_cube<f32>
1692
+ ,refractionLowSamplerSampler: sampler
1693
+ ,refractionHighSampler: texture_cube<f32>
1694
+ ,refractionHighSamplerSampler: sampler
1695
+ #endif
1696
+ #else
1697
+ ,refractionSampler: texture_2d<f32>
1698
+ ,refractionSamplerSampler: sampler
1699
+ #ifndef LODBASEDMICROSFURACE
1700
+ ,refractionLowSampler: texture_2d<f32>
1701
+ ,refractionLowSamplerSampler: sampler
1702
+ ,refractionHighSampler: texture_2d<f32>
1703
+ ,refractionHighSamplerSampler: sampler
1704
+ #endif
1705
+ #endif
1706
+ #ifdef ANISOTROPIC
1707
+ ,anisotropicOut: anisotropicOutParams
1708
+ #endif
1709
+ #ifdef REALTIME_FILTERING
1710
+ ,vRefractionFilteringInfo: vec2f
1711
+ #endif
1712
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
1713
+ ,refractionPosition: vec3f
1714
+ ,refractionSize: vec3f
1715
+ #endif
1716
+ )->vec4f {var environmentRefraction: vec4f= vec4f(0.,0.,0.,0.);
1717
+ #ifdef ANISOTROPIC
1718
+ var refractionVector: vec3f=refract(-viewDirectionW,anisotropicOut.anisotropicNormal,ior);
1719
+ #else
1720
+ var refractionVector: vec3f=refract(-viewDirectionW,normalW,ior);
1721
+ #endif
1722
+ #ifdef SS_REFRACTIONMAP_OPPOSITEZ
1723
+ refractionVector.z*=-1.0;
1724
+ #endif
1725
+ #ifdef SS_REFRACTIONMAP_3D
1726
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
1727
+ refractionVector=parallaxCorrectNormal(vPositionW,refractionVector,refractionSize,refractionPosition);
1728
+ #endif
1729
+ refractionVector.y=refractionVector.y*vRefractionInfos.w;var refractionCoords: vec3f=refractionVector;refractionCoords= (refractionMatrix* vec4f(refractionCoords,0)).xyz;
1730
+ #else
1731
+ #ifdef SS_USE_THICKNESS_AS_DEPTH
1732
+ var vRefractionUVW: vec3f= (refractionMatrix*(view* vec4f(vPositionW+refractionVector*thickness,1.0))).xyz;
1733
+ #else
1734
+ var vRefractionUVW: vec3f= (refractionMatrix*(view* vec4f(vPositionW+refractionVector*vRefractionInfos.z,1.0))).xyz;
1735
+ #endif
1736
+ var refractionCoords: vec2f=vRefractionUVW.xy/vRefractionUVW.z;refractionCoords.y=1.0-refractionCoords.y;
1737
+ #endif
1738
+ #ifdef LODBASEDMICROSFURACE
1739
+ var lod=refractionLOD*vRefractionMicrosurfaceInfos.y+vRefractionMicrosurfaceInfos.z;
1740
+ #ifdef SS_LODINREFRACTIONALPHA
1741
+ var automaticRefractionLOD: f32=UNPACK_LOD(textureSample(refractionSampler,refractionSamplerSampler,refractionCoords).a);var requestedRefractionLOD: f32=max(automaticRefractionLOD,lod);
1742
+ #else
1743
+ var requestedRefractionLOD: f32=lod;
1744
+ #endif
1745
+ #if defined(REALTIME_FILTERING) && defined(SS_REFRACTIONMAP_3D)
1746
+ environmentRefraction= vec4f(radiance(alphaG,refractionSampler,refractionSamplerSampler,refractionCoords,vRefractionFilteringInfo),1.0);
1747
+ #else
1748
+ environmentRefraction=textureSampleLevel(refractionSampler,refractionSamplerSampler,refractionCoords,requestedRefractionLOD);
1749
+ #endif
1750
+ #else
1751
+ var lodRefractionNormalized: f32=saturate(refractionLOD/log2(vRefractionMicrosurfaceInfos.x));var lodRefractionNormalizedDoubled: f32=lodRefractionNormalized*2.0;var environmentRefractionMid: vec4f=textureSample(refractionSampler,refractionSamplerSampler,refractionCoords);if (lodRefractionNormalizedDoubled<1.0){environmentRefraction=mix(
1752
+ textureSample(refractionHighSampler,refractionHighSamplerSampler,refractionCoords),
1753
+ environmentRefractionMid,
1754
+ lodRefractionNormalizedDoubled
1755
+ );} else {environmentRefraction=mix(
1756
+ environmentRefractionMid,
1757
+ textureSample(refractionLowSampler,refractionLowSamplerSampler,refractionCoords),
1758
+ lodRefractionNormalizedDoubled-1.0
1759
+ );}
1760
+ #endif
1761
+ var refraction=environmentRefraction.rgb;
1762
+ #ifdef SS_RGBDREFRACTION
1763
+ refraction=fromRGBD(environmentRefraction);
1764
+ #endif
1765
+ #ifdef SS_GAMMAREFRACTION
1766
+ refraction=toLinearSpaceVec3(environmentRefraction.rgb);
1767
+ #endif
1768
+ return vec4f(refraction,environmentRefraction.a);}
1769
+ #endif
1770
+ #define pbr_inline
1771
+ fn subSurfaceBlock(
1772
+ vSubSurfaceIntensity: vec3f
1773
+ ,vThicknessParam: vec2f
1774
+ ,vTintColor: vec4f
1775
+ ,normalW: vec3f
1776
+ ,specularEnvironmentReflectance: vec3f
1777
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
1778
+ ,thicknessMap: vec4f
1779
+ #endif
1780
+ #ifdef SS_REFRACTIONINTENSITY_TEXTURE
1781
+ ,refractionIntensityMap: vec4f
1782
+ #endif
1783
+ #ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE
1784
+ ,translucencyIntensityMap: vec4f
1785
+ #endif
1786
+ #ifdef REFLECTION
1787
+ #ifdef SS_TRANSLUCENCY
1788
+ ,reflectionMatrix: mat4x4f
1789
+ #ifdef USESPHERICALFROMREFLECTIONMAP
1790
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
1791
+ ,irradianceVector_: vec3f
1792
+ #endif
1793
+ #if defined(REALTIME_FILTERING)
1794
+ ,reflectionSampler: texture_cube<f32>
1795
+ ,reflectionSamplerSampler: sampler
1796
+ ,vReflectionFilteringInfo: vec2f
1797
+ #ifdef IBL_CDF_FILTERING
1798
+ ,icdfxSampler: texture_2d<f32>
1799
+ ,icdfxSamplerSampler: sampler
1800
+ ,icdfySampler: texture_2d<f32>
1801
+ ,icdfySamplerSampler: sampler
1802
+ #endif
1803
+ #endif
1804
+ #endif
1805
+ #ifdef USEIRRADIANCEMAP
1806
+ #ifdef REFLECTIONMAP_3D
1807
+ ,irradianceSampler: texture_cube<f32>
1808
+ ,irradianceSamplerSampler: sampler
1809
+ #else
1810
+ ,irradianceSampler: texture_2d<f32>
1811
+ ,irradianceSamplerSampler: sampler
1812
+ #endif
1813
+ #endif
1814
+ #endif
1815
+ #endif
1816
+ #if defined(SS_REFRACTION) || defined(SS_TRANSLUCENCY)
1817
+ ,surfaceAlbedo: vec3f
1818
+ #endif
1819
+ #ifdef SS_REFRACTION
1820
+ ,vPositionW: vec3f
1821
+ ,viewDirectionW: vec3f
1822
+ ,view: mat4x4f
1823
+ ,vRefractionInfos: vec4f
1824
+ ,refractionMatrix: mat4x4f
1825
+ ,vRefractionMicrosurfaceInfos: vec4f
1826
+ ,vLightingIntensity: vec4f
1827
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
1828
+ ,alpha: f32
1829
+ #endif
1830
+ #ifdef SS_LODINREFRACTIONALPHA
1831
+ ,NdotVUnclamped: f32
1832
+ #endif
1833
+ #ifdef SS_LINEARSPECULARREFRACTION
1834
+ ,roughness: f32
1835
+ #endif
1836
+ ,alphaG: f32
1837
+ #ifdef SS_REFRACTIONMAP_3D
1838
+ ,refractionSampler: texture_cube<f32>
1839
+ ,refractionSamplerSampler: sampler
1840
+ #ifndef LODBASEDMICROSFURACE
1841
+ ,refractionLowSampler: texture_cube<f32>
1842
+ ,refractionLowSamplerSampler: sampler
1843
+ ,refractionHighSampler: texture_cube<f32>
1844
+ ,refractionHighSamplerSampler: sampler
1845
+ #endif
1846
+ #else
1847
+ ,refractionSampler: texture_2d<f32>
1848
+ ,refractionSamplerSampler: sampler
1849
+ #ifndef LODBASEDMICROSFURACE
1850
+ ,refractionLowSampler: texture_2d<f32>
1851
+ ,refractionLowSamplerSampler: sampler
1852
+ ,refractionHighSampler: texture_2d<f32>
1853
+ ,refractionHighSamplerSampler: sampler
1854
+ #endif
1855
+ #endif
1856
+ #ifdef ANISOTROPIC
1857
+ ,anisotropicOut: anisotropicOutParams
1858
+ #endif
1859
+ #ifdef REALTIME_FILTERING
1860
+ ,vRefractionFilteringInfo: vec2f
1861
+ #endif
1862
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
1863
+ ,refractionPosition: vec3f
1864
+ ,refractionSize: vec3f
1865
+ #endif
1866
+ #ifdef SS_DISPERSION
1867
+ ,dispersion: f32
1868
+ #endif
1869
+ #endif
1870
+ #ifdef SS_TRANSLUCENCY
1871
+ ,vDiffusionDistance: vec3f
1872
+ ,vTranslucencyColor: vec4f
1873
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE
1874
+ ,translucencyColorMap: vec4f
1875
+ #endif
1876
+ #endif
1877
+ )->subSurfaceOutParams
1878
+ {var outParams: subSurfaceOutParams;outParams.specularEnvironmentReflectance=specularEnvironmentReflectance;
1879
+ #ifdef SS_REFRACTION
1880
+ var refractionIntensity: f32=vSubSurfaceIntensity.x;
1881
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
1882
+ refractionIntensity*=(1.0-alpha);outParams.alpha=1.0;
1883
+ #endif
1884
+ #endif
1885
+ #ifdef SS_TRANSLUCENCY
1886
+ var translucencyIntensity: f32=vSubSurfaceIntensity.y;
1887
+ #endif
1888
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
1889
+ #ifdef SS_USE_GLTF_TEXTURES
1890
+ var thickness: f32=thicknessMap.g*vThicknessParam.y+vThicknessParam.x;
1891
+ #else
1892
+ var thickness: f32=thicknessMap.r*vThicknessParam.y+vThicknessParam.x;
1893
+ #endif
1894
+ #if DEBUGMODE>0
1895
+ outParams.thicknessMap=thicknessMap;
1896
+ #endif
1897
+ #if defined(SS_REFRACTION) && defined(SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS)
1898
+ #ifdef SS_USE_GLTF_TEXTURES
1899
+ refractionIntensity*=thicknessMap.r;
1900
+ #else
1901
+ refractionIntensity*=thicknessMap.g;
1902
+ #endif
1903
+ #endif
1904
+ #if defined(SS_TRANSLUCENCY) && defined(SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS)
1905
+ #ifdef SS_USE_GLTF_TEXTURES
1906
+ translucencyIntensity*=thicknessMap.a;
1907
+ #else
1908
+ translucencyIntensity*=thicknessMap.b;
1909
+ #endif
1910
+ #endif
1911
+ #else
1912
+ var thickness: f32=vThicknessParam.y;
1913
+ #endif
1914
+ #if defined(SS_REFRACTION) && defined(SS_REFRACTIONINTENSITY_TEXTURE)
1915
+ #ifdef SS_USE_GLTF_TEXTURES
1916
+ refractionIntensity*=refractionIntensityMap.r;
1917
+ #else
1918
+ refractionIntensity*=refractionIntensityMap.g;
1919
+ #endif
1920
+ #endif
1921
+ #if defined(SS_TRANSLUCENCY) && defined(SS_TRANSLUCENCYINTENSITY_TEXTURE)
1922
+ #ifdef SS_USE_GLTF_TEXTURES
1923
+ translucencyIntensity*=translucencyIntensityMap.a;
1924
+ #else
1925
+ translucencyIntensity*=translucencyIntensityMap.b;
1926
+ #endif
1927
+ #endif
1928
+ #ifdef SS_TRANSLUCENCY
1929
+ thickness=maxEps(thickness);var translucencyColor: vec4f=vTranslucencyColor;
1930
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE
1931
+ translucencyColor*=translucencyColorMap;
1932
+ #endif
1933
+ var transmittance: vec3f=transmittanceBRDF_Burley(translucencyColor.rgb,vDiffusionDistance,thickness);transmittance*=translucencyIntensity;outParams.transmittance=transmittance;outParams.translucencyIntensity=translucencyIntensity;
1934
+ #endif
1935
+ #ifdef SS_REFRACTION
1936
+ var environmentRefraction: vec4f= vec4f(0.,0.,0.,0.);
1937
+ #ifdef SS_HAS_THICKNESS
1938
+ var ior: f32=vRefractionInfos.y;
1939
+ #else
1940
+ var ior: f32=vRefractionMicrosurfaceInfos.w;
1941
+ #endif
1942
+ #ifdef SS_LODINREFRACTIONALPHA
1943
+ var refractionAlphaG: f32=alphaG;refractionAlphaG=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));var refractionLOD: f32=getLodFromAlphaGNdotV(vRefractionMicrosurfaceInfos.x,refractionAlphaG,NdotVUnclamped);
1944
+ #elif defined(SS_LINEARSPECULARREFRACTION)
1945
+ var refractionRoughness: f32=alphaG;refractionRoughness=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));var refractionLOD: f32=getLinearLodFromRoughness(vRefractionMicrosurfaceInfos.x,refractionRoughness);
1946
+ #else
1947
+ var refractionAlphaG: f32=alphaG;refractionAlphaG=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));var refractionLOD: f32=getLodFromAlphaG(vRefractionMicrosurfaceInfos.x,refractionAlphaG);
1948
+ #endif
1949
+ var refraction_ior: f32=vRefractionInfos.y;
1950
+ #ifdef SS_DISPERSION
1951
+ var realIOR: f32=1.0/refraction_ior;var iorDispersionSpread: f32=0.04*dispersion*(realIOR-1.0);var iors: vec3f= vec3f(1.0/(realIOR-iorDispersionSpread),refraction_ior,1.0/(realIOR+iorDispersionSpread));for (var i: i32=0; i<3; i++) {refraction_ior=iors[i];
1952
+ #endif
1953
+ var envSample: vec4f=sampleEnvironmentRefraction(refraction_ior,thickness,refractionLOD,normalW,vPositionW,viewDirectionW,view,vRefractionInfos,refractionMatrix,vRefractionMicrosurfaceInfos,alphaG
1954
+ #ifdef SS_REFRACTIONMAP_3D
1955
+ ,refractionSampler
1956
+ ,refractionSamplerSampler
1957
+ #ifndef LODBASEDMICROSFURACE
1958
+ ,refractionLowSampler
1959
+ ,refractionLowSamplerSampler
1960
+ ,refractionHighSampler
1961
+ ,refractionHighSamplerSampler
1962
+ #endif
1963
+ #else
1964
+ ,refractionSampler
1965
+ ,refractionSamplerSampler
1966
+ #ifndef LODBASEDMICROSFURACE
1967
+ ,refractionLowSampler
1968
+ ,refractionLowSamplerSampler
1969
+ ,refractionHighSampler
1970
+ ,refractionHighSamplerSampler
1971
+ #endif
1972
+ #endif
1973
+ #ifdef ANISOTROPIC
1974
+ ,anisotropicOut
1975
+ #endif
1976
+ #ifdef REALTIME_FILTERING
1977
+ ,vRefractionFilteringInfo
1978
+ #endif
1979
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
1980
+ ,refractionPosition
1981
+ ,refractionSize
1982
+ #endif
1983
+ );
1984
+ #ifdef SS_DISPERSION
1985
+ environmentRefraction[i]=envSample[i];}
1986
+ #else
1987
+ environmentRefraction=envSample;
1988
+ #endif
1989
+ environmentRefraction=vec4f(environmentRefraction.rgb*vRefractionInfos.x,environmentRefraction.a);
1990
+ #endif
1991
+ #ifdef SS_REFRACTION
1992
+ var refractionTransmittance: vec3f= vec3f(refractionIntensity);
1993
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
1994
+ var volumeAlbedo: vec3f=computeColorAtDistanceInMedia(vTintColor.rgb,vTintColor.w);refractionTransmittance*=cocaLambertVec3(volumeAlbedo,thickness);
1995
+ #elif defined(SS_LINKREFRACTIONTOTRANSPARENCY)
1996
+ var maxChannel: f32=max(max(surfaceAlbedo.r,surfaceAlbedo.g),surfaceAlbedo.b);var volumeAlbedo: vec3f=saturateVec3(maxChannel*surfaceAlbedo);environmentRefraction=vec4f(environmentRefraction.rgb*volumeAlbedo,environmentRefraction.a);
1997
+ #else
1998
+ var volumeAlbedo: vec3f=computeColorAtDistanceInMedia(vTintColor.rgb,vTintColor.w);refractionTransmittance*=cocaLambertVec3(volumeAlbedo,vThicknessParam.y);
1999
+ #endif
2000
+ #ifdef SS_ALBEDOFORREFRACTIONTINT
2001
+ environmentRefraction=vec4f(environmentRefraction.rgb*surfaceAlbedo.rgb,environmentRefraction.a);
2002
+ #endif
2003
+ outParams.surfaceAlbedo=surfaceAlbedo*(1.-refractionIntensity);
2004
+ #ifdef REFLECTION
2005
+ outParams.refractionFactorForIrradiance=(1.-refractionIntensity);
2006
+ #endif
2007
+ #ifdef UNUSED_MULTIPLEBOUNCES
2008
+ var bounceSpecularEnvironmentReflectance: vec3f=(2.0*specularEnvironmentReflectance)/(1.0+specularEnvironmentReflectance);outParams.specularEnvironmentReflectance=mix(bounceSpecularEnvironmentReflectance,specularEnvironmentReflectance,refractionIntensity);
2009
+ #endif
2010
+ refractionTransmittance*=1.0-outParams.specularEnvironmentReflectance;
2011
+ #if DEBUGMODE>0
2012
+ outParams.refractionTransmittance=refractionTransmittance;
2013
+ #endif
2014
+ outParams.finalRefraction=environmentRefraction.rgb*refractionTransmittance*vLightingIntensity.z;
2015
+ #if DEBUGMODE>0
2016
+ outParams.environmentRefraction=environmentRefraction;
2017
+ #endif
2018
+ #endif
2019
+ #if defined(REFLECTION) && defined(SS_TRANSLUCENCY)
2020
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX) || !defined(USESPHERICALFROMREFLECTIONMAP)
2021
+ var irradianceVector: vec3f= (reflectionMatrix* vec4f(normalW,0)).xyz;
2022
+ #ifdef REFLECTIONMAP_OPPOSITEZ
2023
+ irradianceVector.z*=-1.0;
2024
+ #endif
2025
+ #ifdef INVERTCUBICMAP
2026
+ irradianceVector.y*=-1.0;
2027
+ #endif
2028
+ #else
2029
+ var irradianceVector: vec3f=irradianceVector_;
2030
+ #endif
2031
+ #if defined(USESPHERICALFROMREFLECTIONMAP)
2032
+ #if defined(REALTIME_FILTERING)
2033
+ var refractionIrradiance: vec3f=irradiance(reflectionSampler,reflectionSamplerSampler,-irradianceVector,vReflectionFilteringInfo
2034
+ #ifdef IBL_CDF_FILTERING
2035
+ ,icdfxSampler
2036
+ ,icdfxSamplerSampler
2037
+ ,icdfySampler
2038
+ ,icdfySamplerSampler
2039
+ #endif
2040
+ );
2041
+ #else
2042
+ var refractionIrradiance: vec3f=computeEnvironmentIrradiance(-irradianceVector);
2043
+ #endif
2044
+ #elif defined(USEIRRADIANCEMAP)
2045
+ #ifdef REFLECTIONMAP_3D
2046
+ var irradianceCoords: vec3f=irradianceVector;
2047
+ #else
2048
+ var irradianceCoords: vec2f=irradianceVector.xy;
2049
+ #ifdef REFLECTIONMAP_PROJECTION
2050
+ irradianceCoords/=irradianceVector.z;
2051
+ #endif
2052
+ irradianceCoords.y=1.0-irradianceCoords.y;
2053
+ #endif
2054
+ var temp: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,-irradianceCoords);var refractionIrradiance=temp.rgb;
2055
+ #ifdef RGBDREFLECTION
2056
+ refractionIrradiance=fromRGBD(temp).rgb;
2057
+ #endif
2058
+ #ifdef GAMMAREFLECTION
2059
+ refractionIrradiance=toLinearSpaceVec3(refractionIrradiance);
2060
+ #endif
2061
+ #else
2062
+ var refractionIrradiance: vec3f= vec3f(0.);
2063
+ #endif
2064
+ refractionIrradiance*=transmittance;
2065
+ #ifdef SS_ALBEDOFORTRANSLUCENCYTINT
2066
+ refractionIrradiance*=surfaceAlbedo.rgb;
2067
+ #endif
2068
+ outParams.refractionIrradiance=refractionIrradiance;
2069
+ #endif
2070
+ return outParams;}
2071
+ #endif
2072
+ `;
2073
+ // Sideeffect
2074
+ ShaderStore.IncludesShadersStoreWGSL[name$e] = shader$e;
2075
+
2076
+ // Do not edit.
2077
+ const name$d = "pbrBlockNormalGeometric";
2078
+ const shader$d = `var viewDirectionW: vec3f=normalize(scene.vEyePosition.xyz-input.vPositionW);
2079
+ #ifdef NORMAL
2080
+ var normalW: vec3f=normalize(input.vNormalW);
2081
+ #else
2082
+ var normalW: vec3f=normalize(cross(dpdx(input.vPositionW),dpdy(input.vPositionW)))*scene.vEyePosition.w;
2083
+ #endif
2084
+ var geometricNormalW: vec3f=normalW;
2085
+ #if defined(TWOSIDEDLIGHTING) && defined(NORMAL)
2086
+ geometricNormalW=select(-geometricNormalW,geometricNormalW,fragmentInputs.frontFacing);
2087
+ #endif
2088
+ `;
2089
+ // Sideeffect
2090
+ ShaderStore.IncludesShadersStoreWGSL[name$d] = shader$d;
2091
+
2092
+ // Do not edit.
2093
+ const name$c = "pbrBlockNormalFinal";
2094
+ const shader$c = `#if defined(FORCENORMALFORWARD) && defined(NORMAL)
2095
+ var faceNormal: vec3f=normalize(cross(dpdx(fragmentInputs.vPositionW),dpdy(fragmentInputs.vPositionW)))*scene.vEyePosition.w;
2096
+ #if defined(TWOSIDEDLIGHTING)
2097
+ faceNormal=select(-faceNormal,faceNormal,fragmentInputs.frontFacing);
2098
+ #endif
2099
+ normalW*=sign(dot(normalW,faceNormal));
2100
+ #endif
2101
+ #if defined(TWOSIDEDLIGHTING) && defined(NORMAL)
2102
+ normalW=select(-normalW,normalW,fragmentInputs.frontFacing);
2103
+ #endif
2104
+ `;
2105
+ // Sideeffect
2106
+ ShaderStore.IncludesShadersStoreWGSL[name$c] = shader$c;
2107
+
2108
+ // Do not edit.
2109
+ const name$b = "pbrBlockLightmapInit";
2110
+ const shader$b = `#ifdef LIGHTMAP
2111
+ var lightmapColor: vec4f=textureSample(lightmapSampler,lightmapSamplerSampler,fragmentInputs.vLightmapUV+uvOffset);
2112
+ #ifdef RGBDLIGHTMAP
2113
+ lightmapColor=vec4f(fromRGBD(lightmapColor),lightmapColor.a);
2114
+ #endif
2115
+ #ifdef GAMMALIGHTMAP
2116
+ lightmapColor=vec4f(toLinearSpaceVec3(lightmapColor.rgb),lightmapColor.a);
2117
+ #endif
2118
+ lightmapColor=vec4f(lightmapColor.rgb*uniforms.vLightmapInfos.y,lightmapColor.a);
2119
+ #endif
2120
+ `;
2121
+ // Sideeffect
2122
+ ShaderStore.IncludesShadersStoreWGSL[name$b] = shader$b;
2123
+
2124
+ // Do not edit.
2125
+ const name$a = "pbrBlockGeometryInfo";
2126
+ const shader$a = `var NdotVUnclamped: f32=dot(normalW,viewDirectionW);var NdotV: f32=absEps(NdotVUnclamped);var alphaG: f32=convertRoughnessToAverageSlope(roughness);var AARoughnessFactors: vec2f=getAARoughnessFactors(normalW.xyz);
2127
+ #ifdef SPECULARAA
2128
+ alphaG+=AARoughnessFactors.y;
2129
+ #endif
2130
+ #if defined(ENVIRONMENTBRDF)
2131
+ var environmentBrdf: vec3f=getBRDFLookup(NdotV,roughness);
2132
+ #endif
2133
+ #if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
2134
+ #ifdef RADIANCEOCCLUSION
2135
+ #ifdef AMBIENTINGRAYSCALE
2136
+ var ambientMonochrome: f32=aoOut.ambientOcclusionColor.r;
2137
+ #else
2138
+ var ambientMonochrome: f32=getLuminance(aoOut.ambientOcclusionColor);
2139
+ #endif
2140
+ var seo: f32=environmentRadianceOcclusion(ambientMonochrome,NdotVUnclamped);
2141
+ #endif
2142
+ #ifdef HORIZONOCCLUSION
2143
+ #ifdef BUMP
2144
+ #ifdef REFLECTIONMAP_3D
2145
+ var eho: f32=environmentHorizonOcclusion(-viewDirectionW,normalW,geometricNormalW);
2146
+ #endif
2147
+ #endif
2148
+ #endif
2149
+ #endif
2150
+ `;
2151
+ // Sideeffect
2152
+ ShaderStore.IncludesShadersStoreWGSL[name$a] = shader$a;
2153
+
2154
+ // Do not edit.
2155
+ const name$9 = "pbrBlockReflectance0";
2156
+ const shader$9 = `var reflectance: f32=max(max(reflectivityOut.surfaceReflectivityColor.r,reflectivityOut.surfaceReflectivityColor.g),reflectivityOut.surfaceReflectivityColor.b);var specularEnvironmentR0: vec3f=reflectivityOut.surfaceReflectivityColor.rgb;
2157
+ #ifdef METALLICWORKFLOW
2158
+ var specularEnvironmentR90: vec3f= vec3f(metallicReflectanceFactors.a);
2159
+ #else
2160
+ var specularEnvironmentR90: vec3f= vec3f(1.0,1.0,1.0);
2161
+ #endif
2162
+ #ifdef ALPHAFRESNEL
2163
+ var reflectance90: f32=fresnelGrazingReflectance(reflectance);specularEnvironmentR90=specularEnvironmentR90*reflectance90;
2164
+ #endif
2165
+ `;
2166
+ // Sideeffect
2167
+ ShaderStore.IncludesShadersStoreWGSL[name$9] = shader$9;
2168
+
2169
+ // Do not edit.
2170
+ const name$8 = "pbrBlockReflectance";
2171
+ const shader$8 = `#if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
2172
+ var specularEnvironmentReflectance: vec3f=getReflectanceFromBRDFWithEnvLookup(clearcoatOut.specularEnvironmentR0,specularEnvironmentR90,environmentBrdf);
2173
+ #ifdef RADIANCEOCCLUSION
2174
+ specularEnvironmentReflectance*=seo;
2175
+ #endif
2176
+ #ifdef HORIZONOCCLUSION
2177
+ #ifdef BUMP
2178
+ #ifdef REFLECTIONMAP_3D
2179
+ specularEnvironmentReflectance*=eho;
2180
+ #endif
2181
+ #endif
2182
+ #endif
2183
+ #else
2184
+ var specularEnvironmentReflectance: vec3f=getReflectanceFromAnalyticalBRDFLookup_Jones(NdotV,clearcoatOut.specularEnvironmentR0,specularEnvironmentR90,sqrt(microSurface));
2185
+ #endif
2186
+ #ifdef CLEARCOAT
2187
+ specularEnvironmentReflectance*=clearcoatOut.conservationFactor;
2188
+ #if defined(CLEARCOAT_TINT)
2189
+ specularEnvironmentReflectance*=clearcoatOut.absorption;
2190
+ #endif
2191
+ #endif
2192
+ `;
2193
+ // Sideeffect
2194
+ ShaderStore.IncludesShadersStoreWGSL[name$8] = shader$8;
2195
+
2196
+ // Do not edit.
2197
+ const name$7 = "pbrBlockDirectLighting";
2198
+ const shader$7 = `var diffuseBase: vec3f=vec3f(0.,0.,0.);
2199
+ #ifdef SPECULARTERM
2200
+ var specularBase: vec3f=vec3f(0.,0.,0.);
2201
+ #endif
2202
+ #ifdef CLEARCOAT
2203
+ var clearCoatBase: vec3f=vec3f(0.,0.,0.);
2204
+ #endif
2205
+ #ifdef SHEEN
2206
+ var sheenBase: vec3f=vec3f(0.,0.,0.);
2207
+ #endif
2208
+ var preInfo: preLightingInfo;var info: lightingInfo;var shadow: f32=1.;
2209
+ var aggShadow: f32=0.;var numLights: f32=0.;
2210
+ #if defined(CLEARCOAT) && defined(CLEARCOAT_TINT)
2211
+ var absorption: vec3f=vec3f(0.);
2212
+ #endif
2213
+ `;
2214
+ // Sideeffect
2215
+ ShaderStore.IncludesShadersStoreWGSL[name$7] = shader$7;
2216
+
2217
+ // Do not edit.
2218
+ const name$6 = "pbrBlockFinalLitComponents";
2219
+ const shader$6 = `aggShadow=aggShadow/numLights;
2220
+ #if defined(ENVIRONMENTBRDF)
2221
+ #ifdef MS_BRDF_ENERGY_CONSERVATION
2222
+ var energyConservationFactor: vec3f=getEnergyConservationFactor(clearcoatOut.specularEnvironmentR0,environmentBrdf);
2223
+ #endif
2224
+ #endif
2225
+ #ifndef METALLICWORKFLOW
2226
+ #ifdef SPECULAR_GLOSSINESS_ENERGY_CONSERVATION
2227
+ surfaceAlbedo=(1.-reflectance)*surfaceAlbedo.rgb;
2228
+ #endif
2229
+ #endif
2230
+ #if defined(SHEEN) && defined(SHEEN_ALBEDOSCALING) && defined(ENVIRONMENTBRDF)
2231
+ surfaceAlbedo=sheenOut.sheenAlbedoScaling*surfaceAlbedo.rgb;
2232
+ #endif
2233
+ #ifdef REFLECTION
2234
+ var finalIrradiance: vec3f=reflectionOut.environmentIrradiance;
2235
+ #if defined(CLEARCOAT)
2236
+ finalIrradiance*=clearcoatOut.conservationFactor;
2237
+ #if defined(CLEARCOAT_TINT)
2238
+ finalIrradiance*=clearcoatOut.absorption;
2239
+ #endif
2240
+ #endif
2241
+ #if defined(SS_REFRACTION)
2242
+ finalIrradiance*=subSurfaceOut.refractionFactorForIrradiance;
2243
+ #endif
2244
+ #if defined(SS_TRANSLUCENCY)
2245
+ finalIrradiance*=(1.0-subSurfaceOut.translucencyIntensity);finalIrradiance+=subSurfaceOut.refractionIrradiance;
2246
+ #endif
2247
+ finalIrradiance*=surfaceAlbedo.rgb;finalIrradiance*=uniforms.vLightingIntensity.z;finalIrradiance*=aoOut.ambientOcclusionColor;
2248
+ #endif
2249
+ #ifdef SPECULARTERM
2250
+ var finalSpecular: vec3f=specularBase;finalSpecular=max(finalSpecular,vec3f(0.0));var finalSpecularScaled: vec3f=finalSpecular*uniforms.vLightingIntensity.x*uniforms.vLightingIntensity.w;
2251
+ #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
2252
+ finalSpecularScaled*=energyConservationFactor;
2253
+ #endif
2254
+ #if defined(SHEEN) && defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
2255
+ finalSpecularScaled*=sheenOut.sheenAlbedoScaling;
2256
+ #endif
2257
+ #endif
2258
+ #ifdef REFLECTION
2259
+ var finalRadiance: vec3f=reflectionOut.environmentRadiance.rgb;finalRadiance*=subSurfaceOut.specularEnvironmentReflectance;var finalRadianceScaled: vec3f=finalRadiance*uniforms.vLightingIntensity.z;
2260
+ #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
2261
+ finalRadianceScaled*=energyConservationFactor;
2262
+ #endif
2263
+ #if defined(SHEEN) && defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
2264
+ finalRadianceScaled*=sheenOut.sheenAlbedoScaling;
2265
+ #endif
2266
+ #endif
2267
+ #ifdef SHEEN
2268
+ var finalSheen: vec3f=sheenBase*sheenOut.sheenColor;finalSheen=max(finalSheen,vec3f(0.0));var finalSheenScaled: vec3f=finalSheen*uniforms.vLightingIntensity.x*uniforms.vLightingIntensity.w;
2269
+ #if defined(CLEARCOAT) && defined(REFLECTION) && defined(ENVIRONMENTBRDF)
2270
+ sheenOut.finalSheenRadianceScaled*=clearcoatOut.conservationFactor;
2271
+ #if defined(CLEARCOAT_TINT)
2272
+ sheenOut.finalSheenRadianceScaled*=clearcoatOut.absorption;
2273
+ #endif
2274
+ #endif
2275
+ #endif
2276
+ #ifdef CLEARCOAT
2277
+ var finalClearCoat: vec3f=clearCoatBase;finalClearCoat=max(finalClearCoat,vec3f(0.0));var finalClearCoatScaled: vec3f=finalClearCoat*uniforms.vLightingIntensity.x*uniforms.vLightingIntensity.w;
2278
+ #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
2279
+ finalClearCoatScaled*=clearcoatOut.energyConservationFactorClearCoat;
2280
+ #endif
2281
+ #ifdef SS_REFRACTION
2282
+ subSurfaceOut.finalRefraction*=clearcoatOut.conservationFactor;
2283
+ #ifdef CLEARCOAT_TINT
2284
+ subSurfaceOut.finalRefraction*=clearcoatOut.absorption;
2285
+ #endif
2286
+ #endif
2287
+ #endif
2288
+ #ifdef ALPHABLEND
2289
+ var luminanceOverAlpha: f32=0.0;
2290
+ #if defined(REFLECTION) && defined(RADIANCEOVERALPHA)
2291
+ luminanceOverAlpha+=getLuminance(finalRadianceScaled);
2292
+ #if defined(CLEARCOAT)
2293
+ luminanceOverAlpha+=getLuminance(clearcoatOut.finalClearCoatRadianceScaled);
2294
+ #endif
2295
+ #endif
2296
+ #if defined(SPECULARTERM) && defined(SPECULAROVERALPHA)
2297
+ luminanceOverAlpha+=getLuminance(finalSpecularScaled);
2298
+ #endif
2299
+ #if defined(CLEARCOAT) && defined(CLEARCOATOVERALPHA)
2300
+ luminanceOverAlpha+=getLuminance(finalClearCoatScaled);
2301
+ #endif
2302
+ #if defined(RADIANCEOVERALPHA) || defined(SPECULAROVERALPHA) || defined(CLEARCOATOVERALPHA)
2303
+ alpha=saturate(alpha+luminanceOverAlpha*luminanceOverAlpha);
2304
+ #endif
2305
+ #endif
2306
+ `;
2307
+ // Sideeffect
2308
+ ShaderStore.IncludesShadersStoreWGSL[name$6] = shader$6;
2309
+
2310
+ // Do not edit.
2311
+ const name$5 = "pbrBlockFinalUnlitComponents";
2312
+ const shader$5 = `var finalDiffuse: vec3f=diffuseBase;finalDiffuse*=surfaceAlbedo.rgb;finalDiffuse=max(finalDiffuse,vec3f(0.0));finalDiffuse*=uniforms.vLightingIntensity.x;var finalAmbient: vec3f=uniforms.vAmbientColor;finalAmbient*=surfaceAlbedo.rgb;var finalEmissive: vec3f=uniforms.vEmissiveColor;
2313
+ #ifdef EMISSIVE
2314
+ var emissiveColorTex: vec3f=textureSample(emissiveSampler,emissiveSamplerSampler,fragmentInputs.vEmissiveUV+uvOffset).rgb;
2315
+ #ifdef GAMMAEMISSIVE
2316
+ finalEmissive*=toLinearSpaceVec3(emissiveColorTex.rgb);
2317
+ #else
2318
+ finalEmissive*=emissiveColorTex.rgb;
2319
+ #endif
2320
+ finalEmissive*= uniforms.vEmissiveInfos.y;
2321
+ #endif
2322
+ finalEmissive*=uniforms.vLightingIntensity.y;
2323
+ #ifdef AMBIENT
2324
+ var ambientOcclusionForDirectDiffuse: vec3f=mix( vec3f(1.),aoOut.ambientOcclusionColor,uniforms.vAmbientInfos.w);
2325
+ #else
2326
+ var ambientOcclusionForDirectDiffuse: vec3f=aoOut.ambientOcclusionColor;
2327
+ #endif
2328
+ finalAmbient*=aoOut.ambientOcclusionColor;finalDiffuse*=ambientOcclusionForDirectDiffuse;
2329
+ `;
2330
+ // Sideeffect
2331
+ ShaderStore.IncludesShadersStoreWGSL[name$5] = shader$5;
2332
+
2333
+ // Do not edit.
2334
+ const name$4 = "pbrBlockFinalColorComposition";
2335
+ const shader$4 = `var finalColor: vec4f= vec4f(
2336
+ #ifndef UNLIT
2337
+ #ifdef REFLECTION
2338
+ finalIrradiance +
2339
+ #endif
2340
+ #ifdef SPECULARTERM
2341
+ finalSpecularScaled +
2342
+ #endif
2343
+ #ifdef SHEEN
2344
+ finalSheenScaled +
2345
+ #endif
2346
+ #ifdef CLEARCOAT
2347
+ finalClearCoatScaled +
2348
+ #endif
2349
+ #ifdef REFLECTION
2350
+ finalRadianceScaled +
2351
+ #if defined(SHEEN) && defined(ENVIRONMENTBRDF)
2352
+ sheenOut.finalSheenRadianceScaled +
2353
+ #endif
2354
+ #ifdef CLEARCOAT
2355
+ clearcoatOut.finalClearCoatRadianceScaled +
2356
+ #endif
2357
+ #endif
2358
+ #ifdef SS_REFRACTION
2359
+ subSurfaceOut.finalRefraction +
2360
+ #endif
2361
+ #endif
2362
+ finalAmbient +
2363
+ finalDiffuse,
2364
+ alpha);
2365
+ #ifdef LIGHTMAP
2366
+ #ifndef LIGHTMAPEXCLUDED
2367
+ #ifdef USELIGHTMAPASSHADOWMAP
2368
+ finalColor=vec4f(finalColor.rgb*lightmapColor.rgb,finalColor.a);
2369
+ #else
2370
+ finalColor=vec4f(finalColor.rgb+lightmapColor.rgb,finalColor.a);
2371
+ #endif
2372
+ #endif
2373
+ #endif
2374
+ finalColor=vec4f(finalColor.rgb+finalEmissive,finalColor.a);
2375
+ #define CUSTOM_FRAGMENT_BEFORE_FOG
2376
+ finalColor=max(finalColor,vec4f(0.0));
2377
+ `;
2378
+ // Sideeffect
2379
+ ShaderStore.IncludesShadersStoreWGSL[name$4] = shader$4;
2380
+
2381
+ // Do not edit.
2382
+ const name$3 = "pbrBlockImageProcessing";
2383
+ const shader$3 = `#if defined(IMAGEPROCESSINGPOSTPROCESS) || defined(SS_SCATTERING)
2384
+ #if !defined(SKIPFINALCOLORCLAMP)
2385
+ finalColor=vec4f(clamp(finalColor.rgb,vec3f(0.),vec3f(30.0)),finalColor.a);
2386
+ #endif
2387
+ #else
2388
+ finalColor=applyImageProcessing(finalColor);
2389
+ #endif
2390
+ finalColor=vec4f(finalColor.rgb,finalColor.a*mesh.visibility);
2391
+ #ifdef PREMULTIPLYALPHA
2392
+ finalColor=vec4f(finalColor.rgb*finalColor.a,finalColor.a);;
2393
+ #endif
2394
+ `;
2395
+ // Sideeffect
2396
+ ShaderStore.IncludesShadersStoreWGSL[name$3] = shader$3;
2397
+
2398
+ // Do not edit.
2399
+ const name$2 = "pbrBlockPrePass";
2400
+ const shader$2 = `var writeGeometryInfo: f32=select(0.0,1.0,finalColor.a>ALPHATESTVALUE);var fragData: array<vec4<f32>,SCENE_MRT_COUNT>;
2401
+ #ifdef PREPASS_POSITION
2402
+ fragData[PREPASS_POSITION_INDEX]= vec4f(fragmentInputs.vPositionW,writeGeometryInfo);
2403
+ #endif
2404
+ #ifdef PREPASS_LOCAL_POSITION
2405
+ fragData[PREPASS_LOCAL_POSITION_INDEX]=vec4f(fragmentInputs.vPosition,writeGeometryInfo);
2406
+ #endif
2407
+ #ifdef PREPASS_VELOCITY
2408
+ var a: vec2f=(fragmentInputs.vCurrentPosition.xy/fragmentInputs.vCurrentPosition.w)*0.5+0.5;var b: vec2f=(fragmentInputs.vPreviousPosition.xy/fragmentInputs.vPreviousPosition.w)*0.5+0.5;var velocity: vec2f=abs(a-b);velocity= vec2f(pow(velocity.x,1.0/3.0),pow(velocity.y,1.0/3.0))*sign(a-b)*0.5+0.5;fragData[PREPASS_VELOCITY_INDEX]= vec4f(velocity,0.0,writeGeometryInfo);
2409
+ #elif defined(PREPASS_VELOCITY_LINEAR)
2410
+ var velocity : vec2f=vec2f(0.5)*((fragmentInputs.vPreviousPosition.xy/fragmentInputs.vPreviousPosition.w) -
2411
+ (fragmentInputs.vCurrentPosition.xy/fragmentInputs.vCurrentPosition.w));fragData[PREPASS_VELOCITY_LINEAR_INDEX]=vec4f(velocity,0.0,writeGeometryInfo);
2412
+ #endif
2413
+ #ifdef PREPASS_ALBEDO
2414
+ fragData[PREPASS_ALBEDO_INDEX]=vec4f(surfaceAlbedo,writeGeometryInfo);
2415
+ #endif
2416
+ #ifdef PREPASS_ALBEDO_SQRT
2417
+ var sqAlbedo : vec3f=sqrt(surfaceAlbedo);
2418
+ #endif
2419
+ #ifdef PREPASS_IRRADIANCE
2420
+ var irradiance : vec3f=finalDiffuse;
2421
+ #ifndef UNLIT
2422
+ #ifdef REFLECTION
2423
+ irradiance+=finalIrradiance;
2424
+ #endif
2425
+ #endif
2426
+ #ifdef SS_SCATTERING
2427
+ #ifdef PREPASS_COLOR
2428
+ fragData[PREPASS_COLOR_INDEX]=vec4f(finalColor.rgb-irradiance,finalColor.a);
2429
+ #endif
2430
+ irradiance/=sqAlbedo;fragData[PREPASS_IRRADIANCE_INDEX]=vec4f(clamp(irradiance,vec3f(0.),vec3f(1.)),writeGeometryInfo*uniforms.scatteringDiffusionProfile/255.);
2431
+ #else
2432
+ #ifdef PREPASS_COLOR
2433
+ fragData[PREPASS_COLOR_INDEX]=finalColor;
2434
+ #endif
2435
+ fragData[PREPASS_IRRADIANCE_INDEX]=vec4f(clamp(irradiance,vec3f(0.),vec3f(1.)),writeGeometryInfo);
2436
+ #endif
2437
+ #elif defined(PREPASS_COLOR)
2438
+ fragData[PREPASS_COLOR_INDEX]=vec4f(finalColor.rgb,finalColor.a);
2439
+ #endif
2440
+ #ifdef PREPASS_DEPTH
2441
+ fragData[PREPASS_DEPTH_INDEX]=vec4f(fragmentInputs.vViewPos.z,0.0,0.0,writeGeometryInfo);
2442
+ #endif
2443
+ #ifdef PREPASS_SCREENSPACE_DEPTH
2444
+ fragData[PREPASS_SCREENSPACE_DEPTH_INDEX]=vec4f(fragmentInputs.position.z,0.0,0.0,writeGeometryInfo);
2445
+ #endif
2446
+ #ifdef PREPASS_NORMAL
2447
+ #ifdef PREPASS_NORMAL_WORLDSPACE
2448
+ fragData[PREPASS_NORMAL_INDEX]=vec4f(normalW,writeGeometryInfo);
2449
+ #else
2450
+ fragData[PREPASS_NORMAL_INDEX]=vec4f(normalize((scene.view*vec4f(normalW,0.0)).rgb),writeGeometryInfo);
2451
+ #endif
2452
+ #endif
2453
+ #ifdef PREPASS_WORLD_NORMAL
2454
+ fragData[PREPASS_WORLD_NORMAL_INDEX]=vec4f(normalW*0.5+0.5,writeGeometryInfo);
2455
+ #endif
2456
+ #ifdef PREPASS_ALBEDO_SQRT
2457
+ fragData[PREPASS_ALBEDO_SQRT_INDEX]=vec4f(sqAlbedo,writeGeometryInfo);
2458
+ #endif
2459
+ #ifdef PREPASS_REFLECTIVITY
2460
+ #ifndef UNLIT
2461
+ fragData[PREPASS_REFLECTIVITY_INDEX]=vec4f(specularEnvironmentR0,microSurface)*writeGeometryInfo;
2462
+ #else
2463
+ fragData[PREPASS_REFLECTIVITY_INDEX]=vec4f(0.0,0.0,0.0,1.0)*writeGeometryInfo;
2464
+ #endif
2465
+ #endif
2466
+ #if SCENE_MRT_COUNT>0
2467
+ fragmentOutputs.fragData0=fragData[0];
2468
+ #endif
2469
+ #if SCENE_MRT_COUNT>1
2470
+ fragmentOutputs.fragData1=fragData[1];
2471
+ #endif
2472
+ #if SCENE_MRT_COUNT>2
2473
+ fragmentOutputs.fragData2=fragData[2];
2474
+ #endif
2475
+ #if SCENE_MRT_COUNT>3
2476
+ fragmentOutputs.fragData3=fragData[3];
2477
+ #endif
2478
+ #if SCENE_MRT_COUNT>4
2479
+ fragmentOutputs.fragData4=fragData[4];
2480
+ #endif
2481
+ #if SCENE_MRT_COUNT>5
2482
+ fragmentOutputs.fragData5=fragData[5];
2483
+ #endif
2484
+ #if SCENE_MRT_COUNT>6
2485
+ fragmentOutputs.fragData6=fragData[6];
2486
+ #endif
2487
+ #if SCENE_MRT_COUNT>7
2488
+ fragmentOutputs.fragData7=fragData[7];
2489
+ #endif
2490
+ `;
2491
+ // Sideeffect
2492
+ ShaderStore.IncludesShadersStoreWGSL[name$2] = shader$2;
2493
+
2494
+ // Do not edit.
2495
+ const name$1 = "pbrDebug";
2496
+ const shader$1 = `#if DEBUGMODE>0
2497
+ if (input.vClipSpacePosition.x/input.vClipSpacePosition.w>=uniforms.vDebugMode.x) {var color: vec3f;
2498
+ #if DEBUGMODE==1
2499
+ color=fragmentInputs.vPositionW.rgb;
2500
+ #define DEBUGMODE_NORMALIZE
2501
+ #elif DEBUGMODE==2 && defined(NORMAL)
2502
+ color=fragmentInputs.vNormalW.rgb;
2503
+ #define DEBUGMODE_NORMALIZE
2504
+ #elif DEBUGMODE==3 && defined(BUMP) || DEBUGMODE==3 && defined(PARALLAX) || DEBUGMODE==3 && defined(ANISOTROPIC)
2505
+ color=TBN[0];
2506
+ #define DEBUGMODE_NORMALIZE
2507
+ #elif DEBUGMODE==4 && defined(BUMP) || DEBUGMODE==4 && defined(PARALLAX) || DEBUGMODE==4 && defined(ANISOTROPIC)
2508
+ color=TBN[1];
2509
+ #define DEBUGMODE_NORMALIZE
2510
+ #elif DEBUGMODE==5
2511
+ color=normalW;
2512
+ #define DEBUGMODE_NORMALIZE
2513
+ #elif DEBUGMODE==6 && defined(MAINUV1)
2514
+ color= vec3f(input.vMainUV1,0.0);
2515
+ #elif DEBUGMODE==7 && defined(MAINUV2)
2516
+ color= vec3f(input.vMainUV2,0.0);
2517
+ #elif DEBUGMODE==8 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
2518
+ color=clearcoatOut.TBNClearCoat[0];
2519
+ #define DEBUGMODE_NORMALIZE
2520
+ #elif DEBUGMODE==9 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
2521
+ color=clearcoatOut.TBNClearCoat[1];
2522
+ #define DEBUGMODE_NORMALIZE
2523
+ #elif DEBUGMODE==10 && defined(CLEARCOAT)
2524
+ color=clearcoatOut.clearCoatNormalW;
2525
+ #define DEBUGMODE_NORMALIZE
2526
+ #elif DEBUGMODE==11 && defined(ANISOTROPIC)
2527
+ color=anisotropicOut.anisotropicNormal;
2528
+ #define DEBUGMODE_NORMALIZE
2529
+ #elif DEBUGMODE==12 && defined(ANISOTROPIC)
2530
+ color=anisotropicOut.anisotropicTangent;
2531
+ #define DEBUGMODE_NORMALIZE
2532
+ #elif DEBUGMODE==13 && defined(ANISOTROPIC)
2533
+ color=anisotropicOut.anisotropicBitangent;
2534
+ #define DEBUGMODE_NORMALIZE
2535
+ #elif DEBUGMODE==20 && defined(ALBEDO)
2536
+ color=albedoTexture.rgb;
2537
+ #ifndef GAMMAALBEDO
2538
+ #define DEBUGMODE_GAMMA
2539
+ #endif
2540
+ #elif DEBUGMODE==21 && defined(AMBIENT)
2541
+ color=aoOut.ambientOcclusionColorMap.rgb;
2542
+ #elif DEBUGMODE==22 && defined(OPACITY)
2543
+ color=opacityMap.rgb;
2544
+ #elif DEBUGMODE==23 && defined(EMISSIVE)
2545
+ color=emissiveColorTex.rgb;
2546
+ #ifndef GAMMAEMISSIVE
2547
+ #define DEBUGMODE_GAMMA
2548
+ #endif
2549
+ #elif DEBUGMODE==24 && defined(LIGHTMAP)
2550
+ color=lightmapColor;
2551
+ #ifndef GAMMALIGHTMAP
2552
+ #define DEBUGMODE_GAMMA
2553
+ #endif
2554
+ #elif DEBUGMODE==25 && defined(REFLECTIVITY) && defined(METALLICWORKFLOW)
2555
+ color=reflectivityOut.surfaceMetallicColorMap.rgb;
2556
+ #elif DEBUGMODE==26 && defined(REFLECTIVITY) && !defined(METALLICWORKFLOW)
2557
+ color=reflectivityOut.surfaceReflectivityColorMap.rgb;
2558
+ #define DEBUGMODE_GAMMA
2559
+ #elif DEBUGMODE==27 && defined(CLEARCOAT) && defined(CLEARCOAT_TEXTURE)
2560
+ color= vec3f(clearcoatOut.clearCoatMapData.rg,0.0);
2561
+ #elif DEBUGMODE==28 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)
2562
+ color=clearcoatOut.clearCoatTintMapData.rgb;
2563
+ #elif DEBUGMODE==29 && defined(SHEEN) && defined(SHEEN_TEXTURE)
2564
+ color=sheenOut.sheenMapData.rgb;
2565
+ #elif DEBUGMODE==30 && defined(ANISOTROPIC) && defined(ANISOTROPIC_TEXTURE)
2566
+ color=anisotropicOut.anisotropyMapData.rgb;
2567
+ #elif DEBUGMODE==31 && defined(SUBSURFACE) && defined(SS_THICKNESSANDMASK_TEXTURE)
2568
+ color=subSurfaceOut.thicknessMap.rgb;
2569
+ #elif DEBUGMODE==32 && defined(BUMP)
2570
+ color=textureSample(bumpSampler,bumpSamplerSampler,fragmentInputs.vBumpUV).rgb;
2571
+ #elif DEBUGMODE==40 && defined(SS_REFRACTION)
2572
+ color=subSurfaceOut.environmentRefraction.rgb;
2573
+ #define DEBUGMODE_GAMMA
2574
+ #elif DEBUGMODE==41 && defined(REFLECTION)
2575
+ color=reflectionOut.environmentRadiance.rgb;
2576
+ #ifndef GAMMAREFLECTION
2577
+ #define DEBUGMODE_GAMMA
2578
+ #endif
2579
+ #elif DEBUGMODE==42 && defined(CLEARCOAT) && defined(REFLECTION)
2580
+ color=clearcoatOut.environmentClearCoatRadiance.rgb;
2581
+ #define DEBUGMODE_GAMMA
2582
+ #elif DEBUGMODE==50
2583
+ color=diffuseBase.rgb;
2584
+ #define DEBUGMODE_GAMMA
2585
+ #elif DEBUGMODE==51 && defined(SPECULARTERM)
2586
+ color=specularBase.rgb;
2587
+ #define DEBUGMODE_GAMMA
2588
+ #elif DEBUGMODE==52 && defined(CLEARCOAT)
2589
+ color=clearCoatBase.rgb;
2590
+ #define DEBUGMODE_GAMMA
2591
+ #elif DEBUGMODE==53 && defined(SHEEN)
2592
+ color=sheenBase.rgb;
2593
+ #define DEBUGMODE_GAMMA
2594
+ #elif DEBUGMODE==54 && defined(REFLECTION)
2595
+ color=reflectionOut.environmentIrradiance.rgb;
2596
+ #ifndef GAMMAREFLECTION
2597
+ #define DEBUGMODE_GAMMA
2598
+ #endif
2599
+ #elif DEBUGMODE==60
2600
+ color=surfaceAlbedo.rgb;
2601
+ #define DEBUGMODE_GAMMA
2602
+ #elif DEBUGMODE==61
2603
+ color=clearcoatOut.specularEnvironmentR0;
2604
+ #define DEBUGMODE_GAMMA
2605
+ #elif DEBUGMODE==62 && defined(METALLICWORKFLOW)
2606
+ color= vec3f(reflectivityOut.metallicRoughness.r);
2607
+ #elif DEBUGMODE==71 && defined(METALLICWORKFLOW)
2608
+ color=reflectivityOut.metallicF0;
2609
+ #elif DEBUGMODE==63
2610
+ color= vec3f(roughness);
2611
+ #elif DEBUGMODE==64
2612
+ color= vec3f(alphaG);
2613
+ #elif DEBUGMODE==65
2614
+ color= vec3f(NdotV);
2615
+ #elif DEBUGMODE==66 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT)
2616
+ color=clearcoatOut.clearCoatColor;
2617
+ #define DEBUGMODE_GAMMA
2618
+ #elif DEBUGMODE==67 && defined(CLEARCOAT)
2619
+ color= vec3f(clearcoatOut.clearCoatRoughness);
2620
+ #elif DEBUGMODE==68 && defined(CLEARCOAT)
2621
+ color= vec3f(clearcoatOut.clearCoatNdotV);
2622
+ #elif DEBUGMODE==69 && defined(SUBSURFACE) && defined(SS_TRANSLUCENCY)
2623
+ color=subSurfaceOut.transmittance;
2624
+ #elif DEBUGMODE==70 && defined(SUBSURFACE) && defined(SS_REFRACTION)
2625
+ color=subSurfaceOut.refractionTransmittance;
2626
+ #elif DEBUGMODE==72
2627
+ color= vec3f(microSurface);
2628
+ #elif DEBUGMODE==73
2629
+ color=uniforms.vAlbedoColor.rgb;
2630
+ #define DEBUGMODE_GAMMA
2631
+ #elif DEBUGMODE==74 && !defined(METALLICWORKFLOW)
2632
+ color=uniforms.vReflectivityColor.rgb;
2633
+ #define DEBUGMODE_GAMMA
2634
+ #elif DEBUGMODE==75
2635
+ color=uniforms.vEmissiveColor;
2636
+ #define DEBUGMODE_GAMMA
2637
+ #elif DEBUGMODE==80 && defined(RADIANCEOCCLUSION)
2638
+ color= vec3f(seo);
2639
+ #elif DEBUGMODE==81 && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
2640
+ color= vec3f(eho);
2641
+ #elif DEBUGMODE==82 && defined(MS_BRDF_ENERGY_CONSERVATION)
2642
+ color= vec3f(energyConservationFactor);
2643
+ #elif DEBUGMODE==83 && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
2644
+ color=specularEnvironmentReflectance;
2645
+ #define DEBUGMODE_GAMMA
2646
+ #elif DEBUGMODE==84 && defined(CLEARCOAT) && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
2647
+ color=clearcoatOut.clearCoatEnvironmentReflectance;
2648
+ #define DEBUGMODE_GAMMA
2649
+ #elif DEBUGMODE==85 && defined(SHEEN) && defined(REFLECTION)
2650
+ color=sheenOut.sheenEnvironmentReflectance;
2651
+ #define DEBUGMODE_GAMMA
2652
+ #elif DEBUGMODE==86 && defined(ALPHABLEND)
2653
+ color= vec3f(luminanceOverAlpha);
2654
+ #elif DEBUGMODE==87
2655
+ color= vec3f(alpha);
2656
+ #elif DEBUGMODE==88 && defined(ALBEDO)
2657
+ color= vec3f(albedoTexture.a);
2658
+ #elif DEBUGMODE==89
2659
+ color=aoOut.ambientOcclusionColor;
2660
+ #else
2661
+ var stripeWidth: f32=30.;var stripePos: f32=abs(floor(input.position.x/stripeWidth));var whichColor: f32=((stripePos)%(2.));var color1: vec3f= vec3f(.6,.2,.2);var color2: vec3f= vec3f(.3,.1,.1);color=mix(color1,color2,whichColor);
2662
+ #endif
2663
+ color*=uniforms.vDebugMode.y;
2664
+ #ifdef DEBUGMODE_NORMALIZE
2665
+ color=normalize(color)*0.5+0.5;
2666
+ #endif
2667
+ #ifdef DEBUGMODE_GAMMA
2668
+ color=toGammaSpaceVec3(color);
2669
+ #endif
2670
+ fragmentOutputs.color=vec4f(color,1.0);
2671
+ #ifdef PREPASS
2672
+ fragmentOutputs.fragData0=toLinearSpaceVec3(color);
2673
+ fragmentOutputs.fragData1=vec4f(0.,0.,0.,0.);
2674
+ #endif
2675
+ #ifdef DEBUGMODE_FORCERETURN
2676
+ return fragmentOutputs;
2677
+ #endif
2678
+ }
2679
+ #endif
2680
+ `;
2681
+ // Sideeffect
2682
+ ShaderStore.IncludesShadersStoreWGSL[name$1] = shader$1;
2683
+
2684
+ // Do not edit.
2685
+ const name = "pbrPixelShader";
2686
+ const shader = `#define CUSTOM_FRAGMENT_BEGIN
2687
+ #include<prePassDeclaration>[SCENE_MRT_COUNT]
2688
+ #include<oitDeclaration>
2689
+ #ifndef FROMLINEARSPACE
2690
+ #define FROMLINEARSPACE
2691
+ #endif
2692
+ #include<pbrUboDeclaration>
2693
+ #include<pbrFragmentExtraDeclaration>
2694
+ #include<lightUboDeclaration>[0..maxSimultaneousLights]
2695
+ #include<pbrFragmentSamplersDeclaration>
2696
+ #include<imageProcessingDeclaration>
2697
+ #include<clipPlaneFragmentDeclaration>
2698
+ #include<logDepthDeclaration>
2699
+ #include<fogFragmentDeclaration>
2700
+ #include<helperFunctions>
2701
+ #include<subSurfaceScatteringFunctions>
2702
+ #include<importanceSampling>
2703
+ #include<pbrHelperFunctions>
2704
+ #include<imageProcessingFunctions>
2705
+ #include<shadowsFragmentFunctions>
2706
+ #include<harmonicsFunctions>
2707
+ #include<pbrDirectLightingSetupFunctions>
2708
+ #include<pbrDirectLightingFalloffFunctions>
2709
+ #include<pbrBRDFFunctions>
2710
+ #include<hdrFilteringFunctions>
2711
+ #include<pbrDirectLightingFunctions>
2712
+ #include<pbrIBLFunctions>
2713
+ #include<bumpFragmentMainFunctions>
2714
+ #include<bumpFragmentFunctions>
2715
+ #ifdef REFLECTION
2716
+ #include<reflectionFunction>
2717
+ #endif
2718
+ #define CUSTOM_FRAGMENT_DEFINITIONS
2719
+ #include<pbrBlockAlbedoOpacity>
2720
+ #include<pbrBlockReflectivity>
2721
+ #include<pbrBlockAmbientOcclusion>
2722
+ #include<pbrBlockAlphaFresnel>
2723
+ #include<pbrBlockAnisotropic>
2724
+ #include<pbrBlockReflection>
2725
+ #include<pbrBlockSheen>
2726
+ #include<pbrBlockClearcoat>
2727
+ #include<pbrBlockIridescence>
2728
+ #include<pbrBlockSubSurface>
2729
+ @fragment
2730
+ fn main(input: FragmentInputs)->FragmentOutputs {
2731
+ #define CUSTOM_FRAGMENT_MAIN_BEGIN
2732
+ #include<clipPlaneFragment>
2733
+ #include<pbrBlockNormalGeometric>
2734
+ #include<bumpFragment>
2735
+ #include<pbrBlockNormalFinal>
2736
+ var albedoOpacityOut: albedoOpacityOutParams;
2737
+ #ifdef ALBEDO
2738
+ var albedoTexture: vec4f=textureSample(albedoSampler,albedoSamplerSampler,fragmentInputs.vAlbedoUV+uvOffset);
2739
+ #endif
2740
+ #ifdef OPACITY
2741
+ var opacityMap: vec4f=textureSample(opacitySampler,opacitySamplerSampler,fragmentInputs.vOpacityUV+uvOffset);
2742
+ #endif
2743
+ #ifdef DECAL
2744
+ var decalColor: vec4f=textureSample(decalSampler,decalSamplerSampler,fragmentInputs.vDecalUV+uvOffset);
2745
+ #endif
2746
+ albedoOpacityOut=albedoOpacityBlock(
2747
+ uniforms.vAlbedoColor
2748
+ #ifdef ALBEDO
2749
+ ,albedoTexture
2750
+ ,uniforms.vAlbedoInfos
2751
+ #endif
2752
+ #ifdef OPACITY
2753
+ ,opacityMap
2754
+ ,uniforms.vOpacityInfos
2755
+ #endif
2756
+ #ifdef DETAIL
2757
+ ,detailColor
2758
+ ,uniforms.vDetailInfos
2759
+ #endif
2760
+ #ifdef DECAL
2761
+ ,decalColor
2762
+ ,uniforms.vDecalInfos
2763
+ #endif
2764
+ );var surfaceAlbedo: vec3f=albedoOpacityOut.surfaceAlbedo;var alpha: f32=albedoOpacityOut.alpha;
2765
+ #define CUSTOM_FRAGMENT_UPDATE_ALPHA
2766
+ #include<depthPrePass>
2767
+ #define CUSTOM_FRAGMENT_BEFORE_LIGHTS
2768
+ var aoOut: ambientOcclusionOutParams;
2769
+ #ifdef AMBIENT
2770
+ var ambientOcclusionColorMap: vec3f=textureSample(ambientSampler,ambientSamplerSampler,fragmentInputs.vAmbientUV+uvOffset).rgb;
2771
+ #endif
2772
+ aoOut=ambientOcclusionBlock(
2773
+ #ifdef AMBIENT
2774
+ ambientOcclusionColorMap,
2775
+ uniforms.vAmbientInfos
2776
+ #endif
2777
+ );
2778
+ #include<pbrBlockLightmapInit>
2779
+ #ifdef UNLIT
2780
+ var diffuseBase: vec3f= vec3f(1.,1.,1.);
2781
+ #else
2782
+ var baseColor: vec3f=surfaceAlbedo;var reflectivityOut: reflectivityOutParams;
2783
+ #if defined(REFLECTIVITY)
2784
+ var surfaceMetallicOrReflectivityColorMap: vec4f=textureSample(reflectivitySampler,reflectivitySamplerSampler,fragmentInputs.vReflectivityUV+uvOffset);var baseReflectivity: vec4f=surfaceMetallicOrReflectivityColorMap;
2785
+ #ifndef METALLICWORKFLOW
2786
+ #ifdef REFLECTIVITY_GAMMA
2787
+ surfaceMetallicOrReflectivityColorMap=toLinearSpaceVec4(surfaceMetallicOrReflectivityColorMap);
2788
+ #endif
2789
+ surfaceMetallicOrReflectivityColorMap=vec4f(surfaceMetallicOrReflectivityColorMap.rgb*uniforms.vReflectivityInfos.y,surfaceMetallicOrReflectivityColorMap.a);
2790
+ #endif
2791
+ #endif
2792
+ #if defined(MICROSURFACEMAP)
2793
+ var microSurfaceTexel: vec4f=textureSample(microSurfaceSampler,microSurfaceSamplerSampler,fragmentInputs.vMicroSurfaceSamplerUV+uvOffset)*uniforms.vMicroSurfaceSamplerInfos.y;
2794
+ #endif
2795
+ #ifdef METALLICWORKFLOW
2796
+ var metallicReflectanceFactors: vec4f=uniforms.vMetallicReflectanceFactors;
2797
+ #ifdef REFLECTANCE
2798
+ var reflectanceFactorsMap: vec4f=textureSample(reflectanceSampler,reflectanceSamplerSampler,fragmentInputs.vReflectanceUV+uvOffset);
2799
+ #ifdef REFLECTANCE_GAMMA
2800
+ reflectanceFactorsMap=toLinearSpaceVec4(reflectanceFactorsMap);
2801
+ #endif
2802
+ metallicReflectanceFactors=vec4f(metallicReflectanceFactors.rgb*reflectanceFactorsMap.rgb,metallicReflectanceFactors.a);
2803
+ #endif
2804
+ #ifdef METALLIC_REFLECTANCE
2805
+ var metallicReflectanceFactorsMap: vec4f=textureSample(metallicReflectanceSampler,metallicReflectanceSamplerSampler,fragmentInputs.vMetallicReflectanceUV+uvOffset);
2806
+ #ifdef METALLIC_REFLECTANCE_GAMMA
2807
+ metallicReflectanceFactorsMap=toLinearSpaceVec4(metallicReflectanceFactorsMap);
2808
+ #endif
2809
+ #ifndef METALLIC_REFLECTANCE_USE_ALPHA_ONLY
2810
+ metallicReflectanceFactors=vec4f(metallicReflectanceFactors.rgb*metallicReflectanceFactorsMap.rgb,metallicReflectanceFactors.a);
2811
+ #endif
2812
+ metallicReflectanceFactors*=metallicReflectanceFactorsMap.a;
2813
+ #endif
2814
+ #endif
2815
+ reflectivityOut=reflectivityBlock(
2816
+ uniforms.vReflectivityColor
2817
+ #ifdef METALLICWORKFLOW
2818
+ ,surfaceAlbedo
2819
+ ,metallicReflectanceFactors
2820
+ #endif
2821
+ #ifdef REFLECTIVITY
2822
+ ,uniforms.vReflectivityInfos
2823
+ ,surfaceMetallicOrReflectivityColorMap
2824
+ #endif
2825
+ #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)
2826
+ ,aoOut.ambientOcclusionColor
2827
+ #endif
2828
+ #ifdef MICROSURFACEMAP
2829
+ ,microSurfaceTexel
2830
+ #endif
2831
+ #ifdef DETAIL
2832
+ ,detailColor
2833
+ ,uniforms.vDetailInfos
2834
+ #endif
2835
+ );var microSurface: f32=reflectivityOut.microSurface;var roughness: f32=reflectivityOut.roughness;
2836
+ #ifdef METALLICWORKFLOW
2837
+ surfaceAlbedo=reflectivityOut.surfaceAlbedo;
2838
+ #endif
2839
+ #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)
2840
+ aoOut.ambientOcclusionColor=reflectivityOut.ambientOcclusionColor;
2841
+ #endif
2842
+ #ifdef ALPHAFRESNEL
2843
+ #if defined(ALPHATEST) || defined(ALPHABLEND)
2844
+ var alphaFresnelOut: alphaFresnelOutParams;alphaFresnelOut=alphaFresnelBlock(
2845
+ normalW,
2846
+ viewDirectionW,
2847
+ alpha,
2848
+ microSurface
2849
+ );alpha=alphaFresnelOut.alpha;
2850
+ #endif
2851
+ #endif
2852
+ #include<pbrBlockGeometryInfo>
2853
+ #ifdef ANISOTROPIC
2854
+ var anisotropicOut: anisotropicOutParams;
2855
+ #ifdef ANISOTROPIC_TEXTURE
2856
+ var anisotropyMapData: vec3f=textureSample(anisotropySampler,anisotropySamplerSampler,fragmentInputs.vAnisotropyUV+uvOffset).rgb*uniforms.vAnisotropyInfos.y;
2857
+ #endif
2858
+ anisotropicOut=anisotropicBlock(
2859
+ uniforms.vAnisotropy,
2860
+ roughness,
2861
+ #ifdef ANISOTROPIC_TEXTURE
2862
+ anisotropyMapData,
2863
+ #endif
2864
+ TBN,
2865
+ normalW,
2866
+ viewDirectionW
2867
+ );
2868
+ #endif
2869
+ #ifdef REFLECTION
2870
+ var reflectionOut: reflectionOutParams;
2871
+ #ifndef USE_CUSTOM_REFLECTION
2872
+ reflectionOut=reflectionBlock(
2873
+ fragmentInputs.vPositionW
2874
+ ,normalW
2875
+ ,alphaG
2876
+ ,uniforms.vReflectionMicrosurfaceInfos
2877
+ ,uniforms.vReflectionInfos
2878
+ ,uniforms.vReflectionColor
2879
+ #ifdef ANISOTROPIC
2880
+ ,anisotropicOut
2881
+ #endif
2882
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
2883
+ ,NdotVUnclamped
2884
+ #endif
2885
+ #ifdef LINEARSPECULARREFLECTION
2886
+ ,roughness
2887
+ #endif
2888
+ ,reflectionSampler
2889
+ ,reflectionSamplerSampler
2890
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
2891
+ ,fragmentInputs.vEnvironmentIrradiance
2892
+ #endif
2893
+ #ifdef USESPHERICALFROMREFLECTIONMAP
2894
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
2895
+ ,uniforms.reflectionMatrix
2896
+ #endif
2897
+ #endif
2898
+ #ifdef USEIRRADIANCEMAP
2899
+ ,irradianceSampler
2900
+ ,irradianceSamplerSampler
2901
+ #endif
2902
+ #ifndef LODBASEDMICROSFURACE
2903
+ ,reflectionLowSampler
2904
+ ,reflectionLowSamplerSampler
2905
+ ,reflectionHighSampler
2906
+ ,reflectionHighSamplerSampler
2907
+ #endif
2908
+ #ifdef REALTIME_FILTERING
2909
+ ,uniforms.vReflectionFilteringInfo
2910
+ #ifdef IBL_CDF_FILTERING
2911
+ ,uniforms.icdfxSampler
2912
+ ,uniforms.icdfxSamplerSampler
2913
+ ,uniforms.icdfySampler
2914
+ ,uniforms.icdfySamplerSampler
2915
+ #endif
2916
+ #endif
2917
+ );
2918
+ #else
2919
+ #define CUSTOM_REFLECTION
2920
+ #endif
2921
+ #endif
2922
+ #include<pbrBlockReflectance0>
2923
+ #ifdef SHEEN
2924
+ var sheenOut: sheenOutParams;
2925
+ #ifdef SHEEN_TEXTURE
2926
+ var sheenMapData: vec4f=textureSample(sheenSampler,sheenSamplerSampler,fragmentInputs.vSheenUV+uvOffset);
2927
+ #endif
2928
+ #if defined(SHEEN_ROUGHNESS) && defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)
2929
+ var sheenMapRoughnessData: vec4f=textureSample(sheenRoughnessSampler,sheenRoughnessSamplerSampler,fragmentInputs.vSheenRoughnessUV+uvOffset)*uniforms.vSheenInfos.w;
2930
+ #endif
2931
+ sheenOut=sheenBlock(
2932
+ uniforms.vSheenColor
2933
+ #ifdef SHEEN_ROUGHNESS
2934
+ ,uniforms.vSheenRoughness
2935
+ #if defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)
2936
+ ,sheenMapRoughnessData
2937
+ #endif
2938
+ #endif
2939
+ ,roughness
2940
+ #ifdef SHEEN_TEXTURE
2941
+ ,sheenMapData
2942
+ ,uniforms.vSheenInfos.y
2943
+ #endif
2944
+ ,reflectance
2945
+ #ifdef SHEEN_LINKWITHALBEDO
2946
+ ,baseColor
2947
+ ,surfaceAlbedo
2948
+ #endif
2949
+ #ifdef ENVIRONMENTBRDF
2950
+ ,NdotV
2951
+ ,environmentBrdf
2952
+ #endif
2953
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
2954
+ ,AARoughnessFactors
2955
+ ,uniforms.vReflectionMicrosurfaceInfos
2956
+ ,uniforms.vReflectionInfos
2957
+ ,uniforms.vReflectionColor
2958
+ ,uniforms.vLightingIntensity
2959
+ ,reflectionSampler
2960
+ ,reflectionSamplerSampler
2961
+ ,reflectionOut.reflectionCoords
2962
+ ,NdotVUnclamped
2963
+ #ifndef LODBASEDMICROSFURACE
2964
+ ,reflectionLowSampler
2965
+ ,reflectionLowSamplerSampler
2966
+ ,reflectionHighSampler
2967
+ ,reflectionHighSamplerSampler
2968
+ #endif
2969
+ #ifdef REALTIME_FILTERING
2970
+ ,vReflectionFilteringInfo
2971
+ #endif
2972
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)
2973
+ ,seo
2974
+ #endif
2975
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
2976
+ ,eho
2977
+ #endif
2978
+ #endif
2979
+ );
2980
+ #ifdef SHEEN_LINKWITHALBEDO
2981
+ surfaceAlbedo=sheenOut.surfaceAlbedo;
2982
+ #endif
2983
+ #endif
2984
+ #ifdef CLEARCOAT
2985
+ #ifdef CLEARCOAT_TEXTURE
2986
+ var clearCoatMapData: vec2f=textureSample(clearCoatSampler,clearCoatSamplerSampler,fragmentInputs.vClearCoatUV+uvOffset).rg*uniforms.vClearCoatInfos.y;
2987
+ #endif
2988
+ #endif
2989
+ #ifdef IRIDESCENCE
2990
+ var iridescenceOut: iridescenceOutParams;
2991
+ #ifdef IRIDESCENCE_TEXTURE
2992
+ var iridescenceMapData: vec2f=textureSample(iridescenceSampler,iridescenceSamplerSampler,fragmentInputs.vIridescenceUV+uvOffset).rg*uniforms.vIridescenceInfos.y;
2993
+ #endif
2994
+ #ifdef IRIDESCENCE_THICKNESS_TEXTURE
2995
+ var iridescenceThicknessMapData: vec2f=textureSample(iridescenceThicknessSampler,iridescenceThicknessSamplerSampler,fragmentInputs.vIridescenceThicknessUV+uvOffset).rg*uniforms.vIridescenceInfos.w;
2996
+ #endif
2997
+ iridescenceOut=iridescenceBlock(
2998
+ uniforms.vIridescenceParams
2999
+ ,NdotV
3000
+ ,specularEnvironmentR0
3001
+ #ifdef IRIDESCENCE_TEXTURE
3002
+ ,iridescenceMapData
3003
+ #endif
3004
+ #ifdef IRIDESCENCE_THICKNESS_TEXTURE
3005
+ ,iridescenceThicknessMapData
3006
+ #endif
3007
+ #ifdef CLEARCOAT
3008
+ ,NdotVUnclamped
3009
+ #ifdef CLEARCOAT_TEXTURE
3010
+ ,clearCoatMapData
3011
+ #endif
3012
+ #endif
3013
+ );var iridescenceIntensity: f32=iridescenceOut.iridescenceIntensity;specularEnvironmentR0=iridescenceOut.specularEnvironmentR0;
3014
+ #endif
3015
+ var clearcoatOut: clearcoatOutParams;
3016
+ #ifdef CLEARCOAT
3017
+ #if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)
3018
+ var clearCoatMapRoughnessData: vec4f=textureSample(clearCoatRoughnessSampler,clearCoatRoughnessSamplerSampler,fragmentInputs.vClearCoatRoughnessUV+uvOffset)*uniforms.vClearCoatInfos.w;
3019
+ #endif
3020
+ #if defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)
3021
+ var clearCoatTintMapData: vec4f=textureSample(clearCoatTintSampler,clearCoatTintSamplerSampler,fragmentInputs.vClearCoatTintUV+uvOffset);
3022
+ #endif
3023
+ #ifdef CLEARCOAT_BUMP
3024
+ var clearCoatBumpMapData: vec4f=textureSample(clearCoatBumpSampler,clearCoatBumpSamplerSampler,fragmentInputs.vClearCoatBumpUV+uvOffset);
3025
+ #endif
3026
+ clearcoatOut=clearcoatBlock(
3027
+ fragmentInputs.vPositionW
3028
+ ,geometricNormalW
3029
+ ,viewDirectionW
3030
+ ,uniforms.vClearCoatParams
3031
+ #if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)
3032
+ ,clearCoatMapRoughnessData
3033
+ #endif
3034
+ ,specularEnvironmentR0
3035
+ #ifdef CLEARCOAT_TEXTURE
3036
+ ,clearCoatMapData
3037
+ #endif
3038
+ #ifdef CLEARCOAT_TINT
3039
+ ,uniforms.vClearCoatTintParams
3040
+ ,uniforms.clearCoatColorAtDistance
3041
+ ,uniforms.vClearCoatRefractionParams
3042
+ #ifdef CLEARCOAT_TINT_TEXTURE
3043
+ ,clearCoatTintMapData
3044
+ #endif
3045
+ #endif
3046
+ #ifdef CLEARCOAT_BUMP
3047
+ ,uniforms.vClearCoatBumpInfos
3048
+ ,clearCoatBumpMapData
3049
+ ,fragmentInputs.vClearCoatBumpUV
3050
+ #if defined(TANGENT) && defined(NORMAL)
3051
+ ,vTBN
3052
+ #else
3053
+ ,uniforms.vClearCoatTangentSpaceParams
3054
+ #endif
3055
+ #ifdef OBJECTSPACE_NORMALMAP
3056
+ ,uniforms.normalMatrix
3057
+ #endif
3058
+ #endif
3059
+ #if defined(FORCENORMALFORWARD) && defined(NORMAL)
3060
+ ,faceNormal
3061
+ #endif
3062
+ #ifdef REFLECTION
3063
+ ,uniforms.vReflectionMicrosurfaceInfos
3064
+ ,uniforms.vReflectionInfos
3065
+ ,uniforms.vReflectionColor
3066
+ ,uniforms.vLightingIntensity
3067
+ ,reflectionSampler
3068
+ ,reflectionSamplerSampler
3069
+ #ifndef LODBASEDMICROSFURACE
3070
+ ,reflectionLowSampler
3071
+ ,reflectionLowSamplerSampler
3072
+ ,reflectionHighSampler
3073
+ ,reflectionHighSamplerSampler
3074
+ #endif
3075
+ #ifdef REALTIME_FILTERING
3076
+ ,uniforms.vReflectionFilteringInfo
3077
+ #endif
3078
+ #endif
3079
+ #if defined(CLEARCOAT_BUMP) || defined(TWOSIDEDLIGHTING)
3080
+ ,select(-1.,1.,fragmentInputs.frontFacing)
3081
+ #endif
3082
+ );
3083
+ #else
3084
+ clearcoatOut.specularEnvironmentR0=specularEnvironmentR0;
3085
+ #endif
3086
+ #include<pbrBlockReflectance>
3087
+ var subSurfaceOut: subSurfaceOutParams;
3088
+ #ifdef SUBSURFACE
3089
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
3090
+ var thicknessMap: vec4f=textureSample(thicknessSampler,thicknessSamplerSampler,fragmentInputs.vThicknessUV+uvOffset);
3091
+ #endif
3092
+ #ifdef SS_REFRACTIONINTENSITY_TEXTURE
3093
+ var refractionIntensityMap: vec4f=textureSample(refractionIntensitySampler,refractionIntensitySamplerSampler,fragmentInputs.vRefractionIntensityUV+uvOffset);
3094
+ #endif
3095
+ #ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE
3096
+ var translucencyIntensityMap: vec4f=textureSample(translucencyIntensitySampler,translucencyIntensitySamplerSampler,fragmentInputs.vTranslucencyIntensityUV+uvOffset);
3097
+ #endif
3098
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE
3099
+ var translucencyColorMap: vec4f=textureSample(translucencyColorSampler,translucencyColorSamplerSampler,fragmentInputs.vTranslucencyColorUV+uvOffset);
3100
+ #endif
3101
+ subSurfaceOut=subSurfaceBlock(
3102
+ uniforms.vSubSurfaceIntensity
3103
+ ,uniforms.vThicknessParam
3104
+ ,uniforms.vTintColor
3105
+ ,normalW
3106
+ ,specularEnvironmentReflectance
3107
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
3108
+ ,thicknessMap
3109
+ #endif
3110
+ #ifdef SS_REFRACTIONINTENSITY_TEXTURE
3111
+ ,refractionIntensityMap
3112
+ #endif
3113
+ #ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE
3114
+ ,translucencyIntensityMap
3115
+ #endif
3116
+ #ifdef REFLECTION
3117
+ #ifdef SS_TRANSLUCENCY
3118
+ ,uniforms.reflectionMatrix
3119
+ #ifdef USESPHERICALFROMREFLECTIONMAP
3120
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
3121
+ ,reflectionOut.irradianceVector
3122
+ #endif
3123
+ #if defined(REALTIME_FILTERING)
3124
+ ,reflectionSampler
3125
+ ,reflectionSamplerSampler
3126
+ ,vReflectionFilteringInfo
3127
+ #ifdef IBL_CDF_FILTERING
3128
+ ,uniforms.icdfxSampler
3129
+ ,uniforms.icdfxSamplerSampler
3130
+ ,uniforms.icdfySampler
3131
+ ,uniforms.icdfySamplerSampler
3132
+ #endif
3133
+ #endif
3134
+ #endif
3135
+ #ifdef USEIRRADIANCEMAP
3136
+ ,irradianceSampler
3137
+ ,irradianceSamplerSampler
3138
+ #endif
3139
+ #endif
3140
+ #endif
3141
+ #if defined(SS_REFRACTION) || defined(SS_TRANSLUCENCY)
3142
+ ,surfaceAlbedo
3143
+ #endif
3144
+ #ifdef SS_REFRACTION
3145
+ ,fragmentInputs.vPositionW
3146
+ ,viewDirectionW
3147
+ ,scene.view
3148
+ ,uniforms.vRefractionInfos
3149
+ ,uniforms.refractionMatrix
3150
+ ,uniforms.vRefractionMicrosurfaceInfos
3151
+ ,uniforms.vLightingIntensity
3152
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
3153
+ ,alpha
3154
+ #endif
3155
+ #ifdef SS_LODINREFRACTIONALPHA
3156
+ ,NdotVUnclamped
3157
+ #endif
3158
+ #ifdef SS_LINEARSPECULARREFRACTION
3159
+ ,roughness
3160
+ #endif
3161
+ ,alphaG
3162
+ ,refractionSampler
3163
+ ,refractionSamplerSampler
3164
+ #ifndef LODBASEDMICROSFURACE
3165
+ ,refractionLowSampler
3166
+ ,refractionLowSamplerSampler
3167
+ ,refractionHighSampler
3168
+ ,refractionHighSamplerSampler
3169
+ #endif
3170
+ #ifdef ANISOTROPIC
3171
+ ,anisotropicOut
3172
+ #endif
3173
+ #ifdef REALTIME_FILTERING
3174
+ ,uniforms.vRefractionFilteringInfo
3175
+ #endif
3176
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
3177
+ ,uniforms.vRefractionPosition
3178
+ ,uniforms.vRefractionSize
3179
+ #endif
3180
+ #ifdef SS_DISPERSION
3181
+ ,dispersion
3182
+ #endif
3183
+ #endif
3184
+ #ifdef SS_TRANSLUCENCY
3185
+ ,uniforms.vDiffusionDistance
3186
+ ,uniforms.vTranslucencyColor
3187
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE
3188
+ ,translucencyColorMap
3189
+ #endif
3190
+ #endif
3191
+ );
3192
+ #ifdef SS_REFRACTION
3193
+ surfaceAlbedo=subSurfaceOut.surfaceAlbedo;
3194
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
3195
+ alpha=subSurfaceOut.alpha;
3196
+ #endif
3197
+ #endif
3198
+ #else
3199
+ subSurfaceOut.specularEnvironmentReflectance=specularEnvironmentReflectance;
3200
+ #endif
3201
+ #include<pbrBlockDirectLighting>
3202
+ #include<lightFragment>[0..maxSimultaneousLights]
3203
+ #include<pbrBlockFinalLitComponents>
3204
+ #endif
3205
+ #include<pbrBlockFinalUnlitComponents>
3206
+ #define CUSTOM_FRAGMENT_BEFORE_FINALCOLORCOMPOSITION
3207
+ #include<pbrBlockFinalColorComposition>
3208
+ #include<logDepthFragment>
3209
+ #include<fogFragment>(color,finalColor)
3210
+ #include<pbrBlockImageProcessing>
3211
+ #define CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR
3212
+ #ifdef PREPASS
3213
+ #include<pbrBlockPrePass>
3214
+ #endif
3215
+ #if !defined(PREPASS) && !defined(ORDER_INDEPENDENT_TRANSPARENCY)
3216
+ fragmentOutputs.color=finalColor;
3217
+ #endif
3218
+ #include<oitFragment>
3219
+ #if ORDER_INDEPENDENT_TRANSPARENCY
3220
+ if (fragDepth==nearestDepth) {fragmentOutputs.frontColor=vec4f(fragmentOutputs.frontColor.rgb+finalColor.rgb*finalColor.a*alphaMultiplier,1.0-alphaMultiplier*(1.0-finalColor.a));} else {fragmentOutputs.backColor+=finalColor;}
3221
+ #endif
3222
+ #include<pbrDebug>
3223
+ #define CUSTOM_FRAGMENT_MAIN_END
3224
+ }
3225
+ `;
3226
+ // Sideeffect
3227
+ ShaderStore.ShadersStoreWGSL[name] = shader;
3228
+ /** @internal */
3229
+ const pbrPixelShaderWGSL = { name, shader };
3230
+
3231
+ export { pbrPixelShaderWGSL };
3232
+ //# sourceMappingURL=pbr.fragment-Dxb2AuuM.esm.js.map