@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,401 +0,0 @@
1
- import { bq as Viewport, V as VertexBuffer, C as Constants, aK as Observable, br as DrawWrapper, l as Effect, b4 as Clamp, T as Tools, E as EngineStore } from './index-D0E1moDr.esm.js';
2
- import './postprocess.vertex-BfybF4d2.esm.js';
3
-
4
- // Fullscreen quad buffers by default.
5
- const defaultOptions = {
6
- positions: [1, 1, -1, 1, -1, -1, 1, -1],
7
- indices: [0, 1, 2, 0, 2, 3],
8
- };
9
- /**
10
- * Helper class to render one or more effects.
11
- * You can access the previous rendering in your shader by declaring a sampler named textureSampler
12
- */
13
- class EffectRenderer {
14
- /**
15
- * Creates an effect renderer
16
- * @param engine the engine to use for rendering
17
- * @param options defines the options of the effect renderer
18
- */
19
- constructor(engine, options = defaultOptions) {
20
- this._fullscreenViewport = new Viewport(0, 0, 1, 1);
21
- const positions = options.positions ?? defaultOptions.positions;
22
- const indices = options.indices ?? defaultOptions.indices;
23
- this.engine = engine;
24
- this._vertexBuffers = {
25
- [VertexBuffer.PositionKind]: new VertexBuffer(engine, positions, VertexBuffer.PositionKind, false, false, 2),
26
- };
27
- this._indexBuffer = engine.createIndexBuffer(indices);
28
- this._onContextRestoredObserver = engine.onContextRestoredObservable.add(() => {
29
- this._indexBuffer = engine.createIndexBuffer(indices);
30
- for (const key in this._vertexBuffers) {
31
- const vertexBuffer = this._vertexBuffers[key];
32
- vertexBuffer._rebuild();
33
- }
34
- });
35
- }
36
- /**
37
- * Sets the current viewport in normalized coordinates 0-1
38
- * @param viewport Defines the viewport to set (defaults to 0 0 1 1)
39
- */
40
- setViewport(viewport = this._fullscreenViewport) {
41
- this.engine.setViewport(viewport);
42
- }
43
- /**
44
- * Binds the embedded attributes buffer to the effect.
45
- * @param effect Defines the effect to bind the attributes for
46
- */
47
- bindBuffers(effect) {
48
- this.engine.bindBuffers(this._vertexBuffers, this._indexBuffer, effect);
49
- }
50
- /**
51
- * Sets the current effect wrapper to use during draw.
52
- * The effect needs to be ready before calling this api.
53
- * This also sets the default full screen position attribute.
54
- * @param effectWrapper Defines the effect to draw with
55
- */
56
- applyEffectWrapper(effectWrapper) {
57
- this.engine.setState(true);
58
- this.engine.depthCullingState.depthTest = false;
59
- this.engine.stencilState.stencilTest = false;
60
- this.engine.enableEffect(effectWrapper._drawWrapper);
61
- this.bindBuffers(effectWrapper.effect);
62
- effectWrapper.onApplyObservable.notifyObservers({});
63
- }
64
- /**
65
- * Saves engine states
66
- */
67
- saveStates() {
68
- this._savedStateDepthTest = this.engine.depthCullingState.depthTest;
69
- this._savedStateStencilTest = this.engine.stencilState.stencilTest;
70
- }
71
- /**
72
- * Restores engine states
73
- */
74
- restoreStates() {
75
- this.engine.depthCullingState.depthTest = this._savedStateDepthTest;
76
- this.engine.stencilState.stencilTest = this._savedStateStencilTest;
77
- }
78
- /**
79
- * Draws a full screen quad.
80
- */
81
- draw() {
82
- this.engine.drawElementsType(Constants.MATERIAL_TriangleFillMode, 0, 6);
83
- }
84
- _isRenderTargetTexture(texture) {
85
- return texture.renderTarget !== undefined;
86
- }
87
- /**
88
- * renders one or more effects to a specified texture
89
- * @param effectWrapper the effect to renderer
90
- * @param outputTexture texture to draw to, if null it will render to the screen.
91
- */
92
- render(effectWrapper, outputTexture = null) {
93
- // Ensure effect is ready
94
- if (!effectWrapper.effect.isReady()) {
95
- return;
96
- }
97
- this.saveStates();
98
- // Reset state
99
- this.setViewport();
100
- const out = outputTexture === null ? null : this._isRenderTargetTexture(outputTexture) ? outputTexture.renderTarget : outputTexture;
101
- if (out) {
102
- this.engine.bindFramebuffer(out);
103
- }
104
- this.applyEffectWrapper(effectWrapper);
105
- this.draw();
106
- if (out) {
107
- this.engine.unBindFramebuffer(out);
108
- }
109
- this.restoreStates();
110
- }
111
- /**
112
- * Disposes of the effect renderer
113
- */
114
- dispose() {
115
- const vertexBuffer = this._vertexBuffers[VertexBuffer.PositionKind];
116
- if (vertexBuffer) {
117
- vertexBuffer.dispose();
118
- delete this._vertexBuffers[VertexBuffer.PositionKind];
119
- }
120
- if (this._indexBuffer) {
121
- this.engine._releaseBuffer(this._indexBuffer);
122
- }
123
- if (this._onContextRestoredObserver) {
124
- this.engine.onContextRestoredObservable.remove(this._onContextRestoredObserver);
125
- this._onContextRestoredObserver = null;
126
- }
127
- }
128
- }
129
- /**
130
- * Wraps an effect to be used for rendering
131
- */
132
- class EffectWrapper {
133
- /**
134
- * The underlying effect
135
- */
136
- get effect() {
137
- return this._drawWrapper.effect;
138
- }
139
- set effect(effect) {
140
- this._drawWrapper.effect = effect;
141
- }
142
- /**
143
- * Creates an effect to be renderer
144
- * @param creationOptions options to create the effect
145
- */
146
- constructor(creationOptions) {
147
- /**
148
- * Event that is fired right before the effect is drawn (should be used to update uniforms)
149
- */
150
- this.onApplyObservable = new Observable();
151
- let shaderPath;
152
- const uniformNames = creationOptions.uniformNames || [];
153
- if (creationOptions.vertexShader) {
154
- shaderPath = {
155
- fragmentSource: creationOptions.fragmentShader,
156
- vertexSource: creationOptions.vertexShader,
157
- spectorName: creationOptions.name || "effectWrapper",
158
- };
159
- }
160
- else {
161
- // Default scale to use in post process vertex shader.
162
- uniformNames.push("scale");
163
- shaderPath = {
164
- fragmentSource: creationOptions.fragmentShader,
165
- vertex: "postprocess",
166
- spectorName: creationOptions.name || "effectWrapper",
167
- };
168
- // Sets the default scale to identity for the post process vertex shader.
169
- this.onApplyObservable.add(() => {
170
- this.effect.setFloat2("scale", 1, 1);
171
- });
172
- }
173
- const defines = creationOptions.defines ? creationOptions.defines.join("\n") : "";
174
- this._drawWrapper = new DrawWrapper(creationOptions.engine);
175
- if (creationOptions.useShaderStore) {
176
- shaderPath.fragment = shaderPath.fragmentSource;
177
- if (!shaderPath.vertex) {
178
- shaderPath.vertex = shaderPath.vertexSource;
179
- }
180
- delete shaderPath.fragmentSource;
181
- delete shaderPath.vertexSource;
182
- this.effect = creationOptions.engine.createEffect(shaderPath, creationOptions.attributeNames || ["position"], uniformNames, creationOptions.samplerNames, defines, undefined, creationOptions.onCompiled, undefined, undefined, creationOptions.shaderLanguage, creationOptions.extraInitializationsAsync);
183
- }
184
- else {
185
- this.effect = new Effect(shaderPath, creationOptions.attributeNames || ["position"], uniformNames, creationOptions.samplerNames, creationOptions.engine, defines, undefined, creationOptions.onCompiled, undefined, undefined, undefined, creationOptions.shaderLanguage, creationOptions.extraInitializationsAsync);
186
- this._onContextRestoredObserver = creationOptions.engine.onContextRestoredObservable.add(() => {
187
- this.effect._pipelineContext = null; // because _prepareEffect will try to dispose this pipeline before recreating it and that would lead to webgl errors
188
- this.effect._prepareEffect();
189
- });
190
- }
191
- }
192
- /**
193
- * Disposes of the effect wrapper
194
- * @param _ignored kept for backward compatibility
195
- */
196
- dispose(_ignored = false) {
197
- if (this._onContextRestoredObserver) {
198
- this.effect.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver);
199
- this._onContextRestoredObserver = null;
200
- }
201
- this.effect.dispose();
202
- }
203
- }
204
-
205
- let _dumpToolsEngine;
206
- let _enginePromise = null;
207
- async function _CreateDumpRenderer() {
208
- if (!_enginePromise) {
209
- _enginePromise = new Promise((resolve, reject) => {
210
- let canvas;
211
- let engine = null;
212
- const options = {
213
- preserveDrawingBuffer: true,
214
- depth: false,
215
- stencil: false,
216
- alpha: true,
217
- premultipliedAlpha: false,
218
- antialias: false,
219
- failIfMajorPerformanceCaveat: false,
220
- };
221
- import('./thinEngine-0P3L0z6G.esm.js').then(function (n) { return n.t; })
222
- .then(({ ThinEngine: thinEngineClass }) => {
223
- try {
224
- canvas = new OffscreenCanvas(100, 100); // will be resized later
225
- engine = new thinEngineClass(canvas, false, options);
226
- }
227
- catch (e) {
228
- // The browser either does not support OffscreenCanvas or WebGL context in OffscreenCanvas, fallback on a regular canvas
229
- canvas = document.createElement("canvas");
230
- engine = new thinEngineClass(canvas, false, options);
231
- }
232
- // remove this engine from the list of instances to avoid using it for other purposes
233
- EngineStore.Instances.pop();
234
- // However, make sure to dispose it when no other engines are left
235
- EngineStore.OnEnginesDisposedObservable.add((e) => {
236
- // guaranteed to run when no other instances are left
237
- // only dispose if it's not the current engine
238
- if (engine && e !== engine && !engine.isDisposed && EngineStore.Instances.length === 0) {
239
- // Dump the engine and the associated resources
240
- Dispose();
241
- }
242
- });
243
- engine.getCaps().parallelShaderCompile = undefined;
244
- const renderer = new EffectRenderer(engine);
245
- import('./pass.fragment-Cf3scVhm.esm.js').then(({ passPixelShader }) => {
246
- if (!engine) {
247
- reject("Engine is not defined");
248
- return;
249
- }
250
- const wrapper = new EffectWrapper({
251
- engine,
252
- name: passPixelShader.name,
253
- fragmentShader: passPixelShader.shader,
254
- samplerNames: ["textureSampler"],
255
- });
256
- _dumpToolsEngine = {
257
- canvas,
258
- engine,
259
- renderer,
260
- wrapper,
261
- };
262
- resolve(_dumpToolsEngine);
263
- });
264
- })
265
- .catch(reject);
266
- });
267
- }
268
- return await _enginePromise;
269
- }
270
- /**
271
- * Dumps the current bound framebuffer
272
- * @param width defines the rendering width
273
- * @param height defines the rendering height
274
- * @param engine defines the hosting engine
275
- * @param successCallback defines the callback triggered once the data are available
276
- * @param mimeType defines the mime type of the result
277
- * @param fileName defines the filename to download. If present, the result will automatically be downloaded
278
- * @param quality The quality of the image if lossy mimeType is used (e.g. image/jpeg, image/webp). See {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob | HTMLCanvasElement.toBlob()}'s `quality` parameter.
279
- * @returns a void promise
280
- */
281
- async function DumpFramebuffer(width, height, engine, successCallback, mimeType = "image/png", fileName, quality) {
282
- // Read the contents of the framebuffer
283
- const bufferView = await engine.readPixels(0, 0, width, height);
284
- const data = new Uint8Array(bufferView.buffer);
285
- DumpData(width, height, data, successCallback, mimeType, fileName, true, undefined, quality);
286
- }
287
- /**
288
- * Dumps an array buffer
289
- * @param width defines the rendering width
290
- * @param height defines the rendering height
291
- * @param data the data array
292
- * @param mimeType defines the mime type of the result
293
- * @param fileName defines the filename to download. If present, the result will automatically be downloaded
294
- * @param invertY true to invert the picture in the Y dimension
295
- * @param toArrayBuffer true to convert the data to an ArrayBuffer (encoded as `mimeType`) instead of a base64 string
296
- * @param quality The quality of the image if lossy mimeType is used (e.g. image/jpeg, image/webp). See {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob | HTMLCanvasElement.toBlob()}'s `quality` parameter.
297
- * @returns a promise that resolve to the final data
298
- */
299
- function DumpDataAsync(width, height, data, mimeType = "image/png", fileName, invertY = false, toArrayBuffer = false, quality) {
300
- return new Promise((resolve) => {
301
- DumpData(width, height, data, (result) => resolve(result), mimeType, fileName, invertY, toArrayBuffer, quality);
302
- });
303
- }
304
- /**
305
- * Dumps an array buffer
306
- * @param width defines the rendering width
307
- * @param height defines the rendering height
308
- * @param data the data array
309
- * @param successCallback defines the callback triggered once the data are available
310
- * @param mimeType defines the mime type of the result
311
- * @param fileName defines the filename to download. If present, the result will automatically be downloaded
312
- * @param invertY true to invert the picture in the Y dimension
313
- * @param toArrayBuffer true to convert the data to an ArrayBuffer (encoded as `mimeType`) instead of a base64 string
314
- * @param quality The quality of the image if lossy mimeType is used (e.g. image/jpeg, image/webp). See {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob | HTMLCanvasElement.toBlob()}'s `quality` parameter.
315
- */
316
- function DumpData(width, height, data, successCallback, mimeType = "image/png", fileName, invertY = false, toArrayBuffer = false, quality) {
317
- _CreateDumpRenderer().then((renderer) => {
318
- renderer.engine.setSize(width, height, true);
319
- // Convert if data are float32
320
- if (data instanceof Float32Array) {
321
- const data2 = new Uint8Array(data.length);
322
- let n = data.length;
323
- while (n--) {
324
- const v = data[n];
325
- data2[n] = Math.round(Clamp(v) * 255);
326
- }
327
- data = data2;
328
- }
329
- // Create the image
330
- const texture = renderer.engine.createRawTexture(data, width, height, Constants.TEXTUREFORMAT_RGBA, false, !invertY, Constants.TEXTURE_NEAREST_NEAREST);
331
- renderer.renderer.setViewport();
332
- renderer.renderer.applyEffectWrapper(renderer.wrapper);
333
- renderer.wrapper.effect._bindTexture("textureSampler", texture);
334
- renderer.renderer.draw();
335
- if (toArrayBuffer) {
336
- Tools.ToBlob(renderer.canvas, (blob) => {
337
- const fileReader = new FileReader();
338
- fileReader.onload = (event) => {
339
- const arrayBuffer = event.target.result;
340
- if (successCallback) {
341
- successCallback(arrayBuffer);
342
- }
343
- };
344
- fileReader.readAsArrayBuffer(blob);
345
- }, mimeType, quality);
346
- }
347
- else {
348
- Tools.EncodeScreenshotCanvasData(renderer.canvas, successCallback, mimeType, fileName, quality);
349
- }
350
- texture.dispose();
351
- });
352
- }
353
- /**
354
- * Dispose the dump tools associated resources
355
- */
356
- function Dispose() {
357
- if (_dumpToolsEngine) {
358
- _dumpToolsEngine.wrapper.dispose();
359
- _dumpToolsEngine.renderer.dispose();
360
- _dumpToolsEngine.engine.dispose();
361
- }
362
- else {
363
- // in cases where the engine is not yet created, we need to wait for it to dispose it
364
- _enginePromise?.then((dumpToolsEngine) => {
365
- dumpToolsEngine.wrapper.dispose();
366
- dumpToolsEngine.renderer.dispose();
367
- dumpToolsEngine.engine.dispose();
368
- });
369
- }
370
- _dumpToolsEngine = null;
371
- }
372
- /**
373
- * Object containing a set of static utilities functions to dump data from a canvas
374
- * @deprecated use functions
375
- */
376
- const DumpTools = {
377
- // eslint-disable-next-line @typescript-eslint/naming-convention
378
- DumpData,
379
- // eslint-disable-next-line @typescript-eslint/naming-convention
380
- DumpDataAsync,
381
- // eslint-disable-next-line @typescript-eslint/naming-convention
382
- DumpFramebuffer,
383
- // eslint-disable-next-line @typescript-eslint/naming-convention
384
- Dispose,
385
- };
386
- /**
387
- * This will be executed automatically for UMD and es5.
388
- * If esm dev wants the side effects to execute they will have to run it manually
389
- * Once we build native modules those need to be exported.
390
- * @internal
391
- */
392
- const initSideEffects = () => {
393
- // References the dependencies.
394
- Tools.DumpData = DumpData;
395
- Tools.DumpDataAsync = DumpDataAsync;
396
- Tools.DumpFramebuffer = DumpFramebuffer;
397
- };
398
- initSideEffects();
399
-
400
- export { Dispose, DumpData, DumpDataAsync, DumpFramebuffer, DumpTools };
401
- //# sourceMappingURL=dumpTools-8Kbuuv_t.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dumpTools-8Kbuuv_t.esm.js","sources":["../../../../../dev/core/dist/Materials/effectRenderer.js","../../../../../dev/core/dist/Misc/dumpTools.js"],"sourcesContent":["import { VertexBuffer } from \"../Buffers/buffer\";\nimport { Viewport } from \"../Maths/math.viewport\";\nimport { Constants } from \"../Engines/constants\";\nimport { Observable } from \"../Misc/observable\";\nimport { Effect } from \"./effect\";\nimport { DrawWrapper } from \"./drawWrapper\";\n// Prevents ES6 issue if not imported.\nimport \"../Shaders/postprocess.vertex\";\n// Fullscreen quad buffers by default.\nconst defaultOptions = {\n positions: [1, 1, -1, 1, -1, -1, 1, -1],\n indices: [0, 1, 2, 0, 2, 3],\n};\n/**\n * Helper class to render one or more effects.\n * You can access the previous rendering in your shader by declaring a sampler named textureSampler\n */\nexport class EffectRenderer {\n /**\n * Creates an effect renderer\n * @param engine the engine to use for rendering\n * @param options defines the options of the effect renderer\n */\n constructor(engine, options = defaultOptions) {\n this._fullscreenViewport = new Viewport(0, 0, 1, 1);\n const positions = options.positions ?? defaultOptions.positions;\n const indices = options.indices ?? defaultOptions.indices;\n this.engine = engine;\n this._vertexBuffers = {\n [VertexBuffer.PositionKind]: new VertexBuffer(engine, positions, VertexBuffer.PositionKind, false, false, 2),\n };\n this._indexBuffer = engine.createIndexBuffer(indices);\n this._onContextRestoredObserver = engine.onContextRestoredObservable.add(() => {\n this._indexBuffer = engine.createIndexBuffer(indices);\n for (const key in this._vertexBuffers) {\n const vertexBuffer = this._vertexBuffers[key];\n vertexBuffer._rebuild();\n }\n });\n }\n /**\n * Sets the current viewport in normalized coordinates 0-1\n * @param viewport Defines the viewport to set (defaults to 0 0 1 1)\n */\n setViewport(viewport = this._fullscreenViewport) {\n this.engine.setViewport(viewport);\n }\n /**\n * Binds the embedded attributes buffer to the effect.\n * @param effect Defines the effect to bind the attributes for\n */\n bindBuffers(effect) {\n this.engine.bindBuffers(this._vertexBuffers, this._indexBuffer, effect);\n }\n /**\n * Sets the current effect wrapper to use during draw.\n * The effect needs to be ready before calling this api.\n * This also sets the default full screen position attribute.\n * @param effectWrapper Defines the effect to draw with\n */\n applyEffectWrapper(effectWrapper) {\n this.engine.setState(true);\n this.engine.depthCullingState.depthTest = false;\n this.engine.stencilState.stencilTest = false;\n this.engine.enableEffect(effectWrapper._drawWrapper);\n this.bindBuffers(effectWrapper.effect);\n effectWrapper.onApplyObservable.notifyObservers({});\n }\n /**\n * Saves engine states\n */\n saveStates() {\n this._savedStateDepthTest = this.engine.depthCullingState.depthTest;\n this._savedStateStencilTest = this.engine.stencilState.stencilTest;\n }\n /**\n * Restores engine states\n */\n restoreStates() {\n this.engine.depthCullingState.depthTest = this._savedStateDepthTest;\n this.engine.stencilState.stencilTest = this._savedStateStencilTest;\n }\n /**\n * Draws a full screen quad.\n */\n draw() {\n this.engine.drawElementsType(Constants.MATERIAL_TriangleFillMode, 0, 6);\n }\n _isRenderTargetTexture(texture) {\n return texture.renderTarget !== undefined;\n }\n /**\n * renders one or more effects to a specified texture\n * @param effectWrapper the effect to renderer\n * @param outputTexture texture to draw to, if null it will render to the screen.\n */\n render(effectWrapper, outputTexture = null) {\n // Ensure effect is ready\n if (!effectWrapper.effect.isReady()) {\n return;\n }\n this.saveStates();\n // Reset state\n this.setViewport();\n const out = outputTexture === null ? null : this._isRenderTargetTexture(outputTexture) ? outputTexture.renderTarget : outputTexture;\n if (out) {\n this.engine.bindFramebuffer(out);\n }\n this.applyEffectWrapper(effectWrapper);\n this.draw();\n if (out) {\n this.engine.unBindFramebuffer(out);\n }\n this.restoreStates();\n }\n /**\n * Disposes of the effect renderer\n */\n dispose() {\n const vertexBuffer = this._vertexBuffers[VertexBuffer.PositionKind];\n if (vertexBuffer) {\n vertexBuffer.dispose();\n delete this._vertexBuffers[VertexBuffer.PositionKind];\n }\n if (this._indexBuffer) {\n this.engine._releaseBuffer(this._indexBuffer);\n }\n if (this._onContextRestoredObserver) {\n this.engine.onContextRestoredObservable.remove(this._onContextRestoredObserver);\n this._onContextRestoredObserver = null;\n }\n }\n}\n/**\n * Wraps an effect to be used for rendering\n */\nexport class EffectWrapper {\n /**\n * The underlying effect\n */\n get effect() {\n return this._drawWrapper.effect;\n }\n set effect(effect) {\n this._drawWrapper.effect = effect;\n }\n /**\n * Creates an effect to be renderer\n * @param creationOptions options to create the effect\n */\n constructor(creationOptions) {\n /**\n * Event that is fired right before the effect is drawn (should be used to update uniforms)\n */\n this.onApplyObservable = new Observable();\n let shaderPath;\n const uniformNames = creationOptions.uniformNames || [];\n if (creationOptions.vertexShader) {\n shaderPath = {\n fragmentSource: creationOptions.fragmentShader,\n vertexSource: creationOptions.vertexShader,\n spectorName: creationOptions.name || \"effectWrapper\",\n };\n }\n else {\n // Default scale to use in post process vertex shader.\n uniformNames.push(\"scale\");\n shaderPath = {\n fragmentSource: creationOptions.fragmentShader,\n vertex: \"postprocess\",\n spectorName: creationOptions.name || \"effectWrapper\",\n };\n // Sets the default scale to identity for the post process vertex shader.\n this.onApplyObservable.add(() => {\n this.effect.setFloat2(\"scale\", 1, 1);\n });\n }\n const defines = creationOptions.defines ? creationOptions.defines.join(\"\\n\") : \"\";\n this._drawWrapper = new DrawWrapper(creationOptions.engine);\n if (creationOptions.useShaderStore) {\n shaderPath.fragment = shaderPath.fragmentSource;\n if (!shaderPath.vertex) {\n shaderPath.vertex = shaderPath.vertexSource;\n }\n delete shaderPath.fragmentSource;\n delete shaderPath.vertexSource;\n this.effect = creationOptions.engine.createEffect(shaderPath, creationOptions.attributeNames || [\"position\"], uniformNames, creationOptions.samplerNames, defines, undefined, creationOptions.onCompiled, undefined, undefined, creationOptions.shaderLanguage, creationOptions.extraInitializationsAsync);\n }\n else {\n this.effect = new Effect(shaderPath, creationOptions.attributeNames || [\"position\"], uniformNames, creationOptions.samplerNames, creationOptions.engine, defines, undefined, creationOptions.onCompiled, undefined, undefined, undefined, creationOptions.shaderLanguage, creationOptions.extraInitializationsAsync);\n this._onContextRestoredObserver = creationOptions.engine.onContextRestoredObservable.add(() => {\n this.effect._pipelineContext = null; // because _prepareEffect will try to dispose this pipeline before recreating it and that would lead to webgl errors\n this.effect._prepareEffect();\n });\n }\n }\n /**\n * Disposes of the effect wrapper\n * @param _ignored kept for backward compatibility\n */\n dispose(_ignored = false) {\n if (this._onContextRestoredObserver) {\n this.effect.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver);\n this._onContextRestoredObserver = null;\n }\n this.effect.dispose();\n }\n}\n//# sourceMappingURL=effectRenderer.js.map","import { Constants } from \"../Engines/constants\";\nimport { EffectRenderer, EffectWrapper } from \"../Materials/effectRenderer\";\nimport { Tools } from \"./tools\";\nimport { Clamp } from \"../Maths/math.scalar.functions\";\nimport { EngineStore } from \"../Engines/engineStore\";\nlet _dumpToolsEngine;\nlet _enginePromise = null;\nasync function _CreateDumpRenderer() {\n if (!_enginePromise) {\n _enginePromise = new Promise((resolve, reject) => {\n let canvas;\n let engine = null;\n const options = {\n preserveDrawingBuffer: true,\n depth: false,\n stencil: false,\n alpha: true,\n premultipliedAlpha: false,\n antialias: false,\n failIfMajorPerformanceCaveat: false,\n };\n import(\"../Engines/thinEngine\")\n .then(({ ThinEngine: thinEngineClass }) => {\n try {\n canvas = new OffscreenCanvas(100, 100); // will be resized later\n engine = new thinEngineClass(canvas, false, options);\n }\n catch (e) {\n // The browser either does not support OffscreenCanvas or WebGL context in OffscreenCanvas, fallback on a regular canvas\n canvas = document.createElement(\"canvas\");\n engine = new thinEngineClass(canvas, false, options);\n }\n // remove this engine from the list of instances to avoid using it for other purposes\n EngineStore.Instances.pop();\n // However, make sure to dispose it when no other engines are left\n EngineStore.OnEnginesDisposedObservable.add((e) => {\n // guaranteed to run when no other instances are left\n // only dispose if it's not the current engine\n if (engine && e !== engine && !engine.isDisposed && EngineStore.Instances.length === 0) {\n // Dump the engine and the associated resources\n Dispose();\n }\n });\n engine.getCaps().parallelShaderCompile = undefined;\n const renderer = new EffectRenderer(engine);\n import(\"../Shaders/pass.fragment\").then(({ passPixelShader }) => {\n if (!engine) {\n reject(\"Engine is not defined\");\n return;\n }\n const wrapper = new EffectWrapper({\n engine,\n name: passPixelShader.name,\n fragmentShader: passPixelShader.shader,\n samplerNames: [\"textureSampler\"],\n });\n _dumpToolsEngine = {\n canvas,\n engine,\n renderer,\n wrapper,\n };\n resolve(_dumpToolsEngine);\n });\n })\n .catch(reject);\n });\n }\n return await _enginePromise;\n}\n/**\n * Dumps the current bound framebuffer\n * @param width defines the rendering width\n * @param height defines the rendering height\n * @param engine defines the hosting engine\n * @param successCallback defines the callback triggered once the data are available\n * @param mimeType defines the mime type of the result\n * @param fileName defines the filename to download. If present, the result will automatically be downloaded\n * @param quality The quality of the image if lossy mimeType is used (e.g. image/jpeg, image/webp). See {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob | HTMLCanvasElement.toBlob()}'s `quality` parameter.\n * @returns a void promise\n */\nexport async function DumpFramebuffer(width, height, engine, successCallback, mimeType = \"image/png\", fileName, quality) {\n // Read the contents of the framebuffer\n const bufferView = await engine.readPixels(0, 0, width, height);\n const data = new Uint8Array(bufferView.buffer);\n DumpData(width, height, data, successCallback, mimeType, fileName, true, undefined, quality);\n}\n/**\n * Dumps an array buffer\n * @param width defines the rendering width\n * @param height defines the rendering height\n * @param data the data array\n * @param mimeType defines the mime type of the result\n * @param fileName defines the filename to download. If present, the result will automatically be downloaded\n * @param invertY true to invert the picture in the Y dimension\n * @param toArrayBuffer true to convert the data to an ArrayBuffer (encoded as `mimeType`) instead of a base64 string\n * @param quality The quality of the image if lossy mimeType is used (e.g. image/jpeg, image/webp). See {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob | HTMLCanvasElement.toBlob()}'s `quality` parameter.\n * @returns a promise that resolve to the final data\n */\nexport function DumpDataAsync(width, height, data, mimeType = \"image/png\", fileName, invertY = false, toArrayBuffer = false, quality) {\n return new Promise((resolve) => {\n DumpData(width, height, data, (result) => resolve(result), mimeType, fileName, invertY, toArrayBuffer, quality);\n });\n}\n/**\n * Dumps an array buffer\n * @param width defines the rendering width\n * @param height defines the rendering height\n * @param data the data array\n * @param successCallback defines the callback triggered once the data are available\n * @param mimeType defines the mime type of the result\n * @param fileName defines the filename to download. If present, the result will automatically be downloaded\n * @param invertY true to invert the picture in the Y dimension\n * @param toArrayBuffer true to convert the data to an ArrayBuffer (encoded as `mimeType`) instead of a base64 string\n * @param quality The quality of the image if lossy mimeType is used (e.g. image/jpeg, image/webp). See {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob | HTMLCanvasElement.toBlob()}'s `quality` parameter.\n */\nexport function DumpData(width, height, data, successCallback, mimeType = \"image/png\", fileName, invertY = false, toArrayBuffer = false, quality) {\n _CreateDumpRenderer().then((renderer) => {\n renderer.engine.setSize(width, height, true);\n // Convert if data are float32\n if (data instanceof Float32Array) {\n const data2 = new Uint8Array(data.length);\n let n = data.length;\n while (n--) {\n const v = data[n];\n data2[n] = Math.round(Clamp(v) * 255);\n }\n data = data2;\n }\n // Create the image\n const texture = renderer.engine.createRawTexture(data, width, height, Constants.TEXTUREFORMAT_RGBA, false, !invertY, Constants.TEXTURE_NEAREST_NEAREST);\n renderer.renderer.setViewport();\n renderer.renderer.applyEffectWrapper(renderer.wrapper);\n renderer.wrapper.effect._bindTexture(\"textureSampler\", texture);\n renderer.renderer.draw();\n if (toArrayBuffer) {\n Tools.ToBlob(renderer.canvas, (blob) => {\n const fileReader = new FileReader();\n fileReader.onload = (event) => {\n const arrayBuffer = event.target.result;\n if (successCallback) {\n successCallback(arrayBuffer);\n }\n };\n fileReader.readAsArrayBuffer(blob);\n }, mimeType, quality);\n }\n else {\n Tools.EncodeScreenshotCanvasData(renderer.canvas, successCallback, mimeType, fileName, quality);\n }\n texture.dispose();\n });\n}\n/**\n * Dispose the dump tools associated resources\n */\nexport function Dispose() {\n if (_dumpToolsEngine) {\n _dumpToolsEngine.wrapper.dispose();\n _dumpToolsEngine.renderer.dispose();\n _dumpToolsEngine.engine.dispose();\n }\n else {\n // in cases where the engine is not yet created, we need to wait for it to dispose it\n _enginePromise?.then((dumpToolsEngine) => {\n dumpToolsEngine.wrapper.dispose();\n dumpToolsEngine.renderer.dispose();\n dumpToolsEngine.engine.dispose();\n });\n }\n _dumpToolsEngine = null;\n}\n/**\n * Object containing a set of static utilities functions to dump data from a canvas\n * @deprecated use functions\n */\nexport const DumpTools = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n DumpData,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n DumpDataAsync,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n DumpFramebuffer,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n Dispose,\n};\n/**\n * This will be executed automatically for UMD and es5.\n * If esm dev wants the side effects to execute they will have to run it manually\n * Once we build native modules those need to be exported.\n * @internal\n */\nconst initSideEffects = () => {\n // References the dependencies.\n Tools.DumpData = DumpData;\n Tools.DumpDataAsync = DumpDataAsync;\n Tools.DumpFramebuffer = DumpFramebuffer;\n};\ninitSideEffects();\n//# sourceMappingURL=dumpTools.js.map"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{bq as e,V as t,C as n,aK as s,br as r,l as i,b4 as a,T as o,E as d}from"./index-BC5LF5i9.esm.min.js";import"./postprocess.vertex-Bnmi3e9K.esm.min.js";const f={positions:[1,1,-1,1,-1,-1,1,-1],indices:[0,1,2,0,2,3]};class p{constructor(n,s=f){this._fullscreenViewport=new e(0,0,1,1);const r=s.positions??f.positions,i=s.indices??f.indices;this.engine=n,this._vertexBuffers={[t.PositionKind]:new t(n,r,t.PositionKind,!1,!1,2)},this._indexBuffer=n.createIndexBuffer(i),this._onContextRestoredObserver=n.onContextRestoredObservable.add((()=>{this._indexBuffer=n.createIndexBuffer(i);for(const e in this._vertexBuffers){this._vertexBuffers[e]._rebuild()}}))}setViewport(e=this._fullscreenViewport){this.engine.setViewport(e)}bindBuffers(e){this.engine.bindBuffers(this._vertexBuffers,this._indexBuffer,e)}applyEffectWrapper(e){this.engine.setState(!0),this.engine.depthCullingState.depthTest=!1,this.engine.stencilState.stencilTest=!1,this.engine.enableEffect(e._drawWrapper),this.bindBuffers(e.effect),e.onApplyObservable.notifyObservers({})}saveStates(){this._savedStateDepthTest=this.engine.depthCullingState.depthTest,this._savedStateStencilTest=this.engine.stencilState.stencilTest}restoreStates(){this.engine.depthCullingState.depthTest=this._savedStateDepthTest,this.engine.stencilState.stencilTest=this._savedStateStencilTest}draw(){this.engine.drawElementsType(n.MATERIAL_TriangleFillMode,0,6)}_isRenderTargetTexture(e){return void 0!==e.renderTarget}render(e,t=null){if(!e.effect.isReady())return;this.saveStates(),this.setViewport();const n=null===t?null:this._isRenderTargetTexture(t)?t.renderTarget:t;n&&this.engine.bindFramebuffer(n),this.applyEffectWrapper(e),this.draw(),n&&this.engine.unBindFramebuffer(n),this.restoreStates()}dispose(){const e=this._vertexBuffers[t.PositionKind];e&&(e.dispose(),delete this._vertexBuffers[t.PositionKind]),this._indexBuffer&&this.engine._releaseBuffer(this._indexBuffer),this._onContextRestoredObserver&&(this.engine.onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null)}}class c{get effect(){return this._drawWrapper.effect}set effect(e){this._drawWrapper.effect=e}constructor(e){let t;this.onApplyObservable=new s;const n=e.uniformNames||[];e.vertexShader?t={fragmentSource:e.fragmentShader,vertexSource:e.vertexShader,spectorName:e.name||"effectWrapper"}:(n.push("scale"),t={fragmentSource:e.fragmentShader,vertex:"postprocess",spectorName:e.name||"effectWrapper"},this.onApplyObservable.add((()=>{this.effect.setFloat2("scale",1,1)})));const a=e.defines?e.defines.join("\n"):"";this._drawWrapper=new r(e.engine),e.useShaderStore?(t.fragment=t.fragmentSource,t.vertex||(t.vertex=t.vertexSource),delete t.fragmentSource,delete t.vertexSource,this.effect=e.engine.createEffect(t,e.attributeNames||["position"],n,e.samplerNames,a,void 0,e.onCompiled,void 0,void 0,e.shaderLanguage,e.extraInitializationsAsync)):(this.effect=new i(t,e.attributeNames||["position"],n,e.samplerNames,e.engine,a,void 0,e.onCompiled,void 0,void 0,void 0,e.shaderLanguage,e.extraInitializationsAsync),this._onContextRestoredObserver=e.engine.onContextRestoredObservable.add((()=>{this.effect._pipelineContext=null,this.effect._prepareEffect()})))}dispose(e=!1){this._onContextRestoredObserver&&(this.effect.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null),this.effect.dispose()}}let l,h=null;async function u(e,t,n,s,r="image/png",i,a){const o=await n.readPixels(0,0,e,t);m(e,t,new Uint8Array(o.buffer),s,r,i,!0,void 0,a)}function g(e,t,n,s="image/png",r,i=!1,a=!1,o){return new Promise((d=>{m(e,t,n,(e=>d(e)),s,r,i,a,o)}))}function m(e,t,s,r,i="image/png",f,u=!1,g=!1,m){(async function(){return h||(h=new Promise(((e,t)=>{let n,s=null;const r={preserveDrawingBuffer:!0,depth:!1,stencil:!1,alpha:!0,premultipliedAlpha:!1,antialias:!1,failIfMajorPerformanceCaveat:!1};import("./thinEngine-krcyvyno.esm.min.js").then((function(e){return e.t})).then((({ThinEngine:i})=>{try{n=new OffscreenCanvas(100,100),s=new i(n,!1,r)}catch(e){n=document.createElement("canvas"),s=new i(n,!1,r)}d.Instances.pop(),d.OnEnginesDisposedObservable.add((e=>{s&&e!==s&&!s.isDisposed&&0===d.Instances.length&&v()})),s.getCaps().parallelShaderCompile=void 0;const a=new p(s);import("./pass.fragment-6gActEq9.esm.min.js").then((({passPixelShader:r})=>{if(!s)return void t("Engine is not defined");const i=new c({engine:s,name:r.name,fragmentShader:r.shader,samplerNames:["textureSampler"]});l={canvas:n,engine:s,renderer:a,wrapper:i},e(l)}))})).catch(t)}))),await h})().then((d=>{if(d.engine.setSize(e,t,!0),s instanceof Float32Array){const e=new Uint8Array(s.length);let t=s.length;for(;t--;){const n=s[t];e[t]=Math.round(255*a(n))}s=e}const p=d.engine.createRawTexture(s,e,t,n.TEXTUREFORMAT_RGBA,!1,!u,n.TEXTURE_NEAREST_NEAREST);d.renderer.setViewport(),d.renderer.applyEffectWrapper(d.wrapper),d.wrapper.effect._bindTexture("textureSampler",p),d.renderer.draw(),g?o.ToBlob(d.canvas,(e=>{const t=new FileReader;t.onload=e=>{const t=e.target.result;r&&r(t)},t.readAsArrayBuffer(e)}),i,m):o.EncodeScreenshotCanvasData(d.canvas,r,i,f,m),p.dispose()}))}function v(){l?(l.wrapper.dispose(),l.renderer.dispose(),l.engine.dispose()):h?.then((e=>{e.wrapper.dispose(),e.renderer.dispose(),e.engine.dispose()})),l=null}const x={DumpData:m,DumpDataAsync:g,DumpFramebuffer:u,Dispose:v};o.DumpData=m,o.DumpDataAsync=g,o.DumpFramebuffer=u;export{v as Dispose,m as DumpData,g as DumpDataAsync,u as DumpFramebuffer,x as DumpTools};
2
- //# sourceMappingURL=dumpTools-BQULMnHn.esm.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dumpTools-BQULMnHn.esm.min.js","sources":["../../../../../dev/core/dist/Materials/effectRenderer.js","../../../../../dev/core/dist/Misc/dumpTools.js"],"sourcesContent":["import { VertexBuffer } from \"../Buffers/buffer\";\nimport { Viewport } from \"../Maths/math.viewport\";\nimport { Constants } from \"../Engines/constants\";\nimport { Observable } from \"../Misc/observable\";\nimport { Effect } from \"./effect\";\nimport { DrawWrapper } from \"./drawWrapper\";\n// Prevents ES6 issue if not imported.\nimport \"../Shaders/postprocess.vertex\";\n// Fullscreen quad buffers by default.\nconst defaultOptions = {\n positions: [1, 1, -1, 1, -1, -1, 1, -1],\n indices: [0, 1, 2, 0, 2, 3],\n};\n/**\n * Helper class to render one or more effects.\n * You can access the previous rendering in your shader by declaring a sampler named textureSampler\n */\nexport class EffectRenderer {\n /**\n * Creates an effect renderer\n * @param engine the engine to use for rendering\n * @param options defines the options of the effect renderer\n */\n constructor(engine, options = defaultOptions) {\n this._fullscreenViewport = new Viewport(0, 0, 1, 1);\n const positions = options.positions ?? defaultOptions.positions;\n const indices = options.indices ?? defaultOptions.indices;\n this.engine = engine;\n this._vertexBuffers = {\n [VertexBuffer.PositionKind]: new VertexBuffer(engine, positions, VertexBuffer.PositionKind, false, false, 2),\n };\n this._indexBuffer = engine.createIndexBuffer(indices);\n this._onContextRestoredObserver = engine.onContextRestoredObservable.add(() => {\n this._indexBuffer = engine.createIndexBuffer(indices);\n for (const key in this._vertexBuffers) {\n const vertexBuffer = this._vertexBuffers[key];\n vertexBuffer._rebuild();\n }\n });\n }\n /**\n * Sets the current viewport in normalized coordinates 0-1\n * @param viewport Defines the viewport to set (defaults to 0 0 1 1)\n */\n setViewport(viewport = this._fullscreenViewport) {\n this.engine.setViewport(viewport);\n }\n /**\n * Binds the embedded attributes buffer to the effect.\n * @param effect Defines the effect to bind the attributes for\n */\n bindBuffers(effect) {\n this.engine.bindBuffers(this._vertexBuffers, this._indexBuffer, effect);\n }\n /**\n * Sets the current effect wrapper to use during draw.\n * The effect needs to be ready before calling this api.\n * This also sets the default full screen position attribute.\n * @param effectWrapper Defines the effect to draw with\n */\n applyEffectWrapper(effectWrapper) {\n this.engine.setState(true);\n this.engine.depthCullingState.depthTest = false;\n this.engine.stencilState.stencilTest = false;\n this.engine.enableEffect(effectWrapper._drawWrapper);\n this.bindBuffers(effectWrapper.effect);\n effectWrapper.onApplyObservable.notifyObservers({});\n }\n /**\n * Saves engine states\n */\n saveStates() {\n this._savedStateDepthTest = this.engine.depthCullingState.depthTest;\n this._savedStateStencilTest = this.engine.stencilState.stencilTest;\n }\n /**\n * Restores engine states\n */\n restoreStates() {\n this.engine.depthCullingState.depthTest = this._savedStateDepthTest;\n this.engine.stencilState.stencilTest = this._savedStateStencilTest;\n }\n /**\n * Draws a full screen quad.\n */\n draw() {\n this.engine.drawElementsType(Constants.MATERIAL_TriangleFillMode, 0, 6);\n }\n _isRenderTargetTexture(texture) {\n return texture.renderTarget !== undefined;\n }\n /**\n * renders one or more effects to a specified texture\n * @param effectWrapper the effect to renderer\n * @param outputTexture texture to draw to, if null it will render to the screen.\n */\n render(effectWrapper, outputTexture = null) {\n // Ensure effect is ready\n if (!effectWrapper.effect.isReady()) {\n return;\n }\n this.saveStates();\n // Reset state\n this.setViewport();\n const out = outputTexture === null ? null : this._isRenderTargetTexture(outputTexture) ? outputTexture.renderTarget : outputTexture;\n if (out) {\n this.engine.bindFramebuffer(out);\n }\n this.applyEffectWrapper(effectWrapper);\n this.draw();\n if (out) {\n this.engine.unBindFramebuffer(out);\n }\n this.restoreStates();\n }\n /**\n * Disposes of the effect renderer\n */\n dispose() {\n const vertexBuffer = this._vertexBuffers[VertexBuffer.PositionKind];\n if (vertexBuffer) {\n vertexBuffer.dispose();\n delete this._vertexBuffers[VertexBuffer.PositionKind];\n }\n if (this._indexBuffer) {\n this.engine._releaseBuffer(this._indexBuffer);\n }\n if (this._onContextRestoredObserver) {\n this.engine.onContextRestoredObservable.remove(this._onContextRestoredObserver);\n this._onContextRestoredObserver = null;\n }\n }\n}\n/**\n * Wraps an effect to be used for rendering\n */\nexport class EffectWrapper {\n /**\n * The underlying effect\n */\n get effect() {\n return this._drawWrapper.effect;\n }\n set effect(effect) {\n this._drawWrapper.effect = effect;\n }\n /**\n * Creates an effect to be renderer\n * @param creationOptions options to create the effect\n */\n constructor(creationOptions) {\n /**\n * Event that is fired right before the effect is drawn (should be used to update uniforms)\n */\n this.onApplyObservable = new Observable();\n let shaderPath;\n const uniformNames = creationOptions.uniformNames || [];\n if (creationOptions.vertexShader) {\n shaderPath = {\n fragmentSource: creationOptions.fragmentShader,\n vertexSource: creationOptions.vertexShader,\n spectorName: creationOptions.name || \"effectWrapper\",\n };\n }\n else {\n // Default scale to use in post process vertex shader.\n uniformNames.push(\"scale\");\n shaderPath = {\n fragmentSource: creationOptions.fragmentShader,\n vertex: \"postprocess\",\n spectorName: creationOptions.name || \"effectWrapper\",\n };\n // Sets the default scale to identity for the post process vertex shader.\n this.onApplyObservable.add(() => {\n this.effect.setFloat2(\"scale\", 1, 1);\n });\n }\n const defines = creationOptions.defines ? creationOptions.defines.join(\"\\n\") : \"\";\n this._drawWrapper = new DrawWrapper(creationOptions.engine);\n if (creationOptions.useShaderStore) {\n shaderPath.fragment = shaderPath.fragmentSource;\n if (!shaderPath.vertex) {\n shaderPath.vertex = shaderPath.vertexSource;\n }\n delete shaderPath.fragmentSource;\n delete shaderPath.vertexSource;\n this.effect = creationOptions.engine.createEffect(shaderPath, creationOptions.attributeNames || [\"position\"], uniformNames, creationOptions.samplerNames, defines, undefined, creationOptions.onCompiled, undefined, undefined, creationOptions.shaderLanguage, creationOptions.extraInitializationsAsync);\n }\n else {\n this.effect = new Effect(shaderPath, creationOptions.attributeNames || [\"position\"], uniformNames, creationOptions.samplerNames, creationOptions.engine, defines, undefined, creationOptions.onCompiled, undefined, undefined, undefined, creationOptions.shaderLanguage, creationOptions.extraInitializationsAsync);\n this._onContextRestoredObserver = creationOptions.engine.onContextRestoredObservable.add(() => {\n this.effect._pipelineContext = null; // because _prepareEffect will try to dispose this pipeline before recreating it and that would lead to webgl errors\n this.effect._prepareEffect();\n });\n }\n }\n /**\n * Disposes of the effect wrapper\n * @param _ignored kept for backward compatibility\n */\n dispose(_ignored = false) {\n if (this._onContextRestoredObserver) {\n this.effect.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver);\n this._onContextRestoredObserver = null;\n }\n this.effect.dispose();\n }\n}\n//# sourceMappingURL=effectRenderer.js.map","import { Constants } from \"../Engines/constants\";\nimport { EffectRenderer, EffectWrapper } from \"../Materials/effectRenderer\";\nimport { Tools } from \"./tools\";\nimport { Clamp } from \"../Maths/math.scalar.functions\";\nimport { EngineStore } from \"../Engines/engineStore\";\nlet _dumpToolsEngine;\nlet _enginePromise = null;\nasync function _CreateDumpRenderer() {\n if (!_enginePromise) {\n _enginePromise = new Promise((resolve, reject) => {\n let canvas;\n let engine = null;\n const options = {\n preserveDrawingBuffer: true,\n depth: false,\n stencil: false,\n alpha: true,\n premultipliedAlpha: false,\n antialias: false,\n failIfMajorPerformanceCaveat: false,\n };\n import(\"../Engines/thinEngine\")\n .then(({ ThinEngine: thinEngineClass }) => {\n try {\n canvas = new OffscreenCanvas(100, 100); // will be resized later\n engine = new thinEngineClass(canvas, false, options);\n }\n catch (e) {\n // The browser either does not support OffscreenCanvas or WebGL context in OffscreenCanvas, fallback on a regular canvas\n canvas = document.createElement(\"canvas\");\n engine = new thinEngineClass(canvas, false, options);\n }\n // remove this engine from the list of instances to avoid using it for other purposes\n EngineStore.Instances.pop();\n // However, make sure to dispose it when no other engines are left\n EngineStore.OnEnginesDisposedObservable.add((e) => {\n // guaranteed to run when no other instances are left\n // only dispose if it's not the current engine\n if (engine && e !== engine && !engine.isDisposed && EngineStore.Instances.length === 0) {\n // Dump the engine and the associated resources\n Dispose();\n }\n });\n engine.getCaps().parallelShaderCompile = undefined;\n const renderer = new EffectRenderer(engine);\n import(\"../Shaders/pass.fragment\").then(({ passPixelShader }) => {\n if (!engine) {\n reject(\"Engine is not defined\");\n return;\n }\n const wrapper = new EffectWrapper({\n engine,\n name: passPixelShader.name,\n fragmentShader: passPixelShader.shader,\n samplerNames: [\"textureSampler\"],\n });\n _dumpToolsEngine = {\n canvas,\n engine,\n renderer,\n wrapper,\n };\n resolve(_dumpToolsEngine);\n });\n })\n .catch(reject);\n });\n }\n return await _enginePromise;\n}\n/**\n * Dumps the current bound framebuffer\n * @param width defines the rendering width\n * @param height defines the rendering height\n * @param engine defines the hosting engine\n * @param successCallback defines the callback triggered once the data are available\n * @param mimeType defines the mime type of the result\n * @param fileName defines the filename to download. If present, the result will automatically be downloaded\n * @param quality The quality of the image if lossy mimeType is used (e.g. image/jpeg, image/webp). See {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob | HTMLCanvasElement.toBlob()}'s `quality` parameter.\n * @returns a void promise\n */\nexport async function DumpFramebuffer(width, height, engine, successCallback, mimeType = \"image/png\", fileName, quality) {\n // Read the contents of the framebuffer\n const bufferView = await engine.readPixels(0, 0, width, height);\n const data = new Uint8Array(bufferView.buffer);\n DumpData(width, height, data, successCallback, mimeType, fileName, true, undefined, quality);\n}\n/**\n * Dumps an array buffer\n * @param width defines the rendering width\n * @param height defines the rendering height\n * @param data the data array\n * @param mimeType defines the mime type of the result\n * @param fileName defines the filename to download. If present, the result will automatically be downloaded\n * @param invertY true to invert the picture in the Y dimension\n * @param toArrayBuffer true to convert the data to an ArrayBuffer (encoded as `mimeType`) instead of a base64 string\n * @param quality The quality of the image if lossy mimeType is used (e.g. image/jpeg, image/webp). See {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob | HTMLCanvasElement.toBlob()}'s `quality` parameter.\n * @returns a promise that resolve to the final data\n */\nexport function DumpDataAsync(width, height, data, mimeType = \"image/png\", fileName, invertY = false, toArrayBuffer = false, quality) {\n return new Promise((resolve) => {\n DumpData(width, height, data, (result) => resolve(result), mimeType, fileName, invertY, toArrayBuffer, quality);\n });\n}\n/**\n * Dumps an array buffer\n * @param width defines the rendering width\n * @param height defines the rendering height\n * @param data the data array\n * @param successCallback defines the callback triggered once the data are available\n * @param mimeType defines the mime type of the result\n * @param fileName defines the filename to download. If present, the result will automatically be downloaded\n * @param invertY true to invert the picture in the Y dimension\n * @param toArrayBuffer true to convert the data to an ArrayBuffer (encoded as `mimeType`) instead of a base64 string\n * @param quality The quality of the image if lossy mimeType is used (e.g. image/jpeg, image/webp). See {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob | HTMLCanvasElement.toBlob()}'s `quality` parameter.\n */\nexport function DumpData(width, height, data, successCallback, mimeType = \"image/png\", fileName, invertY = false, toArrayBuffer = false, quality) {\n _CreateDumpRenderer().then((renderer) => {\n renderer.engine.setSize(width, height, true);\n // Convert if data are float32\n if (data instanceof Float32Array) {\n const data2 = new Uint8Array(data.length);\n let n = data.length;\n while (n--) {\n const v = data[n];\n data2[n] = Math.round(Clamp(v) * 255);\n }\n data = data2;\n }\n // Create the image\n const texture = renderer.engine.createRawTexture(data, width, height, Constants.TEXTUREFORMAT_RGBA, false, !invertY, Constants.TEXTURE_NEAREST_NEAREST);\n renderer.renderer.setViewport();\n renderer.renderer.applyEffectWrapper(renderer.wrapper);\n renderer.wrapper.effect._bindTexture(\"textureSampler\", texture);\n renderer.renderer.draw();\n if (toArrayBuffer) {\n Tools.ToBlob(renderer.canvas, (blob) => {\n const fileReader = new FileReader();\n fileReader.onload = (event) => {\n const arrayBuffer = event.target.result;\n if (successCallback) {\n successCallback(arrayBuffer);\n }\n };\n fileReader.readAsArrayBuffer(blob);\n }, mimeType, quality);\n }\n else {\n Tools.EncodeScreenshotCanvasData(renderer.canvas, successCallback, mimeType, fileName, quality);\n }\n texture.dispose();\n });\n}\n/**\n * Dispose the dump tools associated resources\n */\nexport function Dispose() {\n if (_dumpToolsEngine) {\n _dumpToolsEngine.wrapper.dispose();\n _dumpToolsEngine.renderer.dispose();\n _dumpToolsEngine.engine.dispose();\n }\n else {\n // in cases where the engine is not yet created, we need to wait for it to dispose it\n _enginePromise?.then((dumpToolsEngine) => {\n dumpToolsEngine.wrapper.dispose();\n dumpToolsEngine.renderer.dispose();\n dumpToolsEngine.engine.dispose();\n });\n }\n _dumpToolsEngine = null;\n}\n/**\n * Object containing a set of static utilities functions to dump data from a canvas\n * @deprecated use functions\n */\nexport const DumpTools = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n DumpData,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n DumpDataAsync,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n DumpFramebuffer,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n Dispose,\n};\n/**\n * This will be executed automatically for UMD and es5.\n * If esm dev wants the side effects to execute they will have to run it manually\n * Once we build native modules those need to be exported.\n * @internal\n */\nconst initSideEffects = () => {\n // References the dependencies.\n Tools.DumpData = DumpData;\n Tools.DumpDataAsync = DumpDataAsync;\n Tools.DumpFramebuffer = DumpFramebuffer;\n};\ninitSideEffects();\n//# sourceMappingURL=dumpTools.js.map"],"names":["defaultOptions","positions","indices","EffectRenderer","constructor","engine","options","this","_fullscreenViewport","Viewport","_vertexBuffers","VertexBuffer","PositionKind","_indexBuffer","createIndexBuffer","_onContextRestoredObserver","onContextRestoredObservable","add","key","_rebuild","setViewport","viewport","bindBuffers","effect","applyEffectWrapper","effectWrapper","setState","depthCullingState","depthTest","stencilState","stencilTest","enableEffect","_drawWrapper","onApplyObservable","notifyObservers","saveStates","_savedStateDepthTest","_savedStateStencilTest","restoreStates","draw","drawElementsType","Constants","MATERIAL_TriangleFillMode","_isRenderTargetTexture","texture","undefined","renderTarget","render","outputTexture","isReady","out","bindFramebuffer","unBindFramebuffer","dispose","vertexBuffer","_releaseBuffer","remove","EffectWrapper","creationOptions","shaderPath","Observable","uniformNames","vertexShader","fragmentSource","fragmentShader","vertexSource","spectorName","name","push","vertex","setFloat2","defines","join","DrawWrapper","useShaderStore","fragment","createEffect","attributeNames","samplerNames","onCompiled","shaderLanguage","extraInitializationsAsync","Effect","_pipelineContext","_prepareEffect","_ignored","getEngine","_dumpToolsEngine","_enginePromise","async","DumpFramebuffer","width","height","successCallback","mimeType","fileName","quality","bufferView","readPixels","DumpData","Uint8Array","buffer","DumpDataAsync","data","invertY","toArrayBuffer","Promise","resolve","result","reject","canvas","preserveDrawingBuffer","depth","stencil","alpha","premultipliedAlpha","antialias","failIfMajorPerformanceCaveat","import","then","n","t","ThinEngine","thinEngineClass","OffscreenCanvas","e","document","createElement","EngineStore","Instances","pop","OnEnginesDisposedObservable","isDisposed","length","Dispose","getCaps","parallelShaderCompile","renderer","passPixelShader","wrapper","shader","catch","_CreateDumpRenderer","setSize","Float32Array","data2","v","Math","round","Clamp","createRawTexture","TEXTUREFORMAT_RGBA","TEXTURE_NEAREST_NEAREST","_bindTexture","Tools","ToBlob","blob","fileReader","FileReader","onload","event","arrayBuffer","target","readAsArrayBuffer","EncodeScreenshotCanvasData","dumpToolsEngine","DumpTools"],"mappings":"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"}