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