@babylonjs/viewer 7.28.0-alpha → 7.29.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 (587) 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 -18
  158. package/readme.md +21 -145
  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 +672 -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/assets/photoStudio.env +0 -0
  193. package/dist/babylon-viewer.esm.js +0 -2
  194. package/dist/babylon-viewer.esm.js.map +0 -1
  195. package/dist/babylon-viewer.esm.min.js +0 -2
  196. package/dist/babylon-viewer.esm.min.js.map +0 -1
  197. package/dist/chunks/EXT_lights_image_based-3eXoqwff.esm.min.js +0 -2
  198. package/dist/chunks/EXT_lights_image_based-3eXoqwff.esm.min.js.map +0 -1
  199. package/dist/chunks/EXT_lights_image_based-DgCGZ2BG.esm.js +0 -172
  200. package/dist/chunks/EXT_lights_image_based-DgCGZ2BG.esm.js.map +0 -1
  201. package/dist/chunks/EXT_mesh_gpu_instancing-UFRD8RET.esm.js +0 -86
  202. package/dist/chunks/EXT_mesh_gpu_instancing-UFRD8RET.esm.js.map +0 -1
  203. package/dist/chunks/EXT_mesh_gpu_instancing-jLXZLcnP.esm.min.js +0 -2
  204. package/dist/chunks/EXT_mesh_gpu_instancing-jLXZLcnP.esm.min.js.map +0 -1
  205. package/dist/chunks/EXT_meshopt_compression-2itUWj1c.esm.js +0 -134
  206. package/dist/chunks/EXT_meshopt_compression-2itUWj1c.esm.js.map +0 -1
  207. package/dist/chunks/EXT_meshopt_compression-COSiPUUL.esm.min.js +0 -2
  208. package/dist/chunks/EXT_meshopt_compression-COSiPUUL.esm.min.js.map +0 -1
  209. package/dist/chunks/EXT_texture_avif-DDk0j61R.esm.js +0 -44
  210. package/dist/chunks/EXT_texture_avif-DDk0j61R.esm.js.map +0 -1
  211. package/dist/chunks/EXT_texture_avif-S53GgWUZ.esm.min.js +0 -2
  212. package/dist/chunks/EXT_texture_avif-S53GgWUZ.esm.min.js.map +0 -1
  213. package/dist/chunks/EXT_texture_webp-C9RawsOL.esm.js +0 -43
  214. package/dist/chunks/EXT_texture_webp-C9RawsOL.esm.js.map +0 -1
  215. package/dist/chunks/EXT_texture_webp-D2XKcbvR.esm.min.js +0 -2
  216. package/dist/chunks/EXT_texture_webp-D2XKcbvR.esm.min.js.map +0 -1
  217. package/dist/chunks/ExtrasAsMetadata-CT2uMzBs.esm.js +0 -64
  218. package/dist/chunks/ExtrasAsMetadata-CT2uMzBs.esm.js.map +0 -1
  219. package/dist/chunks/ExtrasAsMetadata-CTQija-r.esm.min.js +0 -2
  220. package/dist/chunks/ExtrasAsMetadata-CTQija-r.esm.min.js.map +0 -1
  221. package/dist/chunks/KHR_animation_pointer-BRkXpXY_.esm.min.js +0 -2
  222. package/dist/chunks/KHR_animation_pointer-BRkXpXY_.esm.min.js.map +0 -1
  223. package/dist/chunks/KHR_animation_pointer-DrPB7NZz.esm.js +0 -343
  224. package/dist/chunks/KHR_animation_pointer-DrPB7NZz.esm.js.map +0 -1
  225. package/dist/chunks/KHR_draco_mesh_compression-3KGuSXAA.esm.min.js +0 -2
  226. package/dist/chunks/KHR_draco_mesh_compression-3KGuSXAA.esm.min.js.map +0 -1
  227. package/dist/chunks/KHR_draco_mesh_compression-CwTlj-Hp.esm.js +0 -610
  228. package/dist/chunks/KHR_draco_mesh_compression-CwTlj-Hp.esm.js.map +0 -1
  229. package/dist/chunks/KHR_interactivity-CPooex_D.esm.js +0 -4033
  230. package/dist/chunks/KHR_interactivity-CPooex_D.esm.js.map +0 -1
  231. package/dist/chunks/KHR_interactivity-CjtTFwNc.esm.min.js +0 -2
  232. package/dist/chunks/KHR_interactivity-CjtTFwNc.esm.min.js.map +0 -1
  233. package/dist/chunks/KHR_lights_punctual-CE_Pbomw.esm.js +0 -1253
  234. package/dist/chunks/KHR_lights_punctual-CE_Pbomw.esm.js.map +0 -1
  235. package/dist/chunks/KHR_lights_punctual-MUrTncyq.esm.min.js +0 -2
  236. package/dist/chunks/KHR_lights_punctual-MUrTncyq.esm.min.js.map +0 -1
  237. package/dist/chunks/KHR_materials_anisotropy-DcEIoErr.esm.js +0 -64
  238. package/dist/chunks/KHR_materials_anisotropy-DcEIoErr.esm.js.map +0 -1
  239. package/dist/chunks/KHR_materials_anisotropy-U-61ECua.esm.min.js +0 -2
  240. package/dist/chunks/KHR_materials_anisotropy-U-61ECua.esm.min.js.map +0 -1
  241. package/dist/chunks/KHR_materials_clearcoat-CtK90V8c.esm.js +0 -96
  242. package/dist/chunks/KHR_materials_clearcoat-CtK90V8c.esm.js.map +0 -1
  243. package/dist/chunks/KHR_materials_clearcoat-DMi2rgcw.esm.min.js +0 -2
  244. package/dist/chunks/KHR_materials_clearcoat-DMi2rgcw.esm.min.js.map +0 -1
  245. package/dist/chunks/KHR_materials_diffuse_transmission-BwohhmnH.esm.js +0 -97
  246. package/dist/chunks/KHR_materials_diffuse_transmission-BwohhmnH.esm.js.map +0 -1
  247. package/dist/chunks/KHR_materials_diffuse_transmission-aRFTAZnS.esm.min.js +0 -2
  248. package/dist/chunks/KHR_materials_diffuse_transmission-aRFTAZnS.esm.min.js.map +0 -1
  249. package/dist/chunks/KHR_materials_dispersion-C0sb52Jw.esm.js +0 -62
  250. package/dist/chunks/KHR_materials_dispersion-C0sb52Jw.esm.js.map +0 -1
  251. package/dist/chunks/KHR_materials_dispersion-C4HCJyeO.esm.min.js +0 -2
  252. package/dist/chunks/KHR_materials_dispersion-C4HCJyeO.esm.min.js.map +0 -1
  253. package/dist/chunks/KHR_materials_emissive_strength-CthUQnvM.esm.js +0 -55
  254. package/dist/chunks/KHR_materials_emissive_strength-CthUQnvM.esm.js.map +0 -1
  255. package/dist/chunks/KHR_materials_emissive_strength-L5aAyvqr.esm.min.js +0 -2
  256. package/dist/chunks/KHR_materials_emissive_strength-L5aAyvqr.esm.min.js.map +0 -1
  257. package/dist/chunks/KHR_materials_ior-BSUtCKDf.esm.js +0 -64
  258. package/dist/chunks/KHR_materials_ior-BSUtCKDf.esm.js.map +0 -1
  259. package/dist/chunks/KHR_materials_ior-DAKNR7z-.esm.min.js +0 -2
  260. package/dist/chunks/KHR_materials_ior-DAKNR7z-.esm.min.js.map +0 -1
  261. package/dist/chunks/KHR_materials_iridescence-BjLvEtdQ.esm.min.js +0 -2
  262. package/dist/chunks/KHR_materials_iridescence-BjLvEtdQ.esm.min.js.map +0 -1
  263. package/dist/chunks/KHR_materials_iridescence-CQ-o2Qag.esm.js +0 -72
  264. package/dist/chunks/KHR_materials_iridescence-CQ-o2Qag.esm.js.map +0 -1
  265. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-Cx8AsXK8.esm.min.js +0 -2
  266. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-Cx8AsXK8.esm.min.js.map +0 -1
  267. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-iQiy6qp4.esm.js +0 -81
  268. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-iQiy6qp4.esm.js.map +0 -1
  269. package/dist/chunks/KHR_materials_sheen-CQkrxBFM.esm.min.js +0 -2
  270. package/dist/chunks/KHR_materials_sheen-CQkrxBFM.esm.min.js.map +0 -1
  271. package/dist/chunks/KHR_materials_sheen-IPqZM4PN.esm.js +0 -85
  272. package/dist/chunks/KHR_materials_sheen-IPqZM4PN.esm.js.map +0 -1
  273. package/dist/chunks/KHR_materials_specular-BkCr8Zv5.esm.js +0 -75
  274. package/dist/chunks/KHR_materials_specular-BkCr8Zv5.esm.js.map +0 -1
  275. package/dist/chunks/KHR_materials_specular-CVIDVIZl.esm.min.js +0 -2
  276. package/dist/chunks/KHR_materials_specular-CVIDVIZl.esm.min.js.map +0 -1
  277. package/dist/chunks/KHR_materials_transmission--XYp5qZT.esm.min.js +0 -2
  278. package/dist/chunks/KHR_materials_transmission--XYp5qZT.esm.min.js.map +0 -1
  279. package/dist/chunks/KHR_materials_transmission-C5q0bJ71.esm.js +0 -307
  280. package/dist/chunks/KHR_materials_transmission-C5q0bJ71.esm.js.map +0 -1
  281. package/dist/chunks/KHR_materials_unlit-C_0UOWUu.esm.min.js +0 -2
  282. package/dist/chunks/KHR_materials_unlit-C_0UOWUu.esm.min.js.map +0 -1
  283. package/dist/chunks/KHR_materials_unlit-qnEYXc2y.esm.js +0 -74
  284. package/dist/chunks/KHR_materials_unlit-qnEYXc2y.esm.js.map +0 -1
  285. package/dist/chunks/KHR_materials_variants-CXJiHSOj.esm.js +0 -238
  286. package/dist/chunks/KHR_materials_variants-CXJiHSOj.esm.js.map +0 -1
  287. package/dist/chunks/KHR_materials_variants-DYis5Tv2.esm.min.js +0 -2
  288. package/dist/chunks/KHR_materials_variants-DYis5Tv2.esm.min.js.map +0 -1
  289. package/dist/chunks/KHR_materials_volume-BfwkCW5U.esm.min.js +0 -2
  290. package/dist/chunks/KHR_materials_volume-BfwkCW5U.esm.min.js.map +0 -1
  291. package/dist/chunks/KHR_materials_volume-DjJClxGQ.esm.js +0 -87
  292. package/dist/chunks/KHR_materials_volume-DjJClxGQ.esm.js.map +0 -1
  293. package/dist/chunks/KHR_mesh_quantization-BVjp41hH.esm.js +0 -26
  294. package/dist/chunks/KHR_mesh_quantization-BVjp41hH.esm.js.map +0 -1
  295. package/dist/chunks/KHR_mesh_quantization-Bs1ERLau.esm.min.js +0 -2
  296. package/dist/chunks/KHR_mesh_quantization-Bs1ERLau.esm.min.js.map +0 -1
  297. package/dist/chunks/KHR_texture_basisu-CX4ZwCxA.esm.min.js +0 -2
  298. package/dist/chunks/KHR_texture_basisu-CX4ZwCxA.esm.min.js.map +0 -1
  299. package/dist/chunks/KHR_texture_basisu-DpzoPKaR.esm.js +0 -43
  300. package/dist/chunks/KHR_texture_basisu-DpzoPKaR.esm.js.map +0 -1
  301. package/dist/chunks/KHR_texture_transform-BYTNC2PZ.esm.js +0 -63
  302. package/dist/chunks/KHR_texture_transform-BYTNC2PZ.esm.js.map +0 -1
  303. package/dist/chunks/KHR_texture_transform-D2gSKYqq.esm.min.js +0 -2
  304. package/dist/chunks/KHR_texture_transform-D2gSKYqq.esm.min.js.map +0 -1
  305. package/dist/chunks/KHR_xmp_json_ld-B9p_mnIE.esm.min.js +0 -2
  306. package/dist/chunks/KHR_xmp_json_ld-B9p_mnIE.esm.min.js.map +0 -1
  307. package/dist/chunks/KHR_xmp_json_ld-yryfql1G.esm.js +0 -51
  308. package/dist/chunks/KHR_xmp_json_ld-yryfql1G.esm.js.map +0 -1
  309. package/dist/chunks/MSFT_audio_emitter-CsMdhXHJ.esm.min.js +0 -2
  310. package/dist/chunks/MSFT_audio_emitter-CsMdhXHJ.esm.min.js.map +0 -1
  311. package/dist/chunks/MSFT_audio_emitter-bdzRBwn5.esm.js +0 -2207
  312. package/dist/chunks/MSFT_audio_emitter-bdzRBwn5.esm.js.map +0 -1
  313. package/dist/chunks/MSFT_lod-CRv-taiG.esm.js +0 -337
  314. package/dist/chunks/MSFT_lod-CRv-taiG.esm.js.map +0 -1
  315. package/dist/chunks/MSFT_lod-DY6GwVy6.esm.min.js +0 -2
  316. package/dist/chunks/MSFT_lod-DY6GwVy6.esm.min.js.map +0 -1
  317. package/dist/chunks/MSFT_minecraftMesh-BKt5AmWl.esm.js +0 -46
  318. package/dist/chunks/MSFT_minecraftMesh-BKt5AmWl.esm.js.map +0 -1
  319. package/dist/chunks/MSFT_minecraftMesh-Dt7wMpY2.esm.min.js +0 -2
  320. package/dist/chunks/MSFT_minecraftMesh-Dt7wMpY2.esm.min.js.map +0 -1
  321. package/dist/chunks/MSFT_sRGBFactors-72Bu-2h1.esm.min.js +0 -2
  322. package/dist/chunks/MSFT_sRGBFactors-72Bu-2h1.esm.min.js.map +0 -1
  323. package/dist/chunks/MSFT_sRGBFactors-BbWdK1_1.esm.js +0 -47
  324. package/dist/chunks/MSFT_sRGBFactors-BbWdK1_1.esm.js.map +0 -1
  325. package/dist/chunks/animationGroup-Cnv-QRPm.esm.js +0 -2479
  326. package/dist/chunks/animationGroup-Cnv-QRPm.esm.js.map +0 -1
  327. package/dist/chunks/animationGroup-Dj6g76i_.esm.min.js +0 -2
  328. package/dist/chunks/animationGroup-Dj6g76i_.esm.min.js.map +0 -1
  329. package/dist/chunks/assetContainer-C-F4HA2b.esm.js +0 -1720
  330. package/dist/chunks/assetContainer-C-F4HA2b.esm.js.map +0 -1
  331. package/dist/chunks/assetContainer-yzkL3HL9.esm.min.js +0 -2
  332. package/dist/chunks/assetContainer-yzkL3HL9.esm.min.js.map +0 -1
  333. package/dist/chunks/audioEngine-2xiZaVR-.esm.min.js +0 -2
  334. package/dist/chunks/audioEngine-2xiZaVR-.esm.min.js.map +0 -1
  335. package/dist/chunks/audioEngine-Cx0ma7EX.esm.js +0 -305
  336. package/dist/chunks/audioEngine-Cx0ma7EX.esm.js.map +0 -1
  337. package/dist/chunks/bakedVertexAnimation-ANJNS_Pv.esm.min.js +0 -2
  338. package/dist/chunks/bakedVertexAnimation-ANJNS_Pv.esm.min.js.map +0 -1
  339. package/dist/chunks/bakedVertexAnimation-CxyFWdGx.esm.js +0 -119
  340. package/dist/chunks/bakedVertexAnimation-CxyFWdGx.esm.js.map +0 -1
  341. package/dist/chunks/basisTextureLoader-BwtYdV_P.esm.js +0 -600
  342. package/dist/chunks/basisTextureLoader-BwtYdV_P.esm.js.map +0 -1
  343. package/dist/chunks/basisTextureLoader-Dq_XBlPR.esm.min.js +0 -2
  344. package/dist/chunks/basisTextureLoader-Dq_XBlPR.esm.min.js.map +0 -1
  345. package/dist/chunks/dds-D5OqOLui.esm.js +0 -540
  346. package/dist/chunks/dds-D5OqOLui.esm.js.map +0 -1
  347. package/dist/chunks/dds-DK9ShfvY.esm.min.js +0 -2
  348. package/dist/chunks/dds-DK9ShfvY.esm.min.js.map +0 -1
  349. package/dist/chunks/ddsTextureLoader-2ezzl3nq.esm.js +0 -88
  350. package/dist/chunks/ddsTextureLoader-2ezzl3nq.esm.js.map +0 -1
  351. package/dist/chunks/ddsTextureLoader-C3o86gMM.esm.min.js +0 -2
  352. package/dist/chunks/ddsTextureLoader-C3o86gMM.esm.min.js.map +0 -1
  353. package/dist/chunks/decalFragment-Drag0mRm.esm.js +0 -18
  354. package/dist/chunks/decalFragment-Drag0mRm.esm.js.map +0 -1
  355. package/dist/chunks/decalFragment-I7zHHg4g.esm.min.js +0 -2
  356. package/dist/chunks/decalFragment-I7zHHg4g.esm.min.js.map +0 -1
  357. package/dist/chunks/default.fragment-C757ivRm.esm.min.js +0 -2
  358. package/dist/chunks/default.fragment-C757ivRm.esm.min.js.map +0 -1
  359. package/dist/chunks/default.fragment-CBCZy0zH.esm.js +0 -515
  360. package/dist/chunks/default.fragment-CBCZy0zH.esm.js.map +0 -1
  361. package/dist/chunks/default.fragment-CxhchRBe.esm.min.js +0 -2
  362. package/dist/chunks/default.fragment-CxhchRBe.esm.min.js.map +0 -1
  363. package/dist/chunks/default.fragment-vJeaqi0K.esm.js +0 -449
  364. package/dist/chunks/default.fragment-vJeaqi0K.esm.js.map +0 -1
  365. package/dist/chunks/default.vertex-CyPWwm-H.esm.min.js +0 -2
  366. package/dist/chunks/default.vertex-CyPWwm-H.esm.min.js.map +0 -1
  367. package/dist/chunks/default.vertex-DKlAQm_v.esm.min.js +0 -2
  368. package/dist/chunks/default.vertex-DKlAQm_v.esm.min.js.map +0 -1
  369. package/dist/chunks/default.vertex-EbP94etr.esm.js +0 -199
  370. package/dist/chunks/default.vertex-EbP94etr.esm.js.map +0 -1
  371. package/dist/chunks/default.vertex-sXmCc1dY.esm.js +0 -180
  372. package/dist/chunks/default.vertex-sXmCc1dY.esm.js.map +0 -1
  373. package/dist/chunks/defaultUboDeclaration-C3pnDAEV.esm.min.js +0 -2
  374. package/dist/chunks/defaultUboDeclaration-C3pnDAEV.esm.min.js.map +0 -1
  375. package/dist/chunks/defaultUboDeclaration-DKQWE8MQ.esm.min.js +0 -2
  376. package/dist/chunks/defaultUboDeclaration-DKQWE8MQ.esm.min.js.map +0 -1
  377. package/dist/chunks/defaultUboDeclaration-DjoMGLp2.esm.js +0 -13
  378. package/dist/chunks/defaultUboDeclaration-DjoMGLp2.esm.js.map +0 -1
  379. package/dist/chunks/defaultUboDeclaration-HaQvlp0b.esm.js +0 -15
  380. package/dist/chunks/defaultUboDeclaration-HaQvlp0b.esm.js.map +0 -1
  381. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js +0 -11
  382. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js.map +0 -1
  383. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js +0 -2
  384. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js.map +0 -1
  385. package/dist/chunks/dumpTools-8Kbuuv_t.esm.js +0 -401
  386. package/dist/chunks/dumpTools-8Kbuuv_t.esm.js.map +0 -1
  387. package/dist/chunks/dumpTools-BQULMnHn.esm.min.js +0 -2
  388. package/dist/chunks/dumpTools-BQULMnHn.esm.min.js.map +0 -1
  389. package/dist/chunks/engine-R8ufvngA.esm.js +0 -2174
  390. package/dist/chunks/engine-R8ufvngA.esm.js.map +0 -1
  391. package/dist/chunks/engine-j0ie5u4Y.esm.min.js +0 -2
  392. package/dist/chunks/engine-j0ie5u4Y.esm.min.js.map +0 -1
  393. package/dist/chunks/engine.common-DW5fOVN3.esm.min.js +0 -2
  394. package/dist/chunks/engine.common-DW5fOVN3.esm.min.js.map +0 -1
  395. package/dist/chunks/engine.common-buSIz8Ev.esm.js +0 -1088
  396. package/dist/chunks/engine.common-buSIz8Ev.esm.js.map +0 -1
  397. package/dist/chunks/envTextureLoader-B6pcDqsM.esm.min.js +0 -2
  398. package/dist/chunks/envTextureLoader-B6pcDqsM.esm.min.js.map +0 -1
  399. package/dist/chunks/envTextureLoader-CGhTHASj.esm.js +0 -65
  400. package/dist/chunks/envTextureLoader-CGhTHASj.esm.js.map +0 -1
  401. package/dist/chunks/environmentTextureTools-BDGuP88l.esm.js +0 -382
  402. package/dist/chunks/environmentTextureTools-BDGuP88l.esm.js.map +0 -1
  403. package/dist/chunks/environmentTextureTools-BT0gE-EJ.esm.min.js +0 -2
  404. package/dist/chunks/environmentTextureTools-BT0gE-EJ.esm.min.js.map +0 -1
  405. package/dist/chunks/exrTextureLoader-CN5dc0n8.esm.min.js +0 -2
  406. package/dist/chunks/exrTextureLoader-CN5dc0n8.esm.min.js.map +0 -1
  407. package/dist/chunks/exrTextureLoader-CYQnUrVl.esm.js +0 -1682
  408. package/dist/chunks/exrTextureLoader-CYQnUrVl.esm.js.map +0 -1
  409. package/dist/chunks/fogFragment-6FnKPxpy.esm.min.js +0 -2
  410. package/dist/chunks/fogFragment-6FnKPxpy.esm.min.js.map +0 -1
  411. package/dist/chunks/fogFragment-CizzLpaY.esm.js +0 -102
  412. package/dist/chunks/fogFragment-CizzLpaY.esm.js.map +0 -1
  413. package/dist/chunks/fresnelFunction-B6mPA48a.esm.min.js +0 -2
  414. package/dist/chunks/fresnelFunction-B6mPA48a.esm.min.js.map +0 -1
  415. package/dist/chunks/fresnelFunction-DVso4sEr.esm.js +0 -12
  416. package/dist/chunks/fresnelFunction-DVso4sEr.esm.js.map +0 -1
  417. package/dist/chunks/glTFLoader-CEQKEyEA.esm.min.js +0 -2
  418. package/dist/chunks/glTFLoader-CEQKEyEA.esm.min.js.map +0 -1
  419. package/dist/chunks/glTFLoader-ht4lq0nT.esm.js +0 -7563
  420. package/dist/chunks/glTFLoader-ht4lq0nT.esm.js.map +0 -1
  421. package/dist/chunks/glTFLoaderAnimation-C5YcVTsA.esm.min.js +0 -2
  422. package/dist/chunks/glTFLoaderAnimation-C5YcVTsA.esm.min.js.map +0 -1
  423. package/dist/chunks/glTFLoaderAnimation-DcmHMDkS.esm.js +0 -77
  424. package/dist/chunks/glTFLoaderAnimation-DcmHMDkS.esm.js.map +0 -1
  425. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js +0 -2
  426. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js.map +0 -1
  427. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js +0 -67
  428. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js.map +0 -1
  429. package/dist/chunks/harmonicsFunctions-BPx91vrF.esm.min.js +0 -2
  430. package/dist/chunks/harmonicsFunctions-BPx91vrF.esm.min.js.map +0 -1
  431. package/dist/chunks/harmonicsFunctions-D3SGmS-X.esm.js +0 -35
  432. package/dist/chunks/harmonicsFunctions-D3SGmS-X.esm.js.map +0 -1
  433. package/dist/chunks/harmonicsFunctions-DCor55C8.esm.js +0 -34
  434. package/dist/chunks/harmonicsFunctions-DCor55C8.esm.js.map +0 -1
  435. package/dist/chunks/harmonicsFunctions-m8lNczKz.esm.min.js +0 -2
  436. package/dist/chunks/harmonicsFunctions-m8lNczKz.esm.min.js.map +0 -1
  437. package/dist/chunks/hdrTextureLoader-CQcm6tqX.esm.js +0 -252
  438. package/dist/chunks/hdrTextureLoader-CQcm6tqX.esm.js.map +0 -1
  439. package/dist/chunks/hdrTextureLoader-DTzTMrfG.esm.min.js +0 -2
  440. package/dist/chunks/hdrTextureLoader-DTzTMrfG.esm.min.js.map +0 -1
  441. package/dist/chunks/helperFunctions-CQ8qVahI.esm.js +0 -80
  442. package/dist/chunks/helperFunctions-CQ8qVahI.esm.js.map +0 -1
  443. package/dist/chunks/helperFunctions-CZxhBJEB.esm.min.js +0 -2
  444. package/dist/chunks/helperFunctions-CZxhBJEB.esm.min.js.map +0 -1
  445. package/dist/chunks/helperFunctions-HLM-sI3x.esm.min.js +0 -2
  446. package/dist/chunks/helperFunctions-HLM-sI3x.esm.min.js.map +0 -1
  447. package/dist/chunks/helperFunctions-wENQHUG-.esm.js +0 -108
  448. package/dist/chunks/helperFunctions-wENQHUG-.esm.js.map +0 -1
  449. package/dist/chunks/index-BC5LF5i9.esm.min.js +0 -57
  450. package/dist/chunks/index-BC5LF5i9.esm.min.js.map +0 -1
  451. package/dist/chunks/index-D0E1moDr.esm.js +0 -71434
  452. package/dist/chunks/index-D0E1moDr.esm.js.map +0 -1
  453. package/dist/chunks/ktxTextureLoader-DuEV4loQ.esm.min.js +0 -2
  454. package/dist/chunks/ktxTextureLoader-DuEV4loQ.esm.min.js.map +0 -1
  455. package/dist/chunks/ktxTextureLoader-Dwzkv6L3.esm.js +0 -814
  456. package/dist/chunks/ktxTextureLoader-Dwzkv6L3.esm.js.map +0 -1
  457. package/dist/chunks/logDepthDeclaration-BiRU-jkq.esm.js +0 -20
  458. package/dist/chunks/logDepthDeclaration-BiRU-jkq.esm.js.map +0 -1
  459. package/dist/chunks/logDepthDeclaration-CgsbzCKe.esm.js +0 -35
  460. package/dist/chunks/logDepthDeclaration-CgsbzCKe.esm.js.map +0 -1
  461. package/dist/chunks/logDepthDeclaration-D5PPo0wt.esm.min.js +0 -2
  462. package/dist/chunks/logDepthDeclaration-D5PPo0wt.esm.min.js.map +0 -1
  463. package/dist/chunks/logDepthDeclaration-p80kxWvc.esm.min.js +0 -2
  464. package/dist/chunks/logDepthDeclaration-p80kxWvc.esm.min.js.map +0 -1
  465. package/dist/chunks/logDepthVertex-C8xmntAE.esm.js +0 -488
  466. package/dist/chunks/logDepthVertex-C8xmntAE.esm.js.map +0 -1
  467. package/dist/chunks/logDepthVertex-Da1k46VZ.esm.min.js +0 -2
  468. package/dist/chunks/logDepthVertex-Da1k46VZ.esm.min.js.map +0 -1
  469. package/dist/chunks/logDepthVertex-DgGvTksF.esm.min.js +0 -2
  470. package/dist/chunks/logDepthVertex-DgGvTksF.esm.min.js.map +0 -1
  471. package/dist/chunks/logDepthVertex-KLC5ytc9.esm.js +0 -77
  472. package/dist/chunks/logDepthVertex-KLC5ytc9.esm.js.map +0 -1
  473. package/dist/chunks/mainUVVaryingDeclaration-BBNnWqL3.esm.min.js +0 -2
  474. package/dist/chunks/mainUVVaryingDeclaration-BBNnWqL3.esm.min.js.map +0 -1
  475. package/dist/chunks/mainUVVaryingDeclaration-CrsDQ7Rw.esm.js +0 -11
  476. package/dist/chunks/mainUVVaryingDeclaration-CrsDQ7Rw.esm.js.map +0 -1
  477. package/dist/chunks/meshUboDeclaration-BvX3Ec7p.esm.min.js +0 -2
  478. package/dist/chunks/meshUboDeclaration-BvX3Ec7p.esm.min.js.map +0 -1
  479. package/dist/chunks/meshUboDeclaration-DRaaTiEk.esm.js +0 -24
  480. package/dist/chunks/meshUboDeclaration-DRaaTiEk.esm.js.map +0 -1
  481. package/dist/chunks/objFileLoader-Ce4aJaFM.esm.js +0 -1338
  482. package/dist/chunks/objFileLoader-Ce4aJaFM.esm.js.map +0 -1
  483. package/dist/chunks/objFileLoader-CrYKstAi.esm.min.js +0 -2
  484. package/dist/chunks/objFileLoader-CrYKstAi.esm.min.js.map +0 -1
  485. package/dist/chunks/oitFragment-CNXv_oV2.esm.js +0 -1210
  486. package/dist/chunks/oitFragment-CNXv_oV2.esm.js.map +0 -1
  487. package/dist/chunks/oitFragment-D-QO9BYL.esm.min.js +0 -2
  488. package/dist/chunks/oitFragment-D-QO9BYL.esm.min.js.map +0 -1
  489. package/dist/chunks/oitFragment-DL-siQkY.esm.js +0 -1150
  490. package/dist/chunks/oitFragment-DL-siQkY.esm.js.map +0 -1
  491. package/dist/chunks/oitFragment-Dh89u6kd.esm.min.js +0 -2
  492. package/dist/chunks/oitFragment-Dh89u6kd.esm.min.js.map +0 -1
  493. package/dist/chunks/pass.fragment-6gActEq9.esm.min.js +0 -2
  494. package/dist/chunks/pass.fragment-6gActEq9.esm.min.js.map +0 -1
  495. package/dist/chunks/pass.fragment-BWtGFHKR.esm.min.js +0 -2
  496. package/dist/chunks/pass.fragment-BWtGFHKR.esm.min.js.map +0 -1
  497. package/dist/chunks/pass.fragment-Cf3scVhm.esm.js +0 -15
  498. package/dist/chunks/pass.fragment-Cf3scVhm.esm.js.map +0 -1
  499. package/dist/chunks/pass.fragment-L2hyelgw.esm.js +0 -15
  500. package/dist/chunks/pass.fragment-L2hyelgw.esm.js.map +0 -1
  501. package/dist/chunks/pbr.fragment-BCiIhSwY.esm.min.js +0 -2
  502. package/dist/chunks/pbr.fragment-BCiIhSwY.esm.min.js.map +0 -1
  503. package/dist/chunks/pbr.fragment-BQsptCnM.esm.js +0 -3165
  504. package/dist/chunks/pbr.fragment-BQsptCnM.esm.js.map +0 -1
  505. package/dist/chunks/pbr.fragment-CV7nHiSW.esm.min.js +0 -2
  506. package/dist/chunks/pbr.fragment-CV7nHiSW.esm.min.js.map +0 -1
  507. package/dist/chunks/pbr.fragment-zekg3AtG.esm.js +0 -3219
  508. package/dist/chunks/pbr.fragment-zekg3AtG.esm.js.map +0 -1
  509. package/dist/chunks/pbr.vertex-BdS85hcR.esm.min.js +0 -2
  510. package/dist/chunks/pbr.vertex-BdS85hcR.esm.min.js.map +0 -1
  511. package/dist/chunks/pbr.vertex-CdmOZTsb.esm.js +0 -335
  512. package/dist/chunks/pbr.vertex-CdmOZTsb.esm.js.map +0 -1
  513. package/dist/chunks/pbr.vertex-Ch16cpRc.esm.min.js +0 -2
  514. package/dist/chunks/pbr.vertex-Ch16cpRc.esm.min.js.map +0 -1
  515. package/dist/chunks/pbr.vertex-DP-JkeNL.esm.js +0 -210
  516. package/dist/chunks/pbr.vertex-DP-JkeNL.esm.js.map +0 -1
  517. package/dist/chunks/postprocess.vertex-BfybF4d2.esm.js +0 -18
  518. package/dist/chunks/postprocess.vertex-BfybF4d2.esm.js.map +0 -1
  519. package/dist/chunks/postprocess.vertex-Bnmi3e9K.esm.min.js +0 -2
  520. package/dist/chunks/postprocess.vertex-Bnmi3e9K.esm.min.js.map +0 -1
  521. package/dist/chunks/postprocess.vertex-CYL4-dVR.esm.js +0 -20
  522. package/dist/chunks/postprocess.vertex-CYL4-dVR.esm.js.map +0 -1
  523. package/dist/chunks/postprocess.vertex-Q5d7l8WF.esm.min.js +0 -2
  524. package/dist/chunks/postprocess.vertex-Q5d7l8WF.esm.min.js.map +0 -1
  525. package/dist/chunks/rawTexture-BWFTuwIO.esm.min.js +0 -2
  526. package/dist/chunks/rawTexture-BWFTuwIO.esm.min.js.map +0 -1
  527. package/dist/chunks/rawTexture-C-BSm1U5.esm.js +0 -191
  528. package/dist/chunks/rawTexture-C-BSm1U5.esm.js.map +0 -1
  529. package/dist/chunks/rgbdDecode.fragment-6nGwVmNO.esm.js +0 -17
  530. package/dist/chunks/rgbdDecode.fragment-6nGwVmNO.esm.js.map +0 -1
  531. package/dist/chunks/rgbdDecode.fragment-CMYihxIb.esm.min.js +0 -2
  532. package/dist/chunks/rgbdDecode.fragment-CMYihxIb.esm.min.js.map +0 -1
  533. package/dist/chunks/rgbdDecode.fragment-D48eh1WK.esm.min.js +0 -2
  534. package/dist/chunks/rgbdDecode.fragment-D48eh1WK.esm.min.js.map +0 -1
  535. package/dist/chunks/rgbdDecode.fragment-u6BSTXhW.esm.js +0 -17
  536. package/dist/chunks/rgbdDecode.fragment-u6BSTXhW.esm.js.map +0 -1
  537. package/dist/chunks/rgbdEncode.fragment-BCiGkDDk.esm.js +0 -17
  538. package/dist/chunks/rgbdEncode.fragment-BCiGkDDk.esm.js.map +0 -1
  539. package/dist/chunks/rgbdEncode.fragment-B_9KO57D.esm.js +0 -17
  540. package/dist/chunks/rgbdEncode.fragment-B_9KO57D.esm.js.map +0 -1
  541. package/dist/chunks/rgbdEncode.fragment-CVrt_4Kj.esm.min.js +0 -2
  542. package/dist/chunks/rgbdEncode.fragment-CVrt_4Kj.esm.min.js.map +0 -1
  543. package/dist/chunks/rgbdEncode.fragment-V259OFB6.esm.min.js +0 -2
  544. package/dist/chunks/rgbdEncode.fragment-V259OFB6.esm.min.js.map +0 -1
  545. package/dist/chunks/splatFileLoader-BO6la5-H.esm.js +0 -3340
  546. package/dist/chunks/splatFileLoader-BO6la5-H.esm.js.map +0 -1
  547. package/dist/chunks/splatFileLoader-S6q5_XPy.esm.min.js +0 -2
  548. package/dist/chunks/splatFileLoader-S6q5_XPy.esm.min.js.map +0 -1
  549. package/dist/chunks/standardMaterial-BH9cL7Zd.esm.js +0 -1809
  550. package/dist/chunks/standardMaterial-BH9cL7Zd.esm.js.map +0 -1
  551. package/dist/chunks/standardMaterial-BMohC2Pw.esm.min.js +0 -2
  552. package/dist/chunks/standardMaterial-BMohC2Pw.esm.min.js.map +0 -1
  553. package/dist/chunks/stlFileLoader-DK1ITZRU.esm.min.js +0 -2
  554. package/dist/chunks/stlFileLoader-DK1ITZRU.esm.min.js.map +0 -1
  555. package/dist/chunks/stlFileLoader-DskoqTwS.esm.js +0 -238
  556. package/dist/chunks/stlFileLoader-DskoqTwS.esm.js.map +0 -1
  557. package/dist/chunks/tgaTextureLoader-BTlbmfHD.esm.js +0 -349
  558. package/dist/chunks/tgaTextureLoader-BTlbmfHD.esm.js.map +0 -1
  559. package/dist/chunks/tgaTextureLoader-BkfZcLS9.esm.min.js +0 -2
  560. package/dist/chunks/tgaTextureLoader-BkfZcLS9.esm.min.js.map +0 -1
  561. package/dist/chunks/thinEngine-0P3L0z6G.esm.js +0 -3721
  562. package/dist/chunks/thinEngine-0P3L0z6G.esm.js.map +0 -1
  563. package/dist/chunks/thinEngine-krcyvyno.esm.min.js +0 -2
  564. package/dist/chunks/thinEngine-krcyvyno.esm.min.js.map +0 -1
  565. package/dist/chunks/thinInstanceMesh-CkU4tmTv.esm.js +0 -314
  566. package/dist/chunks/thinInstanceMesh-CkU4tmTv.esm.js.map +0 -1
  567. package/dist/chunks/thinInstanceMesh-DUNQsOmG.esm.min.js +0 -2
  568. package/dist/chunks/thinInstanceMesh-DUNQsOmG.esm.min.js.map +0 -1
  569. package/dist/chunks/vertexColorMixing-Cs7crUUt.esm.min.js +0 -2
  570. package/dist/chunks/vertexColorMixing-Cs7crUUt.esm.min.js.map +0 -1
  571. package/dist/chunks/vertexColorMixing-DreWOedd.esm.js +0 -528
  572. package/dist/chunks/vertexColorMixing-DreWOedd.esm.js.map +0 -1
  573. package/dist/chunks/webgpuEngine-DG1ciCtE.esm.min.js +0 -2
  574. package/dist/chunks/webgpuEngine-DG1ciCtE.esm.min.js.map +0 -1
  575. package/dist/chunks/webgpuEngine-YE9aMbSH.esm.js +0 -11180
  576. package/dist/chunks/webgpuEngine-YE9aMbSH.esm.js.map +0 -1
  577. package/dist/chunks/workerPool-BUOov2K1.esm.js +0 -122
  578. package/dist/chunks/workerPool-BUOov2K1.esm.js.map +0 -1
  579. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js +0 -2
  580. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js.map +0 -1
  581. package/docs/ViewerDefault.jpg +0 -0
  582. package/docs/ViewerParts.jpg +0 -0
  583. package/docs/ViewerSlots.jpg +0 -0
  584. package/docs/ViewerStyled.jpg +0 -0
  585. package/lib/index.d.ts +0 -287
  586. package/lib/index.js +0 -1022
  587. package/lib/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"standardMaterial-BMohC2Pw.esm.min.js","sources":["../../../../../dev/core/dist/Materials/standardMaterial.js"],"sourcesContent":["import { __decorate } from \"tslib\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { serialize, serializeAsColor3, expandToProperty, serializeAsFresnelParameters, serializeAsTexture } from \"../Misc/decorators\";\nimport { SmartArray } from \"../Misc/smartArray\";\nimport { Scene } from \"../scene\";\nimport { Matrix } from \"../Maths/math.vector\";\nimport { Color3 } from \"../Maths/math.color\";\nimport { VertexBuffer } from \"../Buffers/buffer\";\nimport { PrePassConfiguration } from \"./prePassConfiguration\";\nimport { ImageProcessingConfiguration } from \"./imageProcessingConfiguration\";\nimport { Material } from \"../Materials/material\";\nimport { MaterialDefines } from \"../Materials/materialDefines\";\nimport { PushMaterial } from \"./pushMaterial\";\nimport { Texture } from \"../Materials/Textures/texture\";\nimport { RegisterClass } from \"../Misc/typeStore\";\nimport { MaterialFlags } from \"./materialFlags\";\nimport { Constants } from \"../Engines/constants\";\nimport { EffectFallbacks } from \"./effectFallbacks\";\nimport { DetailMapConfiguration } from \"./material.detailMapConfiguration\";\nimport { addClipPlaneUniforms, bindClipPlane } from \"./clipPlaneMaterialHelper\";\nimport { BindBonesParameters, BindFogParameters, BindLights, BindLogDepth, BindMorphTargetParameters, BindTextureMatrix, HandleFallbacksForShadows, PrepareAttributesForBakedVertexAnimation, PrepareAttributesForBones, PrepareAttributesForInstances, PrepareAttributesForMorphTargets, PrepareDefinesForAttributes, PrepareDefinesForFrameBoundValues, PrepareDefinesForLights, PrepareDefinesForMergedUV, PrepareDefinesForMisc, PrepareDefinesForMultiview, PrepareDefinesForOIT, PrepareDefinesForPrePass, PrepareUniformsAndSamplersList, } from \"./materialHelper.functions\";\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\nimport { UniformBuffer } from \"./uniformBuffer\";\nconst onCreatedEffectParameters = { effect: null, subMesh: null };\n/** @internal */\nexport class StandardMaterialDefines extends MaterialDefines {\n /**\n * Initializes the Standard Material defines.\n * @param externalProperties The external properties\n */\n constructor(externalProperties) {\n super(externalProperties);\n this.MAINUV1 = false;\n this.MAINUV2 = false;\n this.MAINUV3 = false;\n this.MAINUV4 = false;\n this.MAINUV5 = false;\n this.MAINUV6 = false;\n this.DIFFUSE = false;\n this.DIFFUSEDIRECTUV = 0;\n this.BAKED_VERTEX_ANIMATION_TEXTURE = false;\n this.AMBIENT = false;\n this.AMBIENTDIRECTUV = 0;\n this.OPACITY = false;\n this.OPACITYDIRECTUV = 0;\n this.OPACITYRGB = false;\n this.REFLECTION = false;\n this.EMISSIVE = false;\n this.EMISSIVEDIRECTUV = 0;\n this.SPECULAR = false;\n this.SPECULARDIRECTUV = 0;\n this.BUMP = false;\n this.BUMPDIRECTUV = 0;\n this.PARALLAX = false;\n this.PARALLAX_RHS = false;\n this.PARALLAXOCCLUSION = false;\n this.SPECULAROVERALPHA = false;\n this.CLIPPLANE = false;\n this.CLIPPLANE2 = false;\n this.CLIPPLANE3 = false;\n this.CLIPPLANE4 = false;\n this.CLIPPLANE5 = false;\n this.CLIPPLANE6 = false;\n this.ALPHATEST = false;\n this.DEPTHPREPASS = false;\n this.ALPHAFROMDIFFUSE = false;\n this.POINTSIZE = false;\n this.FOG = false;\n this.SPECULARTERM = false;\n this.DIFFUSEFRESNEL = false;\n this.OPACITYFRESNEL = false;\n this.REFLECTIONFRESNEL = false;\n this.REFRACTIONFRESNEL = false;\n this.EMISSIVEFRESNEL = false;\n this.FRESNEL = false;\n this.NORMAL = false;\n this.TANGENT = false;\n this.UV1 = false;\n this.UV2 = false;\n this.UV3 = false;\n this.UV4 = false;\n this.UV5 = false;\n this.UV6 = false;\n this.VERTEXCOLOR = false;\n this.VERTEXALPHA = false;\n this.NUM_BONE_INFLUENCERS = 0;\n this.BonesPerMesh = 0;\n this.BONETEXTURE = false;\n this.BONES_VELOCITY_ENABLED = false;\n this.INSTANCES = false;\n this.THIN_INSTANCES = false;\n this.INSTANCESCOLOR = false;\n this.GLOSSINESS = false;\n this.ROUGHNESS = false;\n this.EMISSIVEASILLUMINATION = false;\n this.LINKEMISSIVEWITHDIFFUSE = false;\n this.REFLECTIONFRESNELFROMSPECULAR = false;\n this.LIGHTMAP = false;\n this.LIGHTMAPDIRECTUV = 0;\n this.OBJECTSPACE_NORMALMAP = false;\n this.USELIGHTMAPASSHADOWMAP = false;\n this.REFLECTIONMAP_3D = false;\n this.REFLECTIONMAP_SPHERICAL = false;\n this.REFLECTIONMAP_PLANAR = false;\n this.REFLECTIONMAP_CUBIC = false;\n this.USE_LOCAL_REFLECTIONMAP_CUBIC = false;\n this.USE_LOCAL_REFRACTIONMAP_CUBIC = false;\n this.REFLECTIONMAP_PROJECTION = false;\n this.REFLECTIONMAP_SKYBOX = false;\n this.REFLECTIONMAP_EXPLICIT = false;\n this.REFLECTIONMAP_EQUIRECTANGULAR = false;\n this.REFLECTIONMAP_EQUIRECTANGULAR_FIXED = false;\n this.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED = false;\n this.REFLECTIONMAP_OPPOSITEZ = false;\n this.INVERTCUBICMAP = false;\n this.LOGARITHMICDEPTH = false;\n this.REFRACTION = false;\n this.REFRACTIONMAP_3D = false;\n this.REFLECTIONOVERALPHA = false;\n this.TWOSIDEDLIGHTING = false;\n this.SHADOWFLOAT = false;\n this.MORPHTARGETS = false;\n this.MORPHTARGETS_NORMAL = false;\n this.MORPHTARGETS_TANGENT = false;\n this.MORPHTARGETS_UV = false;\n this.NUM_MORPH_INFLUENCERS = 0;\n this.MORPHTARGETS_TEXTURE = false;\n this.NONUNIFORMSCALING = false; // https://playground.babylonjs.com#V6DWIH\n this.PREMULTIPLYALPHA = false; // https://playground.babylonjs.com#LNVJJ7\n this.ALPHATEST_AFTERALLALPHACOMPUTATIONS = false;\n this.ALPHABLEND = true;\n this.PREPASS = false;\n this.PREPASS_IRRADIANCE = false;\n this.PREPASS_IRRADIANCE_INDEX = -1;\n this.PREPASS_ALBEDO_SQRT = false;\n this.PREPASS_ALBEDO_SQRT_INDEX = -1;\n this.PREPASS_DEPTH = false;\n this.PREPASS_DEPTH_INDEX = -1;\n this.PREPASS_SCREENSPACE_DEPTH = false;\n this.PREPASS_SCREENSPACE_DEPTH_INDEX = -1;\n this.PREPASS_NORMAL = false;\n this.PREPASS_NORMAL_INDEX = -1;\n this.PREPASS_NORMAL_WORLDSPACE = false;\n this.PREPASS_WORLD_NORMAL = false;\n this.PREPASS_WORLD_NORMAL_INDEX = -1;\n this.PREPASS_POSITION = false;\n this.PREPASS_POSITION_INDEX = -1;\n this.PREPASS_LOCAL_POSITION = false;\n this.PREPASS_LOCAL_POSITION_INDEX = -1;\n this.PREPASS_VELOCITY = false;\n this.PREPASS_VELOCITY_INDEX = -1;\n this.PREPASS_VELOCITY_LINEAR = false;\n this.PREPASS_VELOCITY_LINEAR_INDEX = -1;\n this.PREPASS_REFLECTIVITY = false;\n this.PREPASS_REFLECTIVITY_INDEX = -1;\n this.SCENE_MRT_COUNT = 0;\n this.RGBDLIGHTMAP = false;\n this.RGBDREFLECTION = false;\n this.RGBDREFRACTION = false;\n this.IMAGEPROCESSING = false;\n this.VIGNETTE = false;\n this.VIGNETTEBLENDMODEMULTIPLY = false;\n this.VIGNETTEBLENDMODEOPAQUE = false;\n this.TONEMAPPING = 0;\n this.CONTRAST = false;\n this.COLORCURVES = false;\n this.COLORGRADING = false;\n this.COLORGRADING3D = false;\n this.SAMPLER3DGREENDEPTH = false;\n this.SAMPLER3DBGRMAP = false;\n this.DITHER = false;\n this.IMAGEPROCESSINGPOSTPROCESS = false;\n this.SKIPFINALCOLORCLAMP = false;\n this.MULTIVIEW = false;\n this.ORDER_INDEPENDENT_TRANSPARENCY = false;\n this.ORDER_INDEPENDENT_TRANSPARENCY_16BITS = false;\n this.CAMERA_ORTHOGRAPHIC = false;\n this.CAMERA_PERSPECTIVE = false;\n /**\n * If the reflection texture on this material is in linear color space\n * @internal\n */\n this.IS_REFLECTION_LINEAR = false;\n /**\n * If the refraction texture on this material is in linear color space\n * @internal\n */\n this.IS_REFRACTION_LINEAR = false;\n this.EXPOSURE = false;\n this.DECAL_AFTER_DETAIL = false;\n this.rebuild();\n }\n setReflectionMode(modeToEnable) {\n const modes = [\n \"REFLECTIONMAP_CUBIC\",\n \"REFLECTIONMAP_EXPLICIT\",\n \"REFLECTIONMAP_PLANAR\",\n \"REFLECTIONMAP_PROJECTION\",\n \"REFLECTIONMAP_PROJECTION\",\n \"REFLECTIONMAP_SKYBOX\",\n \"REFLECTIONMAP_SPHERICAL\",\n \"REFLECTIONMAP_EQUIRECTANGULAR\",\n \"REFLECTIONMAP_EQUIRECTANGULAR_FIXED\",\n \"REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED\",\n ];\n for (const mode of modes) {\n this[mode] = mode === modeToEnable;\n }\n }\n}\n/**\n * This is the default material used in Babylon. It is the best trade off between quality\n * and performances.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/materials_introduction\n */\nexport class StandardMaterial extends PushMaterial {\n /**\n * Gets the image processing configuration used either in this material.\n */\n get imageProcessingConfiguration() {\n return this._imageProcessingConfiguration;\n }\n /**\n * Sets the Default image processing configuration used either in the this material.\n *\n * If sets to null, the scene one is in use.\n */\n set imageProcessingConfiguration(value) {\n this._attachImageProcessingConfiguration(value);\n // Ensure the effect will be rebuilt.\n this._markAllSubMeshesAsTexturesDirty();\n }\n /**\n * Attaches a new image processing configuration to the Standard Material.\n * @param configuration\n */\n _attachImageProcessingConfiguration(configuration) {\n if (configuration === this._imageProcessingConfiguration) {\n return;\n }\n // Detaches observer\n if (this._imageProcessingConfiguration && this._imageProcessingObserver) {\n this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver);\n }\n // Pick the scene configuration if needed\n if (!configuration) {\n this._imageProcessingConfiguration = this.getScene().imageProcessingConfiguration;\n }\n else {\n this._imageProcessingConfiguration = configuration;\n }\n // Attaches observer\n if (this._imageProcessingConfiguration) {\n this._imageProcessingObserver = this._imageProcessingConfiguration.onUpdateParameters.add(() => {\n this._markAllSubMeshesAsImageProcessingDirty();\n });\n }\n }\n /**\n * Can this material render to prepass\n */\n get isPrePassCapable() {\n return !this.disableDepthWrite;\n }\n /**\n * Gets whether the color curves effect is enabled.\n */\n get cameraColorCurvesEnabled() {\n return this.imageProcessingConfiguration.colorCurvesEnabled;\n }\n /**\n * Sets whether the color curves effect is enabled.\n */\n set cameraColorCurvesEnabled(value) {\n this.imageProcessingConfiguration.colorCurvesEnabled = value;\n }\n /**\n * Gets whether the color grading effect is enabled.\n */\n get cameraColorGradingEnabled() {\n return this.imageProcessingConfiguration.colorGradingEnabled;\n }\n /**\n * Gets whether the color grading effect is enabled.\n */\n set cameraColorGradingEnabled(value) {\n this.imageProcessingConfiguration.colorGradingEnabled = value;\n }\n /**\n * Gets whether tonemapping is enabled or not.\n */\n get cameraToneMappingEnabled() {\n return this._imageProcessingConfiguration.toneMappingEnabled;\n }\n /**\n * Sets whether tonemapping is enabled or not\n */\n set cameraToneMappingEnabled(value) {\n this._imageProcessingConfiguration.toneMappingEnabled = value;\n }\n /**\n * The camera exposure used on this material.\n * This property is here and not in the camera to allow controlling exposure without full screen post process.\n * This corresponds to a photographic exposure.\n */\n get cameraExposure() {\n return this._imageProcessingConfiguration.exposure;\n }\n /**\n * The camera exposure used on this material.\n * This property is here and not in the camera to allow controlling exposure without full screen post process.\n * This corresponds to a photographic exposure.\n */\n set cameraExposure(value) {\n this._imageProcessingConfiguration.exposure = value;\n }\n /**\n * Gets The camera contrast used on this material.\n */\n get cameraContrast() {\n return this._imageProcessingConfiguration.contrast;\n }\n /**\n * Sets The camera contrast used on this material.\n */\n set cameraContrast(value) {\n this._imageProcessingConfiguration.contrast = value;\n }\n /**\n * Gets the Color Grading 2D Lookup Texture.\n */\n get cameraColorGradingTexture() {\n return this._imageProcessingConfiguration.colorGradingTexture;\n }\n /**\n * Sets the Color Grading 2D Lookup Texture.\n */\n set cameraColorGradingTexture(value) {\n this._imageProcessingConfiguration.colorGradingTexture = value;\n }\n /**\n * The color grading curves provide additional color adjustmnent that is applied after any color grading transform (3D LUT).\n * They allow basic adjustment of saturation and small exposure adjustments, along with color filter tinting to provide white balance adjustment or more stylistic effects.\n * These are similar to controls found in many professional imaging or colorist software. The global controls are applied to the entire image. For advanced tuning, extra controls are provided to adjust the shadow, midtone and highlight areas of the image;\n * corresponding to low luminance, medium luminance, and high luminance areas respectively.\n */\n get cameraColorCurves() {\n return this._imageProcessingConfiguration.colorCurves;\n }\n /**\n * The color grading curves provide additional color adjustment that is applied after any color grading transform (3D LUT).\n * They allow basic adjustment of saturation and small exposure adjustments, along with color filter tinting to provide white balance adjustment or more stylistic effects.\n * These are similar to controls found in many professional imaging or colorist software. The global controls are applied to the entire image. For advanced tuning, extra controls are provided to adjust the shadow, midtone and highlight areas of the image;\n * corresponding to low luminance, medium luminance, and high luminance areas respectively.\n */\n set cameraColorCurves(value) {\n this._imageProcessingConfiguration.colorCurves = value;\n }\n /**\n * Can this material render to several textures at once\n */\n get canRenderToMRT() {\n return true;\n }\n /**\n * Instantiates a new standard material.\n * This is the default material used in Babylon. It is the best trade off between quality\n * and performances.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/materials_introduction\n * @param name Define the name of the material in the scene\n * @param scene Define the scene the material belong to\n * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false\n */\n constructor(name, scene, forceGLSL = false) {\n super(name, scene);\n this._diffuseTexture = null;\n this._ambientTexture = null;\n this._opacityTexture = null;\n this._reflectionTexture = null;\n this._emissiveTexture = null;\n this._specularTexture = null;\n this._bumpTexture = null;\n this._lightmapTexture = null;\n this._refractionTexture = null;\n /**\n * The color of the material lit by the environmental background lighting.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/materials_introduction#ambient-color-example\n */\n this.ambientColor = new Color3(0, 0, 0);\n /**\n * The basic color of the material as viewed under a light.\n */\n this.diffuseColor = new Color3(1, 1, 1);\n /**\n * Define how the color and intensity of the highlight given by the light in the material.\n */\n this.specularColor = new Color3(1, 1, 1);\n /**\n * Define the color of the material as if self lit.\n * This will be mixed in the final result even in the absence of light.\n */\n this.emissiveColor = new Color3(0, 0, 0);\n /**\n * Defines how sharp are the highlights in the material.\n * The bigger the value the sharper giving a more glossy feeling to the result.\n * Reversely, the smaller the value the blurrier giving a more rough feeling to the result.\n */\n this.specularPower = 64;\n this._useAlphaFromDiffuseTexture = false;\n this._useEmissiveAsIllumination = false;\n this._linkEmissiveWithDiffuse = false;\n this._useSpecularOverAlpha = false;\n this._useReflectionOverAlpha = false;\n this._disableLighting = false;\n this._useObjectSpaceNormalMap = false;\n this._useParallax = false;\n this._useParallaxOcclusion = false;\n /**\n * Apply a scaling factor that determine which \"depth\" the height map should reprensent. A value between 0.05 and 0.1 is reasonnable in Parallax, you can reach 0.2 using Parallax Occlusion.\n */\n this.parallaxScaleBias = 0.05;\n this._roughness = 0;\n /**\n * In case of refraction, define the value of the index of refraction.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#how-to-obtain-reflections-and-refractions\n */\n this.indexOfRefraction = 0.98;\n /**\n * Invert the refraction texture alongside the y axis.\n * It can be useful with procedural textures or probe for instance.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#how-to-obtain-reflections-and-refractions\n */\n this.invertRefractionY = true;\n /**\n * Defines the alpha limits in alpha test mode.\n */\n this.alphaCutOff = 0.4;\n this._useLightmapAsShadowmap = false;\n this._useReflectionFresnelFromSpecular = false;\n this._useGlossinessFromSpecularMapAlpha = false;\n this._maxSimultaneousLights = 4;\n this._invertNormalMapX = false;\n this._invertNormalMapY = false;\n this._twoSidedLighting = false;\n this._applyDecalMapAfterDetailMap = false;\n this._shadersLoaded = false;\n this._renderTargets = new SmartArray(16);\n this._worldViewProjectionMatrix = Matrix.Zero();\n this._globalAmbientColor = new Color3(0, 0, 0);\n this._cacheHasRenderTargetTextures = false;\n const engine = this.getScene().getEngine();\n if (engine.isWebGPU && !forceGLSL && !StandardMaterial.ForceGLSL) {\n // Switch main UBO to non UBO to connect to leftovers UBO in webgpu\n if (this._uniformBuffer) {\n this._uniformBuffer.dispose();\n }\n this._uniformBuffer = new UniformBuffer(engine, undefined, undefined, this.name, true);\n this._shaderLanguage = 1 /* ShaderLanguage.WGSL */;\n }\n this.detailMap = new DetailMapConfiguration(this);\n // Setup the default processing configuration to the scene.\n this._attachImageProcessingConfiguration(null);\n this.prePassConfiguration = new PrePassConfiguration();\n this.getRenderTargetTextures = () => {\n this._renderTargets.reset();\n if (StandardMaterial.ReflectionTextureEnabled && this._reflectionTexture && this._reflectionTexture.isRenderTarget) {\n this._renderTargets.push(this._reflectionTexture);\n }\n if (StandardMaterial.RefractionTextureEnabled && this._refractionTexture && this._refractionTexture.isRenderTarget) {\n this._renderTargets.push(this._refractionTexture);\n }\n this._eventInfo.renderTargets = this._renderTargets;\n this._callbackPluginEventFillRenderTargetTextures(this._eventInfo);\n return this._renderTargets;\n };\n }\n /**\n * Gets a boolean indicating that current material needs to register RTT\n */\n get hasRenderTargetTextures() {\n if (StandardMaterial.ReflectionTextureEnabled && this._reflectionTexture && this._reflectionTexture.isRenderTarget) {\n return true;\n }\n if (StandardMaterial.RefractionTextureEnabled && this._refractionTexture && this._refractionTexture.isRenderTarget) {\n return true;\n }\n return this._cacheHasRenderTargetTextures;\n }\n /**\n * Gets the current class name of the material e.g. \"StandardMaterial\"\n * Mainly use in serialization.\n * @returns the class name\n */\n getClassName() {\n return \"StandardMaterial\";\n }\n /**\n * Specifies if the material will require alpha blending\n * @returns a boolean specifying if alpha blending is needed\n */\n needAlphaBlending() {\n if (this._disableAlphaBlending) {\n return false;\n }\n return (this.alpha < 1.0 ||\n this._opacityTexture != null ||\n this._shouldUseAlphaFromDiffuseTexture() ||\n (this._opacityFresnelParameters && this._opacityFresnelParameters.isEnabled));\n }\n /**\n * Specifies if this material should be rendered in alpha test mode\n * @returns a boolean specifying if an alpha test is needed.\n */\n needAlphaTesting() {\n if (this._forceAlphaTest) {\n return true;\n }\n return this._hasAlphaChannel() && (this._transparencyMode == null || this._transparencyMode === Material.MATERIAL_ALPHATEST);\n }\n /**\n * @returns whether or not the alpha value of the diffuse texture should be used for alpha blending.\n */\n _shouldUseAlphaFromDiffuseTexture() {\n return this._diffuseTexture != null && this._diffuseTexture.hasAlpha && this._useAlphaFromDiffuseTexture && this._transparencyMode !== Material.MATERIAL_OPAQUE;\n }\n /**\n * @returns whether or not there is a usable alpha channel for transparency.\n */\n _hasAlphaChannel() {\n return (this._diffuseTexture != null && this._diffuseTexture.hasAlpha) || this._opacityTexture != null;\n }\n /**\n * Get the texture used for alpha test purpose.\n * @returns the diffuse texture in case of the standard material.\n */\n getAlphaTestTexture() {\n return this._diffuseTexture;\n }\n /**\n * Get if the submesh is ready to be used and all its information available.\n * Child classes can use it to update shaders\n * @param mesh defines the mesh to check\n * @param subMesh defines which submesh to check\n * @param useInstances specifies that instances should be used\n * @returns a boolean indicating that the submesh is ready or not\n */\n isReadyForSubMesh(mesh, subMesh, useInstances = false) {\n if (!this._uniformBufferLayoutBuilt) {\n this.buildUniformLayout();\n }\n const drawWrapper = subMesh._drawWrapper;\n if (drawWrapper.effect && this.isFrozen) {\n if (drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\n return true;\n }\n }\n if (!subMesh.materialDefines) {\n this._callbackPluginEventGeneric(4 /* MaterialPluginEvent.GetDefineNames */, this._eventInfo);\n subMesh.materialDefines = new StandardMaterialDefines(this._eventInfo.defineNames);\n }\n const scene = this.getScene();\n const defines = subMesh.materialDefines;\n if (this._isReadyForSubMesh(subMesh)) {\n return true;\n }\n const engine = scene.getEngine();\n // Lights\n defines._needNormals = PrepareDefinesForLights(scene, mesh, defines, true, this._maxSimultaneousLights, this._disableLighting);\n // Multiview\n PrepareDefinesForMultiview(scene, defines);\n // PrePass\n const oit = this.needAlphaBlendingForMesh(mesh) && this.getScene().useOrderIndependentTransparency;\n PrepareDefinesForPrePass(scene, defines, this.canRenderToMRT && !oit);\n // Order independant transparency\n PrepareDefinesForOIT(scene, defines, oit);\n // Textures\n if (defines._areTexturesDirty) {\n this._eventInfo.hasRenderTargetTextures = false;\n this._callbackPluginEventHasRenderTargetTextures(this._eventInfo);\n this._cacheHasRenderTargetTextures = this._eventInfo.hasRenderTargetTextures;\n defines._needUVs = false;\n for (let i = 1; i <= Constants.MAX_SUPPORTED_UV_SETS; ++i) {\n defines[\"MAINUV\" + i] = false;\n }\n if (scene.texturesEnabled) {\n defines.DIFFUSEDIRECTUV = 0;\n defines.BUMPDIRECTUV = 0;\n defines.AMBIENTDIRECTUV = 0;\n defines.OPACITYDIRECTUV = 0;\n defines.EMISSIVEDIRECTUV = 0;\n defines.SPECULARDIRECTUV = 0;\n defines.LIGHTMAPDIRECTUV = 0;\n if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {\n if (!this._diffuseTexture.isReadyOrNotBlocking()) {\n return false;\n }\n else {\n PrepareDefinesForMergedUV(this._diffuseTexture, defines, \"DIFFUSE\");\n }\n }\n else {\n defines.DIFFUSE = false;\n }\n if (this._ambientTexture && StandardMaterial.AmbientTextureEnabled) {\n if (!this._ambientTexture.isReadyOrNotBlocking()) {\n return false;\n }\n else {\n PrepareDefinesForMergedUV(this._ambientTexture, defines, \"AMBIENT\");\n }\n }\n else {\n defines.AMBIENT = false;\n }\n if (this._opacityTexture && StandardMaterial.OpacityTextureEnabled) {\n if (!this._opacityTexture.isReadyOrNotBlocking()) {\n return false;\n }\n else {\n PrepareDefinesForMergedUV(this._opacityTexture, defines, \"OPACITY\");\n defines.OPACITYRGB = this._opacityTexture.getAlphaFromRGB;\n }\n }\n else {\n defines.OPACITY = false;\n }\n if (this._reflectionTexture && StandardMaterial.ReflectionTextureEnabled) {\n if (!this._reflectionTexture.isReadyOrNotBlocking()) {\n return false;\n }\n else {\n defines._needNormals = true;\n defines.REFLECTION = true;\n defines.ROUGHNESS = this._roughness > 0;\n defines.REFLECTIONOVERALPHA = this._useReflectionOverAlpha;\n defines.INVERTCUBICMAP = this._reflectionTexture.coordinatesMode === Texture.INVCUBIC_MODE;\n defines.REFLECTIONMAP_3D = this._reflectionTexture.isCube;\n defines.REFLECTIONMAP_OPPOSITEZ =\n defines.REFLECTIONMAP_3D && this.getScene().useRightHandedSystem ? !this._reflectionTexture.invertZ : this._reflectionTexture.invertZ;\n defines.RGBDREFLECTION = this._reflectionTexture.isRGBD;\n switch (this._reflectionTexture.coordinatesMode) {\n case Texture.EXPLICIT_MODE:\n defines.setReflectionMode(\"REFLECTIONMAP_EXPLICIT\");\n break;\n case Texture.PLANAR_MODE:\n defines.setReflectionMode(\"REFLECTIONMAP_PLANAR\");\n break;\n case Texture.PROJECTION_MODE:\n defines.setReflectionMode(\"REFLECTIONMAP_PROJECTION\");\n break;\n case Texture.SKYBOX_MODE:\n defines.setReflectionMode(\"REFLECTIONMAP_SKYBOX\");\n break;\n case Texture.SPHERICAL_MODE:\n defines.setReflectionMode(\"REFLECTIONMAP_SPHERICAL\");\n break;\n case Texture.EQUIRECTANGULAR_MODE:\n defines.setReflectionMode(\"REFLECTIONMAP_EQUIRECTANGULAR\");\n break;\n case Texture.FIXED_EQUIRECTANGULAR_MODE:\n defines.setReflectionMode(\"REFLECTIONMAP_EQUIRECTANGULAR_FIXED\");\n break;\n case Texture.FIXED_EQUIRECTANGULAR_MIRRORED_MODE:\n defines.setReflectionMode(\"REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED\");\n break;\n case Texture.CUBIC_MODE:\n case Texture.INVCUBIC_MODE:\n default:\n defines.setReflectionMode(\"REFLECTIONMAP_CUBIC\");\n break;\n }\n defines.USE_LOCAL_REFLECTIONMAP_CUBIC = this._reflectionTexture.boundingBoxSize ? true : false;\n }\n }\n else {\n defines.REFLECTION = false;\n defines.REFLECTIONMAP_OPPOSITEZ = false;\n }\n if (this._emissiveTexture && StandardMaterial.EmissiveTextureEnabled) {\n if (!this._emissiveTexture.isReadyOrNotBlocking()) {\n return false;\n }\n else {\n PrepareDefinesForMergedUV(this._emissiveTexture, defines, \"EMISSIVE\");\n }\n }\n else {\n defines.EMISSIVE = false;\n }\n if (this._lightmapTexture && StandardMaterial.LightmapTextureEnabled) {\n if (!this._lightmapTexture.isReadyOrNotBlocking()) {\n return false;\n }\n else {\n PrepareDefinesForMergedUV(this._lightmapTexture, defines, \"LIGHTMAP\");\n defines.USELIGHTMAPASSHADOWMAP = this._useLightmapAsShadowmap;\n defines.RGBDLIGHTMAP = this._lightmapTexture.isRGBD;\n }\n }\n else {\n defines.LIGHTMAP = false;\n }\n if (this._specularTexture && StandardMaterial.SpecularTextureEnabled) {\n if (!this._specularTexture.isReadyOrNotBlocking()) {\n return false;\n }\n else {\n PrepareDefinesForMergedUV(this._specularTexture, defines, \"SPECULAR\");\n defines.GLOSSINESS = this._useGlossinessFromSpecularMapAlpha;\n }\n }\n else {\n defines.SPECULAR = false;\n }\n if (scene.getEngine().getCaps().standardDerivatives && this._bumpTexture && StandardMaterial.BumpTextureEnabled) {\n // Bump texture can not be not blocking.\n if (!this._bumpTexture.isReady()) {\n return false;\n }\n else {\n PrepareDefinesForMergedUV(this._bumpTexture, defines, \"BUMP\");\n defines.PARALLAX = this._useParallax;\n defines.PARALLAX_RHS = scene.useRightHandedSystem;\n defines.PARALLAXOCCLUSION = this._useParallaxOcclusion;\n }\n defines.OBJECTSPACE_NORMALMAP = this._useObjectSpaceNormalMap;\n }\n else {\n defines.BUMP = false;\n defines.PARALLAX = false;\n defines.PARALLAX_RHS = false;\n defines.PARALLAXOCCLUSION = false;\n }\n if (this._refractionTexture && StandardMaterial.RefractionTextureEnabled) {\n if (!this._refractionTexture.isReadyOrNotBlocking()) {\n return false;\n }\n else {\n defines._needUVs = true;\n defines.REFRACTION = true;\n defines.REFRACTIONMAP_3D = this._refractionTexture.isCube;\n defines.RGBDREFRACTION = this._refractionTexture.isRGBD;\n defines.USE_LOCAL_REFRACTIONMAP_CUBIC = this._refractionTexture.boundingBoxSize ? true : false;\n }\n }\n else {\n defines.REFRACTION = false;\n }\n defines.TWOSIDEDLIGHTING = !this._backFaceCulling && this._twoSidedLighting;\n }\n else {\n defines.DIFFUSE = false;\n defines.AMBIENT = false;\n defines.OPACITY = false;\n defines.REFLECTION = false;\n defines.EMISSIVE = false;\n defines.LIGHTMAP = false;\n defines.BUMP = false;\n defines.REFRACTION = false;\n }\n defines.ALPHAFROMDIFFUSE = this._shouldUseAlphaFromDiffuseTexture();\n defines.EMISSIVEASILLUMINATION = this._useEmissiveAsIllumination;\n defines.LINKEMISSIVEWITHDIFFUSE = this._linkEmissiveWithDiffuse;\n defines.SPECULAROVERALPHA = this._useSpecularOverAlpha;\n defines.PREMULTIPLYALPHA = this.alphaMode === Constants.ALPHA_PREMULTIPLIED || this.alphaMode === Constants.ALPHA_PREMULTIPLIED_PORTERDUFF;\n defines.ALPHATEST_AFTERALLALPHACOMPUTATIONS = this.transparencyMode !== null;\n defines.ALPHABLEND = this.transparencyMode === null || this.needAlphaBlendingForMesh(mesh); // check on null for backward compatibility\n }\n this._eventInfo.isReadyForSubMesh = true;\n this._eventInfo.defines = defines;\n this._eventInfo.subMesh = subMesh;\n this._callbackPluginEventIsReadyForSubMesh(this._eventInfo);\n if (!this._eventInfo.isReadyForSubMesh) {\n return false;\n }\n if (defines._areImageProcessingDirty && this._imageProcessingConfiguration) {\n if (!this._imageProcessingConfiguration.isReady()) {\n return false;\n }\n this._imageProcessingConfiguration.prepareDefines(defines);\n defines.IS_REFLECTION_LINEAR = this.reflectionTexture != null && !this.reflectionTexture.gammaSpace;\n defines.IS_REFRACTION_LINEAR = this.refractionTexture != null && !this.refractionTexture.gammaSpace;\n }\n if (defines._areFresnelDirty) {\n if (StandardMaterial.FresnelEnabled) {\n // Fresnel\n if (this._diffuseFresnelParameters ||\n this._opacityFresnelParameters ||\n this._emissiveFresnelParameters ||\n this._refractionFresnelParameters ||\n this._reflectionFresnelParameters) {\n defines.DIFFUSEFRESNEL = this._diffuseFresnelParameters && this._diffuseFresnelParameters.isEnabled;\n defines.OPACITYFRESNEL = this._opacityFresnelParameters && this._opacityFresnelParameters.isEnabled;\n defines.REFLECTIONFRESNEL = this._reflectionFresnelParameters && this._reflectionFresnelParameters.isEnabled;\n defines.REFLECTIONFRESNELFROMSPECULAR = this._useReflectionFresnelFromSpecular;\n defines.REFRACTIONFRESNEL = this._refractionFresnelParameters && this._refractionFresnelParameters.isEnabled;\n defines.EMISSIVEFRESNEL = this._emissiveFresnelParameters && this._emissiveFresnelParameters.isEnabled;\n defines._needNormals = true;\n defines.FRESNEL = true;\n }\n }\n else {\n defines.FRESNEL = false;\n }\n }\n // Misc.\n PrepareDefinesForMisc(mesh, scene, this._useLogarithmicDepth, this.pointsCloud, this.fogEnabled, this._shouldTurnAlphaTestOn(mesh) || this._forceAlphaTest, defines, this._applyDecalMapAfterDetailMap);\n // Values that need to be evaluated on every frame\n PrepareDefinesForFrameBoundValues(scene, engine, this, defines, useInstances, null, subMesh.getRenderingMesh().hasThinInstances);\n // External config\n this._eventInfo.defines = defines;\n this._eventInfo.mesh = mesh;\n this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo);\n // Attribs\n PrepareDefinesForAttributes(mesh, defines, true, true, true);\n // External config\n this._callbackPluginEventPrepareDefines(this._eventInfo);\n // Get correct effect\n let forceWasNotReadyPreviously = false;\n if (defines.isDirty) {\n const lightDisposed = defines._areLightsDisposed;\n defines.markAsProcessed();\n // Fallbacks\n const fallbacks = new EffectFallbacks();\n if (defines.REFLECTION) {\n fallbacks.addFallback(0, \"REFLECTION\");\n }\n if (defines.SPECULAR) {\n fallbacks.addFallback(0, \"SPECULAR\");\n }\n if (defines.BUMP) {\n fallbacks.addFallback(0, \"BUMP\");\n }\n if (defines.PARALLAX) {\n fallbacks.addFallback(1, \"PARALLAX\");\n }\n if (defines.PARALLAX_RHS) {\n fallbacks.addFallback(1, \"PARALLAX_RHS\");\n }\n if (defines.PARALLAXOCCLUSION) {\n fallbacks.addFallback(0, \"PARALLAXOCCLUSION\");\n }\n if (defines.SPECULAROVERALPHA) {\n fallbacks.addFallback(0, \"SPECULAROVERALPHA\");\n }\n if (defines.FOG) {\n fallbacks.addFallback(1, \"FOG\");\n }\n if (defines.POINTSIZE) {\n fallbacks.addFallback(0, \"POINTSIZE\");\n }\n if (defines.LOGARITHMICDEPTH) {\n fallbacks.addFallback(0, \"LOGARITHMICDEPTH\");\n }\n HandleFallbacksForShadows(defines, fallbacks, this._maxSimultaneousLights);\n if (defines.SPECULARTERM) {\n fallbacks.addFallback(0, \"SPECULARTERM\");\n }\n if (defines.DIFFUSEFRESNEL) {\n fallbacks.addFallback(1, \"DIFFUSEFRESNEL\");\n }\n if (defines.OPACITYFRESNEL) {\n fallbacks.addFallback(2, \"OPACITYFRESNEL\");\n }\n if (defines.REFLECTIONFRESNEL) {\n fallbacks.addFallback(3, \"REFLECTIONFRESNEL\");\n }\n if (defines.EMISSIVEFRESNEL) {\n fallbacks.addFallback(4, \"EMISSIVEFRESNEL\");\n }\n if (defines.FRESNEL) {\n fallbacks.addFallback(4, \"FRESNEL\");\n }\n if (defines.MULTIVIEW) {\n fallbacks.addFallback(0, \"MULTIVIEW\");\n }\n //Attributes\n const attribs = [VertexBuffer.PositionKind];\n if (defines.NORMAL) {\n attribs.push(VertexBuffer.NormalKind);\n }\n if (defines.TANGENT) {\n attribs.push(VertexBuffer.TangentKind);\n }\n for (let i = 1; i <= Constants.MAX_SUPPORTED_UV_SETS; ++i) {\n if (defines[\"UV\" + i]) {\n attribs.push(`uv${i === 1 ? \"\" : i}`);\n }\n }\n if (defines.VERTEXCOLOR) {\n attribs.push(VertexBuffer.ColorKind);\n }\n PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\n PrepareAttributesForInstances(attribs, defines);\n PrepareAttributesForMorphTargets(attribs, mesh, defines);\n PrepareAttributesForBakedVertexAnimation(attribs, mesh, defines);\n let shaderName = \"default\";\n const uniforms = [\n \"world\",\n \"view\",\n \"viewProjection\",\n \"vEyePosition\",\n \"vLightsType\",\n \"vAmbientColor\",\n \"vDiffuseColor\",\n \"vSpecularColor\",\n \"vEmissiveColor\",\n \"visibility\",\n \"vFogInfos\",\n \"vFogColor\",\n \"pointSize\",\n \"vDiffuseInfos\",\n \"vAmbientInfos\",\n \"vOpacityInfos\",\n \"vReflectionInfos\",\n \"vEmissiveInfos\",\n \"vSpecularInfos\",\n \"vBumpInfos\",\n \"vLightmapInfos\",\n \"vRefractionInfos\",\n \"mBones\",\n \"diffuseMatrix\",\n \"ambientMatrix\",\n \"opacityMatrix\",\n \"reflectionMatrix\",\n \"emissiveMatrix\",\n \"specularMatrix\",\n \"bumpMatrix\",\n \"normalMatrix\",\n \"lightmapMatrix\",\n \"refractionMatrix\",\n \"diffuseLeftColor\",\n \"diffuseRightColor\",\n \"opacityParts\",\n \"reflectionLeftColor\",\n \"reflectionRightColor\",\n \"emissiveLeftColor\",\n \"emissiveRightColor\",\n \"refractionLeftColor\",\n \"refractionRightColor\",\n \"vReflectionPosition\",\n \"vReflectionSize\",\n \"vRefractionPosition\",\n \"vRefractionSize\",\n \"logarithmicDepthConstant\",\n \"vTangentSpaceParams\",\n \"alphaCutOff\",\n \"boneTextureWidth\",\n \"morphTargetTextureInfo\",\n \"morphTargetTextureIndices\",\n ];\n const samplers = [\n \"diffuseSampler\",\n \"ambientSampler\",\n \"opacitySampler\",\n \"reflectionCubeSampler\",\n \"reflection2DSampler\",\n \"emissiveSampler\",\n \"specularSampler\",\n \"bumpSampler\",\n \"lightmapSampler\",\n \"refractionCubeSampler\",\n \"refraction2DSampler\",\n \"boneSampler\",\n \"morphTargets\",\n \"oitDepthSampler\",\n \"oitFrontColorSampler\",\n ];\n const uniformBuffers = [\"Material\", \"Scene\", \"Mesh\"];\n const indexParameters = { maxSimultaneousLights: this._maxSimultaneousLights, maxSimultaneousMorphTargets: defines.NUM_MORPH_INFLUENCERS };\n this._eventInfo.fallbacks = fallbacks;\n this._eventInfo.fallbackRank = 0;\n this._eventInfo.defines = defines;\n this._eventInfo.uniforms = uniforms;\n this._eventInfo.attributes = attribs;\n this._eventInfo.samplers = samplers;\n this._eventInfo.uniformBuffersNames = uniformBuffers;\n this._eventInfo.customCode = undefined;\n this._eventInfo.mesh = mesh;\n this._eventInfo.indexParameters = indexParameters;\n this._callbackPluginEventGeneric(128 /* MaterialPluginEvent.PrepareEffect */, this._eventInfo);\n PrePassConfiguration.AddUniforms(uniforms);\n PrePassConfiguration.AddSamplers(samplers);\n if (ImageProcessingConfiguration) {\n ImageProcessingConfiguration.PrepareUniforms(uniforms, defines);\n ImageProcessingConfiguration.PrepareSamplers(samplers, defines);\n }\n PrepareUniformsAndSamplersList({\n uniformsNames: uniforms,\n uniformBuffersNames: uniformBuffers,\n samplers: samplers,\n defines: defines,\n maxSimultaneousLights: this._maxSimultaneousLights,\n });\n addClipPlaneUniforms(uniforms);\n const csnrOptions = {};\n if (this.customShaderNameResolve) {\n shaderName = this.customShaderNameResolve(shaderName, uniforms, uniformBuffers, samplers, defines, attribs, csnrOptions);\n }\n const join = defines.toString();\n const previousEffect = subMesh.effect;\n let effect = scene.getEngine().createEffect(shaderName, {\n attributes: attribs,\n uniformsNames: uniforms,\n uniformBuffersNames: uniformBuffers,\n samplers: samplers,\n defines: join,\n fallbacks: fallbacks,\n onCompiled: this.onCompiled,\n onError: this.onError,\n indexParameters,\n processFinalCode: csnrOptions.processFinalCode,\n processCodeAfterIncludes: this._eventInfo.customCode,\n multiTarget: defines.PREPASS,\n shaderLanguage: this._shaderLanguage,\n extraInitializationsAsync: this._shadersLoaded\n ? undefined\n : async () => {\n if (this._shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n await Promise.all([import(\"../ShadersWGSL/default.vertex\"), import(\"../ShadersWGSL/default.fragment\")]);\n }\n else {\n await Promise.all([import(\"../Shaders/default.vertex\"), import(\"../Shaders/default.fragment\")]);\n }\n this._shadersLoaded = true;\n },\n }, engine);\n this._eventInfo.customCode = undefined;\n if (effect) {\n if (this._onEffectCreatedObservable) {\n onCreatedEffectParameters.effect = effect;\n onCreatedEffectParameters.subMesh = subMesh;\n this._onEffectCreatedObservable.notifyObservers(onCreatedEffectParameters);\n }\n // Use previous effect while new one is compiling\n if (this.allowShaderHotSwapping && previousEffect && !effect.isReady()) {\n effect = previousEffect;\n defines.markAsUnprocessed();\n forceWasNotReadyPreviously = this.isFrozen;\n if (lightDisposed) {\n // re register in case it takes more than one frame.\n defines._areLightsDisposed = true;\n return false;\n }\n }\n else {\n scene.resetCachedMaterial();\n subMesh.setEffect(effect, defines, this._materialContext);\n }\n }\n }\n if (!subMesh.effect || !subMesh.effect.isReady()) {\n return false;\n }\n defines._renderId = scene.getRenderId();\n drawWrapper._wasPreviouslyReady = forceWasNotReadyPreviously ? false : true;\n drawWrapper._wasPreviouslyUsingInstances = useInstances;\n this._checkScenePerformancePriority();\n return true;\n }\n /**\n * Builds the material UBO layouts.\n * Used internally during the effect preparation.\n */\n buildUniformLayout() {\n // Order is important !\n const ubo = this._uniformBuffer;\n ubo.addUniform(\"diffuseLeftColor\", 4);\n ubo.addUniform(\"diffuseRightColor\", 4);\n ubo.addUniform(\"opacityParts\", 4);\n ubo.addUniform(\"reflectionLeftColor\", 4);\n ubo.addUniform(\"reflectionRightColor\", 4);\n ubo.addUniform(\"refractionLeftColor\", 4);\n ubo.addUniform(\"refractionRightColor\", 4);\n ubo.addUniform(\"emissiveLeftColor\", 4);\n ubo.addUniform(\"emissiveRightColor\", 4);\n ubo.addUniform(\"vDiffuseInfos\", 2);\n ubo.addUniform(\"vAmbientInfos\", 2);\n ubo.addUniform(\"vOpacityInfos\", 2);\n ubo.addUniform(\"vReflectionInfos\", 2);\n ubo.addUniform(\"vReflectionPosition\", 3);\n ubo.addUniform(\"vReflectionSize\", 3);\n ubo.addUniform(\"vEmissiveInfos\", 2);\n ubo.addUniform(\"vLightmapInfos\", 2);\n ubo.addUniform(\"vSpecularInfos\", 2);\n ubo.addUniform(\"vBumpInfos\", 3);\n ubo.addUniform(\"diffuseMatrix\", 16);\n ubo.addUniform(\"ambientMatrix\", 16);\n ubo.addUniform(\"opacityMatrix\", 16);\n ubo.addUniform(\"reflectionMatrix\", 16);\n ubo.addUniform(\"emissiveMatrix\", 16);\n ubo.addUniform(\"lightmapMatrix\", 16);\n ubo.addUniform(\"specularMatrix\", 16);\n ubo.addUniform(\"bumpMatrix\", 16);\n ubo.addUniform(\"vTangentSpaceParams\", 2);\n ubo.addUniform(\"pointSize\", 1);\n ubo.addUniform(\"alphaCutOff\", 1);\n ubo.addUniform(\"refractionMatrix\", 16);\n ubo.addUniform(\"vRefractionInfos\", 4);\n ubo.addUniform(\"vRefractionPosition\", 3);\n ubo.addUniform(\"vRefractionSize\", 3);\n ubo.addUniform(\"vSpecularColor\", 4);\n ubo.addUniform(\"vEmissiveColor\", 3);\n ubo.addUniform(\"vDiffuseColor\", 4);\n ubo.addUniform(\"vAmbientColor\", 3);\n super.buildUniformLayout();\n }\n /**\n * Binds the submesh to this material by preparing the effect and shader to draw\n * @param world defines the world transformation matrix\n * @param mesh defines the mesh containing the submesh\n * @param subMesh defines the submesh to bind the material to\n */\n bindForSubMesh(world, mesh, subMesh) {\n const scene = this.getScene();\n const defines = subMesh.materialDefines;\n if (!defines) {\n return;\n }\n const effect = subMesh.effect;\n if (!effect) {\n return;\n }\n this._activeEffect = effect;\n // Matrices Mesh.\n mesh.getMeshUniformBuffer().bindToEffect(effect, \"Mesh\");\n mesh.transferToEffect(world);\n // Binding unconditionally\n this._uniformBuffer.bindToEffect(effect, \"Material\");\n this.prePassConfiguration.bindForSubMesh(this._activeEffect, scene, mesh, world, this.isFrozen);\n this._eventInfo.subMesh = subMesh;\n this._callbackPluginEventHardBindForSubMesh(this._eventInfo);\n // Normal Matrix\n if (defines.OBJECTSPACE_NORMALMAP) {\n world.toNormalMatrix(this._normalMatrix);\n this.bindOnlyNormalMatrix(this._normalMatrix);\n }\n const mustRebind = this._mustRebind(scene, effect, subMesh, mesh.visibility);\n // Bones\n BindBonesParameters(mesh, effect);\n const ubo = this._uniformBuffer;\n if (mustRebind) {\n this.bindViewProjection(effect);\n if (!ubo.useUbo || !this.isFrozen || !ubo.isSync || subMesh._drawWrapper._forceRebindOnNextCall) {\n if (StandardMaterial.FresnelEnabled && defines.FRESNEL) {\n // Fresnel\n if (this.diffuseFresnelParameters && this.diffuseFresnelParameters.isEnabled) {\n ubo.updateColor4(\"diffuseLeftColor\", this.diffuseFresnelParameters.leftColor, this.diffuseFresnelParameters.power);\n ubo.updateColor4(\"diffuseRightColor\", this.diffuseFresnelParameters.rightColor, this.diffuseFresnelParameters.bias);\n }\n if (this.opacityFresnelParameters && this.opacityFresnelParameters.isEnabled) {\n ubo.updateColor4(\"opacityParts\", new Color3(this.opacityFresnelParameters.leftColor.toLuminance(), this.opacityFresnelParameters.rightColor.toLuminance(), this.opacityFresnelParameters.bias), this.opacityFresnelParameters.power);\n }\n if (this.reflectionFresnelParameters && this.reflectionFresnelParameters.isEnabled) {\n ubo.updateColor4(\"reflectionLeftColor\", this.reflectionFresnelParameters.leftColor, this.reflectionFresnelParameters.power);\n ubo.updateColor4(\"reflectionRightColor\", this.reflectionFresnelParameters.rightColor, this.reflectionFresnelParameters.bias);\n }\n if (this.refractionFresnelParameters && this.refractionFresnelParameters.isEnabled) {\n ubo.updateColor4(\"refractionLeftColor\", this.refractionFresnelParameters.leftColor, this.refractionFresnelParameters.power);\n ubo.updateColor4(\"refractionRightColor\", this.refractionFresnelParameters.rightColor, this.refractionFresnelParameters.bias);\n }\n if (this.emissiveFresnelParameters && this.emissiveFresnelParameters.isEnabled) {\n ubo.updateColor4(\"emissiveLeftColor\", this.emissiveFresnelParameters.leftColor, this.emissiveFresnelParameters.power);\n ubo.updateColor4(\"emissiveRightColor\", this.emissiveFresnelParameters.rightColor, this.emissiveFresnelParameters.bias);\n }\n }\n // Textures\n if (scene.texturesEnabled) {\n if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {\n ubo.updateFloat2(\"vDiffuseInfos\", this._diffuseTexture.coordinatesIndex, this._diffuseTexture.level);\n BindTextureMatrix(this._diffuseTexture, ubo, \"diffuse\");\n }\n if (this._ambientTexture && StandardMaterial.AmbientTextureEnabled) {\n ubo.updateFloat2(\"vAmbientInfos\", this._ambientTexture.coordinatesIndex, this._ambientTexture.level);\n BindTextureMatrix(this._ambientTexture, ubo, \"ambient\");\n }\n if (this._opacityTexture && StandardMaterial.OpacityTextureEnabled) {\n ubo.updateFloat2(\"vOpacityInfos\", this._opacityTexture.coordinatesIndex, this._opacityTexture.level);\n BindTextureMatrix(this._opacityTexture, ubo, \"opacity\");\n }\n if (this._hasAlphaChannel()) {\n ubo.updateFloat(\"alphaCutOff\", this.alphaCutOff);\n }\n if (this._reflectionTexture && StandardMaterial.ReflectionTextureEnabled) {\n ubo.updateFloat2(\"vReflectionInfos\", this._reflectionTexture.level, this.roughness);\n ubo.updateMatrix(\"reflectionMatrix\", this._reflectionTexture.getReflectionTextureMatrix());\n if (this._reflectionTexture.boundingBoxSize) {\n const cubeTexture = this._reflectionTexture;\n ubo.updateVector3(\"vReflectionPosition\", cubeTexture.boundingBoxPosition);\n ubo.updateVector3(\"vReflectionSize\", cubeTexture.boundingBoxSize);\n }\n }\n if (this._emissiveTexture && StandardMaterial.EmissiveTextureEnabled) {\n ubo.updateFloat2(\"vEmissiveInfos\", this._emissiveTexture.coordinatesIndex, this._emissiveTexture.level);\n BindTextureMatrix(this._emissiveTexture, ubo, \"emissive\");\n }\n if (this._lightmapTexture && StandardMaterial.LightmapTextureEnabled) {\n ubo.updateFloat2(\"vLightmapInfos\", this._lightmapTexture.coordinatesIndex, this._lightmapTexture.level);\n BindTextureMatrix(this._lightmapTexture, ubo, \"lightmap\");\n }\n if (this._specularTexture && StandardMaterial.SpecularTextureEnabled) {\n ubo.updateFloat2(\"vSpecularInfos\", this._specularTexture.coordinatesIndex, this._specularTexture.level);\n BindTextureMatrix(this._specularTexture, ubo, \"specular\");\n }\n if (this._bumpTexture && scene.getEngine().getCaps().standardDerivatives && StandardMaterial.BumpTextureEnabled) {\n ubo.updateFloat3(\"vBumpInfos\", this._bumpTexture.coordinatesIndex, 1.0 / this._bumpTexture.level, this.parallaxScaleBias);\n BindTextureMatrix(this._bumpTexture, ubo, \"bump\");\n if (scene._mirroredCameraPosition) {\n ubo.updateFloat2(\"vTangentSpaceParams\", this._invertNormalMapX ? 1.0 : -1.0, this._invertNormalMapY ? 1.0 : -1.0);\n }\n else {\n ubo.updateFloat2(\"vTangentSpaceParams\", this._invertNormalMapX ? -1.0 : 1.0, this._invertNormalMapY ? -1.0 : 1.0);\n }\n }\n if (this._refractionTexture && StandardMaterial.RefractionTextureEnabled) {\n let depth = 1.0;\n if (!this._refractionTexture.isCube) {\n ubo.updateMatrix(\"refractionMatrix\", this._refractionTexture.getReflectionTextureMatrix());\n if (this._refractionTexture.depth) {\n depth = this._refractionTexture.depth;\n }\n }\n ubo.updateFloat4(\"vRefractionInfos\", this._refractionTexture.level, this.indexOfRefraction, depth, this.invertRefractionY ? -1 : 1);\n if (this._refractionTexture.boundingBoxSize) {\n const cubeTexture = this._refractionTexture;\n ubo.updateVector3(\"vRefractionPosition\", cubeTexture.boundingBoxPosition);\n ubo.updateVector3(\"vRefractionSize\", cubeTexture.boundingBoxSize);\n }\n }\n }\n // Point size\n if (this.pointsCloud) {\n ubo.updateFloat(\"pointSize\", this.pointSize);\n }\n if (defines.SPECULARTERM) {\n ubo.updateColor4(\"vSpecularColor\", this.specularColor, this.specularPower);\n }\n ubo.updateColor3(\"vEmissiveColor\", StandardMaterial.EmissiveTextureEnabled ? this.emissiveColor : Color3.BlackReadOnly);\n ubo.updateColor4(\"vDiffuseColor\", this.diffuseColor, this.alpha);\n scene.ambientColor.multiplyToRef(this.ambientColor, this._globalAmbientColor);\n ubo.updateColor3(\"vAmbientColor\", this._globalAmbientColor);\n }\n // Textures\n if (scene.texturesEnabled) {\n if (this._diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {\n effect.setTexture(\"diffuseSampler\", this._diffuseTexture);\n }\n if (this._ambientTexture && StandardMaterial.AmbientTextureEnabled) {\n effect.setTexture(\"ambientSampler\", this._ambientTexture);\n }\n if (this._opacityTexture && StandardMaterial.OpacityTextureEnabled) {\n effect.setTexture(\"opacitySampler\", this._opacityTexture);\n }\n if (this._reflectionTexture && StandardMaterial.ReflectionTextureEnabled) {\n if (this._reflectionTexture.isCube) {\n effect.setTexture(\"reflectionCubeSampler\", this._reflectionTexture);\n }\n else {\n effect.setTexture(\"reflection2DSampler\", this._reflectionTexture);\n }\n }\n if (this._emissiveTexture && StandardMaterial.EmissiveTextureEnabled) {\n effect.setTexture(\"emissiveSampler\", this._emissiveTexture);\n }\n if (this._lightmapTexture && StandardMaterial.LightmapTextureEnabled) {\n effect.setTexture(\"lightmapSampler\", this._lightmapTexture);\n }\n if (this._specularTexture && StandardMaterial.SpecularTextureEnabled) {\n effect.setTexture(\"specularSampler\", this._specularTexture);\n }\n if (this._bumpTexture && scene.getEngine().getCaps().standardDerivatives && StandardMaterial.BumpTextureEnabled) {\n effect.setTexture(\"bumpSampler\", this._bumpTexture);\n }\n if (this._refractionTexture && StandardMaterial.RefractionTextureEnabled) {\n if (this._refractionTexture.isCube) {\n effect.setTexture(\"refractionCubeSampler\", this._refractionTexture);\n }\n else {\n effect.setTexture(\"refraction2DSampler\", this._refractionTexture);\n }\n }\n }\n // OIT with depth peeling\n if (this.getScene().useOrderIndependentTransparency && this.needAlphaBlendingForMesh(mesh)) {\n this.getScene().depthPeelingRenderer.bind(effect);\n }\n this._eventInfo.subMesh = subMesh;\n this._callbackPluginEventBindForSubMesh(this._eventInfo);\n // Clip plane\n bindClipPlane(effect, this, scene);\n // Colors\n this.bindEyePosition(effect);\n }\n else if (scene.getEngine()._features.needToAlwaysBindUniformBuffers) {\n this._needToBindSceneUbo = true;\n }\n if (mustRebind || !this.isFrozen) {\n // Lights\n if (scene.lightsEnabled && !this._disableLighting) {\n BindLights(scene, mesh, effect, defines, this._maxSimultaneousLights);\n }\n // View\n if ((scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) ||\n this._reflectionTexture ||\n this._refractionTexture ||\n mesh.receiveShadows ||\n defines.PREPASS) {\n this.bindView(effect);\n }\n // Fog\n BindFogParameters(scene, mesh, effect);\n // Morph targets\n if (defines.NUM_MORPH_INFLUENCERS) {\n BindMorphTargetParameters(mesh, effect);\n }\n if (defines.BAKED_VERTEX_ANIMATION_TEXTURE) {\n mesh.bakedVertexAnimationManager?.bind(effect, defines.INSTANCES);\n }\n // Log. depth\n if (this.useLogarithmicDepth) {\n BindLogDepth(defines, effect, scene);\n }\n // image processing\n if (this._imageProcessingConfiguration && !this._imageProcessingConfiguration.applyByPostProcess) {\n this._imageProcessingConfiguration.bind(this._activeEffect);\n }\n }\n this._afterBind(mesh, this._activeEffect, subMesh);\n ubo.update();\n }\n /**\n * Get the list of animatables in the material.\n * @returns the list of animatables object used in the material\n */\n getAnimatables() {\n const results = super.getAnimatables();\n if (this._diffuseTexture && this._diffuseTexture.animations && this._diffuseTexture.animations.length > 0) {\n results.push(this._diffuseTexture);\n }\n if (this._ambientTexture && this._ambientTexture.animations && this._ambientTexture.animations.length > 0) {\n results.push(this._ambientTexture);\n }\n if (this._opacityTexture && this._opacityTexture.animations && this._opacityTexture.animations.length > 0) {\n results.push(this._opacityTexture);\n }\n if (this._reflectionTexture && this._reflectionTexture.animations && this._reflectionTexture.animations.length > 0) {\n results.push(this._reflectionTexture);\n }\n if (this._emissiveTexture && this._emissiveTexture.animations && this._emissiveTexture.animations.length > 0) {\n results.push(this._emissiveTexture);\n }\n if (this._specularTexture && this._specularTexture.animations && this._specularTexture.animations.length > 0) {\n results.push(this._specularTexture);\n }\n if (this._bumpTexture && this._bumpTexture.animations && this._bumpTexture.animations.length > 0) {\n results.push(this._bumpTexture);\n }\n if (this._lightmapTexture && this._lightmapTexture.animations && this._lightmapTexture.animations.length > 0) {\n results.push(this._lightmapTexture);\n }\n if (this._refractionTexture && this._refractionTexture.animations && this._refractionTexture.animations.length > 0) {\n results.push(this._refractionTexture);\n }\n return results;\n }\n /**\n * Gets the active textures from the material\n * @returns an array of textures\n */\n getActiveTextures() {\n const activeTextures = super.getActiveTextures();\n if (this._diffuseTexture) {\n activeTextures.push(this._diffuseTexture);\n }\n if (this._ambientTexture) {\n activeTextures.push(this._ambientTexture);\n }\n if (this._opacityTexture) {\n activeTextures.push(this._opacityTexture);\n }\n if (this._reflectionTexture) {\n activeTextures.push(this._reflectionTexture);\n }\n if (this._emissiveTexture) {\n activeTextures.push(this._emissiveTexture);\n }\n if (this._specularTexture) {\n activeTextures.push(this._specularTexture);\n }\n if (this._bumpTexture) {\n activeTextures.push(this._bumpTexture);\n }\n if (this._lightmapTexture) {\n activeTextures.push(this._lightmapTexture);\n }\n if (this._refractionTexture) {\n activeTextures.push(this._refractionTexture);\n }\n return activeTextures;\n }\n /**\n * Specifies if the material uses a texture\n * @param texture defines the texture to check against the material\n * @returns a boolean specifying if the material uses the texture\n */\n hasTexture(texture) {\n if (super.hasTexture(texture)) {\n return true;\n }\n if (this._diffuseTexture === texture) {\n return true;\n }\n if (this._ambientTexture === texture) {\n return true;\n }\n if (this._opacityTexture === texture) {\n return true;\n }\n if (this._reflectionTexture === texture) {\n return true;\n }\n if (this._emissiveTexture === texture) {\n return true;\n }\n if (this._specularTexture === texture) {\n return true;\n }\n if (this._bumpTexture === texture) {\n return true;\n }\n if (this._lightmapTexture === texture) {\n return true;\n }\n if (this._refractionTexture === texture) {\n return true;\n }\n return false;\n }\n /**\n * Disposes the material\n * @param forceDisposeEffect specifies if effects should be forcefully disposed\n * @param forceDisposeTextures specifies if textures should be forcefully disposed\n */\n dispose(forceDisposeEffect, forceDisposeTextures) {\n if (forceDisposeTextures) {\n this._diffuseTexture?.dispose();\n this._ambientTexture?.dispose();\n this._opacityTexture?.dispose();\n this._reflectionTexture?.dispose();\n this._emissiveTexture?.dispose();\n this._specularTexture?.dispose();\n this._bumpTexture?.dispose();\n this._lightmapTexture?.dispose();\n this._refractionTexture?.dispose();\n }\n if (this._imageProcessingConfiguration && this._imageProcessingObserver) {\n this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver);\n }\n super.dispose(forceDisposeEffect, forceDisposeTextures);\n }\n /**\n * Makes a duplicate of the material, and gives it a new name\n * @param name defines the new name for the duplicated material\n * @param cloneTexturesOnlyOnce - if a texture is used in more than one channel (e.g diffuse and opacity), only clone it once and reuse it on the other channels. Default false.\n * @param rootUrl defines the root URL to use to load textures\n * @returns the cloned material\n */\n clone(name, cloneTexturesOnlyOnce = true, rootUrl = \"\") {\n const result = SerializationHelper.Clone(() => new StandardMaterial(name, this.getScene()), this, { cloneTexturesOnlyOnce });\n result.name = name;\n result.id = name;\n this.stencil.copyTo(result.stencil);\n this._clonePlugins(result, rootUrl);\n return result;\n }\n /**\n * Creates a standard material from parsed material data\n * @param source defines the JSON representation of the material\n * @param scene defines the hosting scene\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\n * @returns a new standard material\n */\n static Parse(source, scene, rootUrl) {\n const material = SerializationHelper.Parse(() => new StandardMaterial(source.name, scene), source, scene, rootUrl);\n if (source.stencil) {\n material.stencil.parse(source.stencil, scene, rootUrl);\n }\n Material._ParsePlugins(source, material, scene, rootUrl);\n return material;\n }\n // Flags used to enable or disable a type of texture for all Standard Materials\n /**\n * Are diffuse textures enabled in the application.\n */\n static get DiffuseTextureEnabled() {\n return MaterialFlags.DiffuseTextureEnabled;\n }\n static set DiffuseTextureEnabled(value) {\n MaterialFlags.DiffuseTextureEnabled = value;\n }\n /**\n * Are detail textures enabled in the application.\n */\n static get DetailTextureEnabled() {\n return MaterialFlags.DetailTextureEnabled;\n }\n static set DetailTextureEnabled(value) {\n MaterialFlags.DetailTextureEnabled = value;\n }\n /**\n * Are ambient textures enabled in the application.\n */\n static get AmbientTextureEnabled() {\n return MaterialFlags.AmbientTextureEnabled;\n }\n static set AmbientTextureEnabled(value) {\n MaterialFlags.AmbientTextureEnabled = value;\n }\n /**\n * Are opacity textures enabled in the application.\n */\n static get OpacityTextureEnabled() {\n return MaterialFlags.OpacityTextureEnabled;\n }\n static set OpacityTextureEnabled(value) {\n MaterialFlags.OpacityTextureEnabled = value;\n }\n /**\n * Are reflection textures enabled in the application.\n */\n static get ReflectionTextureEnabled() {\n return MaterialFlags.ReflectionTextureEnabled;\n }\n static set ReflectionTextureEnabled(value) {\n MaterialFlags.ReflectionTextureEnabled = value;\n }\n /**\n * Are emissive textures enabled in the application.\n */\n static get EmissiveTextureEnabled() {\n return MaterialFlags.EmissiveTextureEnabled;\n }\n static set EmissiveTextureEnabled(value) {\n MaterialFlags.EmissiveTextureEnabled = value;\n }\n /**\n * Are specular textures enabled in the application.\n */\n static get SpecularTextureEnabled() {\n return MaterialFlags.SpecularTextureEnabled;\n }\n static set SpecularTextureEnabled(value) {\n MaterialFlags.SpecularTextureEnabled = value;\n }\n /**\n * Are bump textures enabled in the application.\n */\n static get BumpTextureEnabled() {\n return MaterialFlags.BumpTextureEnabled;\n }\n static set BumpTextureEnabled(value) {\n MaterialFlags.BumpTextureEnabled = value;\n }\n /**\n * Are lightmap textures enabled in the application.\n */\n static get LightmapTextureEnabled() {\n return MaterialFlags.LightmapTextureEnabled;\n }\n static set LightmapTextureEnabled(value) {\n MaterialFlags.LightmapTextureEnabled = value;\n }\n /**\n * Are refraction textures enabled in the application.\n */\n static get RefractionTextureEnabled() {\n return MaterialFlags.RefractionTextureEnabled;\n }\n static set RefractionTextureEnabled(value) {\n MaterialFlags.RefractionTextureEnabled = value;\n }\n /**\n * Are color grading textures enabled in the application.\n */\n static get ColorGradingTextureEnabled() {\n return MaterialFlags.ColorGradingTextureEnabled;\n }\n static set ColorGradingTextureEnabled(value) {\n MaterialFlags.ColorGradingTextureEnabled = value;\n }\n /**\n * Are fresnels enabled in the application.\n */\n static get FresnelEnabled() {\n return MaterialFlags.FresnelEnabled;\n }\n static set FresnelEnabled(value) {\n MaterialFlags.FresnelEnabled = value;\n }\n}\n/**\n * Force all the standard materials to compile to glsl even on WebGPU engines.\n * False by default. This is mostly meant for backward compatibility.\n */\nStandardMaterial.ForceGLSL = false;\n__decorate([\n serializeAsTexture(\"diffuseTexture\")\n], StandardMaterial.prototype, \"_diffuseTexture\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\n], StandardMaterial.prototype, \"diffuseTexture\", void 0);\n__decorate([\n serializeAsTexture(\"ambientTexture\")\n], StandardMaterial.prototype, \"_ambientTexture\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"ambientTexture\", void 0);\n__decorate([\n serializeAsTexture(\"opacityTexture\")\n], StandardMaterial.prototype, \"_opacityTexture\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\n], StandardMaterial.prototype, \"opacityTexture\", void 0);\n__decorate([\n serializeAsTexture(\"reflectionTexture\")\n], StandardMaterial.prototype, \"_reflectionTexture\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"reflectionTexture\", void 0);\n__decorate([\n serializeAsTexture(\"emissiveTexture\")\n], StandardMaterial.prototype, \"_emissiveTexture\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"emissiveTexture\", void 0);\n__decorate([\n serializeAsTexture(\"specularTexture\")\n], StandardMaterial.prototype, \"_specularTexture\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"specularTexture\", void 0);\n__decorate([\n serializeAsTexture(\"bumpTexture\")\n], StandardMaterial.prototype, \"_bumpTexture\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"bumpTexture\", void 0);\n__decorate([\n serializeAsTexture(\"lightmapTexture\")\n], StandardMaterial.prototype, \"_lightmapTexture\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"lightmapTexture\", void 0);\n__decorate([\n serializeAsTexture(\"refractionTexture\")\n], StandardMaterial.prototype, \"_refractionTexture\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"refractionTexture\", void 0);\n__decorate([\n serializeAsColor3(\"ambient\")\n], StandardMaterial.prototype, \"ambientColor\", void 0);\n__decorate([\n serializeAsColor3(\"diffuse\")\n], StandardMaterial.prototype, \"diffuseColor\", void 0);\n__decorate([\n serializeAsColor3(\"specular\")\n], StandardMaterial.prototype, \"specularColor\", void 0);\n__decorate([\n serializeAsColor3(\"emissive\")\n], StandardMaterial.prototype, \"emissiveColor\", void 0);\n__decorate([\n serialize()\n], StandardMaterial.prototype, \"specularPower\", void 0);\n__decorate([\n serialize(\"useAlphaFromDiffuseTexture\")\n], StandardMaterial.prototype, \"_useAlphaFromDiffuseTexture\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\n], StandardMaterial.prototype, \"useAlphaFromDiffuseTexture\", void 0);\n__decorate([\n serialize(\"useEmissiveAsIllumination\")\n], StandardMaterial.prototype, \"_useEmissiveAsIllumination\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"useEmissiveAsIllumination\", void 0);\n__decorate([\n serialize(\"linkEmissiveWithDiffuse\")\n], StandardMaterial.prototype, \"_linkEmissiveWithDiffuse\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"linkEmissiveWithDiffuse\", void 0);\n__decorate([\n serialize(\"useSpecularOverAlpha\")\n], StandardMaterial.prototype, \"_useSpecularOverAlpha\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"useSpecularOverAlpha\", void 0);\n__decorate([\n serialize(\"useReflectionOverAlpha\")\n], StandardMaterial.prototype, \"_useReflectionOverAlpha\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"useReflectionOverAlpha\", void 0);\n__decorate([\n serialize(\"disableLighting\")\n], StandardMaterial.prototype, \"_disableLighting\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\n], StandardMaterial.prototype, \"disableLighting\", void 0);\n__decorate([\n serialize(\"useObjectSpaceNormalMap\")\n], StandardMaterial.prototype, \"_useObjectSpaceNormalMap\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"useObjectSpaceNormalMap\", void 0);\n__decorate([\n serialize(\"useParallax\")\n], StandardMaterial.prototype, \"_useParallax\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"useParallax\", void 0);\n__decorate([\n serialize(\"useParallaxOcclusion\")\n], StandardMaterial.prototype, \"_useParallaxOcclusion\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"useParallaxOcclusion\", void 0);\n__decorate([\n serialize()\n], StandardMaterial.prototype, \"parallaxScaleBias\", void 0);\n__decorate([\n serialize(\"roughness\")\n], StandardMaterial.prototype, \"_roughness\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"roughness\", void 0);\n__decorate([\n serialize()\n], StandardMaterial.prototype, \"indexOfRefraction\", void 0);\n__decorate([\n serialize()\n], StandardMaterial.prototype, \"invertRefractionY\", void 0);\n__decorate([\n serialize()\n], StandardMaterial.prototype, \"alphaCutOff\", void 0);\n__decorate([\n serialize(\"useLightmapAsShadowmap\")\n], StandardMaterial.prototype, \"_useLightmapAsShadowmap\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"useLightmapAsShadowmap\", void 0);\n__decorate([\n serializeAsFresnelParameters(\"diffuseFresnelParameters\")\n], StandardMaterial.prototype, \"_diffuseFresnelParameters\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsFresnelDirty\")\n], StandardMaterial.prototype, \"diffuseFresnelParameters\", void 0);\n__decorate([\n serializeAsFresnelParameters(\"opacityFresnelParameters\")\n], StandardMaterial.prototype, \"_opacityFresnelParameters\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsFresnelAndMiscDirty\")\n], StandardMaterial.prototype, \"opacityFresnelParameters\", void 0);\n__decorate([\n serializeAsFresnelParameters(\"reflectionFresnelParameters\")\n], StandardMaterial.prototype, \"_reflectionFresnelParameters\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsFresnelDirty\")\n], StandardMaterial.prototype, \"reflectionFresnelParameters\", void 0);\n__decorate([\n serializeAsFresnelParameters(\"refractionFresnelParameters\")\n], StandardMaterial.prototype, \"_refractionFresnelParameters\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsFresnelDirty\")\n], StandardMaterial.prototype, \"refractionFresnelParameters\", void 0);\n__decorate([\n serializeAsFresnelParameters(\"emissiveFresnelParameters\")\n], StandardMaterial.prototype, \"_emissiveFresnelParameters\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsFresnelDirty\")\n], StandardMaterial.prototype, \"emissiveFresnelParameters\", void 0);\n__decorate([\n serialize(\"useReflectionFresnelFromSpecular\")\n], StandardMaterial.prototype, \"_useReflectionFresnelFromSpecular\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsFresnelDirty\")\n], StandardMaterial.prototype, \"useReflectionFresnelFromSpecular\", void 0);\n__decorate([\n serialize(\"useGlossinessFromSpecularMapAlpha\")\n], StandardMaterial.prototype, \"_useGlossinessFromSpecularMapAlpha\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"useGlossinessFromSpecularMapAlpha\", void 0);\n__decorate([\n serialize(\"maxSimultaneousLights\")\n], StandardMaterial.prototype, \"_maxSimultaneousLights\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\n], StandardMaterial.prototype, \"maxSimultaneousLights\", void 0);\n__decorate([\n serialize(\"invertNormalMapX\")\n], StandardMaterial.prototype, \"_invertNormalMapX\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"invertNormalMapX\", void 0);\n__decorate([\n serialize(\"invertNormalMapY\")\n], StandardMaterial.prototype, \"_invertNormalMapY\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"invertNormalMapY\", void 0);\n__decorate([\n serialize(\"twoSidedLighting\")\n], StandardMaterial.prototype, \"_twoSidedLighting\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], StandardMaterial.prototype, \"twoSidedLighting\", void 0);\n__decorate([\n serialize(\"applyDecalMapAfterDetailMap\")\n], StandardMaterial.prototype, \"_applyDecalMapAfterDetailMap\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsMiscDirty\")\n], StandardMaterial.prototype, \"applyDecalMapAfterDetailMap\", void 0);\nRegisterClass(\"BABYLON.StandardMaterial\", StandardMaterial);\nScene.DefaultMaterialFactory = (scene) => {\n return new StandardMaterial(\"default material\", scene);\n};\n//# sourceMappingURL=standardMaterial.js.map"],"names":["onCreatedEffectParameters","effect","subMesh","StandardMaterialDefines","MaterialDefines","constructor","externalProperties","super","this","MAINUV1","MAINUV2","MAINUV3","MAINUV4","MAINUV5","MAINUV6","DIFFUSE","DIFFUSEDIRECTUV","BAKED_VERTEX_ANIMATION_TEXTURE","AMBIENT","AMBIENTDIRECTUV","OPACITY","OPACITYDIRECTUV","OPACITYRGB","REFLECTION","EMISSIVE","EMISSIVEDIRECTUV","SPECULAR","SPECULARDIRECTUV","BUMP","BUMPDIRECTUV","PARALLAX","PARALLAX_RHS","PARALLAXOCCLUSION","SPECULAROVERALPHA","CLIPPLANE","CLIPPLANE2","CLIPPLANE3","CLIPPLANE4","CLIPPLANE5","CLIPPLANE6","ALPHATEST","DEPTHPREPASS","ALPHAFROMDIFFUSE","POINTSIZE","FOG","SPECULARTERM","DIFFUSEFRESNEL","OPACITYFRESNEL","REFLECTIONFRESNEL","REFRACTIONFRESNEL","EMISSIVEFRESNEL","FRESNEL","NORMAL","TANGENT","UV1","UV2","UV3","UV4","UV5","UV6","VERTEXCOLOR","VERTEXALPHA","NUM_BONE_INFLUENCERS","BonesPerMesh","BONETEXTURE","BONES_VELOCITY_ENABLED","INSTANCES","THIN_INSTANCES","INSTANCESCOLOR","GLOSSINESS","ROUGHNESS","EMISSIVEASILLUMINATION","LINKEMISSIVEWITHDIFFUSE","REFLECTIONFRESNELFROMSPECULAR","LIGHTMAP","LIGHTMAPDIRECTUV","OBJECTSPACE_NORMALMAP","USELIGHTMAPASSHADOWMAP","REFLECTIONMAP_3D","REFLECTIONMAP_SPHERICAL","REFLECTIONMAP_PLANAR","REFLECTIONMAP_CUBIC","USE_LOCAL_REFLECTIONMAP_CUBIC","USE_LOCAL_REFRACTIONMAP_CUBIC","REFLECTIONMAP_PROJECTION","REFLECTIONMAP_SKYBOX","REFLECTIONMAP_EXPLICIT","REFLECTIONMAP_EQUIRECTANGULAR","REFLECTIONMAP_EQUIRECTANGULAR_FIXED","REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED","REFLECTIONMAP_OPPOSITEZ","INVERTCUBICMAP","LOGARITHMICDEPTH","REFRACTION","REFRACTIONMAP_3D","REFLECTIONOVERALPHA","TWOSIDEDLIGHTING","SHADOWFLOAT","MORPHTARGETS","MORPHTARGETS_NORMAL","MORPHTARGETS_TANGENT","MORPHTARGETS_UV","NUM_MORPH_INFLUENCERS","MORPHTARGETS_TEXTURE","NONUNIFORMSCALING","PREMULTIPLYALPHA","ALPHATEST_AFTERALLALPHACOMPUTATIONS","ALPHABLEND","PREPASS","PREPASS_IRRADIANCE","PREPASS_IRRADIANCE_INDEX","PREPASS_ALBEDO_SQRT","PREPASS_ALBEDO_SQRT_INDEX","PREPASS_DEPTH","PREPASS_DEPTH_INDEX","PREPASS_SCREENSPACE_DEPTH","PREPASS_SCREENSPACE_DEPTH_INDEX","PREPASS_NORMAL","PREPASS_NORMAL_INDEX","PREPASS_NORMAL_WORLDSPACE","PREPASS_WORLD_NORMAL","PREPASS_WORLD_NORMAL_INDEX","PREPASS_POSITION","PREPASS_POSITION_INDEX","PREPASS_LOCAL_POSITION","PREPASS_LOCAL_POSITION_INDEX","PREPASS_VELOCITY","PREPASS_VELOCITY_INDEX","PREPASS_VELOCITY_LINEAR","PREPASS_VELOCITY_LINEAR_INDEX","PREPASS_REFLECTIVITY","PREPASS_REFLECTIVITY_INDEX","SCENE_MRT_COUNT","RGBDLIGHTMAP","RGBDREFLECTION","RGBDREFRACTION","IMAGEPROCESSING","VIGNETTE","VIGNETTEBLENDMODEMULTIPLY","VIGNETTEBLENDMODEOPAQUE","TONEMAPPING","CONTRAST","COLORCURVES","COLORGRADING","COLORGRADING3D","SAMPLER3DGREENDEPTH","SAMPLER3DBGRMAP","DITHER","IMAGEPROCESSINGPOSTPROCESS","SKIPFINALCOLORCLAMP","MULTIVIEW","ORDER_INDEPENDENT_TRANSPARENCY","ORDER_INDEPENDENT_TRANSPARENCY_16BITS","CAMERA_ORTHOGRAPHIC","CAMERA_PERSPECTIVE","IS_REFLECTION_LINEAR","IS_REFRACTION_LINEAR","EXPOSURE","DECAL_AFTER_DETAIL","rebuild","setReflectionMode","modeToEnable","modes","mode","StandardMaterial","PushMaterial","imageProcessingConfiguration","_imageProcessingConfiguration","value","_attachImageProcessingConfiguration","_markAllSubMeshesAsTexturesDirty","configuration","_imageProcessingObserver","onUpdateParameters","remove","getScene","add","_markAllSubMeshesAsImageProcessingDirty","isPrePassCapable","disableDepthWrite","cameraColorCurvesEnabled","colorCurvesEnabled","cameraColorGradingEnabled","colorGradingEnabled","cameraToneMappingEnabled","toneMappingEnabled","cameraExposure","exposure","cameraContrast","contrast","cameraColorGradingTexture","colorGradingTexture","cameraColorCurves","colorCurves","canRenderToMRT","name","scene","forceGLSL","_diffuseTexture","_ambientTexture","_opacityTexture","_reflectionTexture","_emissiveTexture","_specularTexture","_bumpTexture","_lightmapTexture","_refractionTexture","ambientColor","Color3","diffuseColor","specularColor","emissiveColor","specularPower","_useAlphaFromDiffuseTexture","_useEmissiveAsIllumination","_linkEmissiveWithDiffuse","_useSpecularOverAlpha","_useReflectionOverAlpha","_disableLighting","_useObjectSpaceNormalMap","_useParallax","_useParallaxOcclusion","parallaxScaleBias","_roughness","indexOfRefraction","invertRefractionY","alphaCutOff","_useLightmapAsShadowmap","_useReflectionFresnelFromSpecular","_useGlossinessFromSpecularMapAlpha","_maxSimultaneousLights","_invertNormalMapX","_invertNormalMapY","_twoSidedLighting","_applyDecalMapAfterDetailMap","_shadersLoaded","_renderTargets","SmartArray","_worldViewProjectionMatrix","Matrix","Zero","_globalAmbientColor","_cacheHasRenderTargetTextures","engine","getEngine","isWebGPU","ForceGLSL","_uniformBuffer","dispose","UniformBuffer","undefined","_shaderLanguage","detailMap","DetailMapConfiguration","prePassConfiguration","PrePassConfiguration","getRenderTargetTextures","reset","ReflectionTextureEnabled","isRenderTarget","push","RefractionTextureEnabled","_eventInfo","renderTargets","_callbackPluginEventFillRenderTargetTextures","hasRenderTargetTextures","getClassName","needAlphaBlending","_disableAlphaBlending","alpha","_shouldUseAlphaFromDiffuseTexture","_opacityFresnelParameters","isEnabled","needAlphaTesting","_forceAlphaTest","_hasAlphaChannel","_transparencyMode","Material","MATERIAL_ALPHATEST","hasAlpha","MATERIAL_OPAQUE","getAlphaTestTexture","isReadyForSubMesh","mesh","useInstances","_uniformBufferLayoutBuilt","buildUniformLayout","drawWrapper","_drawWrapper","isFrozen","_wasPreviouslyReady","_wasPreviouslyUsingInstances","materialDefines","_callbackPluginEventGeneric","defineNames","defines","_isReadyForSubMesh","_needNormals","PrepareDefinesForLights","PrepareDefinesForMultiview","oit","needAlphaBlendingForMesh","useOrderIndependentTransparency","PrepareDefinesForPrePass","PrepareDefinesForOIT","_areTexturesDirty","_callbackPluginEventHasRenderTargetTextures","_needUVs","i","Constants","MAX_SUPPORTED_UV_SETS","texturesEnabled","DiffuseTextureEnabled","isReadyOrNotBlocking","PrepareDefinesForMergedUV","AmbientTextureEnabled","OpacityTextureEnabled","getAlphaFromRGB","coordinatesMode","Texture","INVCUBIC_MODE","isCube","useRightHandedSystem","invertZ","isRGBD","EXPLICIT_MODE","PLANAR_MODE","PROJECTION_MODE","SKYBOX_MODE","SPHERICAL_MODE","EQUIRECTANGULAR_MODE","FIXED_EQUIRECTANGULAR_MODE","FIXED_EQUIRECTANGULAR_MIRRORED_MODE","CUBIC_MODE","boundingBoxSize","EmissiveTextureEnabled","LightmapTextureEnabled","SpecularTextureEnabled","getCaps","standardDerivatives","BumpTextureEnabled","isReady","_backFaceCulling","alphaMode","ALPHA_PREMULTIPLIED","ALPHA_PREMULTIPLIED_PORTERDUFF","transparencyMode","_callbackPluginEventIsReadyForSubMesh","_areImageProcessingDirty","prepareDefines","reflectionTexture","gammaSpace","refractionTexture","_areFresnelDirty","FresnelEnabled","_diffuseFresnelParameters","_emissiveFresnelParameters","_refractionFresnelParameters","_reflectionFresnelParameters","PrepareDefinesForMisc","_useLogarithmicDepth","pointsCloud","fogEnabled","_shouldTurnAlphaTestOn","PrepareDefinesForFrameBoundValues","getRenderingMesh","hasThinInstances","_callbackPluginEventPrepareDefinesBeforeAttributes","PrepareDefinesForAttributes","_callbackPluginEventPrepareDefines","forceWasNotReadyPreviously","isDirty","lightDisposed","_areLightsDisposed","markAsProcessed","fallbacks","EffectFallbacks","addFallback","HandleFallbacksForShadows","attribs","VertexBuffer","PositionKind","NormalKind","TangentKind","ColorKind","PrepareAttributesForBones","PrepareAttributesForInstances","PrepareAttributesForMorphTargets","PrepareAttributesForBakedVertexAnimation","shaderName","uniforms","samplers","uniformBuffers","indexParameters","maxSimultaneousLights","maxSimultaneousMorphTargets","fallbackRank","attributes","uniformBuffersNames","customCode","AddUniforms","ImageProcessingConfiguration","PrepareUniforms","PrepareSamplers","PrepareUniformsAndSamplersList","uniformsNames","addClipPlaneUniforms","csnrOptions","customShaderNameResolve","join","toString","previousEffect","createEffect","onCompiled","onError","processFinalCode","processCodeAfterIncludes","multiTarget","shaderLanguage","extraInitializationsAsync","async","Promise","all","import","_onEffectCreatedObservable","notifyObservers","allowShaderHotSwapping","markAsUnprocessed","resetCachedMaterial","setEffect","_materialContext","_renderId","getRenderId","_checkScenePerformancePriority","ubo","addUniform","bindForSubMesh","world","_activeEffect","getMeshUniformBuffer","bindToEffect","transferToEffect","_callbackPluginEventHardBindForSubMesh","toNormalMatrix","_normalMatrix","bindOnlyNormalMatrix","mustRebind","_mustRebind","visibility","BindBonesParameters","bindViewProjection","useUbo","isSync","_forceRebindOnNextCall","diffuseFresnelParameters","updateColor4","leftColor","power","rightColor","bias","opacityFresnelParameters","toLuminance","reflectionFresnelParameters","refractionFresnelParameters","emissiveFresnelParameters","updateFloat2","coordinatesIndex","level","BindTextureMatrix","updateFloat","roughness","updateMatrix","getReflectionTextureMatrix","cubeTexture","updateVector3","boundingBoxPosition","updateFloat3","_mirroredCameraPosition","depth","updateFloat4","pointSize","updateColor3","BlackReadOnly","multiplyToRef","setTexture","depthPeelingRenderer","bind","_callbackPluginEventBindForSubMesh","bindClipPlane","bindEyePosition","_features","needToAlwaysBindUniformBuffers","_needToBindSceneUbo","lightsEnabled","BindLights","applyFog","fogMode","Scene","FOGMODE_NONE","receiveShadows","bindView","BindFogParameters","BindMorphTargetParameters","bakedVertexAnimationManager","useLogarithmicDepth","BindLogDepth","applyByPostProcess","_afterBind","update","getAnimatables","results","animations","length","getActiveTextures","activeTextures","hasTexture","texture","forceDisposeEffect","forceDisposeTextures","clone","cloneTexturesOnlyOnce","rootUrl","result","SerializationHelper","Clone","id","stencil","copyTo","_clonePlugins","Parse","source","material","parse","_ParsePlugins","MaterialFlags","DetailTextureEnabled","ColorGradingTextureEnabled","__decorate","serializeAsTexture","prototype","expandToProperty","serializeAsColor3","serialize","serializeAsFresnelParameters","RegisterClass","DefaultMaterialFactory"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{ac as t,M as e,T as s,V as n,w as r}from"./index-BC5LF5i9.esm.min.js";import{A as i}from"./assetContainer-yzkL3HL9.esm.min.js";import"./standardMaterial-BMohC2Pw.esm.min.js";class a{constructor(){this.solidPattern=/solid (\S*)([\S\s]*?)endsolid[ ]*(\S*)/g,this.facetsPattern=/facet([\s\S]*?)endfacet/g,this.normalPattern=/normal[\s]+([-+]?[0-9]+\.?[0-9]*([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+/g,this.vertexPattern=/vertex[\s]+([-+]?[0-9]+\.?[0-9]*([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+/g,this.name=t.name,this.extensions=t.extensions}importMesh(t,n,r,i,a){let o;if("string"!=typeof r){if(this._isBinary(r)){const t=new e("stlmesh",n);return this._parseBinary(t,r),a&&a.push(t),!0}r=(new TextDecoder).decode(new Uint8Array(r))}for(;o=this.solidPattern.exec(r);){let r=o[1];const i=o[3];if(i&&r!=i)return s.Error("Error in STL, solid name != endsolid name"),!1;if(t&&r)if(t instanceof Array){if(!t.indexOf(r))continue}else if(r!==t)continue;r=r||"stlmesh";const l=new e(r,n);this._parseASCII(l,o[2]),a&&a.push(l)}return!0}load(t,e,s){return this.importMesh(null,t,e,s,null)}loadAssetContainer(t,e,s){const n=new i(t);return t._blockEntityCollection=!0,this.importMesh(null,t,e,s,n.meshes),t._blockEntityCollection=!1,n}_isBinary(t){const e=new DataView(t);if(e.byteLength<=80)return!1;if(84+50*e.getUint32(80,!0)===e.byteLength)return!0;const s=[115,111,108,105,100];for(let t=0;t<5;t++)if(e.getUint8(t)!==s[t])return!0;return!1}_parseBinary(t,e){const s=new DataView(e),r=s.getUint32(80,!0);let i=0;const o=new Float32Array(3*r*3),l=new Float32Array(3*r*3),c=new Uint32Array(3*r);let m=0;for(let t=0;t<r;t++){const e=84+50*t,n=s.getFloat32(e,!0),r=s.getFloat32(e+4,!0),u=s.getFloat32(e+8,!0);for(let t=1;t<=3;t++){const c=e+12*t;o[i]=s.getFloat32(c,!0),l[i]=n,a.DO_NOT_ALTER_FILE_COORDINATES?(o[i+1]=s.getFloat32(c+4,!0),o[i+2]=s.getFloat32(c+8,!0),l[i+1]=r,l[i+2]=u):(o[i+2]=s.getFloat32(c+4,!0),o[i+1]=s.getFloat32(c+8,!0),l[i+2]=r,l[i+1]=u),i+=3}a.DO_NOT_ALTER_FILE_COORDINATES?(c[m]=m,c[m+1]=m+2,c[m+2]=m+1,m+=3):(c[m]=m++,c[m]=m++,c[m]=m++)}t.setVerticesData(n.PositionKind,o),t.setVerticesData(n.NormalKind,l),t.setIndices(c),t.computeWorldMatrix(!0)}_parseASCII(t,e){const s=[],r=[],i=[];let o,l=0;for(;o=this.facetsPattern.exec(e);){const t=o[1],e=this.normalPattern.exec(t);if(this.normalPattern.lastIndex=0,!e)continue;const n=[Number(e[1]),Number(e[5]),Number(e[3])];let c;for(;c=this.vertexPattern.exec(t);)a.DO_NOT_ALTER_FILE_COORDINATES?(s.push(Number(c[1]),Number(c[3]),Number(c[5])),r.push(n[0],n[2],n[1])):(s.push(Number(c[1]),Number(c[5]),Number(c[3])),r.push(n[0],n[1],n[2]));a.DO_NOT_ALTER_FILE_COORDINATES?(i.push(l,l+2,l+1),l+=3):i.push(l++,l++,l++),this.vertexPattern.lastIndex=0}this.facetsPattern.lastIndex=0,t.setVerticesData(n.PositionKind,s),t.setVerticesData(n.NormalKind,r),t.setIndices(i),t.computeWorldMatrix(!0)}}a.DO_NOT_ALTER_FILE_COORDINATES=!1,r(new a);export{a as STLFileLoader};
2
- //# sourceMappingURL=stlFileLoader-DK1ITZRU.esm.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stlFileLoader-DK1ITZRU.esm.min.js","sources":["../../../../../dev/loaders/dist/STL/stlFileLoader.js"],"sourcesContent":["import { Tools } from \"core/Misc/tools\";\nimport { VertexBuffer } from \"core/Buffers/buffer\";\nimport { Mesh } from \"core/Meshes/mesh\";\nimport { registerSceneLoaderPlugin } from \"core/Loading/sceneLoader\";\nimport { AssetContainer } from \"core/assetContainer\";\nimport { STLFileLoaderMetadata } from \"./stlFileLoader.metadata\";\nimport \"core/Materials/standardMaterial\";\n/**\n * STL file type loader.\n * This is a babylon scene loader plugin.\n */\nexport class STLFileLoader {\n constructor() {\n /** @internal */\n this.solidPattern = /solid (\\S*)([\\S\\s]*?)endsolid[ ]*(\\S*)/g;\n /** @internal */\n this.facetsPattern = /facet([\\s\\S]*?)endfacet/g;\n /** @internal */\n this.normalPattern = /normal[\\s]+([-+]?[0-9]+\\.?[0-9]*([eE][-+]?[0-9]+)?)+[\\s]+([-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?)+[\\s]+([-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?)+/g;\n /** @internal */\n this.vertexPattern = /vertex[\\s]+([-+]?[0-9]+\\.?[0-9]*([eE][-+]?[0-9]+)?)+[\\s]+([-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?)+[\\s]+([-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?)+/g;\n /**\n * Defines the name of the plugin.\n */\n this.name = STLFileLoaderMetadata.name;\n /**\n * Defines the extensions the stl loader is able to load.\n * force data to come in as an ArrayBuffer\n * we'll convert to string if it looks like it's an ASCII .stl\n */\n this.extensions = STLFileLoaderMetadata.extensions;\n }\n /**\n * Import meshes into a scene.\n * @param meshesNames An array of mesh names, a single mesh name, or empty string for all meshes that filter what meshes are imported\n * @param scene The scene to import into\n * @param data The data to import\n * @param rootUrl The root url for scene and resources\n * @param meshes The meshes array to import into\n * @returns True if successful or false otherwise\n */\n importMesh(meshesNames, scene, data, rootUrl, meshes) {\n let matches;\n if (typeof data !== \"string\") {\n if (this._isBinary(data)) {\n // binary .stl\n const babylonMesh = new Mesh(\"stlmesh\", scene);\n this._parseBinary(babylonMesh, data);\n if (meshes) {\n meshes.push(babylonMesh);\n }\n return true;\n }\n // ASCII .stl\n // convert to string\n data = new TextDecoder().decode(new Uint8Array(data));\n }\n //if arrived here, data is a string, containing the STLA data.\n while ((matches = this.solidPattern.exec(data))) {\n let meshName = matches[1];\n const meshNameFromEnd = matches[3];\n if (meshNameFromEnd && meshName != meshNameFromEnd) {\n Tools.Error(\"Error in STL, solid name != endsolid name\");\n return false;\n }\n // check meshesNames\n if (meshesNames && meshName) {\n if (meshesNames instanceof Array) {\n if (!meshesNames.indexOf(meshName)) {\n continue;\n }\n }\n else {\n if (meshName !== meshesNames) {\n continue;\n }\n }\n }\n // stl mesh name can be empty as well\n meshName = meshName || \"stlmesh\";\n const babylonMesh = new Mesh(meshName, scene);\n this._parseASCII(babylonMesh, matches[2]);\n if (meshes) {\n meshes.push(babylonMesh);\n }\n }\n return true;\n }\n /**\n * Load into a scene.\n * @param scene The scene to load into\n * @param data The data to import\n * @param rootUrl The root url for scene and resources\n * @returns true if successful or false otherwise\n */\n load(scene, data, rootUrl) {\n const result = this.importMesh(null, scene, data, rootUrl, null);\n return result;\n }\n /**\n * Load into an asset container.\n * @param scene The scene to load into\n * @param data The data to import\n * @param rootUrl The root url for scene and resources\n * @returns The loaded asset container\n */\n loadAssetContainer(scene, data, rootUrl) {\n const container = new AssetContainer(scene);\n scene._blockEntityCollection = true;\n this.importMesh(null, scene, data, rootUrl, container.meshes);\n scene._blockEntityCollection = false;\n return container;\n }\n _isBinary(data) {\n // check if file size is correct for binary stl\n const reader = new DataView(data);\n // A Binary STL header is 80 bytes, if the data size is not great than\n // that then it's not a binary STL.\n if (reader.byteLength <= 80) {\n return false;\n }\n const faceSize = (32 / 8) * 3 + (32 / 8) * 3 * 3 + 16 / 8;\n const nFaces = reader.getUint32(80, true);\n if (80 + 32 / 8 + nFaces * faceSize === reader.byteLength) {\n return true;\n }\n // US-ASCII begin with 's', 'o', 'l', 'i', 'd'\n const ascii = [115, 111, 108, 105, 100];\n for (let off = 0; off < 5; off++) {\n if (reader.getUint8(off) !== ascii[off]) {\n return true;\n }\n }\n return false;\n }\n _parseBinary(mesh, data) {\n const reader = new DataView(data);\n const faces = reader.getUint32(80, true);\n const dataOffset = 84;\n const faceLength = 12 * 4 + 2;\n let offset = 0;\n const positions = new Float32Array(faces * 3 * 3);\n const normals = new Float32Array(faces * 3 * 3);\n const indices = new Uint32Array(faces * 3);\n let indicesCount = 0;\n for (let face = 0; face < faces; face++) {\n const start = dataOffset + face * faceLength;\n const normalX = reader.getFloat32(start, true);\n const normalY = reader.getFloat32(start + 4, true);\n const normalZ = reader.getFloat32(start + 8, true);\n for (let i = 1; i <= 3; i++) {\n const vertexstart = start + i * 12;\n // ordering is intentional to match ascii import\n positions[offset] = reader.getFloat32(vertexstart, true);\n normals[offset] = normalX;\n if (!STLFileLoader.DO_NOT_ALTER_FILE_COORDINATES) {\n positions[offset + 2] = reader.getFloat32(vertexstart + 4, true);\n positions[offset + 1] = reader.getFloat32(vertexstart + 8, true);\n normals[offset + 2] = normalY;\n normals[offset + 1] = normalZ;\n }\n else {\n positions[offset + 1] = reader.getFloat32(vertexstart + 4, true);\n positions[offset + 2] = reader.getFloat32(vertexstart + 8, true);\n normals[offset + 1] = normalY;\n normals[offset + 2] = normalZ;\n }\n offset += 3;\n }\n if (STLFileLoader.DO_NOT_ALTER_FILE_COORDINATES) {\n indices[indicesCount] = indicesCount;\n indices[indicesCount + 1] = indicesCount + 2;\n indices[indicesCount + 2] = indicesCount + 1;\n indicesCount += 3;\n }\n else {\n indices[indicesCount] = indicesCount++;\n indices[indicesCount] = indicesCount++;\n indices[indicesCount] = indicesCount++;\n }\n }\n mesh.setVerticesData(VertexBuffer.PositionKind, positions);\n mesh.setVerticesData(VertexBuffer.NormalKind, normals);\n mesh.setIndices(indices);\n mesh.computeWorldMatrix(true);\n }\n _parseASCII(mesh, solidData) {\n const positions = [];\n const normals = [];\n const indices = [];\n let indicesCount = 0;\n //load facets, ignoring loop as the standard doesn't define it can contain more than vertices\n let matches;\n while ((matches = this.facetsPattern.exec(solidData))) {\n const facet = matches[1];\n //one normal per face\n const normalMatches = this.normalPattern.exec(facet);\n this.normalPattern.lastIndex = 0;\n if (!normalMatches) {\n continue;\n }\n const normal = [Number(normalMatches[1]), Number(normalMatches[5]), Number(normalMatches[3])];\n let vertexMatch;\n while ((vertexMatch = this.vertexPattern.exec(facet))) {\n if (!STLFileLoader.DO_NOT_ALTER_FILE_COORDINATES) {\n positions.push(Number(vertexMatch[1]), Number(vertexMatch[5]), Number(vertexMatch[3]));\n normals.push(normal[0], normal[1], normal[2]);\n }\n else {\n positions.push(Number(vertexMatch[1]), Number(vertexMatch[3]), Number(vertexMatch[5]));\n // Flipping the second and third component because inverted\n // when normal was declared.\n normals.push(normal[0], normal[2], normal[1]);\n }\n }\n if (STLFileLoader.DO_NOT_ALTER_FILE_COORDINATES) {\n indices.push(indicesCount, indicesCount + 2, indicesCount + 1);\n indicesCount += 3;\n }\n else {\n indices.push(indicesCount++, indicesCount++, indicesCount++);\n }\n this.vertexPattern.lastIndex = 0;\n }\n this.facetsPattern.lastIndex = 0;\n mesh.setVerticesData(VertexBuffer.PositionKind, positions);\n mesh.setVerticesData(VertexBuffer.NormalKind, normals);\n mesh.setIndices(indices);\n mesh.computeWorldMatrix(true);\n }\n}\n/**\n * Defines if Y and Z axes are swapped or not when loading an STL file.\n * The default is false to maintain backward compatibility. When set to\n * true, coordinates from the STL file are used without change.\n */\nSTLFileLoader.DO_NOT_ALTER_FILE_COORDINATES = false;\nregisterSceneLoaderPlugin(new STLFileLoader());\n//# sourceMappingURL=stlFileLoader.js.map"],"names":["STLFileLoader","constructor","this","solidPattern","facetsPattern","normalPattern","vertexPattern","name","STLFileLoaderMetadata","extensions","importMesh","meshesNames","scene","data","rootUrl","meshes","matches","_isBinary","babylonMesh","Mesh","_parseBinary","push","TextDecoder","decode","Uint8Array","exec","meshName","meshNameFromEnd","Tools","Error","Array","indexOf","_parseASCII","load","loadAssetContainer","container","AssetContainer","_blockEntityCollection","reader","DataView","byteLength","getUint32","ascii","off","getUint8","mesh","faces","offset","positions","Float32Array","normals","indices","Uint32Array","indicesCount","face","start","normalX","getFloat32","normalY","normalZ","i","vertexstart","DO_NOT_ALTER_FILE_COORDINATES","setVerticesData","VertexBuffer","PositionKind","NormalKind","setIndices","computeWorldMatrix","solidData","facet","normalMatches","lastIndex","normal","Number","vertexMatch","registerSceneLoaderPlugin"],"mappings":"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"}
@@ -1,238 +0,0 @@
1
- import { ac as STLFileLoaderMetadata, M as Mesh, T as Tools, V as VertexBuffer, w as registerSceneLoaderPlugin } from './index-D0E1moDr.esm.js';
2
- import { A as AssetContainer } from './assetContainer-C-F4HA2b.esm.js';
3
- import './standardMaterial-BH9cL7Zd.esm.js';
4
-
5
- /**
6
- * STL file type loader.
7
- * This is a babylon scene loader plugin.
8
- */
9
- class STLFileLoader {
10
- constructor() {
11
- /** @internal */
12
- this.solidPattern = /solid (\S*)([\S\s]*?)endsolid[ ]*(\S*)/g;
13
- /** @internal */
14
- this.facetsPattern = /facet([\s\S]*?)endfacet/g;
15
- /** @internal */
16
- this.normalPattern = /normal[\s]+([-+]?[0-9]+\.?[0-9]*([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+/g;
17
- /** @internal */
18
- this.vertexPattern = /vertex[\s]+([-+]?[0-9]+\.?[0-9]*([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+/g;
19
- /**
20
- * Defines the name of the plugin.
21
- */
22
- this.name = STLFileLoaderMetadata.name;
23
- /**
24
- * Defines the extensions the stl loader is able to load.
25
- * force data to come in as an ArrayBuffer
26
- * we'll convert to string if it looks like it's an ASCII .stl
27
- */
28
- this.extensions = STLFileLoaderMetadata.extensions;
29
- }
30
- /**
31
- * Import meshes into a scene.
32
- * @param meshesNames An array of mesh names, a single mesh name, or empty string for all meshes that filter what meshes are imported
33
- * @param scene The scene to import into
34
- * @param data The data to import
35
- * @param rootUrl The root url for scene and resources
36
- * @param meshes The meshes array to import into
37
- * @returns True if successful or false otherwise
38
- */
39
- importMesh(meshesNames, scene, data, rootUrl, meshes) {
40
- let matches;
41
- if (typeof data !== "string") {
42
- if (this._isBinary(data)) {
43
- // binary .stl
44
- const babylonMesh = new Mesh("stlmesh", scene);
45
- this._parseBinary(babylonMesh, data);
46
- if (meshes) {
47
- meshes.push(babylonMesh);
48
- }
49
- return true;
50
- }
51
- // ASCII .stl
52
- // convert to string
53
- data = new TextDecoder().decode(new Uint8Array(data));
54
- }
55
- //if arrived here, data is a string, containing the STLA data.
56
- while ((matches = this.solidPattern.exec(data))) {
57
- let meshName = matches[1];
58
- const meshNameFromEnd = matches[3];
59
- if (meshNameFromEnd && meshName != meshNameFromEnd) {
60
- Tools.Error("Error in STL, solid name != endsolid name");
61
- return false;
62
- }
63
- // check meshesNames
64
- if (meshesNames && meshName) {
65
- if (meshesNames instanceof Array) {
66
- if (!meshesNames.indexOf(meshName)) {
67
- continue;
68
- }
69
- }
70
- else {
71
- if (meshName !== meshesNames) {
72
- continue;
73
- }
74
- }
75
- }
76
- // stl mesh name can be empty as well
77
- meshName = meshName || "stlmesh";
78
- const babylonMesh = new Mesh(meshName, scene);
79
- this._parseASCII(babylonMesh, matches[2]);
80
- if (meshes) {
81
- meshes.push(babylonMesh);
82
- }
83
- }
84
- return true;
85
- }
86
- /**
87
- * Load into a scene.
88
- * @param scene The scene to load into
89
- * @param data The data to import
90
- * @param rootUrl The root url for scene and resources
91
- * @returns true if successful or false otherwise
92
- */
93
- load(scene, data, rootUrl) {
94
- const result = this.importMesh(null, scene, data, rootUrl, null);
95
- return result;
96
- }
97
- /**
98
- * Load into an asset container.
99
- * @param scene The scene to load into
100
- * @param data The data to import
101
- * @param rootUrl The root url for scene and resources
102
- * @returns The loaded asset container
103
- */
104
- loadAssetContainer(scene, data, rootUrl) {
105
- const container = new AssetContainer(scene);
106
- scene._blockEntityCollection = true;
107
- this.importMesh(null, scene, data, rootUrl, container.meshes);
108
- scene._blockEntityCollection = false;
109
- return container;
110
- }
111
- _isBinary(data) {
112
- // check if file size is correct for binary stl
113
- const reader = new DataView(data);
114
- // A Binary STL header is 80 bytes, if the data size is not great than
115
- // that then it's not a binary STL.
116
- if (reader.byteLength <= 80) {
117
- return false;
118
- }
119
- const faceSize = (32 / 8) * 3 + (32 / 8) * 3 * 3 + 16 / 8;
120
- const nFaces = reader.getUint32(80, true);
121
- if (80 + 32 / 8 + nFaces * faceSize === reader.byteLength) {
122
- return true;
123
- }
124
- // US-ASCII begin with 's', 'o', 'l', 'i', 'd'
125
- const ascii = [115, 111, 108, 105, 100];
126
- for (let off = 0; off < 5; off++) {
127
- if (reader.getUint8(off) !== ascii[off]) {
128
- return true;
129
- }
130
- }
131
- return false;
132
- }
133
- _parseBinary(mesh, data) {
134
- const reader = new DataView(data);
135
- const faces = reader.getUint32(80, true);
136
- const dataOffset = 84;
137
- const faceLength = 12 * 4 + 2;
138
- let offset = 0;
139
- const positions = new Float32Array(faces * 3 * 3);
140
- const normals = new Float32Array(faces * 3 * 3);
141
- const indices = new Uint32Array(faces * 3);
142
- let indicesCount = 0;
143
- for (let face = 0; face < faces; face++) {
144
- const start = dataOffset + face * faceLength;
145
- const normalX = reader.getFloat32(start, true);
146
- const normalY = reader.getFloat32(start + 4, true);
147
- const normalZ = reader.getFloat32(start + 8, true);
148
- for (let i = 1; i <= 3; i++) {
149
- const vertexstart = start + i * 12;
150
- // ordering is intentional to match ascii import
151
- positions[offset] = reader.getFloat32(vertexstart, true);
152
- normals[offset] = normalX;
153
- if (!STLFileLoader.DO_NOT_ALTER_FILE_COORDINATES) {
154
- positions[offset + 2] = reader.getFloat32(vertexstart + 4, true);
155
- positions[offset + 1] = reader.getFloat32(vertexstart + 8, true);
156
- normals[offset + 2] = normalY;
157
- normals[offset + 1] = normalZ;
158
- }
159
- else {
160
- positions[offset + 1] = reader.getFloat32(vertexstart + 4, true);
161
- positions[offset + 2] = reader.getFloat32(vertexstart + 8, true);
162
- normals[offset + 1] = normalY;
163
- normals[offset + 2] = normalZ;
164
- }
165
- offset += 3;
166
- }
167
- if (STLFileLoader.DO_NOT_ALTER_FILE_COORDINATES) {
168
- indices[indicesCount] = indicesCount;
169
- indices[indicesCount + 1] = indicesCount + 2;
170
- indices[indicesCount + 2] = indicesCount + 1;
171
- indicesCount += 3;
172
- }
173
- else {
174
- indices[indicesCount] = indicesCount++;
175
- indices[indicesCount] = indicesCount++;
176
- indices[indicesCount] = indicesCount++;
177
- }
178
- }
179
- mesh.setVerticesData(VertexBuffer.PositionKind, positions);
180
- mesh.setVerticesData(VertexBuffer.NormalKind, normals);
181
- mesh.setIndices(indices);
182
- mesh.computeWorldMatrix(true);
183
- }
184
- _parseASCII(mesh, solidData) {
185
- const positions = [];
186
- const normals = [];
187
- const indices = [];
188
- let indicesCount = 0;
189
- //load facets, ignoring loop as the standard doesn't define it can contain more than vertices
190
- let matches;
191
- while ((matches = this.facetsPattern.exec(solidData))) {
192
- const facet = matches[1];
193
- //one normal per face
194
- const normalMatches = this.normalPattern.exec(facet);
195
- this.normalPattern.lastIndex = 0;
196
- if (!normalMatches) {
197
- continue;
198
- }
199
- const normal = [Number(normalMatches[1]), Number(normalMatches[5]), Number(normalMatches[3])];
200
- let vertexMatch;
201
- while ((vertexMatch = this.vertexPattern.exec(facet))) {
202
- if (!STLFileLoader.DO_NOT_ALTER_FILE_COORDINATES) {
203
- positions.push(Number(vertexMatch[1]), Number(vertexMatch[5]), Number(vertexMatch[3]));
204
- normals.push(normal[0], normal[1], normal[2]);
205
- }
206
- else {
207
- positions.push(Number(vertexMatch[1]), Number(vertexMatch[3]), Number(vertexMatch[5]));
208
- // Flipping the second and third component because inverted
209
- // when normal was declared.
210
- normals.push(normal[0], normal[2], normal[1]);
211
- }
212
- }
213
- if (STLFileLoader.DO_NOT_ALTER_FILE_COORDINATES) {
214
- indices.push(indicesCount, indicesCount + 2, indicesCount + 1);
215
- indicesCount += 3;
216
- }
217
- else {
218
- indices.push(indicesCount++, indicesCount++, indicesCount++);
219
- }
220
- this.vertexPattern.lastIndex = 0;
221
- }
222
- this.facetsPattern.lastIndex = 0;
223
- mesh.setVerticesData(VertexBuffer.PositionKind, positions);
224
- mesh.setVerticesData(VertexBuffer.NormalKind, normals);
225
- mesh.setIndices(indices);
226
- mesh.computeWorldMatrix(true);
227
- }
228
- }
229
- /**
230
- * Defines if Y and Z axes are swapped or not when loading an STL file.
231
- * The default is false to maintain backward compatibility. When set to
232
- * true, coordinates from the STL file are used without change.
233
- */
234
- STLFileLoader.DO_NOT_ALTER_FILE_COORDINATES = false;
235
- registerSceneLoaderPlugin(new STLFileLoader());
236
-
237
- export { STLFileLoader };
238
- //# sourceMappingURL=stlFileLoader-DskoqTwS.esm.js.map