@babylonjs/viewer 7.25.0-alpha → 7.25.0

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 (522) hide show
  1. package/configuration/configuration.d.ts +107 -0
  2. package/configuration/configuration.js +16 -0
  3. package/configuration/configuration.js.map +1 -0
  4. package/configuration/configurationCompatibility.d.ts +8 -0
  5. package/configuration/configurationCompatibility.js +66 -0
  6. package/configuration/configurationCompatibility.js.map +1 -0
  7. package/configuration/configurationContainer.d.ts +10 -0
  8. package/configuration/configurationContainer.js +10 -0
  9. package/configuration/configurationContainer.js.map +1 -0
  10. package/configuration/globals.d.ts +6 -0
  11. package/configuration/globals.js +18 -0
  12. package/configuration/globals.js.map +1 -0
  13. package/configuration/index.d.ts +2 -0
  14. package/configuration/index.js +4 -0
  15. package/configuration/index.js.map +1 -0
  16. package/configuration/interfaces/cameraConfiguration.d.ts +31 -0
  17. package/configuration/interfaces/cameraConfiguration.js +2 -0
  18. package/configuration/interfaces/cameraConfiguration.js.map +1 -0
  19. package/configuration/interfaces/colorGradingConfiguration.d.ts +81 -0
  20. package/configuration/interfaces/colorGradingConfiguration.js +2 -0
  21. package/configuration/interfaces/colorGradingConfiguration.js.map +1 -0
  22. package/configuration/interfaces/defaultRenderingPipelineConfiguration.d.ts +20 -0
  23. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js +2 -0
  24. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js.map +1 -0
  25. package/configuration/interfaces/environmentMapConfiguration.d.ts +22 -0
  26. package/configuration/interfaces/environmentMapConfiguration.js +2 -0
  27. package/configuration/interfaces/environmentMapConfiguration.js.map +1 -0
  28. package/configuration/interfaces/groundConfiguration.d.ts +24 -0
  29. package/configuration/interfaces/groundConfiguration.js +2 -0
  30. package/configuration/interfaces/groundConfiguration.js.map +1 -0
  31. package/configuration/interfaces/imageProcessingConfiguration.d.ts +45 -0
  32. package/configuration/interfaces/imageProcessingConfiguration.js +2 -0
  33. package/configuration/interfaces/imageProcessingConfiguration.js.map +1 -0
  34. package/configuration/interfaces/index.d.ts +15 -0
  35. package/configuration/interfaces/index.js +16 -0
  36. package/configuration/interfaces/index.js.map +1 -0
  37. package/configuration/interfaces/lightConfiguration.d.ts +60 -0
  38. package/configuration/interfaces/lightConfiguration.js +2 -0
  39. package/configuration/interfaces/lightConfiguration.js.map +1 -0
  40. package/configuration/interfaces/modelAnimationConfiguration.d.ts +26 -0
  41. package/configuration/interfaces/modelAnimationConfiguration.js +2 -0
  42. package/configuration/interfaces/modelAnimationConfiguration.js.map +1 -0
  43. package/configuration/interfaces/modelConfiguration.d.ts +65 -0
  44. package/configuration/interfaces/modelConfiguration.js +2 -0
  45. package/configuration/interfaces/modelConfiguration.js.map +1 -0
  46. package/configuration/interfaces/observersConfiguration.d.ts +5 -0
  47. package/configuration/interfaces/observersConfiguration.js +2 -0
  48. package/configuration/interfaces/observersConfiguration.js.map +1 -0
  49. package/configuration/interfaces/sceneConfiguration.d.ts +48 -0
  50. package/configuration/interfaces/sceneConfiguration.js +2 -0
  51. package/configuration/interfaces/sceneConfiguration.js.map +1 -0
  52. package/configuration/interfaces/sceneOptimizerConfiguration.d.ts +23 -0
  53. package/configuration/interfaces/sceneOptimizerConfiguration.js +2 -0
  54. package/configuration/interfaces/sceneOptimizerConfiguration.js.map +1 -0
  55. package/configuration/interfaces/skyboxConfiguration.d.ts +21 -0
  56. package/configuration/interfaces/skyboxConfiguration.js +2 -0
  57. package/configuration/interfaces/skyboxConfiguration.js.map +1 -0
  58. package/configuration/interfaces/templateConfiguration.d.ts +67 -0
  59. package/configuration/interfaces/templateConfiguration.js +2 -0
  60. package/configuration/interfaces/templateConfiguration.js.map +1 -0
  61. package/configuration/interfaces/vrConfiguration.d.ts +16 -0
  62. package/configuration/interfaces/vrConfiguration.js +2 -0
  63. package/configuration/interfaces/vrConfiguration.js.map +1 -0
  64. package/configuration/loader.d.ts +4 -0
  65. package/configuration/loader.js +17 -0
  66. package/configuration/loader.js.map +1 -0
  67. package/configuration/mappers.d.ts +43 -0
  68. package/configuration/mappers.js +192 -0
  69. package/configuration/mappers.js.map +1 -0
  70. package/configuration/renderOnlyLoader.d.ts +33 -0
  71. package/configuration/renderOnlyLoader.js +162 -0
  72. package/configuration/renderOnlyLoader.js.map +1 -0
  73. package/configuration/types/default.d.ts +6 -0
  74. package/configuration/types/default.js +121 -0
  75. package/configuration/types/default.js.map +1 -0
  76. package/configuration/types/environmentMap.d.ts +5 -0
  77. package/configuration/types/environmentMap.js +14 -0
  78. package/configuration/types/environmentMap.js.map +1 -0
  79. package/configuration/types/extended.d.ts +6 -0
  80. package/configuration/types/extended.js +317 -0
  81. package/configuration/types/extended.js.map +1 -0
  82. package/configuration/types/index.d.ts +14 -0
  83. package/configuration/types/index.js +51 -0
  84. package/configuration/types/index.js.map +1 -0
  85. package/configuration/types/minimal.d.ts +6 -0
  86. package/configuration/types/minimal.js +43 -0
  87. package/configuration/types/minimal.js.map +1 -0
  88. package/configuration/types/renderOnlyDefault.d.ts +30 -0
  89. package/configuration/types/renderOnlyDefault.js +31 -0
  90. package/configuration/types/renderOnlyDefault.js.map +1 -0
  91. package/configuration/types/shadowLight.d.ts +9 -0
  92. package/configuration/types/shadowLight.js +64 -0
  93. package/configuration/types/shadowLight.js.map +1 -0
  94. package/helper/index.d.ts +29 -0
  95. package/helper/index.js +66 -0
  96. package/helper/index.js.map +1 -0
  97. package/index.d.ts +30 -0
  98. package/index.js +46 -0
  99. package/index.js.map +1 -0
  100. package/initializer.d.ts +11 -0
  101. package/initializer.js +35 -0
  102. package/initializer.js.map +1 -0
  103. package/interfaces.d.ts +5 -0
  104. package/interfaces.js +7 -0
  105. package/interfaces.js.map +1 -0
  106. package/labs/environmentSerializer.d.ts +126 -0
  107. package/labs/environmentSerializer.js +191 -0
  108. package/labs/environmentSerializer.js.map +1 -0
  109. package/labs/texture.d.ts +183 -0
  110. package/labs/texture.js +350 -0
  111. package/labs/texture.js.map +1 -0
  112. package/labs/viewerLabs.d.ts +51 -0
  113. package/labs/viewerLabs.js +134 -0
  114. package/labs/viewerLabs.js.map +1 -0
  115. package/loader/modelLoader.d.ts +56 -0
  116. package/loader/modelLoader.js +199 -0
  117. package/loader/modelLoader.js.map +1 -0
  118. package/loader/plugins/applyMaterialConfig.d.ts +12 -0
  119. package/loader/plugins/applyMaterialConfig.js +16 -0
  120. package/loader/plugins/applyMaterialConfig.js.map +1 -0
  121. package/loader/plugins/extendedMaterialLoaderPlugin.d.ts +9 -0
  122. package/loader/plugins/extendedMaterialLoaderPlugin.js +16 -0
  123. package/loader/plugins/extendedMaterialLoaderPlugin.js.map +1 -0
  124. package/loader/plugins/index.d.ts +19 -0
  125. package/loader/plugins/index.js +44 -0
  126. package/loader/plugins/index.js.map +1 -0
  127. package/loader/plugins/loaderPlugin.d.ts +24 -0
  128. package/loader/plugins/loaderPlugin.js +2 -0
  129. package/loader/plugins/loaderPlugin.js.map +1 -0
  130. package/loader/plugins/msftLodLoaderPlugin.d.ts +12 -0
  131. package/loader/plugins/msftLodLoaderPlugin.js +21 -0
  132. package/loader/plugins/msftLodLoaderPlugin.js.map +1 -0
  133. package/loader/plugins/telemetryLoaderPlugin.d.ts +12 -0
  134. package/loader/plugins/telemetryLoaderPlugin.js +36 -0
  135. package/loader/plugins/telemetryLoaderPlugin.js.map +1 -0
  136. package/managers/observablesManager.d.ts +66 -0
  137. package/managers/observablesManager.js +35 -0
  138. package/managers/observablesManager.js.map +1 -0
  139. package/managers/sceneManager.d.ts +245 -0
  140. package/managers/sceneManager.js +1375 -0
  141. package/managers/sceneManager.js.map +1 -0
  142. package/managers/telemetryManager.d.ts +78 -0
  143. package/managers/telemetryManager.js +117 -0
  144. package/managers/telemetryManager.js.map +1 -0
  145. package/model/modelAnimation.d.ts +215 -0
  146. package/model/modelAnimation.js +237 -0
  147. package/model/modelAnimation.js.map +1 -0
  148. package/model/viewerModel.d.ts +233 -0
  149. package/model/viewerModel.js +673 -0
  150. package/model/viewerModel.js.map +1 -0
  151. package/optimizer/custom/extended.d.ts +13 -0
  152. package/optimizer/custom/extended.js +101 -0
  153. package/optimizer/custom/extended.js.map +1 -0
  154. package/optimizer/custom/index.d.ts +9 -0
  155. package/optimizer/custom/index.js +26 -0
  156. package/optimizer/custom/index.js.map +1 -0
  157. package/package.json +27 -17
  158. package/readme.md +21 -35
  159. package/renderOnlyIndex.d.ts +11 -0
  160. package/renderOnlyIndex.js +18 -0
  161. package/renderOnlyIndex.js.map +1 -0
  162. package/templating/eventManager.d.ts +35 -0
  163. package/templating/eventManager.js +66 -0
  164. package/templating/eventManager.js.map +1 -0
  165. package/templating/plugins/hdButtonPlugin.d.ts +9 -0
  166. package/templating/plugins/hdButtonPlugin.js +21 -0
  167. package/templating/plugins/hdButtonPlugin.js.map +1 -0
  168. package/templating/plugins/printButton.d.ts +9 -0
  169. package/templating/plugins/printButton.js +40 -0
  170. package/templating/plugins/printButton.js.map +1 -0
  171. package/templating/templateManager.d.ts +197 -0
  172. package/templating/templateManager.js +561 -0
  173. package/templating/templateManager.js.map +1 -0
  174. package/templating/viewerTemplatePlugin.d.ts +21 -0
  175. package/templating/viewerTemplatePlugin.js +69 -0
  176. package/templating/viewerTemplatePlugin.js.map +1 -0
  177. package/viewer/defaultViewer.d.ts +130 -0
  178. package/viewer/defaultViewer.js +675 -0
  179. package/viewer/defaultViewer.js.map +1 -0
  180. package/viewer/renderOnlyViewer.d.ts +9 -0
  181. package/viewer/renderOnlyViewer.js +46 -0
  182. package/viewer/renderOnlyViewer.js.map +1 -0
  183. package/viewer/viewer.d.ts +258 -0
  184. package/viewer/viewer.js +783 -0
  185. package/viewer/viewer.js.map +1 -0
  186. package/viewer/viewerManager.d.ts +58 -0
  187. package/viewer/viewerManager.js +91 -0
  188. package/viewer/viewerManager.js.map +1 -0
  189. package/viewer/viewerWithTemplate.d.ts +9 -0
  190. package/viewer/viewerWithTemplate.js +20 -0
  191. package/viewer/viewerWithTemplate.js.map +1 -0
  192. package/dist/babylon-viewer.esm.js +0 -2
  193. package/dist/babylon-viewer.esm.js.map +0 -1
  194. package/dist/babylon-viewer.esm.min.js +0 -2
  195. package/dist/babylon-viewer.esm.min.js.map +0 -1
  196. package/dist/chunks/EXT_lights_image_based-DC9fPJli.esm.min.js +0 -2
  197. package/dist/chunks/EXT_lights_image_based-DC9fPJli.esm.min.js.map +0 -1
  198. package/dist/chunks/EXT_lights_image_based-DfFQ31PL.esm.js +0 -170
  199. package/dist/chunks/EXT_lights_image_based-DfFQ31PL.esm.js.map +0 -1
  200. package/dist/chunks/EXT_mesh_gpu_instancing-DepTQjtD.esm.min.js +0 -2
  201. package/dist/chunks/EXT_mesh_gpu_instancing-DepTQjtD.esm.min.js.map +0 -1
  202. package/dist/chunks/EXT_mesh_gpu_instancing-cqFbSeIg.esm.js +0 -86
  203. package/dist/chunks/EXT_mesh_gpu_instancing-cqFbSeIg.esm.js.map +0 -1
  204. package/dist/chunks/EXT_meshopt_compression-BZz8a7N9.esm.js +0 -134
  205. package/dist/chunks/EXT_meshopt_compression-BZz8a7N9.esm.js.map +0 -1
  206. package/dist/chunks/EXT_meshopt_compression-CjMbh6eU.esm.min.js +0 -2
  207. package/dist/chunks/EXT_meshopt_compression-CjMbh6eU.esm.min.js.map +0 -1
  208. package/dist/chunks/EXT_texture_avif-DBTOdhvO.esm.js +0 -44
  209. package/dist/chunks/EXT_texture_avif-DBTOdhvO.esm.js.map +0 -1
  210. package/dist/chunks/EXT_texture_avif-DVAZSRkl.esm.min.js +0 -2
  211. package/dist/chunks/EXT_texture_avif-DVAZSRkl.esm.min.js.map +0 -1
  212. package/dist/chunks/EXT_texture_webp-BWiEqn-s.esm.min.js +0 -2
  213. package/dist/chunks/EXT_texture_webp-BWiEqn-s.esm.min.js.map +0 -1
  214. package/dist/chunks/EXT_texture_webp-Bgb7TgNp.esm.js +0 -43
  215. package/dist/chunks/EXT_texture_webp-Bgb7TgNp.esm.js.map +0 -1
  216. package/dist/chunks/ExtrasAsMetadata-Cr7Llzvd.esm.js +0 -64
  217. package/dist/chunks/ExtrasAsMetadata-Cr7Llzvd.esm.js.map +0 -1
  218. package/dist/chunks/ExtrasAsMetadata-DGIXOpGN.esm.min.js +0 -2
  219. package/dist/chunks/ExtrasAsMetadata-DGIXOpGN.esm.min.js.map +0 -1
  220. package/dist/chunks/KHR_animation_pointer-DrmQLtaw.esm.js +0 -343
  221. package/dist/chunks/KHR_animation_pointer-DrmQLtaw.esm.js.map +0 -1
  222. package/dist/chunks/KHR_animation_pointer-IVYLBxVU.esm.min.js +0 -2
  223. package/dist/chunks/KHR_animation_pointer-IVYLBxVU.esm.min.js.map +0 -1
  224. package/dist/chunks/KHR_draco_mesh_compression-CfqHokQU.esm.min.js +0 -2
  225. package/dist/chunks/KHR_draco_mesh_compression-CfqHokQU.esm.min.js.map +0 -1
  226. package/dist/chunks/KHR_draco_mesh_compression-DZR9h5nP.esm.js +0 -610
  227. package/dist/chunks/KHR_draco_mesh_compression-DZR9h5nP.esm.js.map +0 -1
  228. package/dist/chunks/KHR_interactivity-BQOxjpC1.esm.min.js +0 -2
  229. package/dist/chunks/KHR_interactivity-BQOxjpC1.esm.min.js.map +0 -1
  230. package/dist/chunks/KHR_interactivity-BbEGVmbr.esm.js +0 -4033
  231. package/dist/chunks/KHR_interactivity-BbEGVmbr.esm.js.map +0 -1
  232. package/dist/chunks/KHR_lights_punctual-5wF2wPZ4.esm.js +0 -1253
  233. package/dist/chunks/KHR_lights_punctual-5wF2wPZ4.esm.js.map +0 -1
  234. package/dist/chunks/KHR_lights_punctual-CxE0tWFW.esm.min.js +0 -2
  235. package/dist/chunks/KHR_lights_punctual-CxE0tWFW.esm.min.js.map +0 -1
  236. package/dist/chunks/KHR_materials_anisotropy-D5wj2P4R.esm.js +0 -64
  237. package/dist/chunks/KHR_materials_anisotropy-D5wj2P4R.esm.js.map +0 -1
  238. package/dist/chunks/KHR_materials_anisotropy-DzShF01_.esm.min.js +0 -2
  239. package/dist/chunks/KHR_materials_anisotropy-DzShF01_.esm.min.js.map +0 -1
  240. package/dist/chunks/KHR_materials_clearcoat-CVlq2-J0.esm.min.js +0 -2
  241. package/dist/chunks/KHR_materials_clearcoat-CVlq2-J0.esm.min.js.map +0 -1
  242. package/dist/chunks/KHR_materials_clearcoat-v7Cuht8B.esm.js +0 -96
  243. package/dist/chunks/KHR_materials_clearcoat-v7Cuht8B.esm.js.map +0 -1
  244. package/dist/chunks/KHR_materials_diffuse_transmission-Btv08kRf.esm.min.js +0 -2
  245. package/dist/chunks/KHR_materials_diffuse_transmission-Btv08kRf.esm.min.js.map +0 -1
  246. package/dist/chunks/KHR_materials_diffuse_transmission-DxEe_ssV.esm.js +0 -95
  247. package/dist/chunks/KHR_materials_diffuse_transmission-DxEe_ssV.esm.js.map +0 -1
  248. package/dist/chunks/KHR_materials_dispersion-BIMxA8Vq.esm.min.js +0 -2
  249. package/dist/chunks/KHR_materials_dispersion-BIMxA8Vq.esm.min.js.map +0 -1
  250. package/dist/chunks/KHR_materials_dispersion-D_4Rt_AT.esm.js +0 -62
  251. package/dist/chunks/KHR_materials_dispersion-D_4Rt_AT.esm.js.map +0 -1
  252. package/dist/chunks/KHR_materials_emissive_strength-BImvoUuh.esm.js +0 -55
  253. package/dist/chunks/KHR_materials_emissive_strength-BImvoUuh.esm.js.map +0 -1
  254. package/dist/chunks/KHR_materials_emissive_strength-BidGyKyI.esm.min.js +0 -2
  255. package/dist/chunks/KHR_materials_emissive_strength-BidGyKyI.esm.min.js.map +0 -1
  256. package/dist/chunks/KHR_materials_ior-DRDijE46.esm.min.js +0 -2
  257. package/dist/chunks/KHR_materials_ior-DRDijE46.esm.min.js.map +0 -1
  258. package/dist/chunks/KHR_materials_ior-Qsq8sSTQ.esm.js +0 -64
  259. package/dist/chunks/KHR_materials_ior-Qsq8sSTQ.esm.js.map +0 -1
  260. package/dist/chunks/KHR_materials_iridescence-BO-OSEkK.esm.min.js +0 -2
  261. package/dist/chunks/KHR_materials_iridescence-BO-OSEkK.esm.min.js.map +0 -1
  262. package/dist/chunks/KHR_materials_iridescence-Cc8j46MB.esm.js +0 -72
  263. package/dist/chunks/KHR_materials_iridescence-Cc8j46MB.esm.js.map +0 -1
  264. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-Cd2w1hlF.esm.min.js +0 -2
  265. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-Cd2w1hlF.esm.min.js.map +0 -1
  266. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-DEtDFZPX.esm.js +0 -81
  267. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-DEtDFZPX.esm.js.map +0 -1
  268. package/dist/chunks/KHR_materials_sheen-2GP5jiCT.esm.min.js +0 -2
  269. package/dist/chunks/KHR_materials_sheen-2GP5jiCT.esm.min.js.map +0 -1
  270. package/dist/chunks/KHR_materials_sheen-CQ3Q14sp.esm.js +0 -85
  271. package/dist/chunks/KHR_materials_sheen-CQ3Q14sp.esm.js.map +0 -1
  272. package/dist/chunks/KHR_materials_specular-B8bgMjMv.esm.min.js +0 -2
  273. package/dist/chunks/KHR_materials_specular-B8bgMjMv.esm.min.js.map +0 -1
  274. package/dist/chunks/KHR_materials_specular-D7P48RHW.esm.js +0 -75
  275. package/dist/chunks/KHR_materials_specular-D7P48RHW.esm.js.map +0 -1
  276. package/dist/chunks/KHR_materials_transmission-B6NtjEPp.esm.js +0 -306
  277. package/dist/chunks/KHR_materials_transmission-B6NtjEPp.esm.js.map +0 -1
  278. package/dist/chunks/KHR_materials_transmission-DPUUVLV8.esm.min.js +0 -2
  279. package/dist/chunks/KHR_materials_transmission-DPUUVLV8.esm.min.js.map +0 -1
  280. package/dist/chunks/KHR_materials_unlit-BRJnLegu.esm.min.js +0 -2
  281. package/dist/chunks/KHR_materials_unlit-BRJnLegu.esm.min.js.map +0 -1
  282. package/dist/chunks/KHR_materials_unlit-jqO9HFUm.esm.js +0 -74
  283. package/dist/chunks/KHR_materials_unlit-jqO9HFUm.esm.js.map +0 -1
  284. package/dist/chunks/KHR_materials_variants-D3zo3Fn8.esm.min.js +0 -2
  285. package/dist/chunks/KHR_materials_variants-D3zo3Fn8.esm.min.js.map +0 -1
  286. package/dist/chunks/KHR_materials_variants-DVhDwsbf.esm.js +0 -238
  287. package/dist/chunks/KHR_materials_variants-DVhDwsbf.esm.js.map +0 -1
  288. package/dist/chunks/KHR_materials_volume-BBlHI00R.esm.min.js +0 -2
  289. package/dist/chunks/KHR_materials_volume-BBlHI00R.esm.min.js.map +0 -1
  290. package/dist/chunks/KHR_materials_volume-pazjLjwn.esm.js +0 -87
  291. package/dist/chunks/KHR_materials_volume-pazjLjwn.esm.js.map +0 -1
  292. package/dist/chunks/KHR_mesh_quantization-BFCOpPq5.esm.min.js +0 -2
  293. package/dist/chunks/KHR_mesh_quantization-BFCOpPq5.esm.min.js.map +0 -1
  294. package/dist/chunks/KHR_mesh_quantization-DPAOJj_N.esm.js +0 -26
  295. package/dist/chunks/KHR_mesh_quantization-DPAOJj_N.esm.js.map +0 -1
  296. package/dist/chunks/KHR_texture_basisu-BGQg840h.esm.js +0 -43
  297. package/dist/chunks/KHR_texture_basisu-BGQg840h.esm.js.map +0 -1
  298. package/dist/chunks/KHR_texture_basisu-DjOd_UYI.esm.min.js +0 -2
  299. package/dist/chunks/KHR_texture_basisu-DjOd_UYI.esm.min.js.map +0 -1
  300. package/dist/chunks/KHR_texture_transform-CIEkHeKT.esm.js +0 -63
  301. package/dist/chunks/KHR_texture_transform-CIEkHeKT.esm.js.map +0 -1
  302. package/dist/chunks/KHR_texture_transform-LAK_4q2j.esm.min.js +0 -2
  303. package/dist/chunks/KHR_texture_transform-LAK_4q2j.esm.min.js.map +0 -1
  304. package/dist/chunks/KHR_xmp_json_ld-ByF20O9F.esm.min.js +0 -2
  305. package/dist/chunks/KHR_xmp_json_ld-ByF20O9F.esm.min.js.map +0 -1
  306. package/dist/chunks/KHR_xmp_json_ld-if0NXwJy.esm.js +0 -51
  307. package/dist/chunks/KHR_xmp_json_ld-if0NXwJy.esm.js.map +0 -1
  308. package/dist/chunks/MSFT_audio_emitter-D2B5Hzz0.esm.js +0 -1608
  309. package/dist/chunks/MSFT_audio_emitter-D2B5Hzz0.esm.js.map +0 -1
  310. package/dist/chunks/MSFT_audio_emitter-k-n62mVd.esm.min.js +0 -2
  311. package/dist/chunks/MSFT_audio_emitter-k-n62mVd.esm.min.js.map +0 -1
  312. package/dist/chunks/MSFT_lod-CpIv0Ill.esm.min.js +0 -2
  313. package/dist/chunks/MSFT_lod-CpIv0Ill.esm.min.js.map +0 -1
  314. package/dist/chunks/MSFT_lod-DZ3Pv8Ql.esm.js +0 -337
  315. package/dist/chunks/MSFT_lod-DZ3Pv8Ql.esm.js.map +0 -1
  316. package/dist/chunks/MSFT_minecraftMesh-GnUA-Z1C.esm.min.js +0 -2
  317. package/dist/chunks/MSFT_minecraftMesh-GnUA-Z1C.esm.min.js.map +0 -1
  318. package/dist/chunks/MSFT_minecraftMesh-KL-RFOpw.esm.js +0 -46
  319. package/dist/chunks/MSFT_minecraftMesh-KL-RFOpw.esm.js.map +0 -1
  320. package/dist/chunks/MSFT_sRGBFactors-BqvzNhFN.esm.js +0 -47
  321. package/dist/chunks/MSFT_sRGBFactors-BqvzNhFN.esm.js.map +0 -1
  322. package/dist/chunks/MSFT_sRGBFactors-BzPS1BeM.esm.min.js +0 -2
  323. package/dist/chunks/MSFT_sRGBFactors-BzPS1BeM.esm.min.js.map +0 -1
  324. package/dist/chunks/assetContainer-CaFtpYEC.esm.min.js +0 -2
  325. package/dist/chunks/assetContainer-CaFtpYEC.esm.min.js.map +0 -1
  326. package/dist/chunks/assetContainer-DEN9e8ap.esm.js +0 -1598
  327. package/dist/chunks/assetContainer-DEN9e8ap.esm.js.map +0 -1
  328. package/dist/chunks/basisTextureLoader-4lvRsW5R.esm.js +0 -600
  329. package/dist/chunks/basisTextureLoader-4lvRsW5R.esm.js.map +0 -1
  330. package/dist/chunks/basisTextureLoader-CSgqqtvQ.esm.min.js +0 -2
  331. package/dist/chunks/basisTextureLoader-CSgqqtvQ.esm.min.js.map +0 -1
  332. package/dist/chunks/ddsTextureLoader-BIGKoQfH.esm.min.js +0 -2
  333. package/dist/chunks/ddsTextureLoader-BIGKoQfH.esm.min.js.map +0 -1
  334. package/dist/chunks/ddsTextureLoader-WkW9Z98R.esm.js +0 -87
  335. package/dist/chunks/ddsTextureLoader-WkW9Z98R.esm.js.map +0 -1
  336. package/dist/chunks/default.fragment-C5qVdkwU.esm.min.js +0 -2
  337. package/dist/chunks/default.fragment-C5qVdkwU.esm.min.js.map +0 -1
  338. package/dist/chunks/default.fragment-KU3HcVdD.esm.js +0 -515
  339. package/dist/chunks/default.fragment-KU3HcVdD.esm.js.map +0 -1
  340. package/dist/chunks/default.fragment-YuNZ7QG_.esm.js +0 -456
  341. package/dist/chunks/default.fragment-YuNZ7QG_.esm.js.map +0 -1
  342. package/dist/chunks/default.fragment-tBVj8NVU.esm.min.js +0 -2
  343. package/dist/chunks/default.fragment-tBVj8NVU.esm.min.js.map +0 -1
  344. package/dist/chunks/default.vertex-BO-PPsjL.esm.min.js +0 -2
  345. package/dist/chunks/default.vertex-BO-PPsjL.esm.min.js.map +0 -1
  346. package/dist/chunks/default.vertex-BVid4c1x.esm.js +0 -199
  347. package/dist/chunks/default.vertex-BVid4c1x.esm.js.map +0 -1
  348. package/dist/chunks/default.vertex-DyVCLPqJ.esm.js +0 -178
  349. package/dist/chunks/default.vertex-DyVCLPqJ.esm.js.map +0 -1
  350. package/dist/chunks/default.vertex-Jx_lr96D.esm.min.js +0 -2
  351. package/dist/chunks/default.vertex-Jx_lr96D.esm.min.js.map +0 -1
  352. package/dist/chunks/defaultUboDeclaration-BCAmDlbI.esm.min.js +0 -2
  353. package/dist/chunks/defaultUboDeclaration-BCAmDlbI.esm.min.js.map +0 -1
  354. package/dist/chunks/defaultUboDeclaration-Bc5r1i_z.esm.js +0 -13
  355. package/dist/chunks/defaultUboDeclaration-Bc5r1i_z.esm.js.map +0 -1
  356. package/dist/chunks/defaultUboDeclaration-BuE-DHID.esm.js +0 -15
  357. package/dist/chunks/defaultUboDeclaration-BuE-DHID.esm.js.map +0 -1
  358. package/dist/chunks/defaultUboDeclaration-DSNWa2yC.esm.min.js +0 -2
  359. package/dist/chunks/defaultUboDeclaration-DSNWa2yC.esm.min.js.map +0 -1
  360. package/dist/chunks/envTextureLoader-DMQ4NJ4V.esm.js +0 -63
  361. package/dist/chunks/envTextureLoader-DMQ4NJ4V.esm.js.map +0 -1
  362. package/dist/chunks/envTextureLoader-a8A_Oy6u.esm.min.js +0 -2
  363. package/dist/chunks/envTextureLoader-a8A_Oy6u.esm.min.js.map +0 -1
  364. package/dist/chunks/environmentTextureTools-DUKiZwIi.esm.min.js +0 -2
  365. package/dist/chunks/environmentTextureTools-DUKiZwIi.esm.min.js.map +0 -1
  366. package/dist/chunks/environmentTextureTools-nMKhR78g.esm.js +0 -381
  367. package/dist/chunks/environmentTextureTools-nMKhR78g.esm.js.map +0 -1
  368. package/dist/chunks/exrTextureLoader-D5NU09ih.esm.js +0 -1682
  369. package/dist/chunks/exrTextureLoader-D5NU09ih.esm.js.map +0 -1
  370. package/dist/chunks/exrTextureLoader-N-X2bKA6.esm.min.js +0 -2
  371. package/dist/chunks/exrTextureLoader-N-X2bKA6.esm.min.js.map +0 -1
  372. package/dist/chunks/fogFragment-D6bC8Ff4.esm.min.js +0 -2
  373. package/dist/chunks/fogFragment-D6bC8Ff4.esm.min.js.map +0 -1
  374. package/dist/chunks/fogFragment-I5stYsjp.esm.js +0 -102
  375. package/dist/chunks/fogFragment-I5stYsjp.esm.js.map +0 -1
  376. package/dist/chunks/glTFLoader-Da2YOCGR.esm.js +0 -7552
  377. package/dist/chunks/glTFLoader-Da2YOCGR.esm.js.map +0 -1
  378. package/dist/chunks/glTFLoader-Is2_r9v2.esm.min.js +0 -2
  379. package/dist/chunks/glTFLoader-Is2_r9v2.esm.min.js.map +0 -1
  380. package/dist/chunks/glTFLoaderAnimation-Bglz6m7h.esm.min.js +0 -2
  381. package/dist/chunks/glTFLoaderAnimation-Bglz6m7h.esm.min.js.map +0 -1
  382. package/dist/chunks/glTFLoaderAnimation-CbznFn_D.esm.js +0 -77
  383. package/dist/chunks/glTFLoaderAnimation-CbznFn_D.esm.js.map +0 -1
  384. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js +0 -2
  385. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js.map +0 -1
  386. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js +0 -67
  387. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js.map +0 -1
  388. package/dist/chunks/harmonicsFunctions-BetF_GFT.esm.js +0 -35
  389. package/dist/chunks/harmonicsFunctions-BetF_GFT.esm.js.map +0 -1
  390. package/dist/chunks/harmonicsFunctions-CilRmaCi.esm.js +0 -34
  391. package/dist/chunks/harmonicsFunctions-CilRmaCi.esm.js.map +0 -1
  392. package/dist/chunks/harmonicsFunctions-DeWuwYX2.esm.min.js +0 -2
  393. package/dist/chunks/harmonicsFunctions-DeWuwYX2.esm.min.js.map +0 -1
  394. package/dist/chunks/harmonicsFunctions-DvXfJIer.esm.min.js +0 -2
  395. package/dist/chunks/harmonicsFunctions-DvXfJIer.esm.min.js.map +0 -1
  396. package/dist/chunks/hdrTextureLoader-Dcqnpgjb.esm.min.js +0 -2
  397. package/dist/chunks/hdrTextureLoader-Dcqnpgjb.esm.min.js.map +0 -1
  398. package/dist/chunks/hdrTextureLoader-byrfFp-O.esm.js +0 -252
  399. package/dist/chunks/hdrTextureLoader-byrfFp-O.esm.js.map +0 -1
  400. package/dist/chunks/helperFunctions-B7m7R064.esm.js +0 -108
  401. package/dist/chunks/helperFunctions-B7m7R064.esm.js.map +0 -1
  402. package/dist/chunks/helperFunctions-BAP7B_1V.esm.min.js +0 -2
  403. package/dist/chunks/helperFunctions-BAP7B_1V.esm.min.js.map +0 -1
  404. package/dist/chunks/helperFunctions-CigixUGL.esm.min.js +0 -2
  405. package/dist/chunks/helperFunctions-CigixUGL.esm.min.js.map +0 -1
  406. package/dist/chunks/helperFunctions-D2JAu3Um.esm.js +0 -80
  407. package/dist/chunks/helperFunctions-D2JAu3Um.esm.js.map +0 -1
  408. package/dist/chunks/index-Ba-YQVRw.esm.min.js +0 -57
  409. package/dist/chunks/index-Ba-YQVRw.esm.min.js.map +0 -1
  410. package/dist/chunks/index-DCMXQRx5.esm.js +0 -81652
  411. package/dist/chunks/index-DCMXQRx5.esm.js.map +0 -1
  412. package/dist/chunks/ktxTextureLoader-B7JJ6I6Z.esm.js +0 -814
  413. package/dist/chunks/ktxTextureLoader-B7JJ6I6Z.esm.js.map +0 -1
  414. package/dist/chunks/ktxTextureLoader-BVcuaoad.esm.min.js +0 -2
  415. package/dist/chunks/ktxTextureLoader-BVcuaoad.esm.min.js.map +0 -1
  416. package/dist/chunks/logDepthDeclaration-BJgjCQaD.esm.js +0 -42
  417. package/dist/chunks/logDepthDeclaration-BJgjCQaD.esm.js.map +0 -1
  418. package/dist/chunks/logDepthDeclaration-Bsw_jD9J.esm.js +0 -35
  419. package/dist/chunks/logDepthDeclaration-Bsw_jD9J.esm.js.map +0 -1
  420. package/dist/chunks/logDepthDeclaration-C0bLjDGt.esm.min.js +0 -2
  421. package/dist/chunks/logDepthDeclaration-C0bLjDGt.esm.min.js.map +0 -1
  422. package/dist/chunks/logDepthDeclaration-CF5JhF4_.esm.min.js +0 -2
  423. package/dist/chunks/logDepthDeclaration-CF5JhF4_.esm.min.js.map +0 -1
  424. package/dist/chunks/logDepthVertex-Bu3IKzw6.esm.min.js +0 -2
  425. package/dist/chunks/logDepthVertex-Bu3IKzw6.esm.min.js.map +0 -1
  426. package/dist/chunks/logDepthVertex-D6ApgK5s.esm.js +0 -77
  427. package/dist/chunks/logDepthVertex-D6ApgK5s.esm.js.map +0 -1
  428. package/dist/chunks/logDepthVertex-RSueoP5o.esm.min.js +0 -2
  429. package/dist/chunks/logDepthVertex-RSueoP5o.esm.min.js.map +0 -1
  430. package/dist/chunks/logDepthVertex-jmh6sp9r.esm.js +0 -605
  431. package/dist/chunks/logDepthVertex-jmh6sp9r.esm.js.map +0 -1
  432. package/dist/chunks/mainUVVaryingDeclaration-BNr0GD05.esm.min.js +0 -2
  433. package/dist/chunks/mainUVVaryingDeclaration-BNr0GD05.esm.min.js.map +0 -1
  434. package/dist/chunks/mainUVVaryingDeclaration-ZPe9Pfpm.esm.js +0 -11
  435. package/dist/chunks/mainUVVaryingDeclaration-ZPe9Pfpm.esm.js.map +0 -1
  436. package/dist/chunks/objFileLoader-B1j9OyPi.esm.js +0 -1280
  437. package/dist/chunks/objFileLoader-B1j9OyPi.esm.js.map +0 -1
  438. package/dist/chunks/objFileLoader-B2Z0kBGZ.esm.min.js +0 -2
  439. package/dist/chunks/objFileLoader-B2Z0kBGZ.esm.min.js.map +0 -1
  440. package/dist/chunks/oitFragment-C7OX8yZO.esm.js +0 -1166
  441. package/dist/chunks/oitFragment-C7OX8yZO.esm.js.map +0 -1
  442. package/dist/chunks/oitFragment-CROGuom4.esm.min.js +0 -2
  443. package/dist/chunks/oitFragment-CROGuom4.esm.min.js.map +0 -1
  444. package/dist/chunks/oitFragment-Cx8fxkh0.esm.min.js +0 -2
  445. package/dist/chunks/oitFragment-Cx8fxkh0.esm.min.js.map +0 -1
  446. package/dist/chunks/oitFragment-QaeREI-l.esm.js +0 -1210
  447. package/dist/chunks/oitFragment-QaeREI-l.esm.js.map +0 -1
  448. package/dist/chunks/pass.fragment-Cp76VdVm.esm.min.js +0 -2
  449. package/dist/chunks/pass.fragment-Cp76VdVm.esm.min.js.map +0 -1
  450. package/dist/chunks/pass.fragment-DWGZaulM.esm.js +0 -15
  451. package/dist/chunks/pass.fragment-DWGZaulM.esm.js.map +0 -1
  452. package/dist/chunks/pbr.fragment-1MSLuKxt.esm.min.js +0 -2
  453. package/dist/chunks/pbr.fragment-1MSLuKxt.esm.min.js.map +0 -1
  454. package/dist/chunks/pbr.fragment-CVVaxHTM.esm.js +0 -3172
  455. package/dist/chunks/pbr.fragment-CVVaxHTM.esm.js.map +0 -1
  456. package/dist/chunks/pbr.fragment-DjDXkzPC.esm.js +0 -3228
  457. package/dist/chunks/pbr.fragment-DjDXkzPC.esm.js.map +0 -1
  458. package/dist/chunks/pbr.fragment-u-qCDBnn.esm.min.js +0 -2
  459. package/dist/chunks/pbr.fragment-u-qCDBnn.esm.min.js.map +0 -1
  460. package/dist/chunks/pbr.vertex-CY3atoVH.esm.min.js +0 -2
  461. package/dist/chunks/pbr.vertex-CY3atoVH.esm.min.js.map +0 -1
  462. package/dist/chunks/pbr.vertex-CvBNpmrL.esm.js +0 -335
  463. package/dist/chunks/pbr.vertex-CvBNpmrL.esm.js.map +0 -1
  464. package/dist/chunks/pbr.vertex-Cz1vuu4g.esm.min.js +0 -2
  465. package/dist/chunks/pbr.vertex-Cz1vuu4g.esm.min.js.map +0 -1
  466. package/dist/chunks/pbr.vertex-DmN6aBEn.esm.js +0 -208
  467. package/dist/chunks/pbr.vertex-DmN6aBEn.esm.js.map +0 -1
  468. package/dist/chunks/postprocess.vertex-C1KLVO46.esm.min.js +0 -2
  469. package/dist/chunks/postprocess.vertex-C1KLVO46.esm.min.js.map +0 -1
  470. package/dist/chunks/postprocess.vertex-bRjFMMTw.esm.js +0 -20
  471. package/dist/chunks/postprocess.vertex-bRjFMMTw.esm.js.map +0 -1
  472. package/dist/chunks/rawTexture-CnRJFGS0.esm.min.js +0 -2
  473. package/dist/chunks/rawTexture-CnRJFGS0.esm.min.js.map +0 -1
  474. package/dist/chunks/rawTexture-DqO-U47x.esm.js +0 -562
  475. package/dist/chunks/rawTexture-DqO-U47x.esm.js.map +0 -1
  476. package/dist/chunks/rgbdDecode.fragment-B3x1NGLA.esm.js +0 -17
  477. package/dist/chunks/rgbdDecode.fragment-B3x1NGLA.esm.js.map +0 -1
  478. package/dist/chunks/rgbdDecode.fragment-Ced65A9P.esm.js +0 -17
  479. package/dist/chunks/rgbdDecode.fragment-Ced65A9P.esm.js.map +0 -1
  480. package/dist/chunks/rgbdDecode.fragment-DeTDMkx-.esm.min.js +0 -2
  481. package/dist/chunks/rgbdDecode.fragment-DeTDMkx-.esm.min.js.map +0 -1
  482. package/dist/chunks/rgbdDecode.fragment-I4vSkcn6.esm.min.js +0 -2
  483. package/dist/chunks/rgbdDecode.fragment-I4vSkcn6.esm.min.js.map +0 -1
  484. package/dist/chunks/rgbdEncode.fragment-BI_5lpaM.esm.js +0 -17
  485. package/dist/chunks/rgbdEncode.fragment-BI_5lpaM.esm.js.map +0 -1
  486. package/dist/chunks/rgbdEncode.fragment-CvsdJfL-.esm.min.js +0 -2
  487. package/dist/chunks/rgbdEncode.fragment-CvsdJfL-.esm.min.js.map +0 -1
  488. package/dist/chunks/rgbdEncode.fragment-DBV9U7_S.esm.js +0 -17
  489. package/dist/chunks/rgbdEncode.fragment-DBV9U7_S.esm.js.map +0 -1
  490. package/dist/chunks/rgbdEncode.fragment-Ga_wck8r.esm.min.js +0 -2
  491. package/dist/chunks/rgbdEncode.fragment-Ga_wck8r.esm.min.js.map +0 -1
  492. package/dist/chunks/splatFileLoader-CqZQp8gT.esm.min.js +0 -2
  493. package/dist/chunks/splatFileLoader-CqZQp8gT.esm.min.js.map +0 -1
  494. package/dist/chunks/splatFileLoader-Ojz6wPQF.esm.js +0 -3154
  495. package/dist/chunks/splatFileLoader-Ojz6wPQF.esm.js.map +0 -1
  496. package/dist/chunks/standardMaterial-BRFkCYek.esm.min.js +0 -2
  497. package/dist/chunks/standardMaterial-BRFkCYek.esm.min.js.map +0 -1
  498. package/dist/chunks/standardMaterial-CrPdkeQ7.esm.js +0 -1809
  499. package/dist/chunks/standardMaterial-CrPdkeQ7.esm.js.map +0 -1
  500. package/dist/chunks/stlFileLoader-CZ4gnzj5.esm.js +0 -237
  501. package/dist/chunks/stlFileLoader-CZ4gnzj5.esm.js.map +0 -1
  502. package/dist/chunks/stlFileLoader-vUsEa3k7.esm.min.js +0 -2
  503. package/dist/chunks/stlFileLoader-vUsEa3k7.esm.min.js.map +0 -1
  504. package/dist/chunks/tgaTextureLoader-CWw7TE84.esm.js +0 -349
  505. package/dist/chunks/tgaTextureLoader-CWw7TE84.esm.js.map +0 -1
  506. package/dist/chunks/tgaTextureLoader-z-0S-ufz.esm.min.js +0 -2
  507. package/dist/chunks/tgaTextureLoader-z-0S-ufz.esm.min.js.map +0 -1
  508. package/dist/chunks/thinInstanceMesh-BPnShKmm.esm.min.js +0 -2
  509. package/dist/chunks/thinInstanceMesh-BPnShKmm.esm.min.js.map +0 -1
  510. package/dist/chunks/thinInstanceMesh-BvcXpcNe.esm.js +0 -314
  511. package/dist/chunks/thinInstanceMesh-BvcXpcNe.esm.js.map +0 -1
  512. package/dist/chunks/vertexColorMixing-BY_oWZih.esm.min.js +0 -2
  513. package/dist/chunks/vertexColorMixing-BY_oWZih.esm.min.js.map +0 -1
  514. package/dist/chunks/vertexColorMixing-Cq9NDkQU.esm.js +0 -528
  515. package/dist/chunks/vertexColorMixing-Cq9NDkQU.esm.js.map +0 -1
  516. package/dist/chunks/workerPool-BUOov2K1.esm.js +0 -122
  517. package/dist/chunks/workerPool-BUOov2K1.esm.js.map +0 -1
  518. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js +0 -2
  519. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js.map +0 -1
  520. package/lib/index.d.ts +0 -237
  521. package/lib/index.js +0 -871
  522. package/lib/index.js.map +0 -1
@@ -1,306 +0,0 @@
1
- import { ax as PBRMaterial, ak as unregisterGLTFExtension, al as registerGLTFExtension, u as Constants, aq as Observable, e as Tools, ay as RenderTargetTexture } from './index-DCMXQRx5.esm.js';
2
- import { GLTFLoader } from './glTFLoader-Da2YOCGR.esm.js';
3
- import './rawTexture-DqO-U47x.esm.js';
4
- import './assetContainer-DEN9e8ap.esm.js';
5
- import './glTFLoaderAnimation-CbznFn_D.esm.js';
6
-
7
- /**
8
- * A class to handle setting up the rendering of opaque objects to be shown through transmissive objects.
9
- */
10
- class TransmissionHelper {
11
- /**
12
- * Creates the default options for the helper.
13
- * @returns the default options
14
- */
15
- static _GetDefaultOptions() {
16
- return {
17
- renderSize: 1024,
18
- samples: 4,
19
- lodGenerationScale: 1,
20
- lodGenerationOffset: -4,
21
- renderTargetTextureType: Constants.TEXTURETYPE_HALF_FLOAT,
22
- generateMipmaps: true,
23
- };
24
- }
25
- /**
26
- * constructor
27
- * @param options Defines the options we want to customize the helper
28
- * @param scene The scene to add the material to
29
- */
30
- constructor(options, scene) {
31
- this._opaqueRenderTarget = null;
32
- this._opaqueMeshesCache = [];
33
- this._transparentMeshesCache = [];
34
- this._materialObservers = {};
35
- this._options = {
36
- ...TransmissionHelper._GetDefaultOptions(),
37
- ...options,
38
- };
39
- this._scene = scene;
40
- this._scene._transmissionHelper = this;
41
- this.onErrorObservable = new Observable();
42
- this._scene.onDisposeObservable.addOnce(() => {
43
- this.dispose();
44
- });
45
- this._parseScene();
46
- this._setupRenderTargets();
47
- }
48
- /**
49
- * Updates the background according to the new options
50
- * @param options
51
- */
52
- updateOptions(options) {
53
- // First check if any options are actually being changed. If not, exit.
54
- const newValues = Object.keys(options).filter((key) => this._options[key] !== options[key]);
55
- if (!newValues.length) {
56
- return;
57
- }
58
- const newOptions = {
59
- ...this._options,
60
- ...options,
61
- };
62
- const oldOptions = this._options;
63
- this._options = newOptions;
64
- // If size changes, recreate everything
65
- if (newOptions.renderSize !== oldOptions.renderSize ||
66
- newOptions.renderTargetTextureType !== oldOptions.renderTargetTextureType ||
67
- newOptions.generateMipmaps !== oldOptions.generateMipmaps ||
68
- !this._opaqueRenderTarget) {
69
- this._setupRenderTargets();
70
- }
71
- else {
72
- this._opaqueRenderTarget.samples = newOptions.samples;
73
- this._opaqueRenderTarget.lodGenerationScale = newOptions.lodGenerationScale;
74
- this._opaqueRenderTarget.lodGenerationOffset = newOptions.lodGenerationOffset;
75
- }
76
- }
77
- /**
78
- * @returns the opaque render target texture or null if not available.
79
- */
80
- getOpaqueTarget() {
81
- return this._opaqueRenderTarget;
82
- }
83
- _shouldRenderAsTransmission(material) {
84
- if (!material) {
85
- return false;
86
- }
87
- if (material instanceof PBRMaterial && material.subSurface.isRefractionEnabled) {
88
- return true;
89
- }
90
- return false;
91
- }
92
- _addMesh(mesh) {
93
- this._materialObservers[mesh.uniqueId] = mesh.onMaterialChangedObservable.add(this._onMeshMaterialChanged.bind(this));
94
- // we need to defer the processing because _addMesh may be called as part as an instance mesh creation, in which case some
95
- // internal properties are not setup yet, like _sourceMesh (needed when doing mesh.material below)
96
- Tools.SetImmediate(() => {
97
- if (this._shouldRenderAsTransmission(mesh.material)) {
98
- mesh.material.refractionTexture = this._opaqueRenderTarget;
99
- if (this._transparentMeshesCache.indexOf(mesh) === -1) {
100
- this._transparentMeshesCache.push(mesh);
101
- }
102
- }
103
- else {
104
- if (this._opaqueMeshesCache.indexOf(mesh) === -1) {
105
- this._opaqueMeshesCache.push(mesh);
106
- }
107
- }
108
- });
109
- }
110
- _removeMesh(mesh) {
111
- mesh.onMaterialChangedObservable.remove(this._materialObservers[mesh.uniqueId]);
112
- delete this._materialObservers[mesh.uniqueId];
113
- let idx = this._transparentMeshesCache.indexOf(mesh);
114
- if (idx !== -1) {
115
- this._transparentMeshesCache.splice(idx, 1);
116
- }
117
- idx = this._opaqueMeshesCache.indexOf(mesh);
118
- if (idx !== -1) {
119
- this._opaqueMeshesCache.splice(idx, 1);
120
- }
121
- }
122
- _parseScene() {
123
- this._scene.meshes.forEach(this._addMesh.bind(this));
124
- // Listen for when a mesh is added to the scene and add it to our cache lists.
125
- this._scene.onNewMeshAddedObservable.add(this._addMesh.bind(this));
126
- // Listen for when a mesh is removed from to the scene and remove it from our cache lists.
127
- this._scene.onMeshRemovedObservable.add(this._removeMesh.bind(this));
128
- }
129
- // When one of the meshes in the scene has its material changed, make sure that it's in the correct cache list.
130
- _onMeshMaterialChanged(mesh) {
131
- const transparentIdx = this._transparentMeshesCache.indexOf(mesh);
132
- const opaqueIdx = this._opaqueMeshesCache.indexOf(mesh);
133
- // If the material is transparent, make sure that it's added to the transparent list and removed from the opaque list
134
- const useTransmission = this._shouldRenderAsTransmission(mesh.material);
135
- if (useTransmission) {
136
- if (mesh.material instanceof PBRMaterial) {
137
- mesh.material.subSurface.refractionTexture = this._opaqueRenderTarget;
138
- }
139
- if (opaqueIdx !== -1) {
140
- this._opaqueMeshesCache.splice(opaqueIdx, 1);
141
- this._transparentMeshesCache.push(mesh);
142
- }
143
- else if (transparentIdx === -1) {
144
- this._transparentMeshesCache.push(mesh);
145
- }
146
- // If the material is opaque, make sure that it's added to the opaque list and removed from the transparent list
147
- }
148
- else {
149
- if (transparentIdx !== -1) {
150
- this._transparentMeshesCache.splice(transparentIdx, 1);
151
- this._opaqueMeshesCache.push(mesh);
152
- }
153
- else if (opaqueIdx === -1) {
154
- this._opaqueMeshesCache.push(mesh);
155
- }
156
- }
157
- }
158
- /**
159
- * @internal
160
- * Check if the opaque render target has not been disposed and can still be used.
161
- * @returns
162
- */
163
- _isRenderTargetValid() {
164
- return this._opaqueRenderTarget?.getInternalTexture() !== null;
165
- }
166
- /**
167
- * @internal
168
- * Setup the render targets according to the specified options.
169
- */
170
- _setupRenderTargets() {
171
- if (this._opaqueRenderTarget) {
172
- this._opaqueRenderTarget.dispose();
173
- }
174
- this._opaqueRenderTarget = new RenderTargetTexture("opaqueSceneTexture", this._options.renderSize, this._scene, this._options.generateMipmaps, undefined, this._options.renderTargetTextureType);
175
- this._opaqueRenderTarget.ignoreCameraViewport = true;
176
- this._opaqueRenderTarget.renderList = this._opaqueMeshesCache;
177
- this._opaqueRenderTarget.clearColor = this._options.clearColor?.clone() ?? this._scene.clearColor.clone();
178
- this._opaqueRenderTarget.gammaSpace = false;
179
- this._opaqueRenderTarget.lodGenerationScale = this._options.lodGenerationScale;
180
- this._opaqueRenderTarget.lodGenerationOffset = this._options.lodGenerationOffset;
181
- this._opaqueRenderTarget.samples = this._options.samples;
182
- this._opaqueRenderTarget.renderSprites = true;
183
- this._opaqueRenderTarget.renderParticles = true;
184
- let sceneImageProcessingapplyByPostProcess;
185
- let saveSceneEnvIntensity;
186
- this._opaqueRenderTarget.onBeforeBindObservable.add((opaqueRenderTarget) => {
187
- saveSceneEnvIntensity = this._scene.environmentIntensity;
188
- this._scene.environmentIntensity = 1.0;
189
- sceneImageProcessingapplyByPostProcess = this._scene.imageProcessingConfiguration.applyByPostProcess;
190
- if (!this._options.clearColor) {
191
- this._scene.clearColor.toLinearSpaceToRef(opaqueRenderTarget.clearColor, this._scene.getEngine().useExactSrgbConversions);
192
- }
193
- else {
194
- opaqueRenderTarget.clearColor.copyFrom(this._options.clearColor);
195
- }
196
- // we do not use the applyByPostProcess setter to avoid flagging all the materials as "image processing dirty"!
197
- this._scene.imageProcessingConfiguration._applyByPostProcess = true;
198
- });
199
- this._opaqueRenderTarget.onAfterUnbindObservable.add(() => {
200
- this._scene.environmentIntensity = saveSceneEnvIntensity;
201
- this._scene.imageProcessingConfiguration._applyByPostProcess = sceneImageProcessingapplyByPostProcess;
202
- });
203
- this._transparentMeshesCache.forEach((mesh) => {
204
- if (this._shouldRenderAsTransmission(mesh.material)) {
205
- mesh.material.refractionTexture = this._opaqueRenderTarget;
206
- }
207
- });
208
- }
209
- /**
210
- * Dispose all the elements created by the Helper.
211
- */
212
- dispose() {
213
- this._scene._transmissionHelper = undefined;
214
- if (this._opaqueRenderTarget) {
215
- this._opaqueRenderTarget.dispose();
216
- this._opaqueRenderTarget = null;
217
- }
218
- this._transparentMeshesCache = [];
219
- this._opaqueMeshesCache = [];
220
- }
221
- }
222
- const NAME = "KHR_materials_transmission";
223
- /**
224
- * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_transmission/README.md)
225
- */
226
- // eslint-disable-next-line @typescript-eslint/naming-convention
227
- class KHR_materials_transmission {
228
- /**
229
- * @internal
230
- */
231
- constructor(loader) {
232
- /**
233
- * The name of this extension.
234
- */
235
- this.name = NAME;
236
- /**
237
- * Defines a number that determines the order the extensions are applied.
238
- */
239
- this.order = 175;
240
- this._loader = loader;
241
- this.enabled = this._loader.isExtensionUsed(NAME);
242
- if (this.enabled) {
243
- loader.parent.transparencyAsCoverage = true;
244
- }
245
- }
246
- /** @internal */
247
- dispose() {
248
- this._loader = null;
249
- }
250
- /**
251
- * @internal
252
- */
253
- loadMaterialPropertiesAsync(context, material, babylonMaterial) {
254
- return GLTFLoader.LoadExtensionAsync(context, material, this.name, (extensionContext, extension) => {
255
- const promises = new Array();
256
- promises.push(this._loader.loadMaterialPropertiesAsync(context, material, babylonMaterial));
257
- promises.push(this._loadTransparentPropertiesAsync(extensionContext, material, babylonMaterial, extension));
258
- return Promise.all(promises).then(() => { });
259
- });
260
- }
261
- _loadTransparentPropertiesAsync(context, material, babylonMaterial, extension) {
262
- if (!(babylonMaterial instanceof PBRMaterial)) {
263
- throw new Error(`${context}: Material type not supported`);
264
- }
265
- const pbrMaterial = babylonMaterial;
266
- // Enables "refraction" texture which represents transmitted light.
267
- pbrMaterial.subSurface.isRefractionEnabled = true;
268
- // Since this extension models thin-surface transmission only, we must make IOR = 1.0
269
- pbrMaterial.subSurface.volumeIndexOfRefraction = 1.0;
270
- // Albedo colour will tint transmission.
271
- pbrMaterial.subSurface.useAlbedoToTintRefraction = true;
272
- if (extension.transmissionFactor !== undefined) {
273
- pbrMaterial.subSurface.refractionIntensity = extension.transmissionFactor;
274
- const scene = pbrMaterial.getScene();
275
- if (pbrMaterial.subSurface.refractionIntensity && !scene._transmissionHelper) {
276
- new TransmissionHelper({}, pbrMaterial.getScene());
277
- }
278
- else if (pbrMaterial.subSurface.refractionIntensity && !scene._transmissionHelper?._isRenderTargetValid()) {
279
- // If the render target is not valid, recreate it.
280
- scene._transmissionHelper?._setupRenderTargets();
281
- }
282
- }
283
- else {
284
- pbrMaterial.subSurface.refractionIntensity = 0.0;
285
- pbrMaterial.subSurface.isRefractionEnabled = false;
286
- return Promise.resolve();
287
- }
288
- pbrMaterial.subSurface.minimumThickness = 0.0;
289
- pbrMaterial.subSurface.maximumThickness = 0.0;
290
- if (extension.transmissionTexture) {
291
- extension.transmissionTexture.nonColorData = true;
292
- return this._loader.loadTextureInfoAsync(`${context}/transmissionTexture`, extension.transmissionTexture, undefined).then((texture) => {
293
- pbrMaterial.subSurface.refractionIntensityTexture = texture;
294
- pbrMaterial.subSurface.useGltfStyleTextures = true;
295
- });
296
- }
297
- else {
298
- return Promise.resolve();
299
- }
300
- }
301
- }
302
- unregisterGLTFExtension(NAME);
303
- registerGLTFExtension(NAME, true, (loader) => new KHR_materials_transmission(loader));
304
-
305
- export { KHR_materials_transmission };
306
- //# sourceMappingURL=KHR_materials_transmission-B6NtjEPp.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KHR_materials_transmission-B6NtjEPp.esm.js","sources":["../../../../../dev/loaders/dist/glTF/2.0/Extensions/KHR_materials_transmission.js"],"sourcesContent":["import { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\nimport { GLTFLoader } from \"../glTFLoader\";\nimport { RenderTargetTexture } from \"core/Materials/Textures/renderTargetTexture\";\nimport { Observable } from \"core/Misc/observable\";\nimport { Constants } from \"core/Engines/constants\";\nimport { Tools } from \"core/Misc/tools\";\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\n/**\n * A class to handle setting up the rendering of opaque objects to be shown through transmissive objects.\n */\nclass TransmissionHelper {\n /**\n * Creates the default options for the helper.\n * @returns the default options\n */\n static _GetDefaultOptions() {\n return {\n renderSize: 1024,\n samples: 4,\n lodGenerationScale: 1,\n lodGenerationOffset: -4,\n renderTargetTextureType: Constants.TEXTURETYPE_HALF_FLOAT,\n generateMipmaps: true,\n };\n }\n /**\n * constructor\n * @param options Defines the options we want to customize the helper\n * @param scene The scene to add the material to\n */\n constructor(options, scene) {\n this._opaqueRenderTarget = null;\n this._opaqueMeshesCache = [];\n this._transparentMeshesCache = [];\n this._materialObservers = {};\n this._options = {\n ...TransmissionHelper._GetDefaultOptions(),\n ...options,\n };\n this._scene = scene;\n this._scene._transmissionHelper = this;\n this.onErrorObservable = new Observable();\n this._scene.onDisposeObservable.addOnce(() => {\n this.dispose();\n });\n this._parseScene();\n this._setupRenderTargets();\n }\n /**\n * Updates the background according to the new options\n * @param options\n */\n updateOptions(options) {\n // First check if any options are actually being changed. If not, exit.\n const newValues = Object.keys(options).filter((key) => this._options[key] !== options[key]);\n if (!newValues.length) {\n return;\n }\n const newOptions = {\n ...this._options,\n ...options,\n };\n const oldOptions = this._options;\n this._options = newOptions;\n // If size changes, recreate everything\n if (newOptions.renderSize !== oldOptions.renderSize ||\n newOptions.renderTargetTextureType !== oldOptions.renderTargetTextureType ||\n newOptions.generateMipmaps !== oldOptions.generateMipmaps ||\n !this._opaqueRenderTarget) {\n this._setupRenderTargets();\n }\n else {\n this._opaqueRenderTarget.samples = newOptions.samples;\n this._opaqueRenderTarget.lodGenerationScale = newOptions.lodGenerationScale;\n this._opaqueRenderTarget.lodGenerationOffset = newOptions.lodGenerationOffset;\n }\n }\n /**\n * @returns the opaque render target texture or null if not available.\n */\n getOpaqueTarget() {\n return this._opaqueRenderTarget;\n }\n _shouldRenderAsTransmission(material) {\n if (!material) {\n return false;\n }\n if (material instanceof PBRMaterial && material.subSurface.isRefractionEnabled) {\n return true;\n }\n return false;\n }\n _addMesh(mesh) {\n this._materialObservers[mesh.uniqueId] = mesh.onMaterialChangedObservable.add(this._onMeshMaterialChanged.bind(this));\n // we need to defer the processing because _addMesh may be called as part as an instance mesh creation, in which case some\n // internal properties are not setup yet, like _sourceMesh (needed when doing mesh.material below)\n Tools.SetImmediate(() => {\n if (this._shouldRenderAsTransmission(mesh.material)) {\n mesh.material.refractionTexture = this._opaqueRenderTarget;\n if (this._transparentMeshesCache.indexOf(mesh) === -1) {\n this._transparentMeshesCache.push(mesh);\n }\n }\n else {\n if (this._opaqueMeshesCache.indexOf(mesh) === -1) {\n this._opaqueMeshesCache.push(mesh);\n }\n }\n });\n }\n _removeMesh(mesh) {\n mesh.onMaterialChangedObservable.remove(this._materialObservers[mesh.uniqueId]);\n delete this._materialObservers[mesh.uniqueId];\n let idx = this._transparentMeshesCache.indexOf(mesh);\n if (idx !== -1) {\n this._transparentMeshesCache.splice(idx, 1);\n }\n idx = this._opaqueMeshesCache.indexOf(mesh);\n if (idx !== -1) {\n this._opaqueMeshesCache.splice(idx, 1);\n }\n }\n _parseScene() {\n this._scene.meshes.forEach(this._addMesh.bind(this));\n // Listen for when a mesh is added to the scene and add it to our cache lists.\n this._scene.onNewMeshAddedObservable.add(this._addMesh.bind(this));\n // Listen for when a mesh is removed from to the scene and remove it from our cache lists.\n this._scene.onMeshRemovedObservable.add(this._removeMesh.bind(this));\n }\n // When one of the meshes in the scene has its material changed, make sure that it's in the correct cache list.\n _onMeshMaterialChanged(mesh) {\n const transparentIdx = this._transparentMeshesCache.indexOf(mesh);\n const opaqueIdx = this._opaqueMeshesCache.indexOf(mesh);\n // If the material is transparent, make sure that it's added to the transparent list and removed from the opaque list\n const useTransmission = this._shouldRenderAsTransmission(mesh.material);\n if (useTransmission) {\n if (mesh.material instanceof PBRMaterial) {\n mesh.material.subSurface.refractionTexture = this._opaqueRenderTarget;\n }\n if (opaqueIdx !== -1) {\n this._opaqueMeshesCache.splice(opaqueIdx, 1);\n this._transparentMeshesCache.push(mesh);\n }\n else if (transparentIdx === -1) {\n this._transparentMeshesCache.push(mesh);\n }\n // If the material is opaque, make sure that it's added to the opaque list and removed from the transparent list\n }\n else {\n if (transparentIdx !== -1) {\n this._transparentMeshesCache.splice(transparentIdx, 1);\n this._opaqueMeshesCache.push(mesh);\n }\n else if (opaqueIdx === -1) {\n this._opaqueMeshesCache.push(mesh);\n }\n }\n }\n /**\n * @internal\n * Check if the opaque render target has not been disposed and can still be used.\n * @returns\n */\n _isRenderTargetValid() {\n return this._opaqueRenderTarget?.getInternalTexture() !== null;\n }\n /**\n * @internal\n * Setup the render targets according to the specified options.\n */\n _setupRenderTargets() {\n if (this._opaqueRenderTarget) {\n this._opaqueRenderTarget.dispose();\n }\n this._opaqueRenderTarget = new RenderTargetTexture(\"opaqueSceneTexture\", this._options.renderSize, this._scene, this._options.generateMipmaps, undefined, this._options.renderTargetTextureType);\n this._opaqueRenderTarget.ignoreCameraViewport = true;\n this._opaqueRenderTarget.renderList = this._opaqueMeshesCache;\n this._opaqueRenderTarget.clearColor = this._options.clearColor?.clone() ?? this._scene.clearColor.clone();\n this._opaqueRenderTarget.gammaSpace = false;\n this._opaqueRenderTarget.lodGenerationScale = this._options.lodGenerationScale;\n this._opaqueRenderTarget.lodGenerationOffset = this._options.lodGenerationOffset;\n this._opaqueRenderTarget.samples = this._options.samples;\n this._opaqueRenderTarget.renderSprites = true;\n this._opaqueRenderTarget.renderParticles = true;\n let sceneImageProcessingapplyByPostProcess;\n let saveSceneEnvIntensity;\n this._opaqueRenderTarget.onBeforeBindObservable.add((opaqueRenderTarget) => {\n saveSceneEnvIntensity = this._scene.environmentIntensity;\n this._scene.environmentIntensity = 1.0;\n sceneImageProcessingapplyByPostProcess = this._scene.imageProcessingConfiguration.applyByPostProcess;\n if (!this._options.clearColor) {\n this._scene.clearColor.toLinearSpaceToRef(opaqueRenderTarget.clearColor, this._scene.getEngine().useExactSrgbConversions);\n }\n else {\n opaqueRenderTarget.clearColor.copyFrom(this._options.clearColor);\n }\n // we do not use the applyByPostProcess setter to avoid flagging all the materials as \"image processing dirty\"!\n this._scene.imageProcessingConfiguration._applyByPostProcess = true;\n });\n this._opaqueRenderTarget.onAfterUnbindObservable.add(() => {\n this._scene.environmentIntensity = saveSceneEnvIntensity;\n this._scene.imageProcessingConfiguration._applyByPostProcess = sceneImageProcessingapplyByPostProcess;\n });\n this._transparentMeshesCache.forEach((mesh) => {\n if (this._shouldRenderAsTransmission(mesh.material)) {\n mesh.material.refractionTexture = this._opaqueRenderTarget;\n }\n });\n }\n /**\n * Dispose all the elements created by the Helper.\n */\n dispose() {\n this._scene._transmissionHelper = undefined;\n if (this._opaqueRenderTarget) {\n this._opaqueRenderTarget.dispose();\n this._opaqueRenderTarget = null;\n }\n this._transparentMeshesCache = [];\n this._opaqueMeshesCache = [];\n }\n}\nconst NAME = \"KHR_materials_transmission\";\n/**\n * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_transmission/README.md)\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class KHR_materials_transmission {\n /**\n * @internal\n */\n constructor(loader) {\n /**\n * The name of this extension.\n */\n this.name = NAME;\n /**\n * Defines a number that determines the order the extensions are applied.\n */\n this.order = 175;\n this._loader = loader;\n this.enabled = this._loader.isExtensionUsed(NAME);\n if (this.enabled) {\n loader.parent.transparencyAsCoverage = true;\n }\n }\n /** @internal */\n dispose() {\n this._loader = null;\n }\n /**\n * @internal\n */\n loadMaterialPropertiesAsync(context, material, babylonMaterial) {\n return GLTFLoader.LoadExtensionAsync(context, material, this.name, (extensionContext, extension) => {\n const promises = new Array();\n promises.push(this._loader.loadMaterialPropertiesAsync(context, material, babylonMaterial));\n promises.push(this._loadTransparentPropertiesAsync(extensionContext, material, babylonMaterial, extension));\n return Promise.all(promises).then(() => { });\n });\n }\n _loadTransparentPropertiesAsync(context, material, babylonMaterial, extension) {\n if (!(babylonMaterial instanceof PBRMaterial)) {\n throw new Error(`${context}: Material type not supported`);\n }\n const pbrMaterial = babylonMaterial;\n // Enables \"refraction\" texture which represents transmitted light.\n pbrMaterial.subSurface.isRefractionEnabled = true;\n // Since this extension models thin-surface transmission only, we must make IOR = 1.0\n pbrMaterial.subSurface.volumeIndexOfRefraction = 1.0;\n // Albedo colour will tint transmission.\n pbrMaterial.subSurface.useAlbedoToTintRefraction = true;\n if (extension.transmissionFactor !== undefined) {\n pbrMaterial.subSurface.refractionIntensity = extension.transmissionFactor;\n const scene = pbrMaterial.getScene();\n if (pbrMaterial.subSurface.refractionIntensity && !scene._transmissionHelper) {\n new TransmissionHelper({}, pbrMaterial.getScene());\n }\n else if (pbrMaterial.subSurface.refractionIntensity && !scene._transmissionHelper?._isRenderTargetValid()) {\n // If the render target is not valid, recreate it.\n scene._transmissionHelper?._setupRenderTargets();\n }\n }\n else {\n pbrMaterial.subSurface.refractionIntensity = 0.0;\n pbrMaterial.subSurface.isRefractionEnabled = false;\n return Promise.resolve();\n }\n pbrMaterial.subSurface.minimumThickness = 0.0;\n pbrMaterial.subSurface.maximumThickness = 0.0;\n if (extension.transmissionTexture) {\n extension.transmissionTexture.nonColorData = true;\n return this._loader.loadTextureInfoAsync(`${context}/transmissionTexture`, extension.transmissionTexture, undefined).then((texture) => {\n pbrMaterial.subSurface.refractionIntensityTexture = texture;\n pbrMaterial.subSurface.useGltfStyleTextures = true;\n });\n }\n else {\n return Promise.resolve();\n }\n }\n}\nunregisterGLTFExtension(NAME);\nregisterGLTFExtension(NAME, true, (loader) => new KHR_materials_transmission(loader));\n//# sourceMappingURL=KHR_materials_transmission.js.map"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{ax as e,ak as s,al as t,u as r,aq as a,e as n,ay as i}from"./index-Ba-YQVRw.esm.min.js";import{GLTFLoader as o}from"./glTFLoader-Is2_r9v2.esm.min.js";import"./rawTexture-CnRJFGS0.esm.min.js";import"./assetContainer-CaFtpYEC.esm.min.js";import"./glTFLoaderAnimation-Bglz6m7h.esm.min.js";class h{static _GetDefaultOptions(){return{renderSize:1024,samples:4,lodGenerationScale:1,lodGenerationOffset:-4,renderTargetTextureType:r.TEXTURETYPE_HALF_FLOAT,generateMipmaps:!0}}constructor(e,s){this._opaqueRenderTarget=null,this._opaqueMeshesCache=[],this._transparentMeshesCache=[],this._materialObservers={},this._options={...h._GetDefaultOptions(),...e},this._scene=s,this._scene._transmissionHelper=this,this.onErrorObservable=new a,this._scene.onDisposeObservable.addOnce((()=>{this.dispose()})),this._parseScene(),this._setupRenderTargets()}updateOptions(e){if(!Object.keys(e).filter((s=>this._options[s]!==e[s])).length)return;const s={...this._options,...e},t=this._options;this._options=s,s.renderSize===t.renderSize&&s.renderTargetTextureType===t.renderTargetTextureType&&s.generateMipmaps===t.generateMipmaps&&this._opaqueRenderTarget?(this._opaqueRenderTarget.samples=s.samples,this._opaqueRenderTarget.lodGenerationScale=s.lodGenerationScale,this._opaqueRenderTarget.lodGenerationOffset=s.lodGenerationOffset):this._setupRenderTargets()}getOpaqueTarget(){return this._opaqueRenderTarget}_shouldRenderAsTransmission(s){return!!s&&!!(s instanceof e&&s.subSurface.isRefractionEnabled)}_addMesh(e){this._materialObservers[e.uniqueId]=e.onMaterialChangedObservable.add(this._onMeshMaterialChanged.bind(this)),n.SetImmediate((()=>{this._shouldRenderAsTransmission(e.material)?(e.material.refractionTexture=this._opaqueRenderTarget,-1===this._transparentMeshesCache.indexOf(e)&&this._transparentMeshesCache.push(e)):-1===this._opaqueMeshesCache.indexOf(e)&&this._opaqueMeshesCache.push(e)}))}_removeMesh(e){e.onMaterialChangedObservable.remove(this._materialObservers[e.uniqueId]),delete this._materialObservers[e.uniqueId];let s=this._transparentMeshesCache.indexOf(e);-1!==s&&this._transparentMeshesCache.splice(s,1),s=this._opaqueMeshesCache.indexOf(e),-1!==s&&this._opaqueMeshesCache.splice(s,1)}_parseScene(){this._scene.meshes.forEach(this._addMesh.bind(this)),this._scene.onNewMeshAddedObservable.add(this._addMesh.bind(this)),this._scene.onMeshRemovedObservable.add(this._removeMesh.bind(this))}_onMeshMaterialChanged(s){const t=this._transparentMeshesCache.indexOf(s),r=this._opaqueMeshesCache.indexOf(s);this._shouldRenderAsTransmission(s.material)?(s.material instanceof e&&(s.material.subSurface.refractionTexture=this._opaqueRenderTarget),-1!==r?(this._opaqueMeshesCache.splice(r,1),this._transparentMeshesCache.push(s)):-1===t&&this._transparentMeshesCache.push(s)):-1!==t?(this._transparentMeshesCache.splice(t,1),this._opaqueMeshesCache.push(s)):-1===r&&this._opaqueMeshesCache.push(s)}_isRenderTargetValid(){return null!==this._opaqueRenderTarget?.getInternalTexture()}_setupRenderTargets(){let e,s;this._opaqueRenderTarget&&this._opaqueRenderTarget.dispose(),this._opaqueRenderTarget=new i("opaqueSceneTexture",this._options.renderSize,this._scene,this._options.generateMipmaps,void 0,this._options.renderTargetTextureType),this._opaqueRenderTarget.ignoreCameraViewport=!0,this._opaqueRenderTarget.renderList=this._opaqueMeshesCache,this._opaqueRenderTarget.clearColor=this._options.clearColor?.clone()??this._scene.clearColor.clone(),this._opaqueRenderTarget.gammaSpace=!1,this._opaqueRenderTarget.lodGenerationScale=this._options.lodGenerationScale,this._opaqueRenderTarget.lodGenerationOffset=this._options.lodGenerationOffset,this._opaqueRenderTarget.samples=this._options.samples,this._opaqueRenderTarget.renderSprites=!0,this._opaqueRenderTarget.renderParticles=!0,this._opaqueRenderTarget.onBeforeBindObservable.add((t=>{s=this._scene.environmentIntensity,this._scene.environmentIntensity=1,e=this._scene.imageProcessingConfiguration.applyByPostProcess,this._options.clearColor?t.clearColor.copyFrom(this._options.clearColor):this._scene.clearColor.toLinearSpaceToRef(t.clearColor,this._scene.getEngine().useExactSrgbConversions),this._scene.imageProcessingConfiguration._applyByPostProcess=!0})),this._opaqueRenderTarget.onAfterUnbindObservable.add((()=>{this._scene.environmentIntensity=s,this._scene.imageProcessingConfiguration._applyByPostProcess=e})),this._transparentMeshesCache.forEach((e=>{this._shouldRenderAsTransmission(e.material)&&(e.material.refractionTexture=this._opaqueRenderTarget)}))}dispose(){this._scene._transmissionHelper=void 0,this._opaqueRenderTarget&&(this._opaqueRenderTarget.dispose(),this._opaqueRenderTarget=null),this._transparentMeshesCache=[],this._opaqueMeshesCache=[]}}const p="KHR_materials_transmission";class d{constructor(e){this.name=p,this.order=175,this._loader=e,this.enabled=this._loader.isExtensionUsed(p),this.enabled&&(e.parent.transparencyAsCoverage=!0)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,s,t){return o.LoadExtensionAsync(e,s,this.name,((r,a)=>{const n=new Array;return n.push(this._loader.loadMaterialPropertiesAsync(e,s,t)),n.push(this._loadTransparentPropertiesAsync(r,s,t,a)),Promise.all(n).then((()=>{}))}))}_loadTransparentPropertiesAsync(s,t,r,a){if(!(r instanceof e))throw new Error(`${s}: Material type not supported`);const n=r;if(n.subSurface.isRefractionEnabled=!0,n.subSurface.volumeIndexOfRefraction=1,n.subSurface.useAlbedoToTintRefraction=!0,void 0===a.transmissionFactor)return n.subSurface.refractionIntensity=0,n.subSurface.isRefractionEnabled=!1,Promise.resolve();{n.subSurface.refractionIntensity=a.transmissionFactor;const e=n.getScene();n.subSurface.refractionIntensity&&!e._transmissionHelper?new h({},n.getScene()):n.subSurface.refractionIntensity&&!e._transmissionHelper?._isRenderTargetValid()&&e._transmissionHelper?._setupRenderTargets()}return n.subSurface.minimumThickness=0,n.subSurface.maximumThickness=0,a.transmissionTexture?(a.transmissionTexture.nonColorData=!0,this._loader.loadTextureInfoAsync(`${s}/transmissionTexture`,a.transmissionTexture,void 0).then((e=>{n.subSurface.refractionIntensityTexture=e,n.subSurface.useGltfStyleTextures=!0}))):Promise.resolve()}}s(p),t(p,!0,(e=>new d(e)));export{d as KHR_materials_transmission};
2
- //# sourceMappingURL=KHR_materials_transmission-DPUUVLV8.esm.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KHR_materials_transmission-DPUUVLV8.esm.min.js","sources":["../../../../../dev/loaders/dist/glTF/2.0/Extensions/KHR_materials_transmission.js"],"sourcesContent":["import { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\nimport { GLTFLoader } from \"../glTFLoader\";\nimport { RenderTargetTexture } from \"core/Materials/Textures/renderTargetTexture\";\nimport { Observable } from \"core/Misc/observable\";\nimport { Constants } from \"core/Engines/constants\";\nimport { Tools } from \"core/Misc/tools\";\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\n/**\n * A class to handle setting up the rendering of opaque objects to be shown through transmissive objects.\n */\nclass TransmissionHelper {\n /**\n * Creates the default options for the helper.\n * @returns the default options\n */\n static _GetDefaultOptions() {\n return {\n renderSize: 1024,\n samples: 4,\n lodGenerationScale: 1,\n lodGenerationOffset: -4,\n renderTargetTextureType: Constants.TEXTURETYPE_HALF_FLOAT,\n generateMipmaps: true,\n };\n }\n /**\n * constructor\n * @param options Defines the options we want to customize the helper\n * @param scene The scene to add the material to\n */\n constructor(options, scene) {\n this._opaqueRenderTarget = null;\n this._opaqueMeshesCache = [];\n this._transparentMeshesCache = [];\n this._materialObservers = {};\n this._options = {\n ...TransmissionHelper._GetDefaultOptions(),\n ...options,\n };\n this._scene = scene;\n this._scene._transmissionHelper = this;\n this.onErrorObservable = new Observable();\n this._scene.onDisposeObservable.addOnce(() => {\n this.dispose();\n });\n this._parseScene();\n this._setupRenderTargets();\n }\n /**\n * Updates the background according to the new options\n * @param options\n */\n updateOptions(options) {\n // First check if any options are actually being changed. If not, exit.\n const newValues = Object.keys(options).filter((key) => this._options[key] !== options[key]);\n if (!newValues.length) {\n return;\n }\n const newOptions = {\n ...this._options,\n ...options,\n };\n const oldOptions = this._options;\n this._options = newOptions;\n // If size changes, recreate everything\n if (newOptions.renderSize !== oldOptions.renderSize ||\n newOptions.renderTargetTextureType !== oldOptions.renderTargetTextureType ||\n newOptions.generateMipmaps !== oldOptions.generateMipmaps ||\n !this._opaqueRenderTarget) {\n this._setupRenderTargets();\n }\n else {\n this._opaqueRenderTarget.samples = newOptions.samples;\n this._opaqueRenderTarget.lodGenerationScale = newOptions.lodGenerationScale;\n this._opaqueRenderTarget.lodGenerationOffset = newOptions.lodGenerationOffset;\n }\n }\n /**\n * @returns the opaque render target texture or null if not available.\n */\n getOpaqueTarget() {\n return this._opaqueRenderTarget;\n }\n _shouldRenderAsTransmission(material) {\n if (!material) {\n return false;\n }\n if (material instanceof PBRMaterial && material.subSurface.isRefractionEnabled) {\n return true;\n }\n return false;\n }\n _addMesh(mesh) {\n this._materialObservers[mesh.uniqueId] = mesh.onMaterialChangedObservable.add(this._onMeshMaterialChanged.bind(this));\n // we need to defer the processing because _addMesh may be called as part as an instance mesh creation, in which case some\n // internal properties are not setup yet, like _sourceMesh (needed when doing mesh.material below)\n Tools.SetImmediate(() => {\n if (this._shouldRenderAsTransmission(mesh.material)) {\n mesh.material.refractionTexture = this._opaqueRenderTarget;\n if (this._transparentMeshesCache.indexOf(mesh) === -1) {\n this._transparentMeshesCache.push(mesh);\n }\n }\n else {\n if (this._opaqueMeshesCache.indexOf(mesh) === -1) {\n this._opaqueMeshesCache.push(mesh);\n }\n }\n });\n }\n _removeMesh(mesh) {\n mesh.onMaterialChangedObservable.remove(this._materialObservers[mesh.uniqueId]);\n delete this._materialObservers[mesh.uniqueId];\n let idx = this._transparentMeshesCache.indexOf(mesh);\n if (idx !== -1) {\n this._transparentMeshesCache.splice(idx, 1);\n }\n idx = this._opaqueMeshesCache.indexOf(mesh);\n if (idx !== -1) {\n this._opaqueMeshesCache.splice(idx, 1);\n }\n }\n _parseScene() {\n this._scene.meshes.forEach(this._addMesh.bind(this));\n // Listen for when a mesh is added to the scene and add it to our cache lists.\n this._scene.onNewMeshAddedObservable.add(this._addMesh.bind(this));\n // Listen for when a mesh is removed from to the scene and remove it from our cache lists.\n this._scene.onMeshRemovedObservable.add(this._removeMesh.bind(this));\n }\n // When one of the meshes in the scene has its material changed, make sure that it's in the correct cache list.\n _onMeshMaterialChanged(mesh) {\n const transparentIdx = this._transparentMeshesCache.indexOf(mesh);\n const opaqueIdx = this._opaqueMeshesCache.indexOf(mesh);\n // If the material is transparent, make sure that it's added to the transparent list and removed from the opaque list\n const useTransmission = this._shouldRenderAsTransmission(mesh.material);\n if (useTransmission) {\n if (mesh.material instanceof PBRMaterial) {\n mesh.material.subSurface.refractionTexture = this._opaqueRenderTarget;\n }\n if (opaqueIdx !== -1) {\n this._opaqueMeshesCache.splice(opaqueIdx, 1);\n this._transparentMeshesCache.push(mesh);\n }\n else if (transparentIdx === -1) {\n this._transparentMeshesCache.push(mesh);\n }\n // If the material is opaque, make sure that it's added to the opaque list and removed from the transparent list\n }\n else {\n if (transparentIdx !== -1) {\n this._transparentMeshesCache.splice(transparentIdx, 1);\n this._opaqueMeshesCache.push(mesh);\n }\n else if (opaqueIdx === -1) {\n this._opaqueMeshesCache.push(mesh);\n }\n }\n }\n /**\n * @internal\n * Check if the opaque render target has not been disposed and can still be used.\n * @returns\n */\n _isRenderTargetValid() {\n return this._opaqueRenderTarget?.getInternalTexture() !== null;\n }\n /**\n * @internal\n * Setup the render targets according to the specified options.\n */\n _setupRenderTargets() {\n if (this._opaqueRenderTarget) {\n this._opaqueRenderTarget.dispose();\n }\n this._opaqueRenderTarget = new RenderTargetTexture(\"opaqueSceneTexture\", this._options.renderSize, this._scene, this._options.generateMipmaps, undefined, this._options.renderTargetTextureType);\n this._opaqueRenderTarget.ignoreCameraViewport = true;\n this._opaqueRenderTarget.renderList = this._opaqueMeshesCache;\n this._opaqueRenderTarget.clearColor = this._options.clearColor?.clone() ?? this._scene.clearColor.clone();\n this._opaqueRenderTarget.gammaSpace = false;\n this._opaqueRenderTarget.lodGenerationScale = this._options.lodGenerationScale;\n this._opaqueRenderTarget.lodGenerationOffset = this._options.lodGenerationOffset;\n this._opaqueRenderTarget.samples = this._options.samples;\n this._opaqueRenderTarget.renderSprites = true;\n this._opaqueRenderTarget.renderParticles = true;\n let sceneImageProcessingapplyByPostProcess;\n let saveSceneEnvIntensity;\n this._opaqueRenderTarget.onBeforeBindObservable.add((opaqueRenderTarget) => {\n saveSceneEnvIntensity = this._scene.environmentIntensity;\n this._scene.environmentIntensity = 1.0;\n sceneImageProcessingapplyByPostProcess = this._scene.imageProcessingConfiguration.applyByPostProcess;\n if (!this._options.clearColor) {\n this._scene.clearColor.toLinearSpaceToRef(opaqueRenderTarget.clearColor, this._scene.getEngine().useExactSrgbConversions);\n }\n else {\n opaqueRenderTarget.clearColor.copyFrom(this._options.clearColor);\n }\n // we do not use the applyByPostProcess setter to avoid flagging all the materials as \"image processing dirty\"!\n this._scene.imageProcessingConfiguration._applyByPostProcess = true;\n });\n this._opaqueRenderTarget.onAfterUnbindObservable.add(() => {\n this._scene.environmentIntensity = saveSceneEnvIntensity;\n this._scene.imageProcessingConfiguration._applyByPostProcess = sceneImageProcessingapplyByPostProcess;\n });\n this._transparentMeshesCache.forEach((mesh) => {\n if (this._shouldRenderAsTransmission(mesh.material)) {\n mesh.material.refractionTexture = this._opaqueRenderTarget;\n }\n });\n }\n /**\n * Dispose all the elements created by the Helper.\n */\n dispose() {\n this._scene._transmissionHelper = undefined;\n if (this._opaqueRenderTarget) {\n this._opaqueRenderTarget.dispose();\n this._opaqueRenderTarget = null;\n }\n this._transparentMeshesCache = [];\n this._opaqueMeshesCache = [];\n }\n}\nconst NAME = \"KHR_materials_transmission\";\n/**\n * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_transmission/README.md)\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class KHR_materials_transmission {\n /**\n * @internal\n */\n constructor(loader) {\n /**\n * The name of this extension.\n */\n this.name = NAME;\n /**\n * Defines a number that determines the order the extensions are applied.\n */\n this.order = 175;\n this._loader = loader;\n this.enabled = this._loader.isExtensionUsed(NAME);\n if (this.enabled) {\n loader.parent.transparencyAsCoverage = true;\n }\n }\n /** @internal */\n dispose() {\n this._loader = null;\n }\n /**\n * @internal\n */\n loadMaterialPropertiesAsync(context, material, babylonMaterial) {\n return GLTFLoader.LoadExtensionAsync(context, material, this.name, (extensionContext, extension) => {\n const promises = new Array();\n promises.push(this._loader.loadMaterialPropertiesAsync(context, material, babylonMaterial));\n promises.push(this._loadTransparentPropertiesAsync(extensionContext, material, babylonMaterial, extension));\n return Promise.all(promises).then(() => { });\n });\n }\n _loadTransparentPropertiesAsync(context, material, babylonMaterial, extension) {\n if (!(babylonMaterial instanceof PBRMaterial)) {\n throw new Error(`${context}: Material type not supported`);\n }\n const pbrMaterial = babylonMaterial;\n // Enables \"refraction\" texture which represents transmitted light.\n pbrMaterial.subSurface.isRefractionEnabled = true;\n // Since this extension models thin-surface transmission only, we must make IOR = 1.0\n pbrMaterial.subSurface.volumeIndexOfRefraction = 1.0;\n // Albedo colour will tint transmission.\n pbrMaterial.subSurface.useAlbedoToTintRefraction = true;\n if (extension.transmissionFactor !== undefined) {\n pbrMaterial.subSurface.refractionIntensity = extension.transmissionFactor;\n const scene = pbrMaterial.getScene();\n if (pbrMaterial.subSurface.refractionIntensity && !scene._transmissionHelper) {\n new TransmissionHelper({}, pbrMaterial.getScene());\n }\n else if (pbrMaterial.subSurface.refractionIntensity && !scene._transmissionHelper?._isRenderTargetValid()) {\n // If the render target is not valid, recreate it.\n scene._transmissionHelper?._setupRenderTargets();\n }\n }\n else {\n pbrMaterial.subSurface.refractionIntensity = 0.0;\n pbrMaterial.subSurface.isRefractionEnabled = false;\n return Promise.resolve();\n }\n pbrMaterial.subSurface.minimumThickness = 0.0;\n pbrMaterial.subSurface.maximumThickness = 0.0;\n if (extension.transmissionTexture) {\n extension.transmissionTexture.nonColorData = true;\n return this._loader.loadTextureInfoAsync(`${context}/transmissionTexture`, extension.transmissionTexture, undefined).then((texture) => {\n pbrMaterial.subSurface.refractionIntensityTexture = texture;\n pbrMaterial.subSurface.useGltfStyleTextures = true;\n });\n }\n else {\n return Promise.resolve();\n }\n }\n}\nunregisterGLTFExtension(NAME);\nregisterGLTFExtension(NAME, true, (loader) => new KHR_materials_transmission(loader));\n//# sourceMappingURL=KHR_materials_transmission.js.map"],"names":["TransmissionHelper","_GetDefaultOptions","renderSize","samples","lodGenerationScale","lodGenerationOffset","renderTargetTextureType","Constants","TEXTURETYPE_HALF_FLOAT","generateMipmaps","constructor","options","scene","this","_opaqueRenderTarget","_opaqueMeshesCache","_transparentMeshesCache","_materialObservers","_options","_scene","_transmissionHelper","onErrorObservable","Observable","onDisposeObservable","addOnce","dispose","_parseScene","_setupRenderTargets","updateOptions","Object","keys","filter","key","length","newOptions","oldOptions","getOpaqueTarget","_shouldRenderAsTransmission","material","PBRMaterial","subSurface","isRefractionEnabled","_addMesh","mesh","uniqueId","onMaterialChangedObservable","add","_onMeshMaterialChanged","bind","Tools","SetImmediate","refractionTexture","indexOf","push","_removeMesh","remove","idx","splice","meshes","forEach","onNewMeshAddedObservable","onMeshRemovedObservable","transparentIdx","opaqueIdx","_isRenderTargetValid","getInternalTexture","sceneImageProcessingapplyByPostProcess","saveSceneEnvIntensity","RenderTargetTexture","undefined","ignoreCameraViewport","renderList","clearColor","clone","gammaSpace","renderSprites","renderParticles","onBeforeBindObservable","opaqueRenderTarget","environmentIntensity","imageProcessingConfiguration","applyByPostProcess","copyFrom","toLinearSpaceToRef","getEngine","useExactSrgbConversions","_applyByPostProcess","onAfterUnbindObservable","NAME","KHR_materials_transmission","loader","name","order","_loader","enabled","isExtensionUsed","parent","transparencyAsCoverage","loadMaterialPropertiesAsync","context","babylonMaterial","GLTFLoader","LoadExtensionAsync","extensionContext","extension","promises","Array","_loadTransparentPropertiesAsync","Promise","all","then","Error","pbrMaterial","volumeIndexOfRefraction","useAlbedoToTintRefraction","transmissionFactor","refractionIntensity","resolve","getScene","minimumThickness","maximumThickness","transmissionTexture","nonColorData","loadTextureInfoAsync","texture","refractionIntensityTexture","useGltfStyleTextures","unregisterGLTFExtension","registerGLTFExtension"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{ax as e,C as o,ak as r,al as a}from"./index-Ba-YQVRw.esm.min.js";import{GLTFLoader as s}from"./glTFLoader-Is2_r9v2.esm.min.js";import"./rawTexture-CnRJFGS0.esm.min.js";import"./assetContainer-CaFtpYEC.esm.min.js";import"./glTFLoaderAnimation-Bglz6m7h.esm.min.js";const t="KHR_materials_unlit";class i{constructor(e){this.name=t,this.order=210,this._loader=e,this.enabled=this._loader.isExtensionUsed(t)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,o,r){return s.LoadExtensionAsync(e,o,this.name,(()=>this._loadUnlitPropertiesAsync(e,o,r)))}_loadUnlitPropertiesAsync(r,a,s){if(!(s instanceof e))throw new Error(`${r}: Material type not supported`);const t=new Array;s.unlit=!0;const i=a.pbrMetallicRoughness;return i&&(i.baseColorFactor?(s.albedoColor=o.FromArray(i.baseColorFactor),s.alpha=i.baseColorFactor[3]):s.albedoColor=o.White(),i.baseColorTexture&&t.push(this._loader.loadTextureInfoAsync(`${r}/baseColorTexture`,i.baseColorTexture,(e=>{e.name=`${s.name} (Base Color)`,s.albedoTexture=e})))),a.doubleSided&&(s.backFaceCulling=!1,s.twoSidedLighting=!0),this._loader.loadMaterialAlphaProperties(r,a,s),Promise.all(t).then((()=>{}))}}r(t),a(t,!0,(e=>new i(e)));export{i as KHR_materials_unlit};
2
- //# sourceMappingURL=KHR_materials_unlit-BRJnLegu.esm.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KHR_materials_unlit-BRJnLegu.esm.min.js","sources":["../../../../../dev/loaders/dist/glTF/2.0/Extensions/KHR_materials_unlit.js"],"sourcesContent":["import { Color3 } from \"core/Maths/math.color\";\nimport { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\nimport { GLTFLoader } from \"../glTFLoader\";\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\nconst NAME = \"KHR_materials_unlit\";\n/**\n * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_unlit/README.md)\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class KHR_materials_unlit {\n /**\n * @internal\n */\n constructor(loader) {\n /**\n * The name of this extension.\n */\n this.name = NAME;\n /**\n * Defines a number that determines the order the extensions are applied.\n */\n this.order = 210;\n this._loader = loader;\n this.enabled = this._loader.isExtensionUsed(NAME);\n }\n /** @internal */\n dispose() {\n this._loader = null;\n }\n /**\n * @internal\n */\n loadMaterialPropertiesAsync(context, material, babylonMaterial) {\n return GLTFLoader.LoadExtensionAsync(context, material, this.name, () => {\n return this._loadUnlitPropertiesAsync(context, material, babylonMaterial);\n });\n }\n _loadUnlitPropertiesAsync(context, material, babylonMaterial) {\n if (!(babylonMaterial instanceof PBRMaterial)) {\n throw new Error(`${context}: Material type not supported`);\n }\n const promises = new Array();\n babylonMaterial.unlit = true;\n const properties = material.pbrMetallicRoughness;\n if (properties) {\n if (properties.baseColorFactor) {\n babylonMaterial.albedoColor = Color3.FromArray(properties.baseColorFactor);\n babylonMaterial.alpha = properties.baseColorFactor[3];\n }\n else {\n babylonMaterial.albedoColor = Color3.White();\n }\n if (properties.baseColorTexture) {\n promises.push(this._loader.loadTextureInfoAsync(`${context}/baseColorTexture`, properties.baseColorTexture, (texture) => {\n texture.name = `${babylonMaterial.name} (Base Color)`;\n babylonMaterial.albedoTexture = texture;\n }));\n }\n }\n if (material.doubleSided) {\n babylonMaterial.backFaceCulling = false;\n babylonMaterial.twoSidedLighting = true;\n }\n this._loader.loadMaterialAlphaProperties(context, material, babylonMaterial);\n return Promise.all(promises).then(() => { });\n }\n}\nunregisterGLTFExtension(NAME);\nregisterGLTFExtension(NAME, true, (loader) => new KHR_materials_unlit(loader));\n//# sourceMappingURL=KHR_materials_unlit.js.map"],"names":["NAME","KHR_materials_unlit","constructor","loader","this","name","order","_loader","enabled","isExtensionUsed","dispose","loadMaterialPropertiesAsync","context","material","babylonMaterial","GLTFLoader","LoadExtensionAsync","_loadUnlitPropertiesAsync","PBRMaterial","Error","promises","Array","unlit","properties","pbrMetallicRoughness","baseColorFactor","albedoColor","Color3","FromArray","alpha","White","baseColorTexture","push","loadTextureInfoAsync","texture","albedoTexture","doubleSided","backFaceCulling","twoSidedLighting","loadMaterialAlphaProperties","Promise","all","then","unregisterGLTFExtension","registerGLTFExtension"],"mappings":"8QAIA,MAAMA,EAAO,sBAKN,MAAMC,EAIT,WAAAC,CAAYC,GAIRC,KAAKC,KAAOL,EAIZI,KAAKE,MAAQ,IACbF,KAAKG,QAAUJ,EACfC,KAAKI,QAAUJ,KAAKG,QAAQE,gBAAgBT,EAC/C,CAED,OAAAU,GACIN,KAAKG,QAAU,IAClB,CAID,2BAAAI,CAA4BC,EAASC,EAAUC,GAC3C,OAAOC,EAAWC,mBAAmBJ,EAASC,EAAUT,KAAKC,MAAM,IACxDD,KAAKa,0BAA0BL,EAASC,EAAUC,IAEhE,CACD,yBAAAG,CAA0BL,EAASC,EAAUC,GACzC,KAAMA,aAA2BI,GAC7B,MAAM,IAAIC,MAAM,GAAGP,kCAEvB,MAAMQ,EAAW,IAAIC,MACrBP,EAAgBQ,OAAQ,EACxB,MAAMC,EAAaV,EAASW,qBAqB5B,OApBID,IACIA,EAAWE,iBACXX,EAAgBY,YAAcC,EAAOC,UAAUL,EAAWE,iBAC1DX,EAAgBe,MAAQN,EAAWE,gBAAgB,IAGnDX,EAAgBY,YAAcC,EAAOG,QAErCP,EAAWQ,kBACXX,EAASY,KAAK5B,KAAKG,QAAQ0B,qBAAqB,GAAGrB,qBAA4BW,EAAWQ,kBAAmBG,IACzGA,EAAQ7B,KAAO,GAAGS,EAAgBT,oBAClCS,EAAgBqB,cAAgBD,CAAO,MAI/CrB,EAASuB,cACTtB,EAAgBuB,iBAAkB,EAClCvB,EAAgBwB,kBAAmB,GAEvClC,KAAKG,QAAQgC,4BAA4B3B,EAASC,EAAUC,GACrD0B,QAAQC,IAAIrB,GAAUsB,MAAK,QACrC,EAELC,EAAwB3C,GACxB4C,EAAsB5C,GAAM,GAAOG,GAAW,IAAIF,EAAoBE"}
@@ -1,74 +0,0 @@
1
- import { ax as PBRMaterial, C as Color3, ak as unregisterGLTFExtension, al as registerGLTFExtension } from './index-DCMXQRx5.esm.js';
2
- import { GLTFLoader } from './glTFLoader-Da2YOCGR.esm.js';
3
- import './rawTexture-DqO-U47x.esm.js';
4
- import './assetContainer-DEN9e8ap.esm.js';
5
- import './glTFLoaderAnimation-CbznFn_D.esm.js';
6
-
7
- const NAME = "KHR_materials_unlit";
8
- /**
9
- * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_unlit/README.md)
10
- */
11
- // eslint-disable-next-line @typescript-eslint/naming-convention
12
- class KHR_materials_unlit {
13
- /**
14
- * @internal
15
- */
16
- constructor(loader) {
17
- /**
18
- * The name of this extension.
19
- */
20
- this.name = NAME;
21
- /**
22
- * Defines a number that determines the order the extensions are applied.
23
- */
24
- this.order = 210;
25
- this._loader = loader;
26
- this.enabled = this._loader.isExtensionUsed(NAME);
27
- }
28
- /** @internal */
29
- dispose() {
30
- this._loader = null;
31
- }
32
- /**
33
- * @internal
34
- */
35
- loadMaterialPropertiesAsync(context, material, babylonMaterial) {
36
- return GLTFLoader.LoadExtensionAsync(context, material, this.name, () => {
37
- return this._loadUnlitPropertiesAsync(context, material, babylonMaterial);
38
- });
39
- }
40
- _loadUnlitPropertiesAsync(context, material, babylonMaterial) {
41
- if (!(babylonMaterial instanceof PBRMaterial)) {
42
- throw new Error(`${context}: Material type not supported`);
43
- }
44
- const promises = new Array();
45
- babylonMaterial.unlit = true;
46
- const properties = material.pbrMetallicRoughness;
47
- if (properties) {
48
- if (properties.baseColorFactor) {
49
- babylonMaterial.albedoColor = Color3.FromArray(properties.baseColorFactor);
50
- babylonMaterial.alpha = properties.baseColorFactor[3];
51
- }
52
- else {
53
- babylonMaterial.albedoColor = Color3.White();
54
- }
55
- if (properties.baseColorTexture) {
56
- promises.push(this._loader.loadTextureInfoAsync(`${context}/baseColorTexture`, properties.baseColorTexture, (texture) => {
57
- texture.name = `${babylonMaterial.name} (Base Color)`;
58
- babylonMaterial.albedoTexture = texture;
59
- }));
60
- }
61
- }
62
- if (material.doubleSided) {
63
- babylonMaterial.backFaceCulling = false;
64
- babylonMaterial.twoSidedLighting = true;
65
- }
66
- this._loader.loadMaterialAlphaProperties(context, material, babylonMaterial);
67
- return Promise.all(promises).then(() => { });
68
- }
69
- }
70
- unregisterGLTFExtension(NAME);
71
- registerGLTFExtension(NAME, true, (loader) => new KHR_materials_unlit(loader));
72
-
73
- export { KHR_materials_unlit };
74
- //# sourceMappingURL=KHR_materials_unlit-jqO9HFUm.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KHR_materials_unlit-jqO9HFUm.esm.js","sources":["../../../../../dev/loaders/dist/glTF/2.0/Extensions/KHR_materials_unlit.js"],"sourcesContent":["import { Color3 } from \"core/Maths/math.color\";\nimport { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\nimport { GLTFLoader } from \"../glTFLoader\";\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\nconst NAME = \"KHR_materials_unlit\";\n/**\n * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_unlit/README.md)\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class KHR_materials_unlit {\n /**\n * @internal\n */\n constructor(loader) {\n /**\n * The name of this extension.\n */\n this.name = NAME;\n /**\n * Defines a number that determines the order the extensions are applied.\n */\n this.order = 210;\n this._loader = loader;\n this.enabled = this._loader.isExtensionUsed(NAME);\n }\n /** @internal */\n dispose() {\n this._loader = null;\n }\n /**\n * @internal\n */\n loadMaterialPropertiesAsync(context, material, babylonMaterial) {\n return GLTFLoader.LoadExtensionAsync(context, material, this.name, () => {\n return this._loadUnlitPropertiesAsync(context, material, babylonMaterial);\n });\n }\n _loadUnlitPropertiesAsync(context, material, babylonMaterial) {\n if (!(babylonMaterial instanceof PBRMaterial)) {\n throw new Error(`${context}: Material type not supported`);\n }\n const promises = new Array();\n babylonMaterial.unlit = true;\n const properties = material.pbrMetallicRoughness;\n if (properties) {\n if (properties.baseColorFactor) {\n babylonMaterial.albedoColor = Color3.FromArray(properties.baseColorFactor);\n babylonMaterial.alpha = properties.baseColorFactor[3];\n }\n else {\n babylonMaterial.albedoColor = Color3.White();\n }\n if (properties.baseColorTexture) {\n promises.push(this._loader.loadTextureInfoAsync(`${context}/baseColorTexture`, properties.baseColorTexture, (texture) => {\n texture.name = `${babylonMaterial.name} (Base Color)`;\n babylonMaterial.albedoTexture = texture;\n }));\n }\n }\n if (material.doubleSided) {\n babylonMaterial.backFaceCulling = false;\n babylonMaterial.twoSidedLighting = true;\n }\n this._loader.loadMaterialAlphaProperties(context, material, babylonMaterial);\n return Promise.all(promises).then(() => { });\n }\n}\nunregisterGLTFExtension(NAME);\nregisterGLTFExtension(NAME, true, (loader) => new KHR_materials_unlit(loader));\n//# sourceMappingURL=KHR_materials_unlit.js.map"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{GLTFLoader as t,ArrayItem as a}from"./glTFLoader-Is2_r9v2.esm.min.js";import{M as e,ak as n,al as s}from"./index-Ba-YQVRw.esm.min.js";import"./rawTexture-CnRJFGS0.esm.min.js";import"./assetContainer-CaFtpYEC.esm.min.js";import"./glTFLoaderAnimation-Bglz6m7h.esm.min.js";const i="KHR_materials_variants";class r{constructor(t){this.name=i,this._loader=t,this.enabled=this._loader.isExtensionUsed(i)}dispose(){this._loader=null}static GetAvailableVariants(t){const a=this._GetExtensionMetadata(t);return a?Object.keys(a.variants):[]}getAvailableVariants(t){return r.GetAvailableVariants(t)}static SelectVariant(t,a){const e=this._GetExtensionMetadata(t);if(!e)throw new Error(`Cannot select variant on a glTF mesh that does not have the ${i} extension`);const n=t=>{const a=e.variants[t];if(a)for(const t of a)t.mesh.material=t.material};if(a instanceof Array)for(const t of a)n(t);else n(a);e.lastSelected=a}selectVariant(t,a){r.SelectVariant(t,a)}static Reset(t){const a=this._GetExtensionMetadata(t);if(!a)throw new Error(`Cannot reset on a glTF mesh that does not have the ${i} extension`);for(const t of a.original)t.mesh.material=t.material;a.lastSelected=null}reset(t){r.Reset(t)}static GetLastSelectedVariant(t){const a=this._GetExtensionMetadata(t);if(!a)throw new Error(`Cannot get the last selected variant on a glTF mesh that does not have the ${i} extension`);return a.lastSelected}getLastSelectedVariant(t){return r.GetLastSelectedVariant(t)}static _GetExtensionMetadata(t){return t?._internalMetadata?.gltf?.[i]||null}onLoading(){const t=this._loader.gltf.extensions;if(t&&t[this.name]){const a=t[this.name];this._variants=a.variants}}_loadMeshPrimitiveAsync(n,s,l,o,m,d){return t.LoadExtensionAsync(n,m,this.name,((h,c)=>{const f=new Array;return f.push(this._loader._loadMeshPrimitiveAsync(n,s,l,o,m,(s=>{if(d(s),s instanceof e){const e=t._GetDrawMode(n,m.mode),l=this._loader.rootBabylonMesh,o=l?l._internalMetadata=l._internalMetadata||{}:{},d=o.gltf=o.gltf||{},_=d[i]=d[i]||{lastSelected:null,original:[],variants:{}};_.original.push({mesh:s,material:s.material});for(let t=0;t<c.mappings.length;++t){const n=c.mappings[t],o=a.Get(`${h}/mappings/${t}/material`,this._loader.gltf.materials,n.material);f.push(this._loader._loadMaterialAsync(`#/materials/${n.material}`,o,s,e,(t=>{for(let e=0;e<n.variants.length;++e){const o=n.variants[e],m=a.Get(`/extensions/${i}/variants/${o}`,this._variants,o);_.variants[m.name]=_.variants[m.name]||[],_.variants[m.name].push({mesh:s,material:t}),s.onClonedObservable.add((t=>{const a=t;let e=null,n=a;do{if(n=n.parent,!n)return;e=r._GetExtensionMetadata(n)}while(null===e);if(l&&e===r._GetExtensionMetadata(l)){n._internalMetadata={};for(const t in l._internalMetadata)n._internalMetadata[t]=l._internalMetadata[t];n._internalMetadata.gltf=[];for(const t in l._internalMetadata.gltf)n._internalMetadata.gltf[t]=l._internalMetadata.gltf[t];n._internalMetadata.gltf[i]={lastSelected:null,original:[],variants:{}};for(const t of e.original)n._internalMetadata.gltf[i].original.push({mesh:t.mesh,material:t.material});for(const t in e.variants)if(Object.prototype.hasOwnProperty.call(e.variants,t)){n._internalMetadata.gltf[i].variants[t]=[];for(const a of e.variants[t])n._internalMetadata.gltf[i].variants[t].push({mesh:a.mesh,material:a.material})}e=n._internalMetadata.gltf[i]}for(const t of e.original)t.mesh===s&&(t.mesh=a);for(const t of e.variants[m.name])t.mesh===s&&(t.mesh=a)}))}})))}}}))),Promise.all(f).then((([t])=>t))}))}}n(i),s(i,!0,(t=>new r(t)));export{r as KHR_materials_variants};
2
- //# sourceMappingURL=KHR_materials_variants-D3zo3Fn8.esm.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KHR_materials_variants-D3zo3Fn8.esm.min.js","sources":["../../../../../dev/loaders/dist/glTF/2.0/Extensions/KHR_materials_variants.js"],"sourcesContent":["import { GLTFLoader, ArrayItem } from \"../glTFLoader\";\nimport { Mesh } from \"core/Meshes/mesh\";\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\nconst NAME = \"KHR_materials_variants\";\n/**\n * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_variants/README.md)\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class KHR_materials_variants {\n /**\n * @internal\n */\n constructor(loader) {\n /**\n * The name of this extension.\n */\n this.name = NAME;\n this._loader = loader;\n this.enabled = this._loader.isExtensionUsed(NAME);\n }\n /** @internal */\n dispose() {\n this._loader = null;\n }\n /**\n * Gets the list of available variant names for this asset.\n * @param rootMesh The glTF root mesh\n * @returns the list of all the variant names for this model\n */\n static GetAvailableVariants(rootMesh) {\n const extensionMetadata = this._GetExtensionMetadata(rootMesh);\n if (!extensionMetadata) {\n return [];\n }\n return Object.keys(extensionMetadata.variants);\n }\n /**\n * Gets the list of available variant names for this asset.\n * @param rootMesh The glTF root mesh\n * @returns the list of all the variant names for this model\n */\n getAvailableVariants(rootMesh) {\n return KHR_materials_variants.GetAvailableVariants(rootMesh);\n }\n /**\n * Select a variant given a variant name or a list of variant names.\n * @param rootMesh The glTF root mesh\n * @param variantName The variant name(s) to select.\n */\n static SelectVariant(rootMesh, variantName) {\n const extensionMetadata = this._GetExtensionMetadata(rootMesh);\n if (!extensionMetadata) {\n throw new Error(`Cannot select variant on a glTF mesh that does not have the ${NAME} extension`);\n }\n const select = (variantName) => {\n const entries = extensionMetadata.variants[variantName];\n if (entries) {\n for (const entry of entries) {\n entry.mesh.material = entry.material;\n }\n }\n };\n if (variantName instanceof Array) {\n for (const name of variantName) {\n select(name);\n }\n }\n else {\n select(variantName);\n }\n extensionMetadata.lastSelected = variantName;\n }\n /**\n * Select a variant given a variant name or a list of variant names.\n * @param rootMesh The glTF root mesh\n * @param variantName The variant name(s) to select.\n */\n selectVariant(rootMesh, variantName) {\n KHR_materials_variants.SelectVariant(rootMesh, variantName);\n }\n /**\n * Reset back to the original before selecting a variant.\n * @param rootMesh The glTF root mesh\n */\n static Reset(rootMesh) {\n const extensionMetadata = this._GetExtensionMetadata(rootMesh);\n if (!extensionMetadata) {\n throw new Error(`Cannot reset on a glTF mesh that does not have the ${NAME} extension`);\n }\n for (const entry of extensionMetadata.original) {\n entry.mesh.material = entry.material;\n }\n extensionMetadata.lastSelected = null;\n }\n /**\n * Reset back to the original before selecting a variant.\n * @param rootMesh The glTF root mesh\n */\n reset(rootMesh) {\n KHR_materials_variants.Reset(rootMesh);\n }\n /**\n * Gets the last selected variant name(s) or null if original.\n * @param rootMesh The glTF root mesh\n * @returns The selected variant name(s).\n */\n static GetLastSelectedVariant(rootMesh) {\n const extensionMetadata = this._GetExtensionMetadata(rootMesh);\n if (!extensionMetadata) {\n throw new Error(`Cannot get the last selected variant on a glTF mesh that does not have the ${NAME} extension`);\n }\n return extensionMetadata.lastSelected;\n }\n /**\n * Gets the last selected variant name(s) or null if original.\n * @param rootMesh The glTF root mesh\n * @returns The selected variant name(s).\n */\n getLastSelectedVariant(rootMesh) {\n return KHR_materials_variants.GetLastSelectedVariant(rootMesh);\n }\n static _GetExtensionMetadata(rootMesh) {\n return rootMesh?._internalMetadata?.gltf?.[NAME] || null;\n }\n /** @internal */\n onLoading() {\n const extensions = this._loader.gltf.extensions;\n if (extensions && extensions[this.name]) {\n const extension = extensions[this.name];\n this._variants = extension.variants;\n }\n }\n /**\n * @internal\n */\n _loadMeshPrimitiveAsync(context, name, node, mesh, primitive, assign) {\n return GLTFLoader.LoadExtensionAsync(context, primitive, this.name, (extensionContext, extension) => {\n const promises = new Array();\n promises.push(this._loader._loadMeshPrimitiveAsync(context, name, node, mesh, primitive, (babylonMesh) => {\n assign(babylonMesh);\n if (babylonMesh instanceof Mesh) {\n const babylonDrawMode = GLTFLoader._GetDrawMode(context, primitive.mode);\n const root = this._loader.rootBabylonMesh;\n const metadata = root ? (root._internalMetadata = root._internalMetadata || {}) : {};\n const gltf = (metadata.gltf = metadata.gltf || {});\n const extensionMetadata = (gltf[NAME] = gltf[NAME] || { lastSelected: null, original: [], variants: {} });\n // Store the original material.\n extensionMetadata.original.push({ mesh: babylonMesh, material: babylonMesh.material });\n // For each mapping, look at the variants and make a new entry for them.\n for (let mappingIndex = 0; mappingIndex < extension.mappings.length; ++mappingIndex) {\n const mapping = extension.mappings[mappingIndex];\n const material = ArrayItem.Get(`${extensionContext}/mappings/${mappingIndex}/material`, this._loader.gltf.materials, mapping.material);\n promises.push(this._loader._loadMaterialAsync(`#/materials/${mapping.material}`, material, babylonMesh, babylonDrawMode, (babylonMaterial) => {\n for (let mappingVariantIndex = 0; mappingVariantIndex < mapping.variants.length; ++mappingVariantIndex) {\n const variantIndex = mapping.variants[mappingVariantIndex];\n const variant = ArrayItem.Get(`/extensions/${NAME}/variants/${variantIndex}`, this._variants, variantIndex);\n extensionMetadata.variants[variant.name] = extensionMetadata.variants[variant.name] || [];\n extensionMetadata.variants[variant.name].push({\n mesh: babylonMesh,\n material: babylonMaterial,\n });\n // Replace the target when original mesh is cloned\n babylonMesh.onClonedObservable.add((newOne) => {\n const newMesh = newOne;\n let metadata = null;\n let newRoot = newMesh;\n // Find root to get medata\n do {\n newRoot = newRoot.parent;\n if (!newRoot) {\n return;\n }\n metadata = KHR_materials_variants._GetExtensionMetadata(newRoot);\n } while (metadata === null);\n // Need to clone the metadata on the root (first time only)\n if (root && metadata === KHR_materials_variants._GetExtensionMetadata(root)) {\n // Copy main metadata\n newRoot._internalMetadata = {};\n for (const key in root._internalMetadata) {\n newRoot._internalMetadata[key] = root._internalMetadata[key];\n }\n // Copy the gltf metadata\n newRoot._internalMetadata.gltf = [];\n for (const key in root._internalMetadata.gltf) {\n newRoot._internalMetadata.gltf[key] = root._internalMetadata.gltf[key];\n }\n // Duplicate the extension specific metadata\n newRoot._internalMetadata.gltf[NAME] = { lastSelected: null, original: [], variants: {} };\n for (const original of metadata.original) {\n newRoot._internalMetadata.gltf[NAME].original.push({\n mesh: original.mesh,\n material: original.material,\n });\n }\n for (const key in metadata.variants) {\n if (Object.prototype.hasOwnProperty.call(metadata.variants, key)) {\n newRoot._internalMetadata.gltf[NAME].variants[key] = [];\n for (const variantEntry of metadata.variants[key]) {\n newRoot._internalMetadata.gltf[NAME].variants[key].push({\n mesh: variantEntry.mesh,\n material: variantEntry.material,\n });\n }\n }\n }\n metadata = newRoot._internalMetadata.gltf[NAME];\n }\n // Relocate\n for (const target of metadata.original) {\n if (target.mesh === babylonMesh) {\n target.mesh = newMesh;\n }\n }\n for (const target of metadata.variants[variant.name]) {\n if (target.mesh === babylonMesh) {\n target.mesh = newMesh;\n }\n }\n });\n }\n }));\n }\n }\n }));\n return Promise.all(promises).then(([babylonMesh]) => {\n return babylonMesh;\n });\n });\n }\n}\nunregisterGLTFExtension(NAME);\nregisterGLTFExtension(NAME, true, (loader) => new KHR_materials_variants(loader));\n//# sourceMappingURL=KHR_materials_variants.js.map"],"names":["NAME","KHR_materials_variants","constructor","loader","this","name","_loader","enabled","isExtensionUsed","dispose","GetAvailableVariants","rootMesh","extensionMetadata","_GetExtensionMetadata","Object","keys","variants","getAvailableVariants","SelectVariant","variantName","Error","select","entries","entry","mesh","material","Array","lastSelected","selectVariant","Reset","original","reset","GetLastSelectedVariant","getLastSelectedVariant","_internalMetadata","gltf","onLoading","extensions","extension","_variants","_loadMeshPrimitiveAsync","context","node","primitive","assign","GLTFLoader","LoadExtensionAsync","extensionContext","promises","push","babylonMesh","Mesh","babylonDrawMode","_GetDrawMode","mode","root","rootBabylonMesh","metadata","mappingIndex","mappings","length","mapping","ArrayItem","Get","materials","_loadMaterialAsync","babylonMaterial","mappingVariantIndex","variantIndex","variant","onClonedObservable","add","newOne","newMesh","newRoot","parent","key","prototype","hasOwnProperty","call","variantEntry","target","Promise","all","then","unregisterGLTFExtension","registerGLTFExtension"],"mappings":"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"}