@babylonjs/viewer 7.39.1-alpha → 7.39.1

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 (607) 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 +193 -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 +351 -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 +202 -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 +22 -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 +41 -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-CeeoVXhZ.esm.min.js +0 -2
  198. package/dist/chunks/EXT_lights_image_based-CeeoVXhZ.esm.min.js.map +0 -1
  199. package/dist/chunks/EXT_lights_image_based-CnNyQl-V.esm.js +0 -171
  200. package/dist/chunks/EXT_lights_image_based-CnNyQl-V.esm.js.map +0 -1
  201. package/dist/chunks/EXT_mesh_gpu_instancing-CWDveXqm.esm.js +0 -86
  202. package/dist/chunks/EXT_mesh_gpu_instancing-CWDveXqm.esm.js.map +0 -1
  203. package/dist/chunks/EXT_mesh_gpu_instancing-D-C8Uube.esm.min.js +0 -2
  204. package/dist/chunks/EXT_mesh_gpu_instancing-D-C8Uube.esm.min.js.map +0 -1
  205. package/dist/chunks/EXT_meshopt_compression-COgxQv2l.esm.min.js +0 -2
  206. package/dist/chunks/EXT_meshopt_compression-COgxQv2l.esm.min.js.map +0 -1
  207. package/dist/chunks/EXT_meshopt_compression-DswhT_LU.esm.js +0 -134
  208. package/dist/chunks/EXT_meshopt_compression-DswhT_LU.esm.js.map +0 -1
  209. package/dist/chunks/EXT_texture_avif-B2FtDXn6.esm.min.js +0 -2
  210. package/dist/chunks/EXT_texture_avif-B2FtDXn6.esm.min.js.map +0 -1
  211. package/dist/chunks/EXT_texture_avif-v_Ygn4Cd.esm.js +0 -44
  212. package/dist/chunks/EXT_texture_avif-v_Ygn4Cd.esm.js.map +0 -1
  213. package/dist/chunks/EXT_texture_webp-CllsyDtl.esm.js +0 -43
  214. package/dist/chunks/EXT_texture_webp-CllsyDtl.esm.js.map +0 -1
  215. package/dist/chunks/EXT_texture_webp-DXyui4Ux.esm.min.js +0 -2
  216. package/dist/chunks/EXT_texture_webp-DXyui4Ux.esm.min.js.map +0 -1
  217. package/dist/chunks/ExtrasAsMetadata-C0cGgjti.esm.js +0 -64
  218. package/dist/chunks/ExtrasAsMetadata-C0cGgjti.esm.js.map +0 -1
  219. package/dist/chunks/ExtrasAsMetadata-CK00KSmC.esm.min.js +0 -2
  220. package/dist/chunks/ExtrasAsMetadata-CK00KSmC.esm.min.js.map +0 -1
  221. package/dist/chunks/KHR_animation_pointer-BOUYGCEt.esm.min.js +0 -2
  222. package/dist/chunks/KHR_animation_pointer-BOUYGCEt.esm.min.js.map +0 -1
  223. package/dist/chunks/KHR_animation_pointer-CSHzwOkg.esm.js +0 -343
  224. package/dist/chunks/KHR_animation_pointer-CSHzwOkg.esm.js.map +0 -1
  225. package/dist/chunks/KHR_draco_mesh_compression-BoKWdtM6.esm.js +0 -617
  226. package/dist/chunks/KHR_draco_mesh_compression-BoKWdtM6.esm.js.map +0 -1
  227. package/dist/chunks/KHR_draco_mesh_compression-By9VLx6I.esm.min.js +0 -2
  228. package/dist/chunks/KHR_draco_mesh_compression-By9VLx6I.esm.min.js.map +0 -1
  229. package/dist/chunks/KHR_interactivity-D0TMLZUs.esm.min.js +0 -2
  230. package/dist/chunks/KHR_interactivity-D0TMLZUs.esm.min.js.map +0 -1
  231. package/dist/chunks/KHR_interactivity-e1LkmRDg.esm.js +0 -4033
  232. package/dist/chunks/KHR_interactivity-e1LkmRDg.esm.js.map +0 -1
  233. package/dist/chunks/KHR_lights_punctual-BfqvpYTu.esm.min.js +0 -2
  234. package/dist/chunks/KHR_lights_punctual-BfqvpYTu.esm.min.js.map +0 -1
  235. package/dist/chunks/KHR_lights_punctual-CmDai-aK.esm.js +0 -1280
  236. package/dist/chunks/KHR_lights_punctual-CmDai-aK.esm.js.map +0 -1
  237. package/dist/chunks/KHR_materials_anisotropy-519vs1Qa.esm.js +0 -65
  238. package/dist/chunks/KHR_materials_anisotropy-519vs1Qa.esm.js.map +0 -1
  239. package/dist/chunks/KHR_materials_anisotropy-BEZ8_i6c.esm.min.js +0 -2
  240. package/dist/chunks/KHR_materials_anisotropy-BEZ8_i6c.esm.min.js.map +0 -1
  241. package/dist/chunks/KHR_materials_clearcoat-CykZXKvo.esm.js +0 -96
  242. package/dist/chunks/KHR_materials_clearcoat-CykZXKvo.esm.js.map +0 -1
  243. package/dist/chunks/KHR_materials_clearcoat-DpezRHed.esm.min.js +0 -2
  244. package/dist/chunks/KHR_materials_clearcoat-DpezRHed.esm.min.js.map +0 -1
  245. package/dist/chunks/KHR_materials_diffuse_transmission-qPnq5RUM.esm.js +0 -97
  246. package/dist/chunks/KHR_materials_diffuse_transmission-qPnq5RUM.esm.js.map +0 -1
  247. package/dist/chunks/KHR_materials_diffuse_transmission-yEErDrc7.esm.min.js +0 -2
  248. package/dist/chunks/KHR_materials_diffuse_transmission-yEErDrc7.esm.min.js.map +0 -1
  249. package/dist/chunks/KHR_materials_dispersion-2VPQ6KhT.esm.min.js +0 -2
  250. package/dist/chunks/KHR_materials_dispersion-2VPQ6KhT.esm.min.js.map +0 -1
  251. package/dist/chunks/KHR_materials_dispersion-B0bSMweB.esm.js +0 -62
  252. package/dist/chunks/KHR_materials_dispersion-B0bSMweB.esm.js.map +0 -1
  253. package/dist/chunks/KHR_materials_emissive_strength-CUssSDmh.esm.js +0 -55
  254. package/dist/chunks/KHR_materials_emissive_strength-CUssSDmh.esm.js.map +0 -1
  255. package/dist/chunks/KHR_materials_emissive_strength-D4JxUe9_.esm.min.js +0 -2
  256. package/dist/chunks/KHR_materials_emissive_strength-D4JxUe9_.esm.min.js.map +0 -1
  257. package/dist/chunks/KHR_materials_ior-C7vqNNIT.esm.min.js +0 -2
  258. package/dist/chunks/KHR_materials_ior-C7vqNNIT.esm.min.js.map +0 -1
  259. package/dist/chunks/KHR_materials_ior-CxcEUif-.esm.js +0 -64
  260. package/dist/chunks/KHR_materials_ior-CxcEUif-.esm.js.map +0 -1
  261. package/dist/chunks/KHR_materials_iridescence-BZL2FyI9.esm.js +0 -72
  262. package/dist/chunks/KHR_materials_iridescence-BZL2FyI9.esm.js.map +0 -1
  263. package/dist/chunks/KHR_materials_iridescence-uGsJIVcX.esm.min.js +0 -2
  264. package/dist/chunks/KHR_materials_iridescence-uGsJIVcX.esm.min.js.map +0 -1
  265. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-BS8Xa6kM.esm.min.js +0 -2
  266. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-BS8Xa6kM.esm.min.js.map +0 -1
  267. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-r6fENLWA.esm.js +0 -81
  268. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-r6fENLWA.esm.js.map +0 -1
  269. package/dist/chunks/KHR_materials_sheen-DHeYejYG.esm.js +0 -85
  270. package/dist/chunks/KHR_materials_sheen-DHeYejYG.esm.js.map +0 -1
  271. package/dist/chunks/KHR_materials_sheen-fKUHM2xJ.esm.min.js +0 -2
  272. package/dist/chunks/KHR_materials_sheen-fKUHM2xJ.esm.min.js.map +0 -1
  273. package/dist/chunks/KHR_materials_specular-CL_9xY0m.esm.js +0 -75
  274. package/dist/chunks/KHR_materials_specular-CL_9xY0m.esm.js.map +0 -1
  275. package/dist/chunks/KHR_materials_specular-Y1exf1a7.esm.min.js +0 -2
  276. package/dist/chunks/KHR_materials_specular-Y1exf1a7.esm.min.js.map +0 -1
  277. package/dist/chunks/KHR_materials_transmission-BQJ8BLmL.esm.min.js +0 -2
  278. package/dist/chunks/KHR_materials_transmission-BQJ8BLmL.esm.min.js.map +0 -1
  279. package/dist/chunks/KHR_materials_transmission-CNrvW7Cf.esm.js +0 -307
  280. package/dist/chunks/KHR_materials_transmission-CNrvW7Cf.esm.js.map +0 -1
  281. package/dist/chunks/KHR_materials_unlit-CB3MNxK8.esm.js +0 -74
  282. package/dist/chunks/KHR_materials_unlit-CB3MNxK8.esm.js.map +0 -1
  283. package/dist/chunks/KHR_materials_unlit-KBY2NWuy.esm.min.js +0 -2
  284. package/dist/chunks/KHR_materials_unlit-KBY2NWuy.esm.min.js.map +0 -1
  285. package/dist/chunks/KHR_materials_variants-D_m8dVI1.esm.min.js +0 -2
  286. package/dist/chunks/KHR_materials_variants-D_m8dVI1.esm.min.js.map +0 -1
  287. package/dist/chunks/KHR_materials_variants-Isvgw1_K.esm.js +0 -262
  288. package/dist/chunks/KHR_materials_variants-Isvgw1_K.esm.js.map +0 -1
  289. package/dist/chunks/KHR_materials_volume-B0sg2C1c.esm.min.js +0 -2
  290. package/dist/chunks/KHR_materials_volume-B0sg2C1c.esm.min.js.map +0 -1
  291. package/dist/chunks/KHR_materials_volume-B1w9KLrg.esm.js +0 -87
  292. package/dist/chunks/KHR_materials_volume-B1w9KLrg.esm.js.map +0 -1
  293. package/dist/chunks/KHR_mesh_quantization-BRSZAVVZ.esm.min.js +0 -2
  294. package/dist/chunks/KHR_mesh_quantization-BRSZAVVZ.esm.min.js.map +0 -1
  295. package/dist/chunks/KHR_mesh_quantization-BWvgFOYN.esm.js +0 -26
  296. package/dist/chunks/KHR_mesh_quantization-BWvgFOYN.esm.js.map +0 -1
  297. package/dist/chunks/KHR_node_visibility-C1454OLR.esm.js +0 -46
  298. package/dist/chunks/KHR_node_visibility-C1454OLR.esm.js.map +0 -1
  299. package/dist/chunks/KHR_node_visibility-D3qrqoXy.esm.min.js +0 -2
  300. package/dist/chunks/KHR_node_visibility-D3qrqoXy.esm.min.js.map +0 -1
  301. package/dist/chunks/KHR_texture_basisu-CTbZQkMA.esm.min.js +0 -2
  302. package/dist/chunks/KHR_texture_basisu-CTbZQkMA.esm.min.js.map +0 -1
  303. package/dist/chunks/KHR_texture_basisu-j7IMlI0w.esm.js +0 -43
  304. package/dist/chunks/KHR_texture_basisu-j7IMlI0w.esm.js.map +0 -1
  305. package/dist/chunks/KHR_texture_transform-D4RNWimE.esm.js +0 -63
  306. package/dist/chunks/KHR_texture_transform-D4RNWimE.esm.js.map +0 -1
  307. package/dist/chunks/KHR_texture_transform-vbVa-sD5.esm.min.js +0 -2
  308. package/dist/chunks/KHR_texture_transform-vbVa-sD5.esm.min.js.map +0 -1
  309. package/dist/chunks/KHR_xmp_json_ld-BuH_0oR5.esm.js +0 -51
  310. package/dist/chunks/KHR_xmp_json_ld-BuH_0oR5.esm.js.map +0 -1
  311. package/dist/chunks/KHR_xmp_json_ld-C66lFvG_.esm.min.js +0 -2
  312. package/dist/chunks/KHR_xmp_json_ld-C66lFvG_.esm.min.js.map +0 -1
  313. package/dist/chunks/MSFT_audio_emitter-C9Idh7Rp.esm.min.js +0 -2
  314. package/dist/chunks/MSFT_audio_emitter-C9Idh7Rp.esm.min.js.map +0 -1
  315. package/dist/chunks/MSFT_audio_emitter-DXoEfoAE.esm.js +0 -2207
  316. package/dist/chunks/MSFT_audio_emitter-DXoEfoAE.esm.js.map +0 -1
  317. package/dist/chunks/MSFT_lod-C0u18Y6B.esm.min.js +0 -2
  318. package/dist/chunks/MSFT_lod-C0u18Y6B.esm.min.js.map +0 -1
  319. package/dist/chunks/MSFT_lod-D6bdb5Z6.esm.js +0 -337
  320. package/dist/chunks/MSFT_lod-D6bdb5Z6.esm.js.map +0 -1
  321. package/dist/chunks/MSFT_minecraftMesh-B_0mgHIL.esm.min.js +0 -2
  322. package/dist/chunks/MSFT_minecraftMesh-B_0mgHIL.esm.min.js.map +0 -1
  323. package/dist/chunks/MSFT_minecraftMesh-CX86uFTQ.esm.js +0 -46
  324. package/dist/chunks/MSFT_minecraftMesh-CX86uFTQ.esm.js.map +0 -1
  325. package/dist/chunks/MSFT_sRGBFactors-8XcqVqK1.esm.js +0 -47
  326. package/dist/chunks/MSFT_sRGBFactors-8XcqVqK1.esm.js.map +0 -1
  327. package/dist/chunks/MSFT_sRGBFactors-B6vSBFGy.esm.min.js +0 -2
  328. package/dist/chunks/MSFT_sRGBFactors-B6vSBFGy.esm.min.js.map +0 -1
  329. package/dist/chunks/animationGroup-B6dPgpZS.esm.js +0 -2482
  330. package/dist/chunks/animationGroup-B6dPgpZS.esm.js.map +0 -1
  331. package/dist/chunks/animationGroup-CpYzl_DN.esm.min.js +0 -2
  332. package/dist/chunks/animationGroup-CpYzl_DN.esm.min.js.map +0 -1
  333. package/dist/chunks/assetContainer-9X3NnAIt.esm.js +0 -1720
  334. package/dist/chunks/assetContainer-9X3NnAIt.esm.js.map +0 -1
  335. package/dist/chunks/assetContainer-DbE9ENyP.esm.min.js +0 -2
  336. package/dist/chunks/assetContainer-DbE9ENyP.esm.min.js.map +0 -1
  337. package/dist/chunks/audioEngine-C2zdV8OA.esm.min.js +0 -2
  338. package/dist/chunks/audioEngine-C2zdV8OA.esm.min.js.map +0 -1
  339. package/dist/chunks/audioEngine-_IpopXBl.esm.js +0 -305
  340. package/dist/chunks/audioEngine-_IpopXBl.esm.js.map +0 -1
  341. package/dist/chunks/bakedVertexAnimation-BXYAUQYj.esm.js +0 -114
  342. package/dist/chunks/bakedVertexAnimation-BXYAUQYj.esm.js.map +0 -1
  343. package/dist/chunks/bakedVertexAnimation-ajMxzWOI.esm.min.js +0 -2
  344. package/dist/chunks/bakedVertexAnimation-ajMxzWOI.esm.min.js.map +0 -1
  345. package/dist/chunks/basisTextureLoader-C5-Ru6rv.esm.min.js +0 -2
  346. package/dist/chunks/basisTextureLoader-C5-Ru6rv.esm.min.js.map +0 -1
  347. package/dist/chunks/basisTextureLoader-LerLOoHe.esm.js +0 -600
  348. package/dist/chunks/basisTextureLoader-LerLOoHe.esm.js.map +0 -1
  349. package/dist/chunks/dds-BCLtHKIP.esm.min.js +0 -2
  350. package/dist/chunks/dds-BCLtHKIP.esm.min.js.map +0 -1
  351. package/dist/chunks/dds-C-zL7xME.esm.js +0 -540
  352. package/dist/chunks/dds-C-zL7xME.esm.js.map +0 -1
  353. package/dist/chunks/ddsTextureLoader-BfxZ0z1-.esm.min.js +0 -2
  354. package/dist/chunks/ddsTextureLoader-BfxZ0z1-.esm.min.js.map +0 -1
  355. package/dist/chunks/ddsTextureLoader-DfomnuKx.esm.js +0 -88
  356. package/dist/chunks/ddsTextureLoader-DfomnuKx.esm.js.map +0 -1
  357. package/dist/chunks/decalFragment-BLDSFlcO.esm.js +0 -18
  358. package/dist/chunks/decalFragment-BLDSFlcO.esm.js.map +0 -1
  359. package/dist/chunks/decalFragment-sDeHLp85.esm.min.js +0 -2
  360. package/dist/chunks/decalFragment-sDeHLp85.esm.min.js.map +0 -1
  361. package/dist/chunks/default.fragment-B0thzVVy.esm.js +0 -446
  362. package/dist/chunks/default.fragment-B0thzVVy.esm.js.map +0 -1
  363. package/dist/chunks/default.fragment-Byu3Aowh.esm.js +0 -514
  364. package/dist/chunks/default.fragment-Byu3Aowh.esm.js.map +0 -1
  365. package/dist/chunks/default.fragment-Chbu8Ntc.esm.min.js +0 -2
  366. package/dist/chunks/default.fragment-Chbu8Ntc.esm.min.js.map +0 -1
  367. package/dist/chunks/default.fragment-DsEzLyFX.esm.min.js +0 -2
  368. package/dist/chunks/default.fragment-DsEzLyFX.esm.min.js.map +0 -1
  369. package/dist/chunks/default.vertex-B77KQHza.esm.min.js +0 -2
  370. package/dist/chunks/default.vertex-B77KQHza.esm.min.js.map +0 -1
  371. package/dist/chunks/default.vertex-CDwWvCEl.esm.min.js +0 -2
  372. package/dist/chunks/default.vertex-CDwWvCEl.esm.min.js.map +0 -1
  373. package/dist/chunks/default.vertex-CZ6HqVj4.esm.js +0 -181
  374. package/dist/chunks/default.vertex-CZ6HqVj4.esm.js.map +0 -1
  375. package/dist/chunks/default.vertex-D_b5ZM-a.esm.js +0 -201
  376. package/dist/chunks/default.vertex-D_b5ZM-a.esm.js.map +0 -1
  377. package/dist/chunks/defaultUboDeclaration-5uHN4VVh.esm.min.js +0 -2
  378. package/dist/chunks/defaultUboDeclaration-5uHN4VVh.esm.min.js.map +0 -1
  379. package/dist/chunks/defaultUboDeclaration-BQSKMomY.esm.js +0 -15
  380. package/dist/chunks/defaultUboDeclaration-BQSKMomY.esm.js.map +0 -1
  381. package/dist/chunks/defaultUboDeclaration-CSdxq67R.esm.min.js +0 -2
  382. package/dist/chunks/defaultUboDeclaration-CSdxq67R.esm.min.js.map +0 -1
  383. package/dist/chunks/defaultUboDeclaration-Cau7-O0F.esm.js +0 -13
  384. package/dist/chunks/defaultUboDeclaration-Cau7-O0F.esm.js.map +0 -1
  385. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js +0 -11
  386. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js.map +0 -1
  387. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js +0 -2
  388. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js.map +0 -1
  389. package/dist/chunks/dumpTools-D8G3rIA6.esm.min.js +0 -2
  390. package/dist/chunks/dumpTools-D8G3rIA6.esm.min.js.map +0 -1
  391. package/dist/chunks/dumpTools-DVkJOip_.esm.js +0 -200
  392. package/dist/chunks/dumpTools-DVkJOip_.esm.js.map +0 -1
  393. package/dist/chunks/engine-Bq-FERio.esm.min.js +0 -2
  394. package/dist/chunks/engine-Bq-FERio.esm.min.js.map +0 -1
  395. package/dist/chunks/engine-Cg8XikQu.esm.js +0 -2216
  396. package/dist/chunks/engine-Cg8XikQu.esm.js.map +0 -1
  397. package/dist/chunks/engine.common-DApXqU3I.esm.min.js +0 -2
  398. package/dist/chunks/engine.common-DApXqU3I.esm.min.js.map +0 -1
  399. package/dist/chunks/engine.common-DLyYh0t6.esm.js +0 -1162
  400. package/dist/chunks/engine.common-DLyYh0t6.esm.js.map +0 -1
  401. package/dist/chunks/envTextureLoader-aacbNh0L.esm.js +0 -64
  402. package/dist/chunks/envTextureLoader-aacbNh0L.esm.js.map +0 -1
  403. package/dist/chunks/envTextureLoader-z33Ku8ZP.esm.min.js +0 -2
  404. package/dist/chunks/envTextureLoader-z33Ku8ZP.esm.min.js.map +0 -1
  405. package/dist/chunks/environmentTextureTools-BroPEPcO.esm.min.js +0 -2
  406. package/dist/chunks/environmentTextureTools-BroPEPcO.esm.min.js.map +0 -1
  407. package/dist/chunks/environmentTextureTools-DJ1uxdGk.esm.js +0 -382
  408. package/dist/chunks/environmentTextureTools-DJ1uxdGk.esm.js.map +0 -1
  409. package/dist/chunks/exrTextureLoader-BOT0ASym.esm.min.js +0 -2
  410. package/dist/chunks/exrTextureLoader-BOT0ASym.esm.min.js.map +0 -1
  411. package/dist/chunks/exrTextureLoader-Cwh6zNkZ.esm.js +0 -1683
  412. package/dist/chunks/exrTextureLoader-Cwh6zNkZ.esm.js.map +0 -1
  413. package/dist/chunks/fogFragment-3I0zHWQ5.esm.min.js +0 -2
  414. package/dist/chunks/fogFragment-3I0zHWQ5.esm.min.js.map +0 -1
  415. package/dist/chunks/fogFragment-Bj4te0ja.esm.js +0 -102
  416. package/dist/chunks/fogFragment-Bj4te0ja.esm.js.map +0 -1
  417. package/dist/chunks/fogFragment-Ck96itbs.esm.js +0 -101
  418. package/dist/chunks/fogFragment-Ck96itbs.esm.js.map +0 -1
  419. package/dist/chunks/fogFragment-DF1MDDVX.esm.min.js +0 -2
  420. package/dist/chunks/fogFragment-DF1MDDVX.esm.min.js.map +0 -1
  421. package/dist/chunks/fresnelFunction-B3SdA67n.esm.js +0 -12
  422. package/dist/chunks/fresnelFunction-B3SdA67n.esm.js.map +0 -1
  423. package/dist/chunks/fresnelFunction-CsJx6AiH.esm.min.js +0 -2
  424. package/dist/chunks/fresnelFunction-CsJx6AiH.esm.min.js.map +0 -1
  425. package/dist/chunks/glTFLoader-D_2oyVEL.esm.js +0 -7586
  426. package/dist/chunks/glTFLoader-D_2oyVEL.esm.js.map +0 -1
  427. package/dist/chunks/glTFLoader-hH9M0Mxl.esm.min.js +0 -2
  428. package/dist/chunks/glTFLoader-hH9M0Mxl.esm.min.js.map +0 -1
  429. package/dist/chunks/glTFLoaderAnimation-C8R26t6v.esm.min.js +0 -2
  430. package/dist/chunks/glTFLoaderAnimation-C8R26t6v.esm.min.js.map +0 -1
  431. package/dist/chunks/glTFLoaderAnimation-ZjtrPrQH.esm.js +0 -77
  432. package/dist/chunks/glTFLoaderAnimation-ZjtrPrQH.esm.js.map +0 -1
  433. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js +0 -2
  434. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js.map +0 -1
  435. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js +0 -67
  436. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js.map +0 -1
  437. package/dist/chunks/harmonicsFunctions-B3OzUdyY.esm.min.js +0 -2
  438. package/dist/chunks/harmonicsFunctions-B3OzUdyY.esm.min.js.map +0 -1
  439. package/dist/chunks/harmonicsFunctions-BZ06GfwC.esm.js +0 -35
  440. package/dist/chunks/harmonicsFunctions-BZ06GfwC.esm.js.map +0 -1
  441. package/dist/chunks/harmonicsFunctions-DUlvvk2H.esm.min.js +0 -2
  442. package/dist/chunks/harmonicsFunctions-DUlvvk2H.esm.min.js.map +0 -1
  443. package/dist/chunks/harmonicsFunctions-axPIRmiH.esm.js +0 -34
  444. package/dist/chunks/harmonicsFunctions-axPIRmiH.esm.js.map +0 -1
  445. package/dist/chunks/hdrTextureLoader-BYWcfMlD.esm.js +0 -253
  446. package/dist/chunks/hdrTextureLoader-BYWcfMlD.esm.js.map +0 -1
  447. package/dist/chunks/hdrTextureLoader-XRE0YoPI.esm.min.js +0 -2
  448. package/dist/chunks/hdrTextureLoader-XRE0YoPI.esm.min.js.map +0 -1
  449. package/dist/chunks/helperFunctions-2PlaHl0J.esm.min.js +0 -2
  450. package/dist/chunks/helperFunctions-2PlaHl0J.esm.min.js.map +0 -1
  451. package/dist/chunks/helperFunctions-BRGNf_2Q.esm.js +0 -80
  452. package/dist/chunks/helperFunctions-BRGNf_2Q.esm.js.map +0 -1
  453. package/dist/chunks/helperFunctions-Dc0WB1aZ.esm.js +0 -108
  454. package/dist/chunks/helperFunctions-Dc0WB1aZ.esm.js.map +0 -1
  455. package/dist/chunks/helperFunctions-Dhb__ydI.esm.min.js +0 -2
  456. package/dist/chunks/helperFunctions-Dhb__ydI.esm.min.js.map +0 -1
  457. package/dist/chunks/iesTextureLoader-BeMgjzfz.esm.js +0 -189
  458. package/dist/chunks/iesTextureLoader-BeMgjzfz.esm.js.map +0 -1
  459. package/dist/chunks/iesTextureLoader-DEPpHi2v.esm.min.js +0 -2
  460. package/dist/chunks/iesTextureLoader-DEPpHi2v.esm.min.js.map +0 -1
  461. package/dist/chunks/index-CZUVyg5N.esm.min.js +0 -57
  462. package/dist/chunks/index-CZUVyg5N.esm.min.js.map +0 -1
  463. package/dist/chunks/index-Ds9CkOUn.esm.js +0 -74645
  464. package/dist/chunks/index-Ds9CkOUn.esm.js.map +0 -1
  465. package/dist/chunks/ktxTextureLoader-7ak2DCn2.esm.min.js +0 -2
  466. package/dist/chunks/ktxTextureLoader-7ak2DCn2.esm.min.js.map +0 -1
  467. package/dist/chunks/ktxTextureLoader-BeVxJImE.esm.js +0 -814
  468. package/dist/chunks/ktxTextureLoader-BeVxJImE.esm.js.map +0 -1
  469. package/dist/chunks/logDepthDeclaration-C6Zpw_hp.esm.js +0 -35
  470. package/dist/chunks/logDepthDeclaration-C6Zpw_hp.esm.js.map +0 -1
  471. package/dist/chunks/logDepthDeclaration-CC6RAv_c.esm.js +0 -11
  472. package/dist/chunks/logDepthDeclaration-CC6RAv_c.esm.js.map +0 -1
  473. package/dist/chunks/logDepthDeclaration-DVkadsse.esm.min.js +0 -2
  474. package/dist/chunks/logDepthDeclaration-DVkadsse.esm.min.js.map +0 -1
  475. package/dist/chunks/logDepthDeclaration-ypicfKvl.esm.min.js +0 -2
  476. package/dist/chunks/logDepthDeclaration-ypicfKvl.esm.min.js.map +0 -1
  477. package/dist/chunks/logDepthVertex-BXUDf06w.esm.min.js +0 -2
  478. package/dist/chunks/logDepthVertex-BXUDf06w.esm.min.js.map +0 -1
  479. package/dist/chunks/logDepthVertex-CbXxwnGu.esm.js +0 -81
  480. package/dist/chunks/logDepthVertex-CbXxwnGu.esm.js.map +0 -1
  481. package/dist/chunks/logDepthVertex-Dh_BbQmW.esm.min.js +0 -2
  482. package/dist/chunks/logDepthVertex-Dh_BbQmW.esm.min.js.map +0 -1
  483. package/dist/chunks/logDepthVertex-Ies7zLHP.esm.js +0 -77
  484. package/dist/chunks/logDepthVertex-Ies7zLHP.esm.js.map +0 -1
  485. package/dist/chunks/mainUVVaryingDeclaration-Bt49lS_d.esm.js +0 -11
  486. package/dist/chunks/mainUVVaryingDeclaration-Bt49lS_d.esm.js.map +0 -1
  487. package/dist/chunks/mainUVVaryingDeclaration-DCdc-FMp.esm.min.js +0 -2
  488. package/dist/chunks/mainUVVaryingDeclaration-DCdc-FMp.esm.min.js.map +0 -1
  489. package/dist/chunks/mainUVVaryingDeclaration-DF6FWPNx.esm.js +0 -11
  490. package/dist/chunks/mainUVVaryingDeclaration-DF6FWPNx.esm.js.map +0 -1
  491. package/dist/chunks/mainUVVaryingDeclaration-DdLn58AI.esm.min.js +0 -2
  492. package/dist/chunks/mainUVVaryingDeclaration-DdLn58AI.esm.min.js.map +0 -1
  493. package/dist/chunks/meshUboDeclaration-BXT5y7Y0.esm.js +0 -26
  494. package/dist/chunks/meshUboDeclaration-BXT5y7Y0.esm.js.map +0 -1
  495. package/dist/chunks/meshUboDeclaration-DYo9nzU4.esm.min.js +0 -2
  496. package/dist/chunks/meshUboDeclaration-DYo9nzU4.esm.min.js.map +0 -1
  497. package/dist/chunks/objFileLoader-C3TWnCnW.esm.js +0 -1338
  498. package/dist/chunks/objFileLoader-C3TWnCnW.esm.js.map +0 -1
  499. package/dist/chunks/objFileLoader-pPKQaMAc.esm.min.js +0 -2
  500. package/dist/chunks/objFileLoader-pPKQaMAc.esm.min.js.map +0 -1
  501. package/dist/chunks/oitFragment-DSudBjYO.esm.js +0 -1078
  502. package/dist/chunks/oitFragment-DSudBjYO.esm.js.map +0 -1
  503. package/dist/chunks/oitFragment-DwSjoVMQ.esm.min.js +0 -2
  504. package/dist/chunks/oitFragment-DwSjoVMQ.esm.min.js.map +0 -1
  505. package/dist/chunks/oitFragment-WhKBng1w.esm.min.js +0 -2
  506. package/dist/chunks/oitFragment-WhKBng1w.esm.min.js.map +0 -1
  507. package/dist/chunks/oitFragment-kTtaJZXe.esm.js +0 -1240
  508. package/dist/chunks/oitFragment-kTtaJZXe.esm.js.map +0 -1
  509. package/dist/chunks/pass.fragment-BEkSrTG8.esm.min.js +0 -2
  510. package/dist/chunks/pass.fragment-BEkSrTG8.esm.min.js.map +0 -1
  511. package/dist/chunks/pass.fragment-CXsn1ad3.esm.min.js +0 -2
  512. package/dist/chunks/pass.fragment-CXsn1ad3.esm.min.js.map +0 -1
  513. package/dist/chunks/pass.fragment-bHEpgdg1.esm.js +0 -15
  514. package/dist/chunks/pass.fragment-bHEpgdg1.esm.js.map +0 -1
  515. package/dist/chunks/pass.fragment-jUYCkDTS.esm.js +0 -15
  516. package/dist/chunks/pass.fragment-jUYCkDTS.esm.js.map +0 -1
  517. package/dist/chunks/pbr.fragment-B7ppdjGb.esm.min.js +0 -2
  518. package/dist/chunks/pbr.fragment-B7ppdjGb.esm.min.js.map +0 -1
  519. package/dist/chunks/pbr.fragment-Bee22T4K.esm.js +0 -3272
  520. package/dist/chunks/pbr.fragment-Bee22T4K.esm.js.map +0 -1
  521. package/dist/chunks/pbr.fragment-COTRD8t1.esm.js +0 -3232
  522. package/dist/chunks/pbr.fragment-COTRD8t1.esm.js.map +0 -1
  523. package/dist/chunks/pbr.fragment-DHBprcoD.esm.min.js +0 -2
  524. package/dist/chunks/pbr.fragment-DHBprcoD.esm.min.js.map +0 -1
  525. package/dist/chunks/pbr.vertex-CGf4RQwZ.esm.js +0 -214
  526. package/dist/chunks/pbr.vertex-CGf4RQwZ.esm.js.map +0 -1
  527. package/dist/chunks/pbr.vertex-DKWJEWJ3.esm.min.js +0 -2
  528. package/dist/chunks/pbr.vertex-DKWJEWJ3.esm.min.js.map +0 -1
  529. package/dist/chunks/pbr.vertex-DW1NfAV2.esm.min.js +0 -2
  530. package/dist/chunks/pbr.vertex-DW1NfAV2.esm.min.js.map +0 -1
  531. package/dist/chunks/pbr.vertex-VCBHeeFg.esm.js +0 -338
  532. package/dist/chunks/pbr.vertex-VCBHeeFg.esm.js.map +0 -1
  533. package/dist/chunks/postprocess.vertex-8shu0Jne.esm.js +0 -20
  534. package/dist/chunks/postprocess.vertex-8shu0Jne.esm.js.map +0 -1
  535. package/dist/chunks/postprocess.vertex-CmHd2-cT.esm.min.js +0 -2
  536. package/dist/chunks/postprocess.vertex-CmHd2-cT.esm.min.js.map +0 -1
  537. package/dist/chunks/rawTexture-BdzeKkKm.esm.min.js +0 -2
  538. package/dist/chunks/rawTexture-BdzeKkKm.esm.min.js.map +0 -1
  539. package/dist/chunks/rawTexture-sJ8QXEDT.esm.js +0 -191
  540. package/dist/chunks/rawTexture-sJ8QXEDT.esm.js.map +0 -1
  541. package/dist/chunks/ray-C90TAlDl.esm.min.js +0 -2
  542. package/dist/chunks/ray-C90TAlDl.esm.min.js.map +0 -1
  543. package/dist/chunks/ray-Do7q8ieT.esm.js +0 -946
  544. package/dist/chunks/ray-Do7q8ieT.esm.js.map +0 -1
  545. package/dist/chunks/rgbdDecode.fragment-6ypIVbnJ.esm.js +0 -17
  546. package/dist/chunks/rgbdDecode.fragment-6ypIVbnJ.esm.js.map +0 -1
  547. package/dist/chunks/rgbdDecode.fragment-CY5tK0Og.esm.js +0 -17
  548. package/dist/chunks/rgbdDecode.fragment-CY5tK0Og.esm.js.map +0 -1
  549. package/dist/chunks/rgbdDecode.fragment-DHpeFT-a.esm.min.js +0 -2
  550. package/dist/chunks/rgbdDecode.fragment-DHpeFT-a.esm.min.js.map +0 -1
  551. package/dist/chunks/rgbdDecode.fragment-vK2dfM7L.esm.min.js +0 -2
  552. package/dist/chunks/rgbdDecode.fragment-vK2dfM7L.esm.min.js.map +0 -1
  553. package/dist/chunks/rgbdEncode.fragment-BxJZUM2K.esm.min.js +0 -2
  554. package/dist/chunks/rgbdEncode.fragment-BxJZUM2K.esm.min.js.map +0 -1
  555. package/dist/chunks/rgbdEncode.fragment-D5wh83OQ.esm.js +0 -17
  556. package/dist/chunks/rgbdEncode.fragment-D5wh83OQ.esm.js.map +0 -1
  557. package/dist/chunks/rgbdEncode.fragment-Dfgi7tuD.esm.min.js +0 -2
  558. package/dist/chunks/rgbdEncode.fragment-Dfgi7tuD.esm.min.js.map +0 -1
  559. package/dist/chunks/rgbdEncode.fragment-xW3q5odo.esm.js +0 -17
  560. package/dist/chunks/rgbdEncode.fragment-xW3q5odo.esm.js.map +0 -1
  561. package/dist/chunks/splatFileLoader-B6EPqKvz.esm.js +0 -3370
  562. package/dist/chunks/splatFileLoader-B6EPqKvz.esm.js.map +0 -1
  563. package/dist/chunks/splatFileLoader-D_uo8qe8.esm.min.js +0 -2
  564. package/dist/chunks/splatFileLoader-D_uo8qe8.esm.min.js.map +0 -1
  565. package/dist/chunks/standardMaterial-CITp1r4C.esm.min.js +0 -2
  566. package/dist/chunks/standardMaterial-CITp1r4C.esm.min.js.map +0 -1
  567. package/dist/chunks/standardMaterial-N0c3wx-k.esm.js +0 -1805
  568. package/dist/chunks/standardMaterial-N0c3wx-k.esm.js.map +0 -1
  569. package/dist/chunks/stlFileLoader-BcQlxWKz.esm.js +0 -238
  570. package/dist/chunks/stlFileLoader-BcQlxWKz.esm.js.map +0 -1
  571. package/dist/chunks/stlFileLoader-C9m0acJk.esm.min.js +0 -2
  572. package/dist/chunks/stlFileLoader-C9m0acJk.esm.min.js.map +0 -1
  573. package/dist/chunks/tgaTextureLoader-CfOAj-7m.esm.min.js +0 -2
  574. package/dist/chunks/tgaTextureLoader-CfOAj-7m.esm.min.js.map +0 -1
  575. package/dist/chunks/tgaTextureLoader-Dx71Q_b8.esm.js +0 -349
  576. package/dist/chunks/tgaTextureLoader-Dx71Q_b8.esm.js.map +0 -1
  577. package/dist/chunks/thinEngine-C-Vyo0K5.esm.js +0 -3842
  578. package/dist/chunks/thinEngine-C-Vyo0K5.esm.js.map +0 -1
  579. package/dist/chunks/thinEngine-Zjv1Qea8.esm.min.js +0 -2
  580. package/dist/chunks/thinEngine-Zjv1Qea8.esm.min.js.map +0 -1
  581. package/dist/chunks/thinInstanceMesh-BOVe3w2D.esm.js +0 -314
  582. package/dist/chunks/thinInstanceMesh-BOVe3w2D.esm.js.map +0 -1
  583. package/dist/chunks/thinInstanceMesh-CnAo79e3.esm.min.js +0 -2
  584. package/dist/chunks/thinInstanceMesh-CnAo79e3.esm.min.js.map +0 -1
  585. package/dist/chunks/vertexColorMixing-CWoef9l8.esm.min.js +0 -2
  586. package/dist/chunks/vertexColorMixing-CWoef9l8.esm.min.js.map +0 -1
  587. package/dist/chunks/vertexColorMixing-CZil91Ob.esm.js +0 -412
  588. package/dist/chunks/vertexColorMixing-CZil91Ob.esm.js.map +0 -1
  589. package/dist/chunks/vertexColorMixing-DvzWt4lH.esm.min.js +0 -2
  590. package/dist/chunks/vertexColorMixing-DvzWt4lH.esm.min.js.map +0 -1
  591. package/dist/chunks/vertexColorMixing-c1qEw-yW.esm.js +0 -522
  592. package/dist/chunks/vertexColorMixing-c1qEw-yW.esm.js.map +0 -1
  593. package/dist/chunks/webgpuEngine-Bl72TV_c.esm.min.js +0 -2
  594. package/dist/chunks/webgpuEngine-Bl72TV_c.esm.min.js.map +0 -1
  595. package/dist/chunks/webgpuEngine-DM-fTtzW.esm.js +0 -11533
  596. package/dist/chunks/webgpuEngine-DM-fTtzW.esm.js.map +0 -1
  597. package/dist/chunks/workerPool-BUOov2K1.esm.js +0 -122
  598. package/dist/chunks/workerPool-BUOov2K1.esm.js.map +0 -1
  599. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js +0 -2
  600. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js.map +0 -1
  601. package/docs/ViewerDefault.jpg +0 -0
  602. package/docs/ViewerParts.jpg +0 -0
  603. package/docs/ViewerSlots.jpg +0 -0
  604. package/docs/ViewerStyled.jpg +0 -0
  605. package/lib/index.d.ts +0 -568
  606. package/lib/index.js +0 -2067
  607. package/lib/index.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{C as e,I as t,L as r,a as _,b as i,G as E,H as s,S as a,B as n,A as T,E as h,P as l}from"./index-CZUVyg5N.esm.min.js";import{T as R,W as u,a as o}from"./thinEngine-Zjv1Qea8.esm.min.js";import{R as A,P as f,_ as c,a as d,C as U,b as p,E as g,G as m,c as M,d as S,e as P}from"./engine.common-DApXqU3I.esm.min.js";import"./audioEngine-C2zdV8OA.esm.min.js";import"./drawWrapper.functions-ng7lvueZ.esm.min.js";function N(t,r,_,i){let E,s=1;i===e.TEXTURETYPE_FLOAT?E=new Float32Array(r*_*4):i===e.TEXTURETYPE_HALF_FLOAT?(E=new Uint16Array(r*_*4),s=15360):E=i===e.TEXTURETYPE_UNSIGNED_INTEGER?new Uint32Array(r*_*4):new Uint8Array(r*_*4);for(let e=0;e<r;e++)for(let i=0;i<_;i++){const _=3*(i*r+e),a=4*(i*r+e);E[a+0]=t[_+0],E[a+1]=t[_+1],E[a+2]=t[_+2],E[a+3]=s}return E}function F(r){return function(_,i,E,s,a,n,T,h,l=null,R=e.TEXTURETYPE_UNSIGNED_BYTE){const u=r?this._gl.TEXTURE_3D:this._gl.TEXTURE_2D_ARRAY,o=new t(this,r?10:11);o.baseWidth=i,o.baseHeight=E,o.baseDepth=s,o.width=i,o.height=E,o.depth=s,o.format=a,o.type=R,o.generateMipMaps=n,o.samplingMode=h,r?o.is3D=!0:o.is2DArray=!0,this._doNotHandleContextLost||(o._bufferView=_),r?this.updateRawTexture3D(o,_,a,T,l,R):this.updateRawTexture2DArray(o,_,a,T,l,R),this._bindTextureDirectly(u,o,!0);const A=this._getSamplingParameters(h,n);return this._gl.texParameteri(u,this._gl.TEXTURE_MAG_FILTER,A.mag),this._gl.texParameteri(u,this._gl.TEXTURE_MIN_FILTER,A.min),n&&this._gl.generateMipmap(u),this._bindTextureDirectly(u,null),this._internalTexturesCache.push(o),o}}function I(t){return function(r,_,i,E,s=null,a=e.TEXTURETYPE_UNSIGNED_BYTE){const n=t?this._gl.TEXTURE_3D:this._gl.TEXTURE_2D_ARRAY,T=this._getWebGLTextureType(a),h=this._getInternalFormat(i),l=this._getRGBABufferInternalSizedFormat(a,i);this._bindTextureDirectly(n,r,!0),this._unpackFlipY(void 0===E||!!E),this._doNotHandleContextLost||(r._bufferView=_,r.format=i,r.invertY=E,r._compression=s),r.width%4!=0&&this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT,1),s&&_?this._gl.compressedTexImage3D(n,0,this.getCaps().s3tc[s],r.width,r.height,r.depth,0,_):this._gl.texImage3D(n,0,l,r.width,r.height,r.depth,0,h,T,_),r.generateMipMaps&&this._gl.generateMipmap(n),this._bindTextureDirectly(n,null),r.isReady=!0}}R.prototype.setAlphaMode=function(t,r=!1){if(this._alphaMode!==t){switch(t){case e.ALPHA_DISABLE:this._alphaState.alphaBlend=!1;break;case e.ALPHA_PREMULTIPLIED:this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE,this._gl.ONE_MINUS_SRC_ALPHA,this._gl.ONE,this._gl.ONE),this._alphaState.alphaBlend=!0;break;case e.ALPHA_PREMULTIPLIED_PORTERDUFF:this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE,this._gl.ONE_MINUS_SRC_ALPHA,this._gl.ONE,this._gl.ONE_MINUS_SRC_ALPHA),this._alphaState.alphaBlend=!0;break;case e.ALPHA_COMBINE:this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA,this._gl.ONE_MINUS_SRC_ALPHA,this._gl.ONE,this._gl.ONE),this._alphaState.alphaBlend=!0;break;case e.ALPHA_ONEONE:this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE,this._gl.ONE,this._gl.ZERO,this._gl.ONE),this._alphaState.alphaBlend=!0;break;case e.ALPHA_ADD:this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA,this._gl.ONE,this._gl.ZERO,this._gl.ONE),this._alphaState.alphaBlend=!0;break;case e.ALPHA_SUBTRACT:this._alphaState.setAlphaBlendFunctionParameters(this._gl.ZERO,this._gl.ONE_MINUS_SRC_COLOR,this._gl.ONE,this._gl.ONE),this._alphaState.alphaBlend=!0;break;case e.ALPHA_MULTIPLY:this._alphaState.setAlphaBlendFunctionParameters(this._gl.DST_COLOR,this._gl.ZERO,this._gl.ONE,this._gl.ONE),this._alphaState.alphaBlend=!0;break;case e.ALPHA_MAXIMIZED:this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA,this._gl.ONE_MINUS_SRC_COLOR,this._gl.ONE,this._gl.ONE),this._alphaState.alphaBlend=!0;break;case e.ALPHA_INTERPOLATE:this._alphaState.setAlphaBlendFunctionParameters(this._gl.CONSTANT_COLOR,this._gl.ONE_MINUS_CONSTANT_COLOR,this._gl.CONSTANT_ALPHA,this._gl.ONE_MINUS_CONSTANT_ALPHA),this._alphaState.alphaBlend=!0;break;case e.ALPHA_SCREENMODE:this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE,this._gl.ONE_MINUS_SRC_COLOR,this._gl.ONE,this._gl.ONE_MINUS_SRC_ALPHA),this._alphaState.alphaBlend=!0;break;case e.ALPHA_ONEONE_ONEONE:this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE,this._gl.ONE,this._gl.ONE,this._gl.ONE),this._alphaState.alphaBlend=!0;break;case e.ALPHA_ALPHATOCOLOR:this._alphaState.setAlphaBlendFunctionParameters(this._gl.DST_ALPHA,this._gl.ONE,this._gl.ZERO,this._gl.ZERO),this._alphaState.alphaBlend=!0;break;case e.ALPHA_REVERSEONEMINUS:this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE_MINUS_DST_COLOR,this._gl.ONE_MINUS_SRC_COLOR,this._gl.ONE_MINUS_DST_ALPHA,this._gl.ONE_MINUS_SRC_ALPHA),this._alphaState.alphaBlend=!0;break;case e.ALPHA_SRC_DSTONEMINUSSRCALPHA:this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE,this._gl.ONE_MINUS_SRC_ALPHA,this._gl.ONE,this._gl.ONE_MINUS_SRC_ALPHA),this._alphaState.alphaBlend=!0;break;case e.ALPHA_ONEONE_ONEZERO:this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE,this._gl.ONE,this._gl.ONE,this._gl.ZERO),this._alphaState.alphaBlend=!0;break;case e.ALPHA_EXCLUSION:this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE_MINUS_DST_COLOR,this._gl.ONE_MINUS_SRC_COLOR,this._gl.ZERO,this._gl.ONE),this._alphaState.alphaBlend=!0;break;case e.ALPHA_LAYER_ACCUMULATE:this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA,this._gl.ONE_MINUS_SRC_ALPHA,this._gl.ONE,this._gl.ONE_MINUS_SRC_ALPHA),this._alphaState.alphaBlend=!0}r||(this.depthCullingState.depthMask=t===e.ALPHA_DISABLE),this._alphaMode=t}else if(!r){const r=t===e.ALPHA_DISABLE;this.depthCullingState.depthMask!==r&&(this.depthCullingState.depthMask=r)}},R.prototype.updateRawTexture=function(t,r,_,i,E=null,s=e.TEXTURETYPE_UNSIGNED_BYTE,a=!1){if(!t)return;const n=this._getRGBABufferInternalSizedFormat(s,_,a),T=this._getInternalFormat(_),h=this._getWebGLTextureType(s);this._bindTextureDirectly(this._gl.TEXTURE_2D,t,!0),this._unpackFlipY(void 0===i||!!i),this._doNotHandleContextLost||(t._bufferView=r,t.format=_,t.type=s,t.invertY=i,t._compression=E),t.width%4!=0&&this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT,1),E&&r?this._gl.compressedTexImage2D(this._gl.TEXTURE_2D,0,this.getCaps().s3tc[E],t.width,t.height,0,r):this._gl.texImage2D(this._gl.TEXTURE_2D,0,n,t.width,t.height,0,T,h,r),t.generateMipMaps&&this._gl.generateMipmap(this._gl.TEXTURE_2D),this._bindTextureDirectly(this._gl.TEXTURE_2D,null),t.isReady=!0},R.prototype.createRawTexture=function(r,_,i,E,s,a,n,T=null,h=e.TEXTURETYPE_UNSIGNED_BYTE,l=0,R=!1){const u=new t(this,3);u.baseWidth=_,u.baseHeight=i,u.width=_,u.height=i,u.format=E,u.generateMipMaps=s,u.samplingMode=n,u.invertY=a,u._compression=T,u.type=h,u._useSRGBBuffer=this._getUseSRGBBuffer(R,!s),this._doNotHandleContextLost||(u._bufferView=r),this.updateRawTexture(u,r,E,a,T,h,u._useSRGBBuffer),this._bindTextureDirectly(this._gl.TEXTURE_2D,u,!0);const o=this._getSamplingParameters(n,s);return this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,o.mag),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,o.min),s&&this._gl.generateMipmap(this._gl.TEXTURE_2D),this._bindTextureDirectly(this._gl.TEXTURE_2D,null),this._internalTexturesCache.push(u),u},R.prototype.createRawCubeTexture=function(i,E,s,a,n,T,h,l=null){const R=this._gl,u=new t(this,8);u.isCube=!0,u.format=s,u.type=a,this._doNotHandleContextLost||(u._bufferViewArray=i);const o=this._getWebGLTextureType(a);let A=this._getInternalFormat(s);A===R.RGB&&(A=R.RGBA),o!==R.FLOAT||this._caps.textureFloatLinearFiltering?o!==this._gl.HALF_FLOAT_OES||this._caps.textureHalfFloatLinearFiltering?o!==R.FLOAT||this._caps.textureFloatRender?o!==R.HALF_FLOAT||this._caps.colorBufferFloat||(n=!1,r.Warn("Render to half float textures is not supported. Mipmap generation forced to false.")):(n=!1,r.Warn("Render to float textures is not supported. Mipmap generation forced to false.")):(n=!1,h=e.TEXTURE_NEAREST_SAMPLINGMODE,r.Warn("Half float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.")):(n=!1,h=e.TEXTURE_NEAREST_SAMPLINGMODE,r.Warn("Float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively."));const f=E,c=f;u.width=f,u.height=c,u.invertY=T,u._compression=l;if(!this.needPOTTextures||_(u.width)&&_(u.height)||(n=!1),i)this.updateRawCubeTexture(u,i,s,a,T,l);else{const e=this._getRGBABufferInternalSizedFormat(a),t=0;this._bindTextureDirectly(R.TEXTURE_CUBE_MAP,u,!0);for(let r=0;r<6;r++)l?R.compressedTexImage2D(R.TEXTURE_CUBE_MAP_POSITIVE_X+r,t,this.getCaps().s3tc[l],u.width,u.height,0,void 0):R.texImage2D(R.TEXTURE_CUBE_MAP_POSITIVE_X+r,t,e,u.width,u.height,0,A,o,null);this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null)}this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,u,!0),i&&n&&this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP);const d=this._getSamplingParameters(h,n);return R.texParameteri(R.TEXTURE_CUBE_MAP,R.TEXTURE_MAG_FILTER,d.mag),R.texParameteri(R.TEXTURE_CUBE_MAP,R.TEXTURE_MIN_FILTER,d.min),R.texParameteri(R.TEXTURE_CUBE_MAP,R.TEXTURE_WRAP_S,R.CLAMP_TO_EDGE),R.texParameteri(R.TEXTURE_CUBE_MAP,R.TEXTURE_WRAP_T,R.CLAMP_TO_EDGE),this._bindTextureDirectly(R.TEXTURE_CUBE_MAP,null),u.generateMipMaps=n,u.samplingMode=h,u.isReady=!0,u},R.prototype.updateRawCubeTexture=function(e,t,r,i,E,s=null,a=0){e._bufferViewArray=t,e.format=r,e.type=i,e.invertY=E,e._compression=s;const n=this._gl,T=this._getWebGLTextureType(i);let h=this._getInternalFormat(r);const l=this._getRGBABufferInternalSizedFormat(i);let R=!1;h===n.RGB&&(h=n.RGBA,R=!0),this._bindTextureDirectly(n.TEXTURE_CUBE_MAP,e,!0),this._unpackFlipY(void 0===E||!!E),e.width%4!=0&&n.pixelStorei(n.UNPACK_ALIGNMENT,1);for(let r=0;r<6;r++){let _=t[r];s?n.compressedTexImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+r,a,this.getCaps().s3tc[s],e.width,e.height,0,_):(R&&(_=N(_,e.width,e.height,i)),n.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+r,a,l,e.width,e.height,0,h,T,_))}(!this.needPOTTextures||_(e.width)&&_(e.height))&&e.generateMipMaps&&0===a&&this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null),e.isReady=!0},R.prototype.createRawCubeTextureFromUrl=function(t,r,_,i,E,s,a,n,T=null,h=null,l=e.TEXTURE_TRILINEAR_SAMPLINGMODE,R=!1){const u=this._gl,o=this.createRawCubeTexture(null,_,i,E,!s,R,l,null);r?.addPendingData(o),o.url=t,o.isReady=!1,this._internalTexturesCache.push(o);const A=e=>{const t=o.width,_=a(e);if(_){if(n){const e=this._getWebGLTextureType(E);let r=this._getInternalFormat(i);const s=this._getRGBABufferInternalSizedFormat(E);let a=!1;r===u.RGB&&(r=u.RGBA,a=!0),this._bindTextureDirectly(u.TEXTURE_CUBE_MAP,o,!0),this._unpackFlipY(!1);const T=n(_);for(let _=0;_<T.length;_++){const i=t>>_;for(let t=0;t<6;t++){let n=T[_][t];a&&(n=N(n,i,i,E)),u.texImage2D(t,_,s,i,i,0,r,e,n)}}this._bindTextureDirectly(u.TEXTURE_CUBE_MAP,null)}else this.updateRawCubeTexture(o,_,i,E,R);o.isReady=!0,r?.removePendingData(o),o.onLoadedObservable.notifyObservers(o),o.onLoadedObservable.clear(),T&&T()}};return this._loadFile(t,(e=>{A(e)}),void 0,r?.offlineProvider,!0,((e,t)=>{r?.removePendingData(o),h&&e&&h(e.status+" "+e.statusText,t)})),o},R.prototype.createRawTexture2DArray=F(!1),R.prototype.createRawTexture3D=F(!0),R.prototype.updateRawTexture2DArray=I(!1),R.prototype.updateRawTexture3D=I(!0),R.prototype._readTexturePixelsSync=function(e,t,r,_=-1,E=0,s=null,a=!0,n=!1,T=0,h=0){const l=this._gl;if(!l)throw new Error("Engine does not have gl rendering context.");if(!this._dummyFramebuffer){const e=l.createFramebuffer();if(!e)throw new Error("Unable to create dummy framebuffer");this._dummyFramebuffer=e}l.bindFramebuffer(l.FRAMEBUFFER,this._dummyFramebuffer),_>-1?l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,l.TEXTURE_CUBE_MAP_POSITIVE_X+_,e._hardwareTexture?.underlyingResource,E):l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,l.TEXTURE_2D,e._hardwareTexture?.underlyingResource,E);let R=void 0!==e.type?this._getWebGLTextureType(e.type):l.UNSIGNED_BYTE;if(n)s||(s=i(e.type,4*t*r));else if(R===l.UNSIGNED_BYTE)s||(s=new Uint8Array(4*t*r)),R=l.UNSIGNED_BYTE;else s||(s=new Float32Array(4*t*r)),R=l.FLOAT;return a&&this.flushFramebuffer(),l.readPixels(T,h,t,r,l.RGBA,R,s),l.bindFramebuffer(l.FRAMEBUFFER,this._currentFramebuffer),s},R.prototype._readTexturePixels=function(e,t,r,_=-1,i=0,E=null,s=!0,a=!1,n=0,T=0){return Promise.resolve(this._readTexturePixelsSync(e,t,r,_,i,E,s,a,n,T))},R.prototype.updateDynamicIndexBuffer=function(e,t,r=0){let _;this._currentBoundBuffer[this._gl.ELEMENT_ARRAY_BUFFER]=null,this.bindIndexBuffer(e),_=e.is32Bits?t instanceof Uint32Array?t:new Uint32Array(t):t instanceof Uint16Array?t:new Uint16Array(t),this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER,_,this._gl.DYNAMIC_DRAW),this._resetIndexBufferBinding()},R.prototype.updateDynamicVertexBuffer=function(e,t,r,_){this.bindArrayBuffer(e),void 0===r&&(r=0);const i=t.byteLength||t.length;void 0===_||_>=i&&0===r?t instanceof Array?this._gl.bufferSubData(this._gl.ARRAY_BUFFER,r,new Float32Array(t)):this._gl.bufferSubData(this._gl.ARRAY_BUFFER,r,t):t instanceof Array?this._gl.bufferSubData(this._gl.ARRAY_BUFFER,0,new Float32Array(t).subarray(r,r+_)):(t=t instanceof ArrayBuffer?new Uint8Array(t,r,_):new Uint8Array(t.buffer,t.byteOffset+r,_),this._gl.bufferSubData(this._gl.ARRAY_BUFFER,0,t)),this._resetVertexBufferBinding()},R.prototype._createDepthStencilCubeTexture=function(e,_){const i=new t(this,12);if(i.isCube=!0,1===this.webGLVersion)return r.Error("Depth cube texture is not supported by WebGL 1."),i;const E={bilinearFiltering:!1,comparisonFunction:0,generateStencil:!1,..._},s=this._gl;this._bindTextureDirectly(s.TEXTURE_CUBE_MAP,i,!0),this._setupDepthStencilTexture(i,e,E.bilinearFiltering,E.comparisonFunction);for(let t=0;t<6;t++)E.generateStencil?s.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,s.DEPTH24_STENCIL8,e,e,0,s.DEPTH_STENCIL,s.UNSIGNED_INT_24_8,null):s.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,s.DEPTH_COMPONENT24,e,e,0,s.DEPTH_COMPONENT,s.UNSIGNED_INT,null);return this._bindTextureDirectly(s.TEXTURE_CUBE_MAP,null),this._internalTexturesCache.push(i),i},R.prototype._setCubeMapTextureParams=function(t,r,_){const i=this._gl;i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_MAG_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_MIN_FILTER,r?i.LINEAR_MIPMAP_LINEAR:i.LINEAR),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),t.samplingMode=r?e.TEXTURE_TRILINEAR_SAMPLINGMODE:e.TEXTURE_LINEAR_LINEAR,r&&this.getCaps().textureMaxLevel&&void 0!==_&&_>0&&(i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_MAX_LEVEL,_),t._maxLodLevel=_),this._bindTextureDirectly(i.TEXTURE_CUBE_MAP,null)},R.prototype.createCubeTexture=function(e,t,_,i,s=null,a=null,n,T=null,h=!1,l=0,R=0,u=null,o,A=!1,f=null){const c=this._gl;return this.createCubeTextureBase(e,t,_,!!i,s,a,n,T,h,l,R,u,(e=>this._bindTextureDirectly(c.TEXTURE_CUBE_MAP,e,!0)),((e,t)=>{const _=this.needPOTTextures?E(t[0].width,this._caps.maxCubemapTextureSize):t[0].width,a=_,T=[c.TEXTURE_CUBE_MAP_POSITIVE_X,c.TEXTURE_CUBE_MAP_POSITIVE_Y,c.TEXTURE_CUBE_MAP_POSITIVE_Z,c.TEXTURE_CUBE_MAP_NEGATIVE_X,c.TEXTURE_CUBE_MAP_NEGATIVE_Y,c.TEXTURE_CUBE_MAP_NEGATIVE_Z];this._bindTextureDirectly(c.TEXTURE_CUBE_MAP,e,!0),this._unpackFlipY(!1);const h=n?this._getInternalFormat(n,e._useSRGBBuffer):e._useSRGBBuffer?this._glSRGBExtensionValues.SRGB8_ALPHA8:c.RGBA;let l=n?this._getInternalFormat(n):c.RGBA;e._useSRGBBuffer&&1===this.webGLVersion&&(l=h);for(let e=0;e<T.length;e++)if(t[e].width!==_||t[e].height!==a){if(this._prepareWorkingCanvas(),!this._workingCanvas||!this._workingContext)return void r.Warn("Cannot create canvas to resize texture.");this._workingCanvas.width=_,this._workingCanvas.height=a,this._workingContext.drawImage(t[e],0,0,t[e].width,t[e].height,0,0,_,a),c.texImage2D(T[e],0,h,l,c.UNSIGNED_BYTE,this._workingCanvas)}else c.texImage2D(T[e],0,h,l,c.UNSIGNED_BYTE,t[e]);i||c.generateMipmap(c.TEXTURE_CUBE_MAP),this._setCubeMapTextureParams(e,!i),e.width=_,e.height=a,e.isReady=!0,n&&(e.format=n),e.onLoadedObservable.notifyObservers(e),e.onLoadedObservable.clear(),s&&s()}),!!A,f)},R.prototype.generateMipMapsForCubemap=function(e,t=!0){if(e.generateMipMaps){const r=this._gl;this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,e,!0),r.generateMipmap(r.TEXTURE_CUBE_MAP),t&&this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,null)}};class D extends A{setDepthStencilTexture(e,t=!0){if(super.setDepthStencilTexture(e,t),!e)return;const r=this._engine,_=this._context,i=e._hardwareTexture;if(i&&e._autoMSAAManagement&&this._MSAAFramebuffer){const t=r._currentFramebuffer;r._bindUnboundFramebuffer(this._MSAAFramebuffer),_.framebufferRenderbuffer(_.FRAMEBUFFER,s(e.format)?_.DEPTH_STENCIL_ATTACHMENT:_.DEPTH_ATTACHMENT,_.RENDERBUFFER,i.getMSAARenderBuffer()),r._bindUnboundFramebuffer(t)}}constructor(e,t,r,_,i){super(e,t,r,_),this._framebuffer=null,this._depthStencilBuffer=null,this._MSAAFramebuffer=null,this._colorTextureArray=null,this._depthStencilTextureArray=null,this._disposeOnlyFramebuffers=!1,this._currentLOD=0,this._context=i}_cloneRenderTargetWrapper(){let e=null;return this._colorTextureArray&&this._depthStencilTextureArray?(e=this._engine.createMultiviewRenderTargetTexture(this.width,this.height),e.texture.isReady=!0):e=super._cloneRenderTargetWrapper(),e}_swapRenderTargetWrapper(e){super._swapRenderTargetWrapper(e),e._framebuffer=this._framebuffer,e._depthStencilBuffer=this._depthStencilBuffer,e._MSAAFramebuffer=this._MSAAFramebuffer,e._colorTextureArray=this._colorTextureArray,e._depthStencilTextureArray=this._depthStencilTextureArray,this._framebuffer=this._depthStencilBuffer=this._MSAAFramebuffer=this._colorTextureArray=this._depthStencilTextureArray=null}createDepthStencilTexture(t=0,r=!0,_=!1,i=1,E=e.TEXTUREFORMAT_DEPTH32_FLOAT,s){if(this._depthStencilBuffer){const e=this._engine,t=e._currentFramebuffer,r=this._context;e._bindUnboundFramebuffer(this._framebuffer),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_STENCIL_ATTACHMENT,r.RENDERBUFFER,null),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.RENDERBUFFER,null),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.STENCIL_ATTACHMENT,r.RENDERBUFFER,null),e._bindUnboundFramebuffer(t),r.deleteRenderbuffer(this._depthStencilBuffer),this._depthStencilBuffer=null}return super.createDepthStencilTexture(t,r,_,i,E,s)}shareDepth(e){super.shareDepth(e);const t=this._context,r=this._depthStencilBuffer,_=e._MSAAFramebuffer||e._framebuffer,i=this._engine;e._depthStencilBuffer&&e._depthStencilBuffer!==r&&t.deleteRenderbuffer(e._depthStencilBuffer),e._depthStencilBuffer=r;const E=e._generateStencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;i._bindUnboundFramebuffer(_),t.framebufferRenderbuffer(t.FRAMEBUFFER,E,t.RENDERBUFFER,r),i._bindUnboundFramebuffer(null)}_bindTextureRenderTarget(e,t=0,r,_=0){const i=e._hardwareTexture;if(!i)return;const E=this._framebuffer,s=this._engine,a=s._currentFramebuffer;let n;if(s._bindUnboundFramebuffer(E),s.webGLVersion>1){const E=this._context;n=E["COLOR_ATTACHMENT"+t],e.is2DArray||e.is3D?(r=r??this.layerIndices?.[t]??0,E.framebufferTextureLayer(E.FRAMEBUFFER,n,i.underlyingResource,_,r)):e.isCube?(r=r??this.faceIndices?.[t]??0,E.framebufferTexture2D(E.FRAMEBUFFER,n,E.TEXTURE_CUBE_MAP_POSITIVE_X+r,i.underlyingResource,_)):E.framebufferTexture2D(E.FRAMEBUFFER,n,E.TEXTURE_2D,i.underlyingResource,_)}else{const e=this._context;n=e["COLOR_ATTACHMENT"+t+"_WEBGL"];const E=void 0!==r?e.TEXTURE_CUBE_MAP_POSITIVE_X+r:e.TEXTURE_2D;e.framebufferTexture2D(e.FRAMEBUFFER,n,E,i.underlyingResource,_)}if(e._autoMSAAManagement&&this._MSAAFramebuffer){const e=this._context;s._bindUnboundFramebuffer(this._MSAAFramebuffer),e.framebufferRenderbuffer(e.FRAMEBUFFER,n,e.RENDERBUFFER,i.getMSAARenderBuffer())}s._bindUnboundFramebuffer(a)}setTexture(e,t=0,r=!0){super.setTexture(e,t,r),this._bindTextureRenderTarget(e,t)}setLayerAndFaceIndices(e,t){if(super.setLayerAndFaceIndices(e,t),!this.textures||!this.layerIndices||!this.faceIndices)return;const r=this._attachments?.length??this.textures.length;for(let e=0;e<r;e++){const t=this.textures[e];t&&(t.is2DArray||t.is3D?this._bindTextureRenderTarget(t,e,this.layerIndices[e]):t.isCube?this._bindTextureRenderTarget(t,e,this.faceIndices[e]):this._bindTextureRenderTarget(t,e))}}setLayerAndFaceIndex(e=0,t,r){if(super.setLayerAndFaceIndex(e,t,r),!this.textures||!this.layerIndices||!this.faceIndices)return;const _=this.textures[e];_.is2DArray||_.is3D?this._bindTextureRenderTarget(this.textures[e],e,this.layerIndices[e]):_.isCube&&this._bindTextureRenderTarget(this.textures[e],e,this.faceIndices[e])}resolveMSAATextures(){const e=this._engine,t=e._currentFramebuffer;e._bindUnboundFramebuffer(this._MSAAFramebuffer),super.resolveMSAATextures(),e._bindUnboundFramebuffer(t)}dispose(e=this._disposeOnlyFramebuffers){const t=this._context;e||(this._colorTextureArray&&(this._context.deleteTexture(this._colorTextureArray),this._colorTextureArray=null),this._depthStencilTextureArray&&(this._context.deleteTexture(this._depthStencilTextureArray),this._depthStencilTextureArray=null)),this._framebuffer&&(t.deleteFramebuffer(this._framebuffer),this._framebuffer=null),this._depthStencilBuffer&&(t.deleteRenderbuffer(this._depthStencilBuffer),this._depthStencilBuffer=null),this._MSAAFramebuffer&&(t.deleteFramebuffer(this._MSAAFramebuffer),this._MSAAFramebuffer=null),super.dispose(e)}}R.prototype._createHardwareRenderTargetWrapper=function(e,t,r){const _=new D(e,t,r,this,this._gl);return this._renderTargetWrapperCache.push(_),_},R.prototype.createRenderTargetTexture=function(e,t){const r=this._createHardwareRenderTargetWrapper(!1,!1,e);let _,i,E=!0,s=!1,a=!1,n=1;void 0!==t&&"object"==typeof t&&(E=t.generateDepthBuffer??!0,s=!!t.generateStencilBuffer,a=!!t.noColorAttachment,_=t.colorAttachment,n=t.samples??1,i=t.label);const T=_||(a?null:this._createInternalTexture(e,t,!0,5)),h=e.width||e,l=e.height||e,R=this._currentFramebuffer,u=this._gl,o=u.createFramebuffer();if(this._bindUnboundFramebuffer(o),r._depthStencilBuffer=this._setupFramebufferDepthAttachments(s,E,h,l),!T||T.is2DArray||T.is3D||u.framebufferTexture2D(u.FRAMEBUFFER,u.COLOR_ATTACHMENT0,u.TEXTURE_2D,T._hardwareTexture.underlyingResource,0),this._bindUnboundFramebuffer(R),r.label=i??"RenderTargetWrapper",r._framebuffer=o,r._generateDepthBuffer=E,r._generateStencilBuffer=s,r.setTextures(T),_){if(r._samples=_.samples,_.samples>1){const e=_._hardwareTexture.getMSAARenderBuffer(0);r._MSAAFramebuffer=u.createFramebuffer(),this._bindUnboundFramebuffer(r._MSAAFramebuffer),u.framebufferRenderbuffer(u.FRAMEBUFFER,u.COLOR_ATTACHMENT0,u.RENDERBUFFER,e),this._bindUnboundFramebuffer(null)}}else this.updateRenderTargetTextureSampleCount(r,n);return r},R.prototype._createDepthStencilTexture=function(_,i,E){const s=this._gl,a=_.layers||0,n=_.depth||0;let T=s.TEXTURE_2D;0!==a?T=s.TEXTURE_2D_ARRAY:0!==n&&(T=s.TEXTURE_3D);const h=new t(this,12);if(h.label=i.label,!this._caps.depthTextureExtension)return r.Error("Depth texture is not supported by your browser or hardware."),h;const l={bilinearFiltering:!1,comparisonFunction:0,generateStencil:!1,...i};if(this._bindTextureDirectly(T,h,!0),this._setupDepthStencilTexture(h,_,0!==l.comparisonFunction&&l.bilinearFiltering,l.comparisonFunction,l.samples),void 0!==l.depthTextureFormat){if(l.depthTextureFormat!==e.TEXTUREFORMAT_DEPTH16&&l.depthTextureFormat!==e.TEXTUREFORMAT_DEPTH24&&l.depthTextureFormat!==e.TEXTUREFORMAT_DEPTH24UNORM_STENCIL8&&l.depthTextureFormat!==e.TEXTUREFORMAT_DEPTH24_STENCIL8&&l.depthTextureFormat!==e.TEXTUREFORMAT_DEPTH32_FLOAT&&l.depthTextureFormat!==e.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8)return r.Error(`Depth texture ${l.depthTextureFormat} format is not supported.`),h;h.format=l.depthTextureFormat}else h.format=l.generateStencil?e.TEXTUREFORMAT_DEPTH24_STENCIL8:e.TEXTUREFORMAT_DEPTH24;const R=h.format===e.TEXTUREFORMAT_DEPTH24UNORM_STENCIL8||h.format===e.TEXTUREFORMAT_DEPTH24_STENCIL8||h.format===e.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8,u=this._getWebGLTextureTypeFromDepthTextureFormat(h.format),o=R?s.DEPTH_STENCIL:s.DEPTH_COMPONENT,A=this._getInternalFormatFromDepthTextureFormat(h.format,!0,R);return h.is2DArray?s.texImage3D(T,0,A,h.width,h.height,a,0,o,u,null):h.is3D?s.texImage3D(T,0,A,h.width,h.height,n,0,o,u,null):s.texImage2D(T,0,A,h.width,h.height,0,o,u,null),this._bindTextureDirectly(T,null),this._internalTexturesCache.push(h),E._depthStencilBuffer&&(s.deleteRenderbuffer(E._depthStencilBuffer),E._depthStencilBuffer=null),this._bindUnboundFramebuffer(E._MSAAFramebuffer??E._framebuffer),E._generateStencilBuffer=R,E._depthStencilTextureWithStencil=R,E._depthStencilBuffer=this._setupFramebufferDepthAttachments(E._generateStencilBuffer,E._generateDepthBuffer,E.width,E.height,E.samples,h.format),this._bindUnboundFramebuffer(null),h},R.prototype.updateRenderTargetTextureSampleCount=function(e,t){if(this.webGLVersion<2||!e)return 1;if(e.samples===t)return t;const r=this._gl;t=Math.min(t,this.getCaps().maxMSAASamples),e._depthStencilBuffer&&(r.deleteRenderbuffer(e._depthStencilBuffer),e._depthStencilBuffer=null),e._MSAAFramebuffer&&(r.deleteFramebuffer(e._MSAAFramebuffer),e._MSAAFramebuffer=null);const _=e.texture?._hardwareTexture;if(_?.releaseMSAARenderBuffers(),e.texture&&t>1&&"function"==typeof r.renderbufferStorageMultisample){const i=r.createFramebuffer();if(!i)throw new Error("Unable to create multi sampled framebuffer");e._MSAAFramebuffer=i,this._bindUnboundFramebuffer(e._MSAAFramebuffer);const E=this._createRenderBuffer(e.texture.width,e.texture.height,t,-1,this._getRGBABufferInternalSizedFormat(e.texture.type,e.texture.format,e.texture._useSRGBBuffer),r.COLOR_ATTACHMENT0,!1);if(!E)throw new Error("Unable to create multi sampled framebuffer");_?.addMSAARenderBuffer(E)}this._bindUnboundFramebuffer(e._MSAAFramebuffer??e._framebuffer),e.texture&&(e.texture.samples=t),e._samples=t;const i=e._depthStencilTexture?e._depthStencilTexture.format:void 0;return e._depthStencilBuffer=this._setupFramebufferDepthAttachments(e._generateStencilBuffer,e._generateDepthBuffer,e.width,e.height,t,i),this._bindUnboundFramebuffer(null),t},R.prototype._setupDepthStencilTexture=function(t,r,_,i,E=1){const s=r.width??r,a=r.height??r,n=r.layers||0,T=r.depth||0;t.baseWidth=s,t.baseHeight=a,t.width=s,t.height=a,t.is2DArray=n>0,t.depth=n||T,t.isReady=!0,t.samples=E,t.generateMipMaps=!1,t.samplingMode=_?e.TEXTURE_BILINEAR_SAMPLINGMODE:e.TEXTURE_NEAREST_SAMPLINGMODE,t.type=e.TEXTURETYPE_UNSIGNED_BYTE,t._comparisonFunction=i;const h=this._gl,l=this._getTextureTarget(t),R=this._getSamplingParameters(t.samplingMode,!1);h.texParameteri(l,h.TEXTURE_MAG_FILTER,R.mag),h.texParameteri(l,h.TEXTURE_MIN_FILTER,R.min),h.texParameteri(l,h.TEXTURE_WRAP_S,h.CLAMP_TO_EDGE),h.texParameteri(l,h.TEXTURE_WRAP_T,h.CLAMP_TO_EDGE),this.webGLVersion>1&&(0===i?(h.texParameteri(l,h.TEXTURE_COMPARE_FUNC,e.LEQUAL),h.texParameteri(l,h.TEXTURE_COMPARE_MODE,h.NONE)):(h.texParameteri(l,h.TEXTURE_COMPARE_FUNC,i),h.texParameteri(l,h.TEXTURE_COMPARE_MODE,h.COMPARE_REF_TO_TEXTURE)))},R.prototype.setDepthStencilTexture=function(e,t,r,_){void 0!==e&&(t&&(this._boundUniforms[e]=t),r&&r.depthStencilTexture?this._setTexture(e,r,!1,!0,_):this._setTexture(e,null,void 0,void 0,_))},R.prototype.createRenderTargetCubeTexture=function(_,i){const E=this._createHardwareRenderTargetWrapper(!1,!0,_),s={generateMipMaps:!0,generateDepthBuffer:!0,generateStencilBuffer:!1,type:e.TEXTURETYPE_UNSIGNED_BYTE,samplingMode:e.TEXTURE_TRILINEAR_SAMPLINGMODE,format:e.TEXTUREFORMAT_RGBA,...i};s.generateStencilBuffer=s.generateDepthBuffer&&s.generateStencilBuffer,(s.type!==e.TEXTURETYPE_FLOAT||this._caps.textureFloatLinearFiltering)&&(s.type!==e.TEXTURETYPE_HALF_FLOAT||this._caps.textureHalfFloatLinearFiltering)||(s.samplingMode=e.TEXTURE_NEAREST_SAMPLINGMODE);const a=this._gl,n=new t(this,5);this._bindTextureDirectly(a.TEXTURE_CUBE_MAP,n,!0);const T=this._getSamplingParameters(s.samplingMode,s.generateMipMaps);s.type!==e.TEXTURETYPE_FLOAT||this._caps.textureFloat||(s.type=e.TEXTURETYPE_UNSIGNED_BYTE,r.Warn("Float textures are not supported. Cube render target forced to TEXTURETYPE_UNESIGNED_BYTE type")),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_MAG_FILTER,T.mag),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_MIN_FILTER,T.min),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE);for(let e=0;e<6;e++)a.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,this._getRGBABufferInternalSizedFormat(s.type,s.format),_,_,0,this._getInternalFormat(s.format),this._getWebGLTextureType(s.type),null);const h=a.createFramebuffer();return this._bindUnboundFramebuffer(h),E._depthStencilBuffer=this._setupFramebufferDepthAttachments(s.generateStencilBuffer,s.generateDepthBuffer,_,_),s.generateMipMaps&&a.generateMipmap(a.TEXTURE_CUBE_MAP),this._bindTextureDirectly(a.TEXTURE_CUBE_MAP,null),this._bindUnboundFramebuffer(null),E._framebuffer=h,E._generateDepthBuffer=s.generateDepthBuffer,E._generateStencilBuffer=s.generateStencilBuffer,n.width=_,n.height=_,n.isReady=!0,n.isCube=!0,n.samples=1,n.generateMipMaps=s.generateMipMaps,n.samplingMode=s.samplingMode,n.type=s.type,n.format=s.format,this._internalTexturesCache.push(n),E.setTextures(n),E},R.prototype.createPrefilteredCubeTexture=function(_,i,E,s,T=null,h=null,l,R=null,u=!0){return this.createCubeTexture(_,i,null,!1,(async _=>{if(!_)return void(T&&T(null));const h=_.texture;if(u?_.info.sphericalPolynomial&&(h._sphericalPolynomial=_.info.sphericalPolynomial):h._sphericalPolynomial=new a,h._source=9,this.getCaps().textureLOD)return void(T&&T(h));const l=this._gl,R=_.width;if(!R)return;const{DDSTools:o}=await import("./dds-BCLtHKIP.esm.min.js"),A=[];for(let a=0;a<3;a++){const T=1-a/2,u=s,f=Math.log2(R)*E+s,c=u+(f-u)*T,d=Math.round(Math.min(Math.max(c,0),f)),U=new t(this,2);if(U.type=h.type,U.format=h.format,U.width=Math.pow(2,Math.max(Math.log2(R)-d,0)),U.height=U.width,U.isCube=!0,U._cachedWrapU=e.TEXTURE_CLAMP_ADDRESSMODE,U._cachedWrapV=e.TEXTURE_CLAMP_ADDRESSMODE,this._bindTextureDirectly(l.TEXTURE_CUBE_MAP,U,!0),U.samplingMode=e.TEXTURE_LINEAR_LINEAR,l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_MAG_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_MIN_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),_.isDDS){const e=_.info,t=_.data;this._unpackFlipY(e.isCompressed),o.UploadDDSLevels(this,U,t,e,!0,6,d)}else r.Warn("DDS is the only prefiltered cube map supported so far.");this._bindTextureDirectly(l.TEXTURE_CUBE_MAP,null);const p=new n(i);p._isCube=!0,p._texture=U,U.isReady=!0,A.push(p)}h._lodTextureHigh=A[2],h._lodTextureMid=A[1],h._lodTextureLow=A[0],T&&T(h)}),h,l,R,u,E,s)},R.prototype.createUniformBuffer=function(e,t){const r=this._gl.createBuffer();if(!r)throw new Error("Unable to create uniform buffer");const _=new u(r);return this.bindUniformBuffer(_),e instanceof Float32Array?this._gl.bufferData(this._gl.UNIFORM_BUFFER,e,this._gl.STATIC_DRAW):this._gl.bufferData(this._gl.UNIFORM_BUFFER,new Float32Array(e),this._gl.STATIC_DRAW),this.bindUniformBuffer(null),_.references=1,_},R.prototype.createDynamicUniformBuffer=function(e,t){const r=this._gl.createBuffer();if(!r)throw new Error("Unable to create dynamic uniform buffer");const _=new u(r);return this.bindUniformBuffer(_),e instanceof Float32Array?this._gl.bufferData(this._gl.UNIFORM_BUFFER,e,this._gl.DYNAMIC_DRAW):this._gl.bufferData(this._gl.UNIFORM_BUFFER,new Float32Array(e),this._gl.DYNAMIC_DRAW),this.bindUniformBuffer(null),_.references=1,_},R.prototype.updateUniformBuffer=function(e,t,r,_){this.bindUniformBuffer(e),void 0===r&&(r=0),void 0===_?t instanceof Float32Array?this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,r,t):this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,r,new Float32Array(t)):t instanceof Float32Array?this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,0,t.subarray(r,r+_)):this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,0,new Float32Array(t).subarray(r,r+_)),this.bindUniformBuffer(null)},R.prototype.bindUniformBuffer=function(e){this._gl.bindBuffer(this._gl.UNIFORM_BUFFER,e?e.underlyingResource:null)},R.prototype.bindUniformBufferBase=function(e,t,r){this._gl.bindBufferBase(this._gl.UNIFORM_BUFFER,t,e?e.underlyingResource:null)},R.prototype.bindUniformBlock=function(e,t,r){const _=e.program,i=this._gl.getUniformBlockIndex(_,t);4294967295!==i&&this._gl.uniformBlockBinding(_,i,r)};class O extends R{static get NpmPackage(){return T.NpmPackage}static get Version(){return T.Version}static get Instances(){return h.Instances}static get LastCreatedEngine(){return h.LastCreatedEngine}static get LastCreatedScene(){return h.LastCreatedScene}static DefaultLoadingScreenFactory(e){return T.DefaultLoadingScreenFactory(e)}get _supportsHardwareTextureRescaling(){return!!O._RescalePostProcessFactory}_measureFps(){this._performanceMonitor.sampleFrame(),this._fps=this._performanceMonitor.averageFPS,this._deltaTime=this._performanceMonitor.instantaneousFrameTime||0}get performanceMonitor(){return this._performanceMonitor}constructor(e,t,r,_=!1){super(e,t,r,_),this.customAnimationFrameRequester=null,this._performanceMonitor=new f,this._drawCalls=new l,e&&(this._features.supportRenderPasses=!0,r=this._creationOptions)}_initGLContext(){super._initGLContext(),this._rescalePostProcess=null}_sharedInit(e){super._sharedInit(e),c(this,e,this._creationOptions)}resizeImageBitmap(e,t,r){return d(this,e,t,r)}_createImageBitmapFromSource(e,t){return U(this,e,t)}switchFullscreen(e){this.isFullscreen?this.exitFullscreen():this.enterFullscreen(e)}enterFullscreen(e){this.isFullscreen||(this._pointerLockRequested=e,this._renderingCanvas&&p(this._renderingCanvas))}exitFullscreen(){this.isFullscreen&&g()}setDitheringState(e){e?this._gl.enable(this._gl.DITHER):this._gl.disable(this._gl.DITHER)}setRasterizerState(e){e?this._gl.disable(this._gl.RASTERIZER_DISCARD):this._gl.enable(this._gl.RASTERIZER_DISCARD)}setDirectViewport(e,t,r,_){const i=this._cachedViewport;return this._cachedViewport=null,this._viewport(e,t,r,_),i}scissorClear(e,t,r,_,i){this.enableScissor(e,t,r,_),this.clear(i,!0,!0,!0),this.disableScissor()}enableScissor(e,t,r,_){const i=this._gl;i.enable(i.SCISSOR_TEST),i.scissor(e,t,r,_)}disableScissor(){const e=this._gl;e.disable(e.SCISSOR_TEST)}_loadFileAsync(e,t,r){return new Promise(((_,i)=>{this._loadFile(e,(e=>{_(e)}),void 0,t,r,((e,t)=>{i(t)}))}))}getVertexShaderSource(e){const t=this._gl.getAttachedShaders(e);return t?this._gl.getShaderSource(t[0]):null}getFragmentShaderSource(e){const t=this._gl.getAttachedShaders(e);return t?this._gl.getShaderSource(t[1]):null}set framebufferDimensionsObject(e){this._framebufferDimensionsObject=e,this._framebufferDimensionsObject&&this.onResizeObservable.notifyObservers(this)}_rebuildBuffers(){for(const e of this.scenes)e.resetCachedMaterial(),e._rebuildGeometries();for(const e of this._virtualScenes)e.resetCachedMaterial(),e._rebuildGeometries();super._rebuildBuffers()}getFontOffset(e){return m(e)}_cancelFrame(){if(this.customAnimationFrameRequester){if(0!==this._frameHandler){this._frameHandler=0;const{cancelAnimationFrame:e}=this.customAnimationFrameRequester;e&&e(this.customAnimationFrameRequester.requestID)}}else super._cancelFrame()}_renderLoop(){if(this._frameHandler=0,!this._contextWasLost){let e=!0;(this.isDisposed||!this.renderEvenInBackground&&this._windowIsBackground)&&(e=!1),e&&(this.beginFrame(),this._renderViews()||this._renderFrame(),this.endFrame())}this._activeRenderLoops.length>0&&0===this._frameHandler&&(this.customAnimationFrameRequester?(this.customAnimationFrameRequester.requestID=this._queueNewFrame(this.customAnimationFrameRequester.renderFunction||this._boundRenderFunction,this.customAnimationFrameRequester),this._frameHandler=this.customAnimationFrameRequester.requestID):this._frameHandler=this._queueNewFrame(this._boundRenderFunction,this.getHostWindow()))}enterPointerlock(){this._renderingCanvas&&M(this._renderingCanvas)}exitPointerlock(){S()}beginFrame(){this._measureFps(),super.beginFrame()}_deletePipelineContext(e){const t=e;t&&t.program&&t.transformFeedback&&(this.deleteTransformFeedback(t.transformFeedback),t.transformFeedback=null),super._deletePipelineContext(e)}createShaderProgram(e,t,r,_,i,E=null){i=i||this._gl,this.onBeforeShaderCompilationObservable.notifyObservers(this);const s=super.createShaderProgram(e,t,r,_,i,E);return this.onAfterShaderCompilationObservable.notifyObservers(this),s}_createShaderProgram(e,t,r,_,i=null){const E=_.createProgram();if(e.program=E,!E)throw new Error("Unable to create program");if(_.attachShader(E,t),_.attachShader(E,r),this.webGLVersion>1&&i){const t=this.createTransformFeedback();this.bindTransformFeedback(t),this.setTranformFeedbackVaryings(E,i),e.transformFeedback=t}return _.linkProgram(E),this.webGLVersion>1&&i&&this.bindTransformFeedback(null),e.context=_,e.vertexShader=t,e.fragmentShader=r,e.isParallelCompiled||this._finalizePipelineContext(e),E}_releaseTexture(e){super._releaseTexture(e)}_releaseRenderTargetWrapper(e){super._releaseRenderTargetWrapper(e),this.scenes.forEach((t=>{t.postProcesses.forEach((t=>{t._outputTexture===e&&(t._outputTexture=null)})),t.cameras.forEach((t=>{t._postProcesses.forEach((t=>{t&&t._outputTexture===e&&(t._outputTexture=null)}))}))}))}_rescaleTexture(t,r,_,i,E){this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,this._gl.LINEAR),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,this._gl.LINEAR),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_S,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_T,this._gl.CLAMP_TO_EDGE);const s=this.createRenderTargetTexture({width:r.width,height:r.height},{generateMipMaps:!1,type:e.TEXTURETYPE_UNSIGNED_INT,samplingMode:e.TEXTURE_BILINEAR_SAMPLINGMODE,generateDepthBuffer:!1,generateStencilBuffer:!1});if(!this._rescalePostProcess&&O._RescalePostProcessFactory&&(this._rescalePostProcess=O._RescalePostProcessFactory(this)),this._rescalePostProcess){this._rescalePostProcess.externalTextureSamplerBinding=!0;const e=()=>{this._rescalePostProcess.onApply=function(e){e._bindTexture("textureSampler",t)};let e=_;e||(e=this.scenes[this.scenes.length-1]),e.postProcessManager.directRender([this._rescalePostProcess],s,!0),this._bindTextureDirectly(this._gl.TEXTURE_2D,r,!0),this._gl.copyTexImage2D(this._gl.TEXTURE_2D,0,i,0,0,r.width,r.height,0),this.unBindFramebuffer(s),s.dispose(),E&&E()},a=this._rescalePostProcess.getEffect();a?a.executeWhenCompiled(e):this._rescalePostProcess.onEffectCreatedObservable.addOnce((t=>{t.executeWhenCompiled(e)}))}}wrapWebGLTexture(r,_=!1,i=e.TEXTURE_TRILINEAR_SAMPLINGMODE,E=0,s=0){const a=new o(r,this._gl),n=new t(this,0,!0);return n._hardwareTexture=a,n.baseWidth=E,n.baseHeight=s,n.width=E,n.height=s,n.isReady=!0,n.useMipMaps=_,this.updateTextureSamplingMode(i,n),n}_uploadImageToTexture(e,t,r=0,_=0){const i=this._gl,E=this._getWebGLTextureType(e.type),s=this._getInternalFormat(e.format),a=this._getRGBABufferInternalSizedFormat(e.type,s),n=e.isCube?i.TEXTURE_CUBE_MAP:i.TEXTURE_2D;this._bindTextureDirectly(n,e,!0),this._unpackFlipY(e.invertY);let T=i.TEXTURE_2D;e.isCube&&(T=i.TEXTURE_CUBE_MAP_POSITIVE_X+r),i.texImage2D(T,_,a,s,E,t),this._bindTextureDirectly(n,null,!0)}updateTextureComparisonFunction(t,_){if(1===this.webGLVersion)return void r.Error("WebGL 1 does not support texture comparison.");const i=this._gl;t.isCube?(this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,t,!0),0===_?(i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_FUNC,e.LEQUAL),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_MODE,i.NONE)):(i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_FUNC,_),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE)),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null)):(this._bindTextureDirectly(this._gl.TEXTURE_2D,t,!0),0===_?(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_FUNC,e.LEQUAL),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_MODE,i.NONE)):(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_FUNC,_),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE)),this._bindTextureDirectly(this._gl.TEXTURE_2D,null)),t._comparisonFunction=_}createInstancesBuffer(e){const t=this._gl.createBuffer();if(!t)throw new Error("Unable to create instance buffer");const r=new u(t);return r.capacity=e,this.bindArrayBuffer(r),this._gl.bufferData(this._gl.ARRAY_BUFFER,e,this._gl.DYNAMIC_DRAW),r.references=1,r}deleteInstancesBuffer(e){this._gl.deleteBuffer(e)}_clientWaitAsync(e,t=0,r=10){const _=this._gl;return new Promise(((i,E)=>{const s=()=>{const a=_.clientWaitSync(e,t,0);a!=_.WAIT_FAILED?a!=_.TIMEOUT_EXPIRED?i():setTimeout(s,r):E()};s()}))}_readPixelsAsync(e,t,r,_,i,E,s){if(this._webGLVersion<2)throw new Error("_readPixelsAsync only work on WebGL2+");const a=this._gl,n=a.createBuffer();a.bindBuffer(a.PIXEL_PACK_BUFFER,n),a.bufferData(a.PIXEL_PACK_BUFFER,s.byteLength,a.STREAM_READ),a.readPixels(e,t,r,_,i,E,0),a.bindBuffer(a.PIXEL_PACK_BUFFER,null);const T=a.fenceSync(a.SYNC_GPU_COMMANDS_COMPLETE,0);return T?(a.flush(),this._clientWaitAsync(T,0,10).then((()=>(a.deleteSync(T),a.bindBuffer(a.PIXEL_PACK_BUFFER,n),a.getBufferSubData(a.PIXEL_PACK_BUFFER,0,s),a.bindBuffer(a.PIXEL_PACK_BUFFER,null),a.deleteBuffer(n),s)))):null}dispose(){this.hideLoadingUI(),this._rescalePostProcess&&this._rescalePostProcess.dispose(),P(this,this._renderingCanvas),super.dispose()}}O.ALPHA_DISABLE=e.ALPHA_DISABLE,O.ALPHA_ADD=e.ALPHA_ADD,O.ALPHA_COMBINE=e.ALPHA_COMBINE,O.ALPHA_SUBTRACT=e.ALPHA_SUBTRACT,O.ALPHA_MULTIPLY=e.ALPHA_MULTIPLY,O.ALPHA_MAXIMIZED=e.ALPHA_MAXIMIZED,O.ALPHA_ONEONE=e.ALPHA_ONEONE,O.ALPHA_PREMULTIPLIED=e.ALPHA_PREMULTIPLIED,O.ALPHA_PREMULTIPLIED_PORTERDUFF=e.ALPHA_PREMULTIPLIED_PORTERDUFF,O.ALPHA_INTERPOLATE=e.ALPHA_INTERPOLATE,O.ALPHA_SCREENMODE=e.ALPHA_SCREENMODE,O.DELAYLOADSTATE_NONE=e.DELAYLOADSTATE_NONE,O.DELAYLOADSTATE_LOADED=e.DELAYLOADSTATE_LOADED,O.DELAYLOADSTATE_LOADING=e.DELAYLOADSTATE_LOADING,O.DELAYLOADSTATE_NOTLOADED=e.DELAYLOADSTATE_NOTLOADED,O.NEVER=e.NEVER,O.ALWAYS=e.ALWAYS,O.LESS=e.LESS,O.EQUAL=e.EQUAL,O.LEQUAL=e.LEQUAL,O.GREATER=e.GREATER,O.GEQUAL=e.GEQUAL,O.NOTEQUAL=e.NOTEQUAL,O.KEEP=e.KEEP,O.REPLACE=e.REPLACE,O.INCR=e.INCR,O.DECR=e.DECR,O.INVERT=e.INVERT,O.INCR_WRAP=e.INCR_WRAP,O.DECR_WRAP=e.DECR_WRAP,O.TEXTURE_CLAMP_ADDRESSMODE=e.TEXTURE_CLAMP_ADDRESSMODE,O.TEXTURE_WRAP_ADDRESSMODE=e.TEXTURE_WRAP_ADDRESSMODE,O.TEXTURE_MIRROR_ADDRESSMODE=e.TEXTURE_MIRROR_ADDRESSMODE,O.TEXTUREFORMAT_ALPHA=e.TEXTUREFORMAT_ALPHA,O.TEXTUREFORMAT_LUMINANCE=e.TEXTUREFORMAT_LUMINANCE,O.TEXTUREFORMAT_LUMINANCE_ALPHA=e.TEXTUREFORMAT_LUMINANCE_ALPHA,O.TEXTUREFORMAT_RGB=e.TEXTUREFORMAT_RGB,O.TEXTUREFORMAT_RGBA=e.TEXTUREFORMAT_RGBA,O.TEXTUREFORMAT_RED=e.TEXTUREFORMAT_RED,O.TEXTUREFORMAT_R=e.TEXTUREFORMAT_R,O.TEXTUREFORMAT_R16_UNORM=e.TEXTUREFORMAT_R16_UNORM,O.TEXTUREFORMAT_RG16_UNORM=e.TEXTUREFORMAT_RG16_UNORM,O.TEXTUREFORMAT_RGB16_UNORM=e.TEXTUREFORMAT_RGB16_UNORM,O.TEXTUREFORMAT_RGBA16_UNORM=e.TEXTUREFORMAT_RGBA16_UNORM,O.TEXTUREFORMAT_R16_SNORM=e.TEXTUREFORMAT_R16_SNORM,O.TEXTUREFORMAT_RG16_SNORM=e.TEXTUREFORMAT_RG16_SNORM,O.TEXTUREFORMAT_RGB16_SNORM=e.TEXTUREFORMAT_RGB16_SNORM,O.TEXTUREFORMAT_RGBA16_SNORM=e.TEXTUREFORMAT_RGBA16_SNORM,O.TEXTUREFORMAT_RG=e.TEXTUREFORMAT_RG,O.TEXTUREFORMAT_RED_INTEGER=e.TEXTUREFORMAT_RED_INTEGER,O.TEXTUREFORMAT_R_INTEGER=e.TEXTUREFORMAT_R_INTEGER,O.TEXTUREFORMAT_RG_INTEGER=e.TEXTUREFORMAT_RG_INTEGER,O.TEXTUREFORMAT_RGB_INTEGER=e.TEXTUREFORMAT_RGB_INTEGER,O.TEXTUREFORMAT_RGBA_INTEGER=e.TEXTUREFORMAT_RGBA_INTEGER,O.TEXTURETYPE_UNSIGNED_BYTE=e.TEXTURETYPE_UNSIGNED_BYTE,O.TEXTURETYPE_UNSIGNED_INT=e.TEXTURETYPE_UNSIGNED_INT,O.TEXTURETYPE_FLOAT=e.TEXTURETYPE_FLOAT,O.TEXTURETYPE_HALF_FLOAT=e.TEXTURETYPE_HALF_FLOAT,O.TEXTURETYPE_BYTE=e.TEXTURETYPE_BYTE,O.TEXTURETYPE_SHORT=e.TEXTURETYPE_SHORT,O.TEXTURETYPE_UNSIGNED_SHORT=e.TEXTURETYPE_UNSIGNED_SHORT,O.TEXTURETYPE_INT=e.TEXTURETYPE_INT,O.TEXTURETYPE_UNSIGNED_INTEGER=e.TEXTURETYPE_UNSIGNED_INTEGER,O.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4=e.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4,O.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1=e.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1,O.TEXTURETYPE_UNSIGNED_SHORT_5_6_5=e.TEXTURETYPE_UNSIGNED_SHORT_5_6_5,O.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV=e.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV,O.TEXTURETYPE_UNSIGNED_INT_24_8=e.TEXTURETYPE_UNSIGNED_INT_24_8,O.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV=e.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV,O.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV=e.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV,O.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV=e.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV,O.TEXTURE_NEAREST_SAMPLINGMODE=e.TEXTURE_NEAREST_SAMPLINGMODE,O.TEXTURE_BILINEAR_SAMPLINGMODE=e.TEXTURE_BILINEAR_SAMPLINGMODE,O.TEXTURE_TRILINEAR_SAMPLINGMODE=e.TEXTURE_TRILINEAR_SAMPLINGMODE,O.TEXTURE_NEAREST_NEAREST_MIPLINEAR=e.TEXTURE_NEAREST_NEAREST_MIPLINEAR,O.TEXTURE_LINEAR_LINEAR_MIPNEAREST=e.TEXTURE_LINEAR_LINEAR_MIPNEAREST,O.TEXTURE_LINEAR_LINEAR_MIPLINEAR=e.TEXTURE_LINEAR_LINEAR_MIPLINEAR,O.TEXTURE_NEAREST_NEAREST_MIPNEAREST=e.TEXTURE_NEAREST_NEAREST_MIPNEAREST,O.TEXTURE_NEAREST_LINEAR_MIPNEAREST=e.TEXTURE_NEAREST_LINEAR_MIPNEAREST,O.TEXTURE_NEAREST_LINEAR_MIPLINEAR=e.TEXTURE_NEAREST_LINEAR_MIPLINEAR,O.TEXTURE_NEAREST_LINEAR=e.TEXTURE_NEAREST_LINEAR,O.TEXTURE_NEAREST_NEAREST=e.TEXTURE_NEAREST_NEAREST,O.TEXTURE_LINEAR_NEAREST_MIPNEAREST=e.TEXTURE_LINEAR_NEAREST_MIPNEAREST,O.TEXTURE_LINEAR_NEAREST_MIPLINEAR=e.TEXTURE_LINEAR_NEAREST_MIPLINEAR,O.TEXTURE_LINEAR_LINEAR=e.TEXTURE_LINEAR_LINEAR,O.TEXTURE_LINEAR_NEAREST=e.TEXTURE_LINEAR_NEAREST,O.TEXTURE_EXPLICIT_MODE=e.TEXTURE_EXPLICIT_MODE,O.TEXTURE_SPHERICAL_MODE=e.TEXTURE_SPHERICAL_MODE,O.TEXTURE_PLANAR_MODE=e.TEXTURE_PLANAR_MODE,O.TEXTURE_CUBIC_MODE=e.TEXTURE_CUBIC_MODE,O.TEXTURE_PROJECTION_MODE=e.TEXTURE_PROJECTION_MODE,O.TEXTURE_SKYBOX_MODE=e.TEXTURE_SKYBOX_MODE,O.TEXTURE_INVCUBIC_MODE=e.TEXTURE_INVCUBIC_MODE,O.TEXTURE_EQUIRECTANGULAR_MODE=e.TEXTURE_EQUIRECTANGULAR_MODE,O.TEXTURE_FIXED_EQUIRECTANGULAR_MODE=e.TEXTURE_FIXED_EQUIRECTANGULAR_MODE,O.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE=e.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE,O.SCALEMODE_FLOOR=e.SCALEMODE_FLOOR,O.SCALEMODE_NEAREST=e.SCALEMODE_NEAREST,O.SCALEMODE_CEILING=e.SCALEMODE_CEILING;export{O as Engine};
2
- //# sourceMappingURL=engine-Bq-FERio.esm.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine-Bq-FERio.esm.min.js","sources":["../../../../../dev/core/dist/Engines/Extensions/engine.rawTexture.js","../../../../../dev/core/dist/Engines/Extensions/engine.alpha.js","../../../../../dev/core/dist/Engines/Extensions/engine.readTexture.js","../../../../../dev/core/dist/Engines/Extensions/engine.dynamicBuffer.js","../../../../../dev/core/dist/Engines/Extensions/engine.cubeTexture.js","../../../../../dev/core/dist/Engines/WebGL/webGLRenderTargetWrapper.js","../../../../../dev/core/dist/Engines/Extensions/engine.renderTarget.js","../../../../../dev/core/dist/Engines/Extensions/engine.renderTargetTexture.js","../../../../../dev/core/dist/Engines/Extensions/engine.renderTargetCube.js","../../../../../dev/core/dist/Engines/Extensions/engine.prefilteredCubeTexture.js","../../../../../dev/core/dist/Engines/Extensions/engine.uniformBuffer.js","../../../../../dev/core/dist/Engines/engine.js"],"sourcesContent":["import { InternalTexture } from \"../../Materials/Textures/internalTexture\";\nimport { Logger } from \"../../Misc/logger\";\nimport { Constants } from \"../constants\";\nimport { ThinEngine } from \"../thinEngine\";\nimport { IsExponentOfTwo } from \"../../Misc/tools.functions\";\nThinEngine.prototype.updateRawTexture = function (texture, data, format, invertY, compression = null, type = Constants.TEXTURETYPE_UNSIGNED_BYTE, useSRGBBuffer = false) {\n if (!texture) {\n return;\n }\n // Babylon's internalSizedFomat but gl's texImage2D internalFormat\n const internalSizedFomat = this._getRGBABufferInternalSizedFormat(type, format, useSRGBBuffer);\n // Babylon's internalFormat but gl's texImage2D format\n const internalFormat = this._getInternalFormat(format);\n const textureType = this._getWebGLTextureType(type);\n this._bindTextureDirectly(this._gl.TEXTURE_2D, texture, true);\n this._unpackFlipY(invertY === undefined ? true : invertY ? true : false);\n if (!this._doNotHandleContextLost) {\n texture._bufferView = data;\n texture.format = format;\n texture.type = type;\n texture.invertY = invertY;\n texture._compression = compression;\n }\n if (texture.width % 4 !== 0) {\n this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT, 1);\n }\n if (compression && data) {\n this._gl.compressedTexImage2D(this._gl.TEXTURE_2D, 0, this.getCaps().s3tc[compression], texture.width, texture.height, 0, data);\n }\n else {\n this._gl.texImage2D(this._gl.TEXTURE_2D, 0, internalSizedFomat, texture.width, texture.height, 0, internalFormat, textureType, data);\n }\n if (texture.generateMipMaps) {\n this._gl.generateMipmap(this._gl.TEXTURE_2D);\n }\n this._bindTextureDirectly(this._gl.TEXTURE_2D, null);\n // this.resetTextureCache();\n texture.isReady = true;\n};\nThinEngine.prototype.createRawTexture = function (data, width, height, format, generateMipMaps, invertY, samplingMode, compression = null, type = Constants.TEXTURETYPE_UNSIGNED_BYTE, \n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ncreationFlags = 0, useSRGBBuffer = false) {\n const texture = new InternalTexture(this, 3 /* InternalTextureSource.Raw */);\n texture.baseWidth = width;\n texture.baseHeight = height;\n texture.width = width;\n texture.height = height;\n texture.format = format;\n texture.generateMipMaps = generateMipMaps;\n texture.samplingMode = samplingMode;\n texture.invertY = invertY;\n texture._compression = compression;\n texture.type = type;\n texture._useSRGBBuffer = this._getUseSRGBBuffer(useSRGBBuffer, !generateMipMaps);\n if (!this._doNotHandleContextLost) {\n texture._bufferView = data;\n }\n this.updateRawTexture(texture, data, format, invertY, compression, type, texture._useSRGBBuffer);\n this._bindTextureDirectly(this._gl.TEXTURE_2D, texture, true);\n // Filters\n const filters = this._getSamplingParameters(samplingMode, generateMipMaps);\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_MAG_FILTER, filters.mag);\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_MIN_FILTER, filters.min);\n if (generateMipMaps) {\n this._gl.generateMipmap(this._gl.TEXTURE_2D);\n }\n this._bindTextureDirectly(this._gl.TEXTURE_2D, null);\n this._internalTexturesCache.push(texture);\n return texture;\n};\nThinEngine.prototype.createRawCubeTexture = function (data, size, format, type, generateMipMaps, invertY, samplingMode, compression = null) {\n const gl = this._gl;\n const texture = new InternalTexture(this, 8 /* InternalTextureSource.CubeRaw */);\n texture.isCube = true;\n texture.format = format;\n texture.type = type;\n if (!this._doNotHandleContextLost) {\n texture._bufferViewArray = data;\n }\n const textureType = this._getWebGLTextureType(type);\n let internalFormat = this._getInternalFormat(format);\n if (internalFormat === gl.RGB) {\n internalFormat = gl.RGBA;\n }\n // Mipmap generation needs a sized internal format that is both color-renderable and texture-filterable\n if (textureType === gl.FLOAT && !this._caps.textureFloatLinearFiltering) {\n generateMipMaps = false;\n samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\n Logger.Warn(\"Float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.\");\n }\n else if (textureType === this._gl.HALF_FLOAT_OES && !this._caps.textureHalfFloatLinearFiltering) {\n generateMipMaps = false;\n samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\n Logger.Warn(\"Half float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.\");\n }\n else if (textureType === gl.FLOAT && !this._caps.textureFloatRender) {\n generateMipMaps = false;\n Logger.Warn(\"Render to float textures is not supported. Mipmap generation forced to false.\");\n }\n else if (textureType === gl.HALF_FLOAT && !this._caps.colorBufferFloat) {\n generateMipMaps = false;\n Logger.Warn(\"Render to half float textures is not supported. Mipmap generation forced to false.\");\n }\n const width = size;\n const height = width;\n texture.width = width;\n texture.height = height;\n texture.invertY = invertY;\n texture._compression = compression;\n // Double check on POT to generate Mips.\n const isPot = !this.needPOTTextures || (IsExponentOfTwo(texture.width) && IsExponentOfTwo(texture.height));\n if (!isPot) {\n generateMipMaps = false;\n }\n // Upload data if needed. The texture won't be ready until then.\n if (data) {\n this.updateRawCubeTexture(texture, data, format, type, invertY, compression);\n }\n else {\n const internalSizedFomat = this._getRGBABufferInternalSizedFormat(type);\n const level = 0;\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true);\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n if (compression) {\n gl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level, this.getCaps().s3tc[compression], texture.width, texture.height, 0, undefined);\n }\n else {\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level, internalSizedFomat, texture.width, texture.height, 0, internalFormat, textureType, null);\n }\n }\n this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP, null);\n }\n this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP, texture, true);\n // Filters\n if (data && generateMipMaps) {\n this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP);\n }\n const filters = this._getSamplingParameters(samplingMode, generateMipMaps);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, filters.mag);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, filters.min);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);\n texture.generateMipMaps = generateMipMaps;\n texture.samplingMode = samplingMode;\n texture.isReady = true;\n return texture;\n};\nThinEngine.prototype.updateRawCubeTexture = function (texture, data, format, type, invertY, compression = null, level = 0) {\n texture._bufferViewArray = data;\n texture.format = format;\n texture.type = type;\n texture.invertY = invertY;\n texture._compression = compression;\n const gl = this._gl;\n const textureType = this._getWebGLTextureType(type);\n let internalFormat = this._getInternalFormat(format);\n const internalSizedFomat = this._getRGBABufferInternalSizedFormat(type);\n let needConversion = false;\n if (internalFormat === gl.RGB) {\n internalFormat = gl.RGBA;\n needConversion = true;\n }\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true);\n this._unpackFlipY(invertY === undefined ? true : invertY ? true : false);\n if (texture.width % 4 !== 0) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n }\n // Data are known to be in +X +Y +Z -X -Y -Z\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n let faceData = data[faceIndex];\n if (compression) {\n gl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level, this.getCaps().s3tc[compression], texture.width, texture.height, 0, faceData);\n }\n else {\n if (needConversion) {\n faceData = _convertRGBtoRGBATextureData(faceData, texture.width, texture.height, type);\n }\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level, internalSizedFomat, texture.width, texture.height, 0, internalFormat, textureType, faceData);\n }\n }\n const isPot = !this.needPOTTextures || (IsExponentOfTwo(texture.width) && IsExponentOfTwo(texture.height));\n if (isPot && texture.generateMipMaps && level === 0) {\n this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP);\n }\n this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP, null);\n // this.resetTextureCache();\n texture.isReady = true;\n};\nThinEngine.prototype.createRawCubeTextureFromUrl = function (url, scene, size, format, type, noMipmap, callback, mipmapGenerator, onLoad = null, onError = null, samplingMode = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE, invertY = false) {\n const gl = this._gl;\n const texture = this.createRawCubeTexture(null, size, format, type, !noMipmap, invertY, samplingMode, null);\n scene?.addPendingData(texture);\n texture.url = url;\n texture.isReady = false;\n this._internalTexturesCache.push(texture);\n const onerror = (request, exception) => {\n scene?.removePendingData(texture);\n if (onError && request) {\n onError(request.status + \" \" + request.statusText, exception);\n }\n };\n const internalCallback = (data) => {\n const width = texture.width;\n const faceDataArrays = callback(data);\n if (!faceDataArrays) {\n return;\n }\n if (mipmapGenerator) {\n const textureType = this._getWebGLTextureType(type);\n let internalFormat = this._getInternalFormat(format);\n const internalSizedFomat = this._getRGBABufferInternalSizedFormat(type);\n let needConversion = false;\n if (internalFormat === gl.RGB) {\n internalFormat = gl.RGBA;\n needConversion = true;\n }\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true);\n this._unpackFlipY(false);\n const mipData = mipmapGenerator(faceDataArrays);\n for (let level = 0; level < mipData.length; level++) {\n const mipSize = width >> level;\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n let mipFaceData = mipData[level][faceIndex];\n if (needConversion) {\n mipFaceData = _convertRGBtoRGBATextureData(mipFaceData, mipSize, mipSize, type);\n }\n gl.texImage2D(faceIndex, level, internalSizedFomat, mipSize, mipSize, 0, internalFormat, textureType, mipFaceData);\n }\n }\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);\n }\n else {\n this.updateRawCubeTexture(texture, faceDataArrays, format, type, invertY);\n }\n texture.isReady = true;\n // this.resetTextureCache();\n scene?.removePendingData(texture);\n texture.onLoadedObservable.notifyObservers(texture);\n texture.onLoadedObservable.clear();\n if (onLoad) {\n onLoad();\n }\n };\n this._loadFile(url, (data) => {\n internalCallback(data);\n }, undefined, scene?.offlineProvider, true, onerror);\n return texture;\n};\n/**\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction _convertRGBtoRGBATextureData(rgbData, width, height, textureType) {\n // Create new RGBA data container.\n let rgbaData;\n let val1 = 1;\n if (textureType === Constants.TEXTURETYPE_FLOAT) {\n rgbaData = new Float32Array(width * height * 4);\n }\n else if (textureType === Constants.TEXTURETYPE_HALF_FLOAT) {\n rgbaData = new Uint16Array(width * height * 4);\n val1 = 15360; // 15360 is the encoding of 1 in half float\n }\n else if (textureType === Constants.TEXTURETYPE_UNSIGNED_INTEGER) {\n rgbaData = new Uint32Array(width * height * 4);\n }\n else {\n rgbaData = new Uint8Array(width * height * 4);\n }\n // Convert each pixel.\n for (let x = 0; x < width; x++) {\n for (let y = 0; y < height; y++) {\n const index = (y * width + x) * 3;\n const newIndex = (y * width + x) * 4;\n // Map Old Value to new value.\n rgbaData[newIndex + 0] = rgbData[index + 0];\n rgbaData[newIndex + 1] = rgbData[index + 1];\n rgbaData[newIndex + 2] = rgbData[index + 2];\n // Add fully opaque alpha channel.\n rgbaData[newIndex + 3] = val1;\n }\n }\n return rgbaData;\n}\n/**\n * Create a function for createRawTexture3D/createRawTexture2DArray\n * @param is3D true for TEXTURE_3D and false for TEXTURE_2D_ARRAY\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction _makeCreateRawTextureFunction(is3D) {\n return function (data, width, height, depth, format, generateMipMaps, invertY, samplingMode, compression = null, textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE) {\n const target = is3D ? this._gl.TEXTURE_3D : this._gl.TEXTURE_2D_ARRAY;\n const source = is3D ? 10 /* InternalTextureSource.Raw3D */ : 11 /* InternalTextureSource.Raw2DArray */;\n const texture = new InternalTexture(this, source);\n texture.baseWidth = width;\n texture.baseHeight = height;\n texture.baseDepth = depth;\n texture.width = width;\n texture.height = height;\n texture.depth = depth;\n texture.format = format;\n texture.type = textureType;\n texture.generateMipMaps = generateMipMaps;\n texture.samplingMode = samplingMode;\n if (is3D) {\n texture.is3D = true;\n }\n else {\n texture.is2DArray = true;\n }\n if (!this._doNotHandleContextLost) {\n texture._bufferView = data;\n }\n if (is3D) {\n this.updateRawTexture3D(texture, data, format, invertY, compression, textureType);\n }\n else {\n this.updateRawTexture2DArray(texture, data, format, invertY, compression, textureType);\n }\n this._bindTextureDirectly(target, texture, true);\n // Filters\n const filters = this._getSamplingParameters(samplingMode, generateMipMaps);\n this._gl.texParameteri(target, this._gl.TEXTURE_MAG_FILTER, filters.mag);\n this._gl.texParameteri(target, this._gl.TEXTURE_MIN_FILTER, filters.min);\n if (generateMipMaps) {\n this._gl.generateMipmap(target);\n }\n this._bindTextureDirectly(target, null);\n this._internalTexturesCache.push(texture);\n return texture;\n };\n}\nThinEngine.prototype.createRawTexture2DArray = _makeCreateRawTextureFunction(false);\nThinEngine.prototype.createRawTexture3D = _makeCreateRawTextureFunction(true);\n/**\n * Create a function for updateRawTexture3D/updateRawTexture2DArray\n * @param is3D true for TEXTURE_3D and false for TEXTURE_2D_ARRAY\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction _makeUpdateRawTextureFunction(is3D) {\n return function (texture, data, format, invertY, compression = null, textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE) {\n const target = is3D ? this._gl.TEXTURE_3D : this._gl.TEXTURE_2D_ARRAY;\n const internalType = this._getWebGLTextureType(textureType);\n const internalFormat = this._getInternalFormat(format);\n const internalSizedFomat = this._getRGBABufferInternalSizedFormat(textureType, format);\n this._bindTextureDirectly(target, texture, true);\n this._unpackFlipY(invertY === undefined ? true : invertY ? true : false);\n if (!this._doNotHandleContextLost) {\n texture._bufferView = data;\n texture.format = format;\n texture.invertY = invertY;\n texture._compression = compression;\n }\n if (texture.width % 4 !== 0) {\n this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT, 1);\n }\n if (compression && data) {\n this._gl.compressedTexImage3D(target, 0, this.getCaps().s3tc[compression], texture.width, texture.height, texture.depth, 0, data);\n }\n else {\n this._gl.texImage3D(target, 0, internalSizedFomat, texture.width, texture.height, texture.depth, 0, internalFormat, internalType, data);\n }\n if (texture.generateMipMaps) {\n this._gl.generateMipmap(target);\n }\n this._bindTextureDirectly(target, null);\n // this.resetTextureCache();\n texture.isReady = true;\n };\n}\nThinEngine.prototype.updateRawTexture2DArray = _makeUpdateRawTextureFunction(false);\nThinEngine.prototype.updateRawTexture3D = _makeUpdateRawTextureFunction(true);\n//# sourceMappingURL=engine.rawTexture.js.map","import { ThinEngine } from \"../../Engines/thinEngine\";\nimport { Constants } from \"../constants\";\nThinEngine.prototype.setAlphaMode = function (mode, noDepthWriteChange = false) {\n if (this._alphaMode === mode) {\n if (!noDepthWriteChange) {\n // Make sure we still have the correct depth mask according to the alpha mode (a transparent material could have forced writting to the depth buffer, for instance)\n const depthMask = mode === Constants.ALPHA_DISABLE;\n if (this.depthCullingState.depthMask !== depthMask) {\n this.depthCullingState.depthMask = depthMask;\n }\n }\n return;\n }\n switch (mode) {\n case Constants.ALPHA_DISABLE:\n this._alphaState.alphaBlend = false;\n break;\n case Constants.ALPHA_PREMULTIPLIED:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_PREMULTIPLIED_PORTERDUFF:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_COMBINE:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_ONEONE:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE, this._gl.ZERO, this._gl.ONE);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_ADD:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE, this._gl.ZERO, this._gl.ONE);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_SUBTRACT:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ZERO, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE, this._gl.ONE);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_MULTIPLY:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.DST_COLOR, this._gl.ZERO, this._gl.ONE, this._gl.ONE);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_MAXIMIZED:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE, this._gl.ONE);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_INTERPOLATE:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.CONSTANT_COLOR, this._gl.ONE_MINUS_CONSTANT_COLOR, this._gl.CONSTANT_ALPHA, this._gl.ONE_MINUS_CONSTANT_ALPHA);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_SCREENMODE:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_ONEONE_ONEONE:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE, this._gl.ONE, this._gl.ONE);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_ALPHATOCOLOR:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.DST_ALPHA, this._gl.ONE, this._gl.ZERO, this._gl.ZERO);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_REVERSEONEMINUS:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE_MINUS_DST_COLOR, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ONE_MINUS_DST_ALPHA, this._gl.ONE_MINUS_SRC_ALPHA);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_SRC_DSTONEMINUSSRCALPHA:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_ONEONE_ONEZERO:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE, this._gl.ONE, this._gl.ONE, this._gl.ZERO);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_EXCLUSION:\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.ONE_MINUS_DST_COLOR, this._gl.ONE_MINUS_SRC_COLOR, this._gl.ZERO, this._gl.ONE);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_LAYER_ACCUMULATE:\n // Same as ALPHA_COMBINE but accumulates (1 - alpha) values in the alpha channel for a later readout in order independant transparency\n this._alphaState.setAlphaBlendFunctionParameters(this._gl.SRC_ALPHA, this._gl.ONE_MINUS_SRC_ALPHA, this._gl.ONE, this._gl.ONE_MINUS_SRC_ALPHA);\n this._alphaState.alphaBlend = true;\n break;\n }\n if (!noDepthWriteChange) {\n this.depthCullingState.depthMask = mode === Constants.ALPHA_DISABLE;\n }\n this._alphaMode = mode;\n};\n//# sourceMappingURL=engine.alpha.js.map","import { ThinEngine } from \"../../Engines/thinEngine\";\n// back-compat\nimport { allocateAndCopyTypedBuffer } from \"../../Engines/abstractEngine.functions\";\nexport { allocateAndCopyTypedBuffer };\nThinEngine.prototype._readTexturePixelsSync = function (texture, width, height, faceIndex = -1, level = 0, buffer = null, flushRenderer = true, noDataConversion = false, x = 0, y = 0) {\n const gl = this._gl;\n if (!gl) {\n throw new Error(\"Engine does not have gl rendering context.\");\n }\n if (!this._dummyFramebuffer) {\n const dummy = gl.createFramebuffer();\n if (!dummy) {\n throw new Error(\"Unable to create dummy framebuffer\");\n }\n this._dummyFramebuffer = dummy;\n }\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._dummyFramebuffer);\n if (faceIndex > -1) {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, texture._hardwareTexture?.underlyingResource, level);\n }\n else {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture._hardwareTexture?.underlyingResource, level);\n }\n let readType = texture.type !== undefined ? this._getWebGLTextureType(texture.type) : gl.UNSIGNED_BYTE;\n if (!noDataConversion) {\n switch (readType) {\n case gl.UNSIGNED_BYTE:\n if (!buffer) {\n buffer = new Uint8Array(4 * width * height);\n }\n readType = gl.UNSIGNED_BYTE;\n break;\n default:\n if (!buffer) {\n buffer = new Float32Array(4 * width * height);\n }\n readType = gl.FLOAT;\n break;\n }\n }\n else if (!buffer) {\n buffer = allocateAndCopyTypedBuffer(texture.type, 4 * width * height);\n }\n if (flushRenderer) {\n this.flushFramebuffer();\n }\n gl.readPixels(x, y, width, height, gl.RGBA, readType, buffer);\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._currentFramebuffer);\n return buffer;\n};\nThinEngine.prototype._readTexturePixels = function (texture, width, height, faceIndex = -1, level = 0, buffer = null, flushRenderer = true, noDataConversion = false, x = 0, y = 0) {\n return Promise.resolve(this._readTexturePixelsSync(texture, width, height, faceIndex, level, buffer, flushRenderer, noDataConversion, x, y));\n};\n//# sourceMappingURL=engine.readTexture.js.map","import { ThinEngine } from \"../../Engines/thinEngine\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nThinEngine.prototype.updateDynamicIndexBuffer = function (indexBuffer, indices, offset = 0) {\n // Force cache update\n this._currentBoundBuffer[this._gl.ELEMENT_ARRAY_BUFFER] = null;\n this.bindIndexBuffer(indexBuffer);\n let view;\n if (indexBuffer.is32Bits) {\n // anything else than Uint32Array needs to be converted to Uint32Array\n view = indices instanceof Uint32Array ? indices : new Uint32Array(indices);\n }\n else {\n // anything else than Uint16Array needs to be converted to Uint16Array\n view = indices instanceof Uint16Array ? indices : new Uint16Array(indices);\n }\n this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER, view, this._gl.DYNAMIC_DRAW);\n this._resetIndexBufferBinding();\n};\nThinEngine.prototype.updateDynamicVertexBuffer = function (vertexBuffer, data, byteOffset, byteLength) {\n this.bindArrayBuffer(vertexBuffer);\n if (byteOffset === undefined) {\n byteOffset = 0;\n }\n const dataLength = data.byteLength || data.length;\n if (byteLength === undefined || (byteLength >= dataLength && byteOffset === 0)) {\n if (data instanceof Array) {\n this._gl.bufferSubData(this._gl.ARRAY_BUFFER, byteOffset, new Float32Array(data));\n }\n else {\n this._gl.bufferSubData(this._gl.ARRAY_BUFFER, byteOffset, data);\n }\n }\n else {\n if (data instanceof Array) {\n this._gl.bufferSubData(this._gl.ARRAY_BUFFER, 0, new Float32Array(data).subarray(byteOffset, byteOffset + byteLength));\n }\n else {\n if (data instanceof ArrayBuffer) {\n data = new Uint8Array(data, byteOffset, byteLength);\n }\n else {\n data = new Uint8Array(data.buffer, data.byteOffset + byteOffset, byteLength);\n }\n this._gl.bufferSubData(this._gl.ARRAY_BUFFER, 0, data);\n }\n }\n this._resetVertexBufferBinding();\n};\n//# sourceMappingURL=engine.dynamicBuffer.js.map","import { ThinEngine } from \"../../Engines/thinEngine\";\nimport { InternalTexture } from \"../../Materials/Textures/internalTexture\";\nimport { Logger } from \"../../Misc/logger\";\nimport { Constants } from \"../constants\";\nimport { GetExponentOfTwo } from \"../../Misc/tools.functions\";\nThinEngine.prototype._createDepthStencilCubeTexture = function (size, options) {\n const internalTexture = new InternalTexture(this, 12 /* InternalTextureSource.DepthStencil */);\n internalTexture.isCube = true;\n if (this.webGLVersion === 1) {\n Logger.Error(\"Depth cube texture is not supported by WebGL 1.\");\n return internalTexture;\n }\n const internalOptions = {\n bilinearFiltering: false,\n comparisonFunction: 0,\n generateStencil: false,\n ...options,\n };\n const gl = this._gl;\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, internalTexture, true);\n this._setupDepthStencilTexture(internalTexture, size, internalOptions.bilinearFiltering, internalOptions.comparisonFunction);\n // Create the depth/stencil buffer\n for (let face = 0; face < 6; face++) {\n if (internalOptions.generateStencil) {\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, 0, gl.DEPTH24_STENCIL8, size, size, 0, gl.DEPTH_STENCIL, gl.UNSIGNED_INT_24_8, null);\n }\n else {\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, 0, gl.DEPTH_COMPONENT24, size, size, 0, gl.DEPTH_COMPONENT, gl.UNSIGNED_INT, null);\n }\n }\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);\n this._internalTexturesCache.push(internalTexture);\n return internalTexture;\n};\nThinEngine.prototype._setCubeMapTextureParams = function (texture, loadMipmap, maxLevel) {\n const gl = this._gl;\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, loadMipmap ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n texture.samplingMode = loadMipmap ? Constants.TEXTURE_TRILINEAR_SAMPLINGMODE : Constants.TEXTURE_LINEAR_LINEAR;\n if (loadMipmap && this.getCaps().textureMaxLevel && maxLevel !== undefined && maxLevel > 0) {\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAX_LEVEL, maxLevel);\n texture._maxLodLevel = maxLevel;\n }\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);\n};\nThinEngine.prototype.createCubeTexture = function (rootUrl, scene, files, noMipmap, onLoad = null, onError = null, format, forcedExtension = null, createPolynomials = false, lodScale = 0, lodOffset = 0, fallback = null, loaderOptions, useSRGBBuffer = false, buffer = null) {\n const gl = this._gl;\n return this.createCubeTextureBase(rootUrl, scene, files, !!noMipmap, onLoad, onError, format, forcedExtension, createPolynomials, lodScale, lodOffset, fallback, (texture) => this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true), (texture, imgs) => {\n const width = this.needPOTTextures ? GetExponentOfTwo(imgs[0].width, this._caps.maxCubemapTextureSize) : imgs[0].width;\n const height = width;\n const faces = [\n gl.TEXTURE_CUBE_MAP_POSITIVE_X,\n gl.TEXTURE_CUBE_MAP_POSITIVE_Y,\n gl.TEXTURE_CUBE_MAP_POSITIVE_Z,\n gl.TEXTURE_CUBE_MAP_NEGATIVE_X,\n gl.TEXTURE_CUBE_MAP_NEGATIVE_Y,\n gl.TEXTURE_CUBE_MAP_NEGATIVE_Z,\n ];\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true);\n this._unpackFlipY(false);\n const internalFormat = format ? this._getInternalFormat(format, texture._useSRGBBuffer) : texture._useSRGBBuffer ? this._glSRGBExtensionValues.SRGB8_ALPHA8 : gl.RGBA;\n let texelFormat = format ? this._getInternalFormat(format) : gl.RGBA;\n if (texture._useSRGBBuffer && this.webGLVersion === 1) {\n texelFormat = internalFormat;\n }\n for (let index = 0; index < faces.length; index++) {\n if (imgs[index].width !== width || imgs[index].height !== height) {\n this._prepareWorkingCanvas();\n if (!this._workingCanvas || !this._workingContext) {\n Logger.Warn(\"Cannot create canvas to resize texture.\");\n return;\n }\n this._workingCanvas.width = width;\n this._workingCanvas.height = height;\n this._workingContext.drawImage(imgs[index], 0, 0, imgs[index].width, imgs[index].height, 0, 0, width, height);\n gl.texImage2D(faces[index], 0, internalFormat, texelFormat, gl.UNSIGNED_BYTE, this._workingCanvas);\n }\n else {\n gl.texImage2D(faces[index], 0, internalFormat, texelFormat, gl.UNSIGNED_BYTE, imgs[index]);\n }\n }\n if (!noMipmap) {\n gl.generateMipmap(gl.TEXTURE_CUBE_MAP);\n }\n this._setCubeMapTextureParams(texture, !noMipmap);\n texture.width = width;\n texture.height = height;\n texture.isReady = true;\n if (format) {\n texture.format = format;\n }\n texture.onLoadedObservable.notifyObservers(texture);\n texture.onLoadedObservable.clear();\n if (onLoad) {\n onLoad();\n }\n }, !!useSRGBBuffer, buffer);\n};\nThinEngine.prototype.generateMipMapsForCubemap = function (texture, unbind = true) {\n if (texture.generateMipMaps) {\n const gl = this._gl;\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true);\n gl.generateMipmap(gl.TEXTURE_CUBE_MAP);\n if (unbind) {\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);\n }\n }\n};\n//# sourceMappingURL=engine.cubeTexture.js.map","import { Constants } from \"../constants\";\nimport { RenderTargetWrapper } from \"../renderTargetWrapper\";\nimport { HasStencilAspect } from \"../../Materials/Textures/internalTexture\";\n/** @internal */\nexport class WebGLRenderTargetWrapper extends RenderTargetWrapper {\n setDepthStencilTexture(texture, disposeExisting = true) {\n super.setDepthStencilTexture(texture, disposeExisting);\n if (!texture) {\n return;\n }\n const engine = this._engine;\n const gl = this._context;\n const hardwareTexture = texture._hardwareTexture;\n if (hardwareTexture && texture._autoMSAAManagement && this._MSAAFramebuffer) {\n const currentFB = engine._currentFramebuffer;\n engine._bindUnboundFramebuffer(this._MSAAFramebuffer);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, HasStencilAspect(texture.format) ? gl.DEPTH_STENCIL_ATTACHMENT : gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, hardwareTexture.getMSAARenderBuffer());\n engine._bindUnboundFramebuffer(currentFB);\n }\n }\n constructor(isMulti, isCube, size, engine, context) {\n super(isMulti, isCube, size, engine);\n /**\n * @internal\n */\n this._framebuffer = null;\n /**\n * @internal\n */\n this._depthStencilBuffer = null;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n /**\n * @internal\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n this._MSAAFramebuffer = null;\n // Multiview\n /**\n * @internal\n */\n this._colorTextureArray = null;\n /**\n * @internal\n */\n this._depthStencilTextureArray = null;\n /**\n * @internal\n */\n this._disposeOnlyFramebuffers = false;\n /**\n * @internal\n */\n this._currentLOD = 0;\n this._context = context;\n }\n _cloneRenderTargetWrapper() {\n let rtw = null;\n if (this._colorTextureArray && this._depthStencilTextureArray) {\n rtw = this._engine.createMultiviewRenderTargetTexture(this.width, this.height);\n rtw.texture.isReady = true;\n }\n else {\n rtw = super._cloneRenderTargetWrapper();\n }\n return rtw;\n }\n _swapRenderTargetWrapper(target) {\n super._swapRenderTargetWrapper(target);\n target._framebuffer = this._framebuffer;\n target._depthStencilBuffer = this._depthStencilBuffer;\n target._MSAAFramebuffer = this._MSAAFramebuffer;\n target._colorTextureArray = this._colorTextureArray;\n target._depthStencilTextureArray = this._depthStencilTextureArray;\n this._framebuffer = this._depthStencilBuffer = this._MSAAFramebuffer = this._colorTextureArray = this._depthStencilTextureArray = null;\n }\n /**\n * Creates the depth/stencil texture\n * @param comparisonFunction Comparison function to use for the texture\n * @param bilinearFiltering true if bilinear filtering should be used when sampling the texture\n * @param generateStencil true if the stencil aspect should also be created\n * @param samples sample count to use when creating the texture\n * @param format format of the depth texture\n * @param label defines the label to use for the texture (for debugging purpose only)\n * @returns the depth/stencil created texture\n */\n createDepthStencilTexture(comparisonFunction = 0, bilinearFiltering = true, generateStencil = false, samples = 1, format = Constants.TEXTUREFORMAT_DEPTH32_FLOAT, label) {\n if (this._depthStencilBuffer) {\n const engine = this._engine;\n // Dispose previous depth/stencil render buffers and clear the corresponding attachment.\n // Next time this framebuffer is bound, the new depth/stencil texture will be attached.\n const currentFrameBuffer = engine._currentFramebuffer;\n const gl = this._context;\n engine._bindUnboundFramebuffer(this._framebuffer);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, null);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, null);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT, gl.RENDERBUFFER, null);\n engine._bindUnboundFramebuffer(currentFrameBuffer);\n gl.deleteRenderbuffer(this._depthStencilBuffer);\n this._depthStencilBuffer = null;\n }\n return super.createDepthStencilTexture(comparisonFunction, bilinearFiltering, generateStencil, samples, format, label);\n }\n /**\n * Shares the depth buffer of this render target with another render target.\n * @param renderTarget Destination renderTarget\n */\n shareDepth(renderTarget) {\n super.shareDepth(renderTarget);\n const gl = this._context;\n const depthbuffer = this._depthStencilBuffer;\n const framebuffer = renderTarget._MSAAFramebuffer || renderTarget._framebuffer;\n const engine = this._engine;\n if (renderTarget._depthStencilBuffer && renderTarget._depthStencilBuffer !== depthbuffer) {\n gl.deleteRenderbuffer(renderTarget._depthStencilBuffer);\n }\n renderTarget._depthStencilBuffer = depthbuffer;\n const attachment = renderTarget._generateStencilBuffer ? gl.DEPTH_STENCIL_ATTACHMENT : gl.DEPTH_ATTACHMENT;\n engine._bindUnboundFramebuffer(framebuffer);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment, gl.RENDERBUFFER, depthbuffer);\n engine._bindUnboundFramebuffer(null);\n }\n /**\n * Binds a texture to this render target on a specific attachment\n * @param texture The texture to bind to the framebuffer\n * @param attachmentIndex Index of the attachment\n * @param faceIndexOrLayer The face or layer of the texture to render to in case of cube texture or array texture\n * @param lodLevel defines the lod level to bind to the frame buffer\n */\n _bindTextureRenderTarget(texture, attachmentIndex = 0, faceIndexOrLayer, lodLevel = 0) {\n const hardwareTexture = texture._hardwareTexture;\n if (!hardwareTexture) {\n return;\n }\n const framebuffer = this._framebuffer;\n const engine = this._engine;\n const currentFB = engine._currentFramebuffer;\n engine._bindUnboundFramebuffer(framebuffer);\n let attachment;\n if (engine.webGLVersion > 1) {\n const gl = this._context;\n attachment = gl[\"COLOR_ATTACHMENT\" + attachmentIndex];\n if (texture.is2DArray || texture.is3D) {\n faceIndexOrLayer = faceIndexOrLayer ?? this.layerIndices?.[attachmentIndex] ?? 0;\n gl.framebufferTextureLayer(gl.FRAMEBUFFER, attachment, hardwareTexture.underlyingResource, lodLevel, faceIndexOrLayer);\n }\n else if (texture.isCube) {\n // if face index is not specified, try to query it from faceIndices\n // default is face 0\n faceIndexOrLayer = faceIndexOrLayer ?? this.faceIndices?.[attachmentIndex] ?? 0;\n gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndexOrLayer, hardwareTexture.underlyingResource, lodLevel);\n }\n else {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, gl.TEXTURE_2D, hardwareTexture.underlyingResource, lodLevel);\n }\n }\n else {\n // Default behavior (WebGL)\n const gl = this._context;\n attachment = gl[\"COLOR_ATTACHMENT\" + attachmentIndex + \"_WEBGL\"];\n const target = faceIndexOrLayer !== undefined ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndexOrLayer : gl.TEXTURE_2D;\n gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, target, hardwareTexture.underlyingResource, lodLevel);\n }\n if (texture._autoMSAAManagement && this._MSAAFramebuffer) {\n const gl = this._context;\n engine._bindUnboundFramebuffer(this._MSAAFramebuffer);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment, gl.RENDERBUFFER, hardwareTexture.getMSAARenderBuffer());\n }\n engine._bindUnboundFramebuffer(currentFB);\n }\n /**\n * Set a texture in the textures array\n * @param texture the texture to set\n * @param index the index in the textures array to set\n * @param disposePrevious If this function should dispose the previous texture\n */\n setTexture(texture, index = 0, disposePrevious = true) {\n super.setTexture(texture, index, disposePrevious);\n this._bindTextureRenderTarget(texture, index);\n }\n /**\n * Sets the layer and face indices of every render target texture\n * @param layers The layer of the texture to be set (make negative to not modify)\n * @param faces The face of the texture to be set (make negative to not modify)\n */\n setLayerAndFaceIndices(layers, faces) {\n super.setLayerAndFaceIndices(layers, faces);\n if (!this.textures || !this.layerIndices || !this.faceIndices) {\n return;\n }\n // the length of this._attachments is the right one as it does not count the depth texture, in case we generated it\n const textureCount = this._attachments?.length ?? this.textures.length;\n for (let index = 0; index < textureCount; index++) {\n const texture = this.textures[index];\n if (!texture) {\n // The target type was probably -1 at creation time and setTexture has not been called yet for this index\n continue;\n }\n if (texture.is2DArray || texture.is3D) {\n this._bindTextureRenderTarget(texture, index, this.layerIndices[index]);\n }\n else if (texture.isCube) {\n this._bindTextureRenderTarget(texture, index, this.faceIndices[index]);\n }\n else {\n this._bindTextureRenderTarget(texture, index);\n }\n }\n }\n /**\n * Set the face and layer indices of a texture in the textures array\n * @param index The index of the texture in the textures array to modify\n * @param layer The layer of the texture to be set\n * @param face The face of the texture to be set\n */\n setLayerAndFaceIndex(index = 0, layer, face) {\n super.setLayerAndFaceIndex(index, layer, face);\n if (!this.textures || !this.layerIndices || !this.faceIndices) {\n return;\n }\n const texture = this.textures[index];\n if (texture.is2DArray || texture.is3D) {\n this._bindTextureRenderTarget(this.textures[index], index, this.layerIndices[index]);\n }\n else if (texture.isCube) {\n this._bindTextureRenderTarget(this.textures[index], index, this.faceIndices[index]);\n }\n }\n resolveMSAATextures() {\n const engine = this._engine;\n const currentFramebuffer = engine._currentFramebuffer;\n engine._bindUnboundFramebuffer(this._MSAAFramebuffer);\n super.resolveMSAATextures();\n engine._bindUnboundFramebuffer(currentFramebuffer);\n }\n dispose(disposeOnlyFramebuffers = this._disposeOnlyFramebuffers) {\n const gl = this._context;\n if (!disposeOnlyFramebuffers) {\n if (this._colorTextureArray) {\n this._context.deleteTexture(this._colorTextureArray);\n this._colorTextureArray = null;\n }\n if (this._depthStencilTextureArray) {\n this._context.deleteTexture(this._depthStencilTextureArray);\n this._depthStencilTextureArray = null;\n }\n }\n if (this._framebuffer) {\n gl.deleteFramebuffer(this._framebuffer);\n this._framebuffer = null;\n }\n if (this._depthStencilBuffer) {\n gl.deleteRenderbuffer(this._depthStencilBuffer);\n this._depthStencilBuffer = null;\n }\n if (this._MSAAFramebuffer) {\n gl.deleteFramebuffer(this._MSAAFramebuffer);\n this._MSAAFramebuffer = null;\n }\n super.dispose(disposeOnlyFramebuffers);\n }\n}\n//# sourceMappingURL=webGLRenderTargetWrapper.js.map","import { InternalTexture } from \"../../Materials/Textures/internalTexture\";\nimport { Logger } from \"../../Misc/logger\";\nimport { ThinEngine } from \"../thinEngine\";\nimport { WebGLRenderTargetWrapper } from \"../WebGL/webGLRenderTargetWrapper\";\nimport { Constants } from \"../constants\";\nimport \"../AbstractEngine/abstractEngine.texture\";\nThinEngine.prototype._createHardwareRenderTargetWrapper = function (isMulti, isCube, size) {\n const rtWrapper = new WebGLRenderTargetWrapper(isMulti, isCube, size, this, this._gl);\n this._renderTargetWrapperCache.push(rtWrapper);\n return rtWrapper;\n};\nThinEngine.prototype.createRenderTargetTexture = function (size, options) {\n const rtWrapper = this._createHardwareRenderTargetWrapper(false, false, size);\n let generateDepthBuffer = true;\n let generateStencilBuffer = false;\n let noColorAttachment = false;\n let colorAttachment = undefined;\n let samples = 1;\n let label = undefined;\n if (options !== undefined && typeof options === \"object\") {\n generateDepthBuffer = options.generateDepthBuffer ?? true;\n generateStencilBuffer = !!options.generateStencilBuffer;\n noColorAttachment = !!options.noColorAttachment;\n colorAttachment = options.colorAttachment;\n samples = options.samples ?? 1;\n label = options.label;\n }\n const texture = colorAttachment || (noColorAttachment ? null : this._createInternalTexture(size, options, true, 5 /* InternalTextureSource.RenderTarget */));\n const width = size.width || size;\n const height = size.height || size;\n const currentFrameBuffer = this._currentFramebuffer;\n const gl = this._gl;\n // Create the framebuffer\n const framebuffer = gl.createFramebuffer();\n this._bindUnboundFramebuffer(framebuffer);\n rtWrapper._depthStencilBuffer = this._setupFramebufferDepthAttachments(generateStencilBuffer, generateDepthBuffer, width, height);\n // No need to rebind on every frame\n if (texture && !texture.is2DArray && !texture.is3D) {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture._hardwareTexture.underlyingResource, 0);\n }\n this._bindUnboundFramebuffer(currentFrameBuffer);\n rtWrapper.label = label ?? \"RenderTargetWrapper\";\n rtWrapper._framebuffer = framebuffer;\n rtWrapper._generateDepthBuffer = generateDepthBuffer;\n rtWrapper._generateStencilBuffer = generateStencilBuffer;\n rtWrapper.setTextures(texture);\n if (!colorAttachment) {\n this.updateRenderTargetTextureSampleCount(rtWrapper, samples);\n }\n else {\n rtWrapper._samples = colorAttachment.samples;\n if (colorAttachment.samples > 1) {\n const msaaRenderBuffer = colorAttachment._hardwareTexture.getMSAARenderBuffer(0);\n rtWrapper._MSAAFramebuffer = gl.createFramebuffer();\n this._bindUnboundFramebuffer(rtWrapper._MSAAFramebuffer);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, msaaRenderBuffer);\n this._bindUnboundFramebuffer(null);\n }\n }\n return rtWrapper;\n};\nThinEngine.prototype._createDepthStencilTexture = function (size, options, rtWrapper) {\n const gl = this._gl;\n const layers = size.layers || 0;\n const depth = size.depth || 0;\n let target = gl.TEXTURE_2D;\n if (layers !== 0) {\n target = gl.TEXTURE_2D_ARRAY;\n }\n else if (depth !== 0) {\n target = gl.TEXTURE_3D;\n }\n const internalTexture = new InternalTexture(this, 12 /* InternalTextureSource.DepthStencil */);\n internalTexture.label = options.label;\n if (!this._caps.depthTextureExtension) {\n Logger.Error(\"Depth texture is not supported by your browser or hardware.\");\n return internalTexture;\n }\n const internalOptions = {\n bilinearFiltering: false,\n comparisonFunction: 0,\n generateStencil: false,\n ...options,\n };\n this._bindTextureDirectly(target, internalTexture, true);\n this._setupDepthStencilTexture(internalTexture, size, internalOptions.comparisonFunction === 0 ? false : internalOptions.bilinearFiltering, internalOptions.comparisonFunction, internalOptions.samples);\n if (internalOptions.depthTextureFormat !== undefined) {\n if (internalOptions.depthTextureFormat !== Constants.TEXTUREFORMAT_DEPTH16 &&\n internalOptions.depthTextureFormat !== Constants.TEXTUREFORMAT_DEPTH24 &&\n internalOptions.depthTextureFormat !== Constants.TEXTUREFORMAT_DEPTH24UNORM_STENCIL8 &&\n internalOptions.depthTextureFormat !== Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 &&\n internalOptions.depthTextureFormat !== Constants.TEXTUREFORMAT_DEPTH32_FLOAT &&\n internalOptions.depthTextureFormat !== Constants.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8) {\n Logger.Error(`Depth texture ${internalOptions.depthTextureFormat} format is not supported.`);\n return internalTexture;\n }\n internalTexture.format = internalOptions.depthTextureFormat;\n }\n else {\n internalTexture.format = internalOptions.generateStencil ? Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 : Constants.TEXTUREFORMAT_DEPTH24;\n }\n const hasStencil = internalTexture.format === Constants.TEXTUREFORMAT_DEPTH24UNORM_STENCIL8 ||\n internalTexture.format === Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 ||\n internalTexture.format === Constants.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8;\n const type = this._getWebGLTextureTypeFromDepthTextureFormat(internalTexture.format);\n const format = hasStencil ? gl.DEPTH_STENCIL : gl.DEPTH_COMPONENT;\n const internalFormat = this._getInternalFormatFromDepthTextureFormat(internalTexture.format, true, hasStencil);\n if (internalTexture.is2DArray) {\n gl.texImage3D(target, 0, internalFormat, internalTexture.width, internalTexture.height, layers, 0, format, type, null);\n }\n else if (internalTexture.is3D) {\n gl.texImage3D(target, 0, internalFormat, internalTexture.width, internalTexture.height, depth, 0, format, type, null);\n }\n else {\n gl.texImage2D(target, 0, internalFormat, internalTexture.width, internalTexture.height, 0, format, type, null);\n }\n this._bindTextureDirectly(target, null);\n this._internalTexturesCache.push(internalTexture);\n if (rtWrapper._depthStencilBuffer) {\n gl.deleteRenderbuffer(rtWrapper._depthStencilBuffer);\n rtWrapper._depthStencilBuffer = null;\n }\n this._bindUnboundFramebuffer(rtWrapper._MSAAFramebuffer ?? rtWrapper._framebuffer);\n rtWrapper._generateStencilBuffer = hasStencil;\n rtWrapper._depthStencilTextureWithStencil = hasStencil;\n rtWrapper._depthStencilBuffer = this._setupFramebufferDepthAttachments(rtWrapper._generateStencilBuffer, rtWrapper._generateDepthBuffer, rtWrapper.width, rtWrapper.height, rtWrapper.samples, internalTexture.format);\n this._bindUnboundFramebuffer(null);\n return internalTexture;\n};\nThinEngine.prototype.updateRenderTargetTextureSampleCount = function (rtWrapper, samples) {\n if (this.webGLVersion < 2 || !rtWrapper) {\n return 1;\n }\n if (rtWrapper.samples === samples) {\n return samples;\n }\n const gl = this._gl;\n samples = Math.min(samples, this.getCaps().maxMSAASamples);\n // Dispose previous render buffers\n if (rtWrapper._depthStencilBuffer) {\n gl.deleteRenderbuffer(rtWrapper._depthStencilBuffer);\n rtWrapper._depthStencilBuffer = null;\n }\n if (rtWrapper._MSAAFramebuffer) {\n gl.deleteFramebuffer(rtWrapper._MSAAFramebuffer);\n rtWrapper._MSAAFramebuffer = null;\n }\n const hardwareTexture = rtWrapper.texture?._hardwareTexture;\n hardwareTexture?.releaseMSAARenderBuffers();\n if (rtWrapper.texture && samples > 1 && typeof gl.renderbufferStorageMultisample === \"function\") {\n const framebuffer = gl.createFramebuffer();\n if (!framebuffer) {\n throw new Error(\"Unable to create multi sampled framebuffer\");\n }\n rtWrapper._MSAAFramebuffer = framebuffer;\n this._bindUnboundFramebuffer(rtWrapper._MSAAFramebuffer);\n const colorRenderbuffer = this._createRenderBuffer(rtWrapper.texture.width, rtWrapper.texture.height, samples, -1 /* not used */, this._getRGBABufferInternalSizedFormat(rtWrapper.texture.type, rtWrapper.texture.format, rtWrapper.texture._useSRGBBuffer), gl.COLOR_ATTACHMENT0, false);\n if (!colorRenderbuffer) {\n throw new Error(\"Unable to create multi sampled framebuffer\");\n }\n hardwareTexture?.addMSAARenderBuffer(colorRenderbuffer);\n }\n this._bindUnboundFramebuffer(rtWrapper._MSAAFramebuffer ?? rtWrapper._framebuffer);\n if (rtWrapper.texture) {\n rtWrapper.texture.samples = samples;\n }\n rtWrapper._samples = samples;\n const depthFormat = rtWrapper._depthStencilTexture ? rtWrapper._depthStencilTexture.format : undefined;\n rtWrapper._depthStencilBuffer = this._setupFramebufferDepthAttachments(rtWrapper._generateStencilBuffer, rtWrapper._generateDepthBuffer, rtWrapper.width, rtWrapper.height, samples, depthFormat);\n this._bindUnboundFramebuffer(null);\n return samples;\n};\nThinEngine.prototype._setupDepthStencilTexture = function (internalTexture, size, bilinearFiltering, comparisonFunction, samples = 1) {\n const width = size.width ?? size;\n const height = size.height ?? size;\n const layers = size.layers || 0;\n const depth = size.depth || 0;\n internalTexture.baseWidth = width;\n internalTexture.baseHeight = height;\n internalTexture.width = width;\n internalTexture.height = height;\n internalTexture.is2DArray = layers > 0;\n internalTexture.depth = layers || depth;\n internalTexture.isReady = true;\n internalTexture.samples = samples;\n internalTexture.generateMipMaps = false;\n internalTexture.samplingMode = bilinearFiltering ? Constants.TEXTURE_BILINEAR_SAMPLINGMODE : Constants.TEXTURE_NEAREST_SAMPLINGMODE;\n internalTexture.type = Constants.TEXTURETYPE_UNSIGNED_BYTE;\n internalTexture._comparisonFunction = comparisonFunction;\n const gl = this._gl;\n const target = this._getTextureTarget(internalTexture);\n const samplingParameters = this._getSamplingParameters(internalTexture.samplingMode, false);\n gl.texParameteri(target, gl.TEXTURE_MAG_FILTER, samplingParameters.mag);\n gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, samplingParameters.min);\n gl.texParameteri(target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n // TEXTURE_COMPARE_FUNC/MODE are only availble in WebGL2.\n if (this.webGLVersion > 1) {\n if (comparisonFunction === 0) {\n gl.texParameteri(target, gl.TEXTURE_COMPARE_FUNC, Constants.LEQUAL);\n gl.texParameteri(target, gl.TEXTURE_COMPARE_MODE, gl.NONE);\n }\n else {\n gl.texParameteri(target, gl.TEXTURE_COMPARE_FUNC, comparisonFunction);\n gl.texParameteri(target, gl.TEXTURE_COMPARE_MODE, gl.COMPARE_REF_TO_TEXTURE);\n }\n }\n};\n//# sourceMappingURL=engine.renderTarget.js.map","import { ThinEngine } from \"../../Engines/thinEngine\";\nThinEngine.prototype.setDepthStencilTexture = function (channel, uniform, texture, name) {\n if (channel === undefined) {\n return;\n }\n if (uniform) {\n this._boundUniforms[channel] = uniform;\n }\n if (!texture || !texture.depthStencilTexture) {\n this._setTexture(channel, null, undefined, undefined, name);\n }\n else {\n this._setTexture(channel, texture, false, true, name);\n }\n};\n//# sourceMappingURL=engine.renderTargetTexture.js.map","import { InternalTexture } from \"../../Materials/Textures/internalTexture\";\nimport { Logger } from \"../../Misc/logger\";\nimport { Constants } from \"../constants\";\nimport { ThinEngine } from \"../thinEngine\";\nThinEngine.prototype.createRenderTargetCubeTexture = function (size, options) {\n const rtWrapper = this._createHardwareRenderTargetWrapper(false, true, size);\n const fullOptions = {\n generateMipMaps: true,\n generateDepthBuffer: true,\n generateStencilBuffer: false,\n type: Constants.TEXTURETYPE_UNSIGNED_BYTE,\n samplingMode: Constants.TEXTURE_TRILINEAR_SAMPLINGMODE,\n format: Constants.TEXTUREFORMAT_RGBA,\n ...options,\n };\n fullOptions.generateStencilBuffer = fullOptions.generateDepthBuffer && fullOptions.generateStencilBuffer;\n if (fullOptions.type === Constants.TEXTURETYPE_FLOAT && !this._caps.textureFloatLinearFiltering) {\n // if floating point linear (gl.FLOAT) then force to NEAREST_SAMPLINGMODE\n fullOptions.samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\n }\n else if (fullOptions.type === Constants.TEXTURETYPE_HALF_FLOAT && !this._caps.textureHalfFloatLinearFiltering) {\n // if floating point linear (HALF_FLOAT) then force to NEAREST_SAMPLINGMODE\n fullOptions.samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\n }\n const gl = this._gl;\n const texture = new InternalTexture(this, 5 /* InternalTextureSource.RenderTarget */);\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true);\n const filters = this._getSamplingParameters(fullOptions.samplingMode, fullOptions.generateMipMaps);\n if (fullOptions.type === Constants.TEXTURETYPE_FLOAT && !this._caps.textureFloat) {\n fullOptions.type = Constants.TEXTURETYPE_UNSIGNED_BYTE;\n Logger.Warn(\"Float textures are not supported. Cube render target forced to TEXTURETYPE_UNESIGNED_BYTE type\");\n }\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, filters.mag);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, filters.min);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n for (let face = 0; face < 6; face++) {\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, 0, this._getRGBABufferInternalSizedFormat(fullOptions.type, fullOptions.format), size, size, 0, this._getInternalFormat(fullOptions.format), this._getWebGLTextureType(fullOptions.type), null);\n }\n // Create the framebuffer\n const framebuffer = gl.createFramebuffer();\n this._bindUnboundFramebuffer(framebuffer);\n rtWrapper._depthStencilBuffer = this._setupFramebufferDepthAttachments(fullOptions.generateStencilBuffer, fullOptions.generateDepthBuffer, size, size);\n // MipMaps\n if (fullOptions.generateMipMaps) {\n gl.generateMipmap(gl.TEXTURE_CUBE_MAP);\n }\n // Unbind\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);\n this._bindUnboundFramebuffer(null);\n rtWrapper._framebuffer = framebuffer;\n rtWrapper._generateDepthBuffer = fullOptions.generateDepthBuffer;\n rtWrapper._generateStencilBuffer = fullOptions.generateStencilBuffer;\n texture.width = size;\n texture.height = size;\n texture.isReady = true;\n texture.isCube = true;\n texture.samples = 1;\n texture.generateMipMaps = fullOptions.generateMipMaps;\n texture.samplingMode = fullOptions.samplingMode;\n texture.type = fullOptions.type;\n texture.format = fullOptions.format;\n this._internalTexturesCache.push(texture);\n rtWrapper.setTextures(texture);\n return rtWrapper;\n};\n//# sourceMappingURL=engine.renderTargetCube.js.map","import { ThinEngine } from \"../../Engines/thinEngine\";\nimport { InternalTexture } from \"../../Materials/Textures/internalTexture\";\nimport { Logger } from \"../../Misc/logger\";\nimport { Constants } from \"../constants\";\nimport { SphericalPolynomial } from \"core/Maths/sphericalPolynomial\";\nimport { BaseTexture } from \"core/Materials/Textures/baseTexture\";\nThinEngine.prototype.createPrefilteredCubeTexture = function (rootUrl, scene, lodScale, lodOffset, onLoad = null, onError = null, format, forcedExtension = null, createPolynomials = true) {\n const callback = async (loadData) => {\n if (!loadData) {\n if (onLoad) {\n onLoad(null);\n }\n return;\n }\n const texture = loadData.texture;\n if (!createPolynomials) {\n texture._sphericalPolynomial = new SphericalPolynomial();\n }\n else if (loadData.info.sphericalPolynomial) {\n texture._sphericalPolynomial = loadData.info.sphericalPolynomial;\n }\n texture._source = 9 /* InternalTextureSource.CubePrefiltered */;\n if (this.getCaps().textureLOD) {\n // Do not add extra process if texture lod is supported.\n if (onLoad) {\n onLoad(texture);\n }\n return;\n }\n const mipSlices = 3;\n const gl = this._gl;\n const width = loadData.width;\n if (!width) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { DDSTools } = await import(\"core/Misc/dds\");\n const textures = [];\n for (let i = 0; i < mipSlices; i++) {\n //compute LOD from even spacing in smoothness (matching shader calculation)\n const smoothness = i / (mipSlices - 1);\n const roughness = 1 - smoothness;\n const minLODIndex = lodOffset; // roughness = 0\n const maxLODIndex = Math.log2(width) * lodScale + lodOffset; // roughness = 1\n const lodIndex = minLODIndex + (maxLODIndex - minLODIndex) * roughness;\n const mipmapIndex = Math.round(Math.min(Math.max(lodIndex, 0), maxLODIndex));\n const glTextureFromLod = new InternalTexture(this, 2 /* InternalTextureSource.Temp */);\n glTextureFromLod.type = texture.type;\n glTextureFromLod.format = texture.format;\n glTextureFromLod.width = Math.pow(2, Math.max(Math.log2(width) - mipmapIndex, 0));\n glTextureFromLod.height = glTextureFromLod.width;\n glTextureFromLod.isCube = true;\n glTextureFromLod._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\n glTextureFromLod._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, glTextureFromLod, true);\n glTextureFromLod.samplingMode = Constants.TEXTURE_LINEAR_LINEAR;\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n if (loadData.isDDS) {\n const info = loadData.info;\n const data = loadData.data;\n this._unpackFlipY(info.isCompressed);\n DDSTools.UploadDDSLevels(this, glTextureFromLod, data, info, true, 6, mipmapIndex);\n }\n else {\n Logger.Warn(\"DDS is the only prefiltered cube map supported so far.\");\n }\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);\n // Wrap in a base texture for easy binding.\n const lodTexture = new BaseTexture(scene);\n lodTexture._isCube = true;\n lodTexture._texture = glTextureFromLod;\n glTextureFromLod.isReady = true;\n textures.push(lodTexture);\n }\n texture._lodTextureHigh = textures[2];\n texture._lodTextureMid = textures[1];\n texture._lodTextureLow = textures[0];\n if (onLoad) {\n onLoad(texture);\n }\n };\n return this.createCubeTexture(rootUrl, scene, null, false, callback, onError, format, forcedExtension, createPolynomials, lodScale, lodOffset);\n};\n//# sourceMappingURL=engine.prefilteredCubeTexture.js.map","import { ThinEngine } from \"../../Engines/thinEngine\";\nimport { WebGLDataBuffer } from \"../../Meshes/WebGL/webGLDataBuffer\";\nThinEngine.prototype.createUniformBuffer = function (elements, _label) {\n const ubo = this._gl.createBuffer();\n if (!ubo) {\n throw new Error(\"Unable to create uniform buffer\");\n }\n const result = new WebGLDataBuffer(ubo);\n this.bindUniformBuffer(result);\n if (elements instanceof Float32Array) {\n this._gl.bufferData(this._gl.UNIFORM_BUFFER, elements, this._gl.STATIC_DRAW);\n }\n else {\n this._gl.bufferData(this._gl.UNIFORM_BUFFER, new Float32Array(elements), this._gl.STATIC_DRAW);\n }\n this.bindUniformBuffer(null);\n result.references = 1;\n return result;\n};\nThinEngine.prototype.createDynamicUniformBuffer = function (elements, _label) {\n const ubo = this._gl.createBuffer();\n if (!ubo) {\n throw new Error(\"Unable to create dynamic uniform buffer\");\n }\n const result = new WebGLDataBuffer(ubo);\n this.bindUniformBuffer(result);\n if (elements instanceof Float32Array) {\n this._gl.bufferData(this._gl.UNIFORM_BUFFER, elements, this._gl.DYNAMIC_DRAW);\n }\n else {\n this._gl.bufferData(this._gl.UNIFORM_BUFFER, new Float32Array(elements), this._gl.DYNAMIC_DRAW);\n }\n this.bindUniformBuffer(null);\n result.references = 1;\n return result;\n};\nThinEngine.prototype.updateUniformBuffer = function (uniformBuffer, elements, offset, count) {\n this.bindUniformBuffer(uniformBuffer);\n if (offset === undefined) {\n offset = 0;\n }\n if (count === undefined) {\n if (elements instanceof Float32Array) {\n this._gl.bufferSubData(this._gl.UNIFORM_BUFFER, offset, elements);\n }\n else {\n this._gl.bufferSubData(this._gl.UNIFORM_BUFFER, offset, new Float32Array(elements));\n }\n }\n else {\n if (elements instanceof Float32Array) {\n this._gl.bufferSubData(this._gl.UNIFORM_BUFFER, 0, elements.subarray(offset, offset + count));\n }\n else {\n this._gl.bufferSubData(this._gl.UNIFORM_BUFFER, 0, new Float32Array(elements).subarray(offset, offset + count));\n }\n }\n this.bindUniformBuffer(null);\n};\nThinEngine.prototype.bindUniformBuffer = function (buffer) {\n this._gl.bindBuffer(this._gl.UNIFORM_BUFFER, buffer ? buffer.underlyingResource : null);\n};\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nThinEngine.prototype.bindUniformBufferBase = function (buffer, location, name) {\n this._gl.bindBufferBase(this._gl.UNIFORM_BUFFER, location, buffer ? buffer.underlyingResource : null);\n};\nThinEngine.prototype.bindUniformBlock = function (pipelineContext, blockName, index) {\n const program = pipelineContext.program;\n const uniformLocation = this._gl.getUniformBlockIndex(program, blockName);\n if (uniformLocation !== 0xffffffff) {\n this._gl.uniformBlockBinding(program, uniformLocation, index);\n }\n};\n//# sourceMappingURL=engine.uniformBuffer.js.map","import { InternalTexture } from \"../Materials/Textures/internalTexture\";\nimport { EngineStore } from \"./engineStore\";\nimport { ThinEngine } from \"./thinEngine\";\nimport { Constants } from \"./constants\";\nimport { PerformanceMonitor } from \"../Misc/performanceMonitor\";\nimport { WebGLDataBuffer } from \"../Meshes/WebGL/webGLDataBuffer\";\nimport { Logger } from \"../Misc/logger\";\nimport { WebGLHardwareTexture } from \"./WebGL/webGLHardwareTexture\";\nimport \"./Extensions/engine.alpha\";\nimport \"./Extensions/engine.rawTexture\";\nimport \"./Extensions/engine.readTexture\";\nimport \"./Extensions/engine.dynamicBuffer\";\nimport \"./Extensions/engine.cubeTexture\";\nimport \"./Extensions/engine.renderTarget\";\nimport \"./Extensions/engine.renderTargetTexture\";\nimport \"./Extensions/engine.renderTargetCube\";\nimport \"./Extensions/engine.prefilteredCubeTexture\";\nimport \"./Extensions/engine.uniformBuffer\";\nimport \"./AbstractEngine/abstractEngine.loadingScreen\";\nimport \"./AbstractEngine/abstractEngine.dom\";\nimport \"./AbstractEngine/abstractEngine.states\";\nimport \"./AbstractEngine/abstractEngine.renderPass\";\nimport \"./AbstractEngine/abstractEngine.texture\";\nimport { AbstractEngine } from \"./abstractEngine\";\nimport { CreateImageBitmapFromSource, ExitFullscreen, ExitPointerlock, GetFontOffset, RequestFullscreen, RequestPointerlock, ResizeImageBitmap, _CommonDispose, _CommonInit, } from \"./engine.common\";\nimport { PerfCounter } from \"../Misc/perfCounter\";\nimport \"../Audio/audioEngine\";\n/**\n * The engine class is responsible for interfacing with all lower-level APIs such as WebGL and Audio\n */\nexport class Engine extends ThinEngine {\n /**\n * Returns the current npm package of the sdk\n */\n // Not mixed with Version for tooling purpose.\n static get NpmPackage() {\n return AbstractEngine.NpmPackage;\n }\n /**\n * Returns the current version of the framework\n */\n static get Version() {\n return AbstractEngine.Version;\n }\n /** Gets the list of created engines */\n static get Instances() {\n return EngineStore.Instances;\n }\n /**\n * Gets the latest created engine\n */\n static get LastCreatedEngine() {\n return EngineStore.LastCreatedEngine;\n }\n /**\n * Gets the latest created scene\n */\n static get LastCreatedScene() {\n return EngineStore.LastCreatedScene;\n }\n /** @internal */\n // eslint-disable-next-line jsdoc/require-returns-check\n /**\n * Method called to create the default loading screen.\n * This can be overridden in your own app.\n * @param canvas The rendering canvas element\n * @returns The loading screen\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static DefaultLoadingScreenFactory(canvas) {\n return AbstractEngine.DefaultLoadingScreenFactory(canvas);\n }\n get _supportsHardwareTextureRescaling() {\n return !!Engine._RescalePostProcessFactory;\n }\n _measureFps() {\n this._performanceMonitor.sampleFrame();\n this._fps = this._performanceMonitor.averageFPS;\n this._deltaTime = this._performanceMonitor.instantaneousFrameTime || 0;\n }\n /**\n * Gets the performance monitor attached to this engine\n * @see https://doc.babylonjs.com/features/featuresDeepDive/scene/optimize_your_scene#engineinstrumentation\n */\n get performanceMonitor() {\n return this._performanceMonitor;\n }\n // Events\n /**\n * Creates a new engine\n * @param canvasOrContext defines the canvas or WebGL context to use for rendering. If you provide a WebGL context, Babylon.js will not hook events on the canvas (like pointers, keyboards, etc...) so no event observables will be available. This is mostly used when Babylon.js is used as a plugin on a system which already used the WebGL context\n * @param antialias defines enable antialiasing (default: false)\n * @param options defines further options to be sent to the getContext() function\n * @param adaptToDeviceRatio defines whether to adapt to the device's viewport characteristics (default: false)\n */\n constructor(canvasOrContext, antialias, options, adaptToDeviceRatio = false) {\n super(canvasOrContext, antialias, options, adaptToDeviceRatio);\n // Members\n /**\n * If set, will be used to request the next animation frame for the render loop\n */\n this.customAnimationFrameRequester = null;\n this._performanceMonitor = new PerformanceMonitor();\n this._drawCalls = new PerfCounter();\n if (!canvasOrContext) {\n return;\n }\n this._features.supportRenderPasses = true;\n options = this._creationOptions;\n }\n _initGLContext() {\n super._initGLContext();\n this._rescalePostProcess = null;\n }\n /**\n * Shared initialization across engines types.\n * @param canvas The canvas associated with this instance of the engine.\n */\n _sharedInit(canvas) {\n super._sharedInit(canvas);\n _CommonInit(this, canvas, this._creationOptions);\n }\n /**\n * Resize an image and returns the image data as an uint8array\n * @param image image to resize\n * @param bufferWidth destination buffer width\n * @param bufferHeight destination buffer height\n * @returns an uint8array containing RGBA values of bufferWidth * bufferHeight size\n */\n resizeImageBitmap(image, bufferWidth, bufferHeight) {\n return ResizeImageBitmap(this, image, bufferWidth, bufferHeight);\n }\n /**\n * Engine abstraction for loading and creating an image bitmap from a given source string.\n * @param imageSource source to load the image from.\n * @param options An object that sets options for the image's extraction.\n * @returns ImageBitmap\n */\n _createImageBitmapFromSource(imageSource, options) {\n return CreateImageBitmapFromSource(this, imageSource, options);\n }\n /**\n * Toggle full screen mode\n * @param requestPointerLock defines if a pointer lock should be requested from the user\n */\n switchFullscreen(requestPointerLock) {\n if (this.isFullscreen) {\n this.exitFullscreen();\n }\n else {\n this.enterFullscreen(requestPointerLock);\n }\n }\n /**\n * Enters full screen mode\n * @param requestPointerLock defines if a pointer lock should be requested from the user\n */\n enterFullscreen(requestPointerLock) {\n if (!this.isFullscreen) {\n this._pointerLockRequested = requestPointerLock;\n if (this._renderingCanvas) {\n RequestFullscreen(this._renderingCanvas);\n }\n }\n }\n /**\n * Exits full screen mode\n */\n exitFullscreen() {\n if (this.isFullscreen) {\n ExitFullscreen();\n }\n }\n /** States */\n /**\n * Sets a boolean indicating if the dithering state is enabled or disabled\n * @param value defines the dithering state\n */\n setDitheringState(value) {\n if (value) {\n this._gl.enable(this._gl.DITHER);\n }\n else {\n this._gl.disable(this._gl.DITHER);\n }\n }\n /**\n * Sets a boolean indicating if the rasterizer state is enabled or disabled\n * @param value defines the rasterizer state\n */\n setRasterizerState(value) {\n if (value) {\n this._gl.disable(this._gl.RASTERIZER_DISCARD);\n }\n else {\n this._gl.enable(this._gl.RASTERIZER_DISCARD);\n }\n }\n /**\n * Directly set the WebGL Viewport\n * @param x defines the x coordinate of the viewport (in screen space)\n * @param y defines the y coordinate of the viewport (in screen space)\n * @param width defines the width of the viewport (in screen space)\n * @param height defines the height of the viewport (in screen space)\n * @returns the current viewport Object (if any) that is being replaced by this call. You can restore this viewport later on to go back to the original state\n */\n setDirectViewport(x, y, width, height) {\n const currentViewport = this._cachedViewport;\n this._cachedViewport = null;\n this._viewport(x, y, width, height);\n return currentViewport;\n }\n /**\n * Executes a scissor clear (ie. a clear on a specific portion of the screen)\n * @param x defines the x-coordinate of the bottom left corner of the clear rectangle\n * @param y defines the y-coordinate of the corner of the clear rectangle\n * @param width defines the width of the clear rectangle\n * @param height defines the height of the clear rectangle\n * @param clearColor defines the clear color\n */\n scissorClear(x, y, width, height, clearColor) {\n this.enableScissor(x, y, width, height);\n this.clear(clearColor, true, true, true);\n this.disableScissor();\n }\n /**\n * Enable scissor test on a specific rectangle (ie. render will only be executed on a specific portion of the screen)\n * @param x defines the x-coordinate of the bottom left corner of the clear rectangle\n * @param y defines the y-coordinate of the corner of the clear rectangle\n * @param width defines the width of the clear rectangle\n * @param height defines the height of the clear rectangle\n */\n enableScissor(x, y, width, height) {\n const gl = this._gl;\n // Change state\n gl.enable(gl.SCISSOR_TEST);\n gl.scissor(x, y, width, height);\n }\n /**\n * Disable previously set scissor test rectangle\n */\n disableScissor() {\n const gl = this._gl;\n gl.disable(gl.SCISSOR_TEST);\n }\n /**\n * @internal\n */\n _loadFileAsync(url, offlineProvider, useArrayBuffer) {\n return new Promise((resolve, reject) => {\n this._loadFile(url, (data) => {\n resolve(data);\n }, undefined, offlineProvider, useArrayBuffer, (request, exception) => {\n reject(exception);\n });\n });\n }\n /**\n * Gets the source code of the vertex shader associated with a specific webGL program\n * @param program defines the program to use\n * @returns a string containing the source code of the vertex shader associated with the program\n */\n getVertexShaderSource(program) {\n const shaders = this._gl.getAttachedShaders(program);\n if (!shaders) {\n return null;\n }\n return this._gl.getShaderSource(shaders[0]);\n }\n /**\n * Gets the source code of the fragment shader associated with a specific webGL program\n * @param program defines the program to use\n * @returns a string containing the source code of the fragment shader associated with the program\n */\n getFragmentShaderSource(program) {\n const shaders = this._gl.getAttachedShaders(program);\n if (!shaders) {\n return null;\n }\n return this._gl.getShaderSource(shaders[1]);\n }\n /**\n * sets the object from which width and height will be taken from when getting render width and height\n * Will fallback to the gl object\n * @param dimensions the framebuffer width and height that will be used.\n */\n set framebufferDimensionsObject(dimensions) {\n this._framebufferDimensionsObject = dimensions;\n if (this._framebufferDimensionsObject) {\n this.onResizeObservable.notifyObservers(this);\n }\n }\n _rebuildBuffers() {\n // Index / Vertex\n for (const scene of this.scenes) {\n scene.resetCachedMaterial();\n scene._rebuildGeometries();\n }\n for (const scene of this._virtualScenes) {\n scene.resetCachedMaterial();\n scene._rebuildGeometries();\n }\n super._rebuildBuffers();\n }\n /**\n * Get Font size information\n * @param font font name\n * @returns an object containing ascent, height and descent\n */\n getFontOffset(font) {\n return GetFontOffset(font);\n }\n _cancelFrame() {\n if (this.customAnimationFrameRequester) {\n if (this._frameHandler !== 0) {\n this._frameHandler = 0;\n const { cancelAnimationFrame } = this.customAnimationFrameRequester;\n if (cancelAnimationFrame) {\n cancelAnimationFrame(this.customAnimationFrameRequester.requestID);\n }\n }\n }\n else {\n super._cancelFrame();\n }\n }\n _renderLoop() {\n // Reset the frame handler before rendering a frame to determine if a new frame has been queued.\n this._frameHandler = 0;\n if (!this._contextWasLost) {\n let shouldRender = true;\n if (this.isDisposed || (!this.renderEvenInBackground && this._windowIsBackground)) {\n shouldRender = false;\n }\n if (shouldRender) {\n // Start new frame\n this.beginFrame();\n // Child canvases\n if (!this._renderViews()) {\n // Main frame\n this._renderFrame();\n }\n // Present\n this.endFrame();\n }\n }\n // The first condition prevents queuing another frame if we no longer have active render loops (e.g., if\n // `stopRenderLoop` is called mid frame). The second condition prevents queuing another frame if one has\n // already been queued (e.g., if `stopRenderLoop` and `runRenderLoop` is called mid frame).\n if (this._activeRenderLoops.length > 0 && this._frameHandler === 0) {\n if (this.customAnimationFrameRequester) {\n this.customAnimationFrameRequester.requestID = this._queueNewFrame(this.customAnimationFrameRequester.renderFunction || this._boundRenderFunction, this.customAnimationFrameRequester);\n this._frameHandler = this.customAnimationFrameRequester.requestID;\n }\n else {\n this._frameHandler = this._queueNewFrame(this._boundRenderFunction, this.getHostWindow());\n }\n }\n }\n /**\n * Enters Pointerlock mode\n */\n enterPointerlock() {\n if (this._renderingCanvas) {\n RequestPointerlock(this._renderingCanvas);\n }\n }\n /**\n * Exits Pointerlock mode\n */\n exitPointerlock() {\n ExitPointerlock();\n }\n /**\n * Begin a new frame\n */\n beginFrame() {\n this._measureFps();\n super.beginFrame();\n }\n _deletePipelineContext(pipelineContext) {\n const webGLPipelineContext = pipelineContext;\n if (webGLPipelineContext && webGLPipelineContext.program) {\n if (webGLPipelineContext.transformFeedback) {\n this.deleteTransformFeedback(webGLPipelineContext.transformFeedback);\n webGLPipelineContext.transformFeedback = null;\n }\n }\n super._deletePipelineContext(pipelineContext);\n }\n createShaderProgram(pipelineContext, vertexCode, fragmentCode, defines, context, transformFeedbackVaryings = null) {\n context = context || this._gl;\n this.onBeforeShaderCompilationObservable.notifyObservers(this);\n const program = super.createShaderProgram(pipelineContext, vertexCode, fragmentCode, defines, context, transformFeedbackVaryings);\n this.onAfterShaderCompilationObservable.notifyObservers(this);\n return program;\n }\n _createShaderProgram(pipelineContext, vertexShader, fragmentShader, context, transformFeedbackVaryings = null) {\n const shaderProgram = context.createProgram();\n pipelineContext.program = shaderProgram;\n if (!shaderProgram) {\n throw new Error(\"Unable to create program\");\n }\n context.attachShader(shaderProgram, vertexShader);\n context.attachShader(shaderProgram, fragmentShader);\n if (this.webGLVersion > 1 && transformFeedbackVaryings) {\n const transformFeedback = this.createTransformFeedback();\n this.bindTransformFeedback(transformFeedback);\n this.setTranformFeedbackVaryings(shaderProgram, transformFeedbackVaryings);\n pipelineContext.transformFeedback = transformFeedback;\n }\n context.linkProgram(shaderProgram);\n if (this.webGLVersion > 1 && transformFeedbackVaryings) {\n this.bindTransformFeedback(null);\n }\n pipelineContext.context = context;\n pipelineContext.vertexShader = vertexShader;\n pipelineContext.fragmentShader = fragmentShader;\n if (!pipelineContext.isParallelCompiled) {\n this._finalizePipelineContext(pipelineContext);\n }\n return shaderProgram;\n }\n /**\n * @internal\n */\n _releaseTexture(texture) {\n super._releaseTexture(texture);\n }\n /**\n * @internal\n */\n _releaseRenderTargetWrapper(rtWrapper) {\n super._releaseRenderTargetWrapper(rtWrapper);\n // Set output texture of post process to null if the framebuffer has been released/disposed\n this.scenes.forEach((scene) => {\n scene.postProcesses.forEach((postProcess) => {\n if (postProcess._outputTexture === rtWrapper) {\n postProcess._outputTexture = null;\n }\n });\n scene.cameras.forEach((camera) => {\n camera._postProcesses.forEach((postProcess) => {\n if (postProcess) {\n if (postProcess._outputTexture === rtWrapper) {\n postProcess._outputTexture = null;\n }\n }\n });\n });\n });\n }\n /**\n * @internal\n * Rescales a texture\n * @param source input texture\n * @param destination destination texture\n * @param scene scene to use to render the resize\n * @param internalFormat format to use when resizing\n * @param onComplete callback to be called when resize has completed\n */\n _rescaleTexture(source, destination, scene, internalFormat, onComplete) {\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_MAG_FILTER, this._gl.LINEAR);\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_MIN_FILTER, this._gl.LINEAR);\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_WRAP_S, this._gl.CLAMP_TO_EDGE);\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_WRAP_T, this._gl.CLAMP_TO_EDGE);\n const rtt = this.createRenderTargetTexture({\n width: destination.width,\n height: destination.height,\n }, {\n generateMipMaps: false,\n type: Constants.TEXTURETYPE_UNSIGNED_INT,\n samplingMode: Constants.TEXTURE_BILINEAR_SAMPLINGMODE,\n generateDepthBuffer: false,\n generateStencilBuffer: false,\n });\n if (!this._rescalePostProcess && Engine._RescalePostProcessFactory) {\n this._rescalePostProcess = Engine._RescalePostProcessFactory(this);\n }\n if (this._rescalePostProcess) {\n this._rescalePostProcess.externalTextureSamplerBinding = true;\n const onCompiled = () => {\n this._rescalePostProcess.onApply = function (effect) {\n effect._bindTexture(\"textureSampler\", source);\n };\n let hostingScene = scene;\n if (!hostingScene) {\n hostingScene = this.scenes[this.scenes.length - 1];\n }\n hostingScene.postProcessManager.directRender([this._rescalePostProcess], rtt, true);\n this._bindTextureDirectly(this._gl.TEXTURE_2D, destination, true);\n this._gl.copyTexImage2D(this._gl.TEXTURE_2D, 0, internalFormat, 0, 0, destination.width, destination.height, 0);\n this.unBindFramebuffer(rtt);\n rtt.dispose();\n if (onComplete) {\n onComplete();\n }\n };\n const effect = this._rescalePostProcess.getEffect();\n if (effect) {\n effect.executeWhenCompiled(onCompiled);\n }\n else {\n this._rescalePostProcess.onEffectCreatedObservable.addOnce((effect) => {\n effect.executeWhenCompiled(onCompiled);\n });\n }\n }\n }\n /**\n * Wraps an external web gl texture in a Babylon texture.\n * @param texture defines the external texture\n * @param hasMipMaps defines whether the external texture has mip maps (default: false)\n * @param samplingMode defines the sampling mode for the external texture (default: Constants.TEXTURE_TRILINEAR_SAMPLINGMODE)\n * @param width defines the width for the external texture (default: 0)\n * @param height defines the height for the external texture (default: 0)\n * @returns the babylon internal texture\n */\n wrapWebGLTexture(texture, hasMipMaps = false, samplingMode = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE, width = 0, height = 0) {\n const hardwareTexture = new WebGLHardwareTexture(texture, this._gl);\n const internalTexture = new InternalTexture(this, 0 /* InternalTextureSource.Unknown */, true);\n internalTexture._hardwareTexture = hardwareTexture;\n internalTexture.baseWidth = width;\n internalTexture.baseHeight = height;\n internalTexture.width = width;\n internalTexture.height = height;\n internalTexture.isReady = true;\n internalTexture.useMipMaps = hasMipMaps;\n this.updateTextureSamplingMode(samplingMode, internalTexture);\n return internalTexture;\n }\n /**\n * @internal\n */\n _uploadImageToTexture(texture, image, faceIndex = 0, lod = 0) {\n const gl = this._gl;\n const textureType = this._getWebGLTextureType(texture.type);\n const format = this._getInternalFormat(texture.format);\n const internalFormat = this._getRGBABufferInternalSizedFormat(texture.type, format);\n const bindTarget = texture.isCube ? gl.TEXTURE_CUBE_MAP : gl.TEXTURE_2D;\n this._bindTextureDirectly(bindTarget, texture, true);\n this._unpackFlipY(texture.invertY);\n let target = gl.TEXTURE_2D;\n if (texture.isCube) {\n target = gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex;\n }\n gl.texImage2D(target, lod, internalFormat, format, textureType, image);\n this._bindTextureDirectly(bindTarget, null, true);\n }\n /**\n * Updates a depth texture Comparison Mode and Function.\n * If the comparison Function is equal to 0, the mode will be set to none.\n * Otherwise, this only works in webgl 2 and requires a shadow sampler in the shader.\n * @param texture The texture to set the comparison function for\n * @param comparisonFunction The comparison function to set, 0 if no comparison required\n */\n updateTextureComparisonFunction(texture, comparisonFunction) {\n if (this.webGLVersion === 1) {\n Logger.Error(\"WebGL 1 does not support texture comparison.\");\n return;\n }\n const gl = this._gl;\n if (texture.isCube) {\n this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP, texture, true);\n if (comparisonFunction === 0) {\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_COMPARE_FUNC, Constants.LEQUAL);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_COMPARE_MODE, gl.NONE);\n }\n else {\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_COMPARE_FUNC, comparisonFunction);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_COMPARE_MODE, gl.COMPARE_REF_TO_TEXTURE);\n }\n this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP, null);\n }\n else {\n this._bindTextureDirectly(this._gl.TEXTURE_2D, texture, true);\n if (comparisonFunction === 0) {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_FUNC, Constants.LEQUAL);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_MODE, gl.NONE);\n }\n else {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_FUNC, comparisonFunction);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_MODE, gl.COMPARE_REF_TO_TEXTURE);\n }\n this._bindTextureDirectly(this._gl.TEXTURE_2D, null);\n }\n texture._comparisonFunction = comparisonFunction;\n }\n /**\n * Creates a webGL buffer to use with instantiation\n * @param capacity defines the size of the buffer\n * @returns the webGL buffer\n */\n createInstancesBuffer(capacity) {\n const buffer = this._gl.createBuffer();\n if (!buffer) {\n throw new Error(\"Unable to create instance buffer\");\n }\n const result = new WebGLDataBuffer(buffer);\n result.capacity = capacity;\n this.bindArrayBuffer(result);\n this._gl.bufferData(this._gl.ARRAY_BUFFER, capacity, this._gl.DYNAMIC_DRAW);\n result.references = 1;\n return result;\n }\n /**\n * Delete a webGL buffer used with instantiation\n * @param buffer defines the webGL buffer to delete\n */\n deleteInstancesBuffer(buffer) {\n this._gl.deleteBuffer(buffer);\n }\n _clientWaitAsync(sync, flags = 0, intervalms = 10) {\n const gl = this._gl;\n return new Promise((resolve, reject) => {\n const check = () => {\n const res = gl.clientWaitSync(sync, flags, 0);\n if (res == gl.WAIT_FAILED) {\n reject();\n return;\n }\n if (res == gl.TIMEOUT_EXPIRED) {\n setTimeout(check, intervalms);\n return;\n }\n resolve();\n };\n check();\n });\n }\n /**\n * @internal\n */\n _readPixelsAsync(x, y, w, h, format, type, outputBuffer) {\n if (this._webGLVersion < 2) {\n throw new Error(\"_readPixelsAsync only work on WebGL2+\");\n }\n const gl = this._gl;\n const buf = gl.createBuffer();\n gl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);\n gl.bufferData(gl.PIXEL_PACK_BUFFER, outputBuffer.byteLength, gl.STREAM_READ);\n gl.readPixels(x, y, w, h, format, type, 0);\n gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);\n const sync = gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0);\n if (!sync) {\n return null;\n }\n gl.flush();\n return this._clientWaitAsync(sync, 0, 10).then(() => {\n gl.deleteSync(sync);\n gl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);\n gl.getBufferSubData(gl.PIXEL_PACK_BUFFER, 0, outputBuffer);\n gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);\n gl.deleteBuffer(buf);\n return outputBuffer;\n });\n }\n dispose() {\n this.hideLoadingUI();\n // Rescale PP\n if (this._rescalePostProcess) {\n this._rescalePostProcess.dispose();\n }\n _CommonDispose(this, this._renderingCanvas);\n super.dispose();\n }\n}\n// Const statics\n/** Defines that alpha blending is disabled */\nEngine.ALPHA_DISABLE = Constants.ALPHA_DISABLE;\n/** Defines that alpha blending to SRC ALPHA * SRC + DEST */\nEngine.ALPHA_ADD = Constants.ALPHA_ADD;\n/** Defines that alpha blending to SRC ALPHA * SRC + (1 - SRC ALPHA) * DEST */\nEngine.ALPHA_COMBINE = Constants.ALPHA_COMBINE;\n/** Defines that alpha blending to DEST - SRC * DEST */\nEngine.ALPHA_SUBTRACT = Constants.ALPHA_SUBTRACT;\n/** Defines that alpha blending to SRC * DEST */\nEngine.ALPHA_MULTIPLY = Constants.ALPHA_MULTIPLY;\n/** Defines that alpha blending to SRC ALPHA * SRC + (1 - SRC) * DEST */\nEngine.ALPHA_MAXIMIZED = Constants.ALPHA_MAXIMIZED;\n/** Defines that alpha blending to SRC + DEST */\nEngine.ALPHA_ONEONE = Constants.ALPHA_ONEONE;\n/** Defines that alpha blending to SRC + (1 - SRC ALPHA) * DEST */\nEngine.ALPHA_PREMULTIPLIED = Constants.ALPHA_PREMULTIPLIED;\n/**\n * Defines that alpha blending to SRC + (1 - SRC ALPHA) * DEST\n * Alpha will be set to (1 - SRC ALPHA) * DEST ALPHA\n */\nEngine.ALPHA_PREMULTIPLIED_PORTERDUFF = Constants.ALPHA_PREMULTIPLIED_PORTERDUFF;\n/** Defines that alpha blending to CST * SRC + (1 - CST) * DEST */\nEngine.ALPHA_INTERPOLATE = Constants.ALPHA_INTERPOLATE;\n/**\n * Defines that alpha blending to SRC + (1 - SRC) * DEST\n * Alpha will be set to SRC ALPHA + (1 - SRC ALPHA) * DEST ALPHA\n */\nEngine.ALPHA_SCREENMODE = Constants.ALPHA_SCREENMODE;\n/** Defines that the resource is not delayed*/\nEngine.DELAYLOADSTATE_NONE = Constants.DELAYLOADSTATE_NONE;\n/** Defines that the resource was successfully delay loaded */\nEngine.DELAYLOADSTATE_LOADED = Constants.DELAYLOADSTATE_LOADED;\n/** Defines that the resource is currently delay loading */\nEngine.DELAYLOADSTATE_LOADING = Constants.DELAYLOADSTATE_LOADING;\n/** Defines that the resource is delayed and has not started loading */\nEngine.DELAYLOADSTATE_NOTLOADED = Constants.DELAYLOADSTATE_NOTLOADED;\n// Depht or Stencil test Constants.\n/** Passed to depthFunction or stencilFunction to specify depth or stencil tests will never pass. i.e. Nothing will be drawn */\nEngine.NEVER = Constants.NEVER;\n/** Passed to depthFunction or stencilFunction to specify depth or stencil tests will always pass. i.e. Pixels will be drawn in the order they are drawn */\nEngine.ALWAYS = Constants.ALWAYS;\n/** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is less than the stored value */\nEngine.LESS = Constants.LESS;\n/** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is equals to the stored value */\nEngine.EQUAL = Constants.EQUAL;\n/** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is less than or equal to the stored value */\nEngine.LEQUAL = Constants.LEQUAL;\n/** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is greater than the stored value */\nEngine.GREATER = Constants.GREATER;\n/** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is greater than or equal to the stored value */\nEngine.GEQUAL = Constants.GEQUAL;\n/** Passed to depthFunction or stencilFunction to specify depth or stencil tests will pass if the new depth value is not equal to the stored value */\nEngine.NOTEQUAL = Constants.NOTEQUAL;\n// Stencil Actions Constants.\n/** Passed to stencilOperation to specify that stencil value must be kept */\nEngine.KEEP = Constants.KEEP;\n/** Passed to stencilOperation to specify that stencil value must be replaced */\nEngine.REPLACE = Constants.REPLACE;\n/** Passed to stencilOperation to specify that stencil value must be incremented */\nEngine.INCR = Constants.INCR;\n/** Passed to stencilOperation to specify that stencil value must be decremented */\nEngine.DECR = Constants.DECR;\n/** Passed to stencilOperation to specify that stencil value must be inverted */\nEngine.INVERT = Constants.INVERT;\n/** Passed to stencilOperation to specify that stencil value must be incremented with wrapping */\nEngine.INCR_WRAP = Constants.INCR_WRAP;\n/** Passed to stencilOperation to specify that stencil value must be decremented with wrapping */\nEngine.DECR_WRAP = Constants.DECR_WRAP;\n/** Texture is not repeating outside of 0..1 UVs */\nEngine.TEXTURE_CLAMP_ADDRESSMODE = Constants.TEXTURE_CLAMP_ADDRESSMODE;\n/** Texture is repeating outside of 0..1 UVs */\nEngine.TEXTURE_WRAP_ADDRESSMODE = Constants.TEXTURE_WRAP_ADDRESSMODE;\n/** Texture is repeating and mirrored */\nEngine.TEXTURE_MIRROR_ADDRESSMODE = Constants.TEXTURE_MIRROR_ADDRESSMODE;\n/** ALPHA */\nEngine.TEXTUREFORMAT_ALPHA = Constants.TEXTUREFORMAT_ALPHA;\n/** LUMINANCE */\nEngine.TEXTUREFORMAT_LUMINANCE = Constants.TEXTUREFORMAT_LUMINANCE;\n/** LUMINANCE_ALPHA */\nEngine.TEXTUREFORMAT_LUMINANCE_ALPHA = Constants.TEXTUREFORMAT_LUMINANCE_ALPHA;\n/** RGB */\nEngine.TEXTUREFORMAT_RGB = Constants.TEXTUREFORMAT_RGB;\n/** RGBA */\nEngine.TEXTUREFORMAT_RGBA = Constants.TEXTUREFORMAT_RGBA;\n/** RED */\nEngine.TEXTUREFORMAT_RED = Constants.TEXTUREFORMAT_RED;\n/** RED (2nd reference) */\nEngine.TEXTUREFORMAT_R = Constants.TEXTUREFORMAT_R;\n/** RED unsigned short normed to [0, 1] **/\nEngine.TEXTUREFORMAT_R16_UNORM = Constants.TEXTUREFORMAT_R16_UNORM;\n/** RG unsigned short normed to [0, 1] **/\nEngine.TEXTUREFORMAT_RG16_UNORM = Constants.TEXTUREFORMAT_RG16_UNORM;\n/** RGB unsigned short normed to [0, 1] **/\nEngine.TEXTUREFORMAT_RGB16_UNORM = Constants.TEXTUREFORMAT_RGB16_UNORM;\n/** RGBA unsigned short normed to [0, 1] **/\nEngine.TEXTUREFORMAT_RGBA16_UNORM = Constants.TEXTUREFORMAT_RGBA16_UNORM;\n/** RED signed short normed to [-1, 1] **/\nEngine.TEXTUREFORMAT_R16_SNORM = Constants.TEXTUREFORMAT_R16_SNORM;\n/** RG signed short normed to [-1, 1] **/\nEngine.TEXTUREFORMAT_RG16_SNORM = Constants.TEXTUREFORMAT_RG16_SNORM;\n/** RGB signed short normed to [-1, 1] **/\nEngine.TEXTUREFORMAT_RGB16_SNORM = Constants.TEXTUREFORMAT_RGB16_SNORM;\n/** RGBA signed short normed to [-1, 1] **/\nEngine.TEXTUREFORMAT_RGBA16_SNORM = Constants.TEXTUREFORMAT_RGBA16_SNORM;\n/** RG */\nEngine.TEXTUREFORMAT_RG = Constants.TEXTUREFORMAT_RG;\n/** RED_INTEGER */\nEngine.TEXTUREFORMAT_RED_INTEGER = Constants.TEXTUREFORMAT_RED_INTEGER;\n/** RED_INTEGER (2nd reference) */\nEngine.TEXTUREFORMAT_R_INTEGER = Constants.TEXTUREFORMAT_R_INTEGER;\n/** RG_INTEGER */\nEngine.TEXTUREFORMAT_RG_INTEGER = Constants.TEXTUREFORMAT_RG_INTEGER;\n/** RGB_INTEGER */\nEngine.TEXTUREFORMAT_RGB_INTEGER = Constants.TEXTUREFORMAT_RGB_INTEGER;\n/** RGBA_INTEGER */\nEngine.TEXTUREFORMAT_RGBA_INTEGER = Constants.TEXTUREFORMAT_RGBA_INTEGER;\n/** UNSIGNED_BYTE */\nEngine.TEXTURETYPE_UNSIGNED_BYTE = Constants.TEXTURETYPE_UNSIGNED_BYTE;\n/** @deprecated use more explicit TEXTURETYPE_UNSIGNED_BYTE instead. Use TEXTURETYPE_UNSIGNED_INTEGER for 32bits values.*/\nEngine.TEXTURETYPE_UNSIGNED_INT = Constants.TEXTURETYPE_UNSIGNED_INT;\n/** FLOAT */\nEngine.TEXTURETYPE_FLOAT = Constants.TEXTURETYPE_FLOAT;\n/** HALF_FLOAT */\nEngine.TEXTURETYPE_HALF_FLOAT = Constants.TEXTURETYPE_HALF_FLOAT;\n/** BYTE */\nEngine.TEXTURETYPE_BYTE = Constants.TEXTURETYPE_BYTE;\n/** SHORT */\nEngine.TEXTURETYPE_SHORT = Constants.TEXTURETYPE_SHORT;\n/** UNSIGNED_SHORT */\nEngine.TEXTURETYPE_UNSIGNED_SHORT = Constants.TEXTURETYPE_UNSIGNED_SHORT;\n/** INT */\nEngine.TEXTURETYPE_INT = Constants.TEXTURETYPE_INT;\n/** UNSIGNED_INT */\nEngine.TEXTURETYPE_UNSIGNED_INTEGER = Constants.TEXTURETYPE_UNSIGNED_INTEGER;\n/** UNSIGNED_SHORT_4_4_4_4 */\nEngine.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4 = Constants.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4;\n/** UNSIGNED_SHORT_5_5_5_1 */\nEngine.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1 = Constants.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1;\n/** UNSIGNED_SHORT_5_6_5 */\nEngine.TEXTURETYPE_UNSIGNED_SHORT_5_6_5 = Constants.TEXTURETYPE_UNSIGNED_SHORT_5_6_5;\n/** UNSIGNED_INT_2_10_10_10_REV */\nEngine.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV = Constants.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV;\n/** UNSIGNED_INT_24_8 */\nEngine.TEXTURETYPE_UNSIGNED_INT_24_8 = Constants.TEXTURETYPE_UNSIGNED_INT_24_8;\n/** UNSIGNED_INT_10F_11F_11F_REV */\nEngine.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV = Constants.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV;\n/** UNSIGNED_INT_5_9_9_9_REV */\nEngine.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV = Constants.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV;\n/** FLOAT_32_UNSIGNED_INT_24_8_REV */\nEngine.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV = Constants.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV;\n/** nearest is mag = nearest and min = nearest and mip = none */\nEngine.TEXTURE_NEAREST_SAMPLINGMODE = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\n/** Bilinear is mag = linear and min = linear and mip = nearest */\nEngine.TEXTURE_BILINEAR_SAMPLINGMODE = Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\n/** Trilinear is mag = linear and min = linear and mip = linear */\nEngine.TEXTURE_TRILINEAR_SAMPLINGMODE = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE;\n/** nearest is mag = nearest and min = nearest and mip = linear */\nEngine.TEXTURE_NEAREST_NEAREST_MIPLINEAR = Constants.TEXTURE_NEAREST_NEAREST_MIPLINEAR;\n/** Bilinear is mag = linear and min = linear and mip = nearest */\nEngine.TEXTURE_LINEAR_LINEAR_MIPNEAREST = Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST;\n/** Trilinear is mag = linear and min = linear and mip = linear */\nEngine.TEXTURE_LINEAR_LINEAR_MIPLINEAR = Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR;\n/** mag = nearest and min = nearest and mip = nearest */\nEngine.TEXTURE_NEAREST_NEAREST_MIPNEAREST = Constants.TEXTURE_NEAREST_NEAREST_MIPNEAREST;\n/** mag = nearest and min = linear and mip = nearest */\nEngine.TEXTURE_NEAREST_LINEAR_MIPNEAREST = Constants.TEXTURE_NEAREST_LINEAR_MIPNEAREST;\n/** mag = nearest and min = linear and mip = linear */\nEngine.TEXTURE_NEAREST_LINEAR_MIPLINEAR = Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR;\n/** mag = nearest and min = linear and mip = none */\nEngine.TEXTURE_NEAREST_LINEAR = Constants.TEXTURE_NEAREST_LINEAR;\n/** mag = nearest and min = nearest and mip = none */\nEngine.TEXTURE_NEAREST_NEAREST = Constants.TEXTURE_NEAREST_NEAREST;\n/** mag = linear and min = nearest and mip = nearest */\nEngine.TEXTURE_LINEAR_NEAREST_MIPNEAREST = Constants.TEXTURE_LINEAR_NEAREST_MIPNEAREST;\n/** mag = linear and min = nearest and mip = linear */\nEngine.TEXTURE_LINEAR_NEAREST_MIPLINEAR = Constants.TEXTURE_LINEAR_NEAREST_MIPLINEAR;\n/** mag = linear and min = linear and mip = none */\nEngine.TEXTURE_LINEAR_LINEAR = Constants.TEXTURE_LINEAR_LINEAR;\n/** mag = linear and min = nearest and mip = none */\nEngine.TEXTURE_LINEAR_NEAREST = Constants.TEXTURE_LINEAR_NEAREST;\n/** Explicit coordinates mode */\nEngine.TEXTURE_EXPLICIT_MODE = Constants.TEXTURE_EXPLICIT_MODE;\n/** Spherical coordinates mode */\nEngine.TEXTURE_SPHERICAL_MODE = Constants.TEXTURE_SPHERICAL_MODE;\n/** Planar coordinates mode */\nEngine.TEXTURE_PLANAR_MODE = Constants.TEXTURE_PLANAR_MODE;\n/** Cubic coordinates mode */\nEngine.TEXTURE_CUBIC_MODE = Constants.TEXTURE_CUBIC_MODE;\n/** Projection coordinates mode */\nEngine.TEXTURE_PROJECTION_MODE = Constants.TEXTURE_PROJECTION_MODE;\n/** Skybox coordinates mode */\nEngine.TEXTURE_SKYBOX_MODE = Constants.TEXTURE_SKYBOX_MODE;\n/** Inverse Cubic coordinates mode */\nEngine.TEXTURE_INVCUBIC_MODE = Constants.TEXTURE_INVCUBIC_MODE;\n/** Equirectangular coordinates mode */\nEngine.TEXTURE_EQUIRECTANGULAR_MODE = Constants.TEXTURE_EQUIRECTANGULAR_MODE;\n/** Equirectangular Fixed coordinates mode */\nEngine.TEXTURE_FIXED_EQUIRECTANGULAR_MODE = Constants.TEXTURE_FIXED_EQUIRECTANGULAR_MODE;\n/** Equirectangular Fixed Mirrored coordinates mode */\nEngine.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE = Constants.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE;\n// Texture rescaling mode\n/** Defines that texture rescaling will use a floor to find the closer power of 2 size */\nEngine.SCALEMODE_FLOOR = Constants.SCALEMODE_FLOOR;\n/** Defines that texture rescaling will look for the nearest power of 2 size */\nEngine.SCALEMODE_NEAREST = Constants.SCALEMODE_NEAREST;\n/** Defines that texture rescaling will use a ceil to find the closer power of 2 size */\nEngine.SCALEMODE_CEILING = Constants.SCALEMODE_CEILING;\n//# sourceMappingURL=engine.js.map"],"names":["_convertRGBtoRGBATextureData","rgbData","width","height","textureType","rgbaData","val1","Constants","TEXTURETYPE_FLOAT","Float32Array","TEXTURETYPE_HALF_FLOAT","Uint16Array","TEXTURETYPE_UNSIGNED_INTEGER","Uint32Array","Uint8Array","x","y","index","newIndex","_makeCreateRawTextureFunction","is3D","data","depth","format","generateMipMaps","invertY","samplingMode","compression","TEXTURETYPE_UNSIGNED_BYTE","target","this","_gl","TEXTURE_3D","TEXTURE_2D_ARRAY","texture","InternalTexture","baseWidth","baseHeight","baseDepth","type","is2DArray","_doNotHandleContextLost","_bufferView","updateRawTexture3D","updateRawTexture2DArray","_bindTextureDirectly","filters","_getSamplingParameters","texParameteri","TEXTURE_MAG_FILTER","mag","TEXTURE_MIN_FILTER","min","generateMipmap","_internalTexturesCache","push","_makeUpdateRawTextureFunction","internalType","_getWebGLTextureType","internalFormat","_getInternalFormat","internalSizedFomat","_getRGBABufferInternalSizedFormat","_unpackFlipY","undefined","_compression","pixelStorei","UNPACK_ALIGNMENT","compressedTexImage3D","getCaps","s3tc","texImage3D","isReady","ThinEngine","prototype","setAlphaMode","mode","noDepthWriteChange","_alphaMode","ALPHA_DISABLE","_alphaState","alphaBlend","ALPHA_PREMULTIPLIED","setAlphaBlendFunctionParameters","ONE","ONE_MINUS_SRC_ALPHA","ALPHA_PREMULTIPLIED_PORTERDUFF","ALPHA_COMBINE","SRC_ALPHA","ALPHA_ONEONE","ZERO","ALPHA_ADD","ALPHA_SUBTRACT","ONE_MINUS_SRC_COLOR","ALPHA_MULTIPLY","DST_COLOR","ALPHA_MAXIMIZED","ALPHA_INTERPOLATE","CONSTANT_COLOR","ONE_MINUS_CONSTANT_COLOR","CONSTANT_ALPHA","ONE_MINUS_CONSTANT_ALPHA","ALPHA_SCREENMODE","ALPHA_ONEONE_ONEONE","ALPHA_ALPHATOCOLOR","DST_ALPHA","ALPHA_REVERSEONEMINUS","ONE_MINUS_DST_COLOR","ONE_MINUS_DST_ALPHA","ALPHA_SRC_DSTONEMINUSSRCALPHA","ALPHA_ONEONE_ONEZERO","ALPHA_EXCLUSION","ALPHA_LAYER_ACCUMULATE","depthCullingState","depthMask","updateRawTexture","useSRGBBuffer","TEXTURE_2D","compressedTexImage2D","texImage2D","createRawTexture","creationFlags","_useSRGBBuffer","_getUseSRGBBuffer","createRawCubeTexture","size","gl","isCube","_bufferViewArray","RGB","RGBA","FLOAT","_caps","textureFloatLinearFiltering","HALF_FLOAT_OES","textureHalfFloatLinearFiltering","textureFloatRender","HALF_FLOAT","colorBufferFloat","Logger","Warn","TEXTURE_NEAREST_SAMPLINGMODE","needPOTTextures","IsExponentOfTwo","updateRawCubeTexture","level","TEXTURE_CUBE_MAP","faceIndex","TEXTURE_CUBE_MAP_POSITIVE_X","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","needConversion","faceData","createRawCubeTextureFromUrl","url","scene","noMipmap","callback","mipmapGenerator","onLoad","onError","TEXTURE_TRILINEAR_SAMPLINGMODE","addPendingData","internalCallback","faceDataArrays","mipData","length","mipSize","mipFaceData","removePendingData","onLoadedObservable","notifyObservers","clear","_loadFile","offlineProvider","request","exception","status","statusText","createRawTexture2DArray","createRawTexture3D","_readTexturePixelsSync","buffer","flushRenderer","noDataConversion","Error","_dummyFramebuffer","dummy","createFramebuffer","bindFramebuffer","FRAMEBUFFER","framebufferTexture2D","COLOR_ATTACHMENT0","_hardwareTexture","underlyingResource","readType","UNSIGNED_BYTE","allocateAndCopyTypedBuffer","flushFramebuffer","readPixels","_currentFramebuffer","_readTexturePixels","Promise","resolve","updateDynamicIndexBuffer","indexBuffer","indices","offset","view","_currentBoundBuffer","ELEMENT_ARRAY_BUFFER","bindIndexBuffer","is32Bits","bufferData","DYNAMIC_DRAW","_resetIndexBufferBinding","updateDynamicVertexBuffer","vertexBuffer","byteOffset","byteLength","bindArrayBuffer","dataLength","Array","bufferSubData","ARRAY_BUFFER","subarray","ArrayBuffer","_resetVertexBufferBinding","_createDepthStencilCubeTexture","options","internalTexture","webGLVersion","internalOptions","bilinearFiltering","comparisonFunction","generateStencil","_setupDepthStencilTexture","face","DEPTH24_STENCIL8","DEPTH_STENCIL","UNSIGNED_INT_24_8","DEPTH_COMPONENT24","DEPTH_COMPONENT","UNSIGNED_INT","_setCubeMapTextureParams","loadMipmap","maxLevel","LINEAR","LINEAR_MIPMAP_LINEAR","TEXTURE_LINEAR_LINEAR","textureMaxLevel","TEXTURE_MAX_LEVEL","_maxLodLevel","createCubeTexture","rootUrl","files","forcedExtension","createPolynomials","lodScale","lodOffset","fallback","loaderOptions","createCubeTextureBase","imgs","GetExponentOfTwo","maxCubemapTextureSize","faces","TEXTURE_CUBE_MAP_POSITIVE_Y","TEXTURE_CUBE_MAP_POSITIVE_Z","TEXTURE_CUBE_MAP_NEGATIVE_X","TEXTURE_CUBE_MAP_NEGATIVE_Y","TEXTURE_CUBE_MAP_NEGATIVE_Z","_glSRGBExtensionValues","SRGB8_ALPHA8","texelFormat","_prepareWorkingCanvas","_workingCanvas","_workingContext","drawImage","generateMipMapsForCubemap","unbind","WebGLRenderTargetWrapper","RenderTargetWrapper","setDepthStencilTexture","disposeExisting","super","engine","_engine","_context","hardwareTexture","_autoMSAAManagement","_MSAAFramebuffer","currentFB","_bindUnboundFramebuffer","framebufferRenderbuffer","HasStencilAspect","DEPTH_STENCIL_ATTACHMENT","DEPTH_ATTACHMENT","RENDERBUFFER","getMSAARenderBuffer","constructor","isMulti","context","_framebuffer","_depthStencilBuffer","_colorTextureArray","_depthStencilTextureArray","_disposeOnlyFramebuffers","_currentLOD","_cloneRenderTargetWrapper","rtw","createMultiviewRenderTargetTexture","_swapRenderTargetWrapper","createDepthStencilTexture","samples","TEXTUREFORMAT_DEPTH32_FLOAT","label","currentFrameBuffer","STENCIL_ATTACHMENT","deleteRenderbuffer","shareDepth","renderTarget","depthbuffer","framebuffer","attachment","_generateStencilBuffer","_bindTextureRenderTarget","attachmentIndex","faceIndexOrLayer","lodLevel","layerIndices","framebufferTextureLayer","faceIndices","setTexture","disposePrevious","setLayerAndFaceIndices","layers","textures","textureCount","_attachments","setLayerAndFaceIndex","layer","resolveMSAATextures","currentFramebuffer","dispose","disposeOnlyFramebuffers","deleteTexture","deleteFramebuffer","_createHardwareRenderTargetWrapper","rtWrapper","_renderTargetWrapperCache","createRenderTargetTexture","colorAttachment","generateDepthBuffer","generateStencilBuffer","noColorAttachment","_createInternalTexture","_setupFramebufferDepthAttachments","_generateDepthBuffer","setTextures","_samples","msaaRenderBuffer","updateRenderTargetTextureSampleCount","_createDepthStencilTexture","depthTextureExtension","depthTextureFormat","TEXTUREFORMAT_DEPTH16","TEXTUREFORMAT_DEPTH24","TEXTUREFORMAT_DEPTH24UNORM_STENCIL8","TEXTUREFORMAT_DEPTH24_STENCIL8","TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8","hasStencil","_getWebGLTextureTypeFromDepthTextureFormat","_getInternalFormatFromDepthTextureFormat","_depthStencilTextureWithStencil","Math","maxMSAASamples","releaseMSAARenderBuffers","renderbufferStorageMultisample","colorRenderbuffer","_createRenderBuffer","addMSAARenderBuffer","depthFormat","_depthStencilTexture","TEXTURE_BILINEAR_SAMPLINGMODE","_comparisonFunction","_getTextureTarget","samplingParameters","TEXTURE_COMPARE_FUNC","LEQUAL","TEXTURE_COMPARE_MODE","NONE","COMPARE_REF_TO_TEXTURE","channel","uniform","name","_boundUniforms","depthStencilTexture","_setTexture","createRenderTargetCubeTexture","fullOptions","TEXTUREFORMAT_RGBA","textureFloat","createPrefilteredCubeTexture","async","loadData","info","sphericalPolynomial","_sphericalPolynomial","SphericalPolynomial","_source","textureLOD","DDSTools","import","i","roughness","minLODIndex","maxLODIndex","log2","lodIndex","mipmapIndex","round","max","glTextureFromLod","pow","_cachedWrapU","TEXTURE_CLAMP_ADDRESSMODE","_cachedWrapV","isDDS","isCompressed","UploadDDSLevels","lodTexture","BaseTexture","_isCube","_texture","_lodTextureHigh","_lodTextureMid","_lodTextureLow","createUniformBuffer","elements","_label","ubo","createBuffer","result","WebGLDataBuffer","bindUniformBuffer","UNIFORM_BUFFER","STATIC_DRAW","references","createDynamicUniformBuffer","updateUniformBuffer","uniformBuffer","count","bindBuffer","bindUniformBufferBase","location","bindBufferBase","bindUniformBlock","pipelineContext","blockName","program","uniformLocation","getUniformBlockIndex","uniformBlockBinding","Engine","NpmPackage","AbstractEngine","Version","Instances","EngineStore","LastCreatedEngine","LastCreatedScene","DefaultLoadingScreenFactory","canvas","_supportsHardwareTextureRescaling","_RescalePostProcessFactory","_measureFps","_performanceMonitor","sampleFrame","_fps","averageFPS","_deltaTime","instantaneousFrameTime","performanceMonitor","canvasOrContext","antialias","adaptToDeviceRatio","customAnimationFrameRequester","PerformanceMonitor","_drawCalls","PerfCounter","_features","supportRenderPasses","_creationOptions","_initGLContext","_rescalePostProcess","_sharedInit","_CommonInit","resizeImageBitmap","image","bufferWidth","bufferHeight","ResizeImageBitmap","_createImageBitmapFromSource","imageSource","CreateImageBitmapFromSource","switchFullscreen","requestPointerLock","isFullscreen","exitFullscreen","enterFullscreen","_pointerLockRequested","_renderingCanvas","RequestFullscreen","ExitFullscreen","setDitheringState","value","enable","DITHER","disable","setRasterizerState","RASTERIZER_DISCARD","setDirectViewport","currentViewport","_cachedViewport","_viewport","scissorClear","clearColor","enableScissor","disableScissor","SCISSOR_TEST","scissor","_loadFileAsync","useArrayBuffer","reject","getVertexShaderSource","shaders","getAttachedShaders","getShaderSource","getFragmentShaderSource","framebufferDimensionsObject","dimensions","_framebufferDimensionsObject","onResizeObservable","_rebuildBuffers","scenes","resetCachedMaterial","_rebuildGeometries","_virtualScenes","getFontOffset","font","GetFontOffset","_cancelFrame","_frameHandler","cancelAnimationFrame","requestID","_renderLoop","_contextWasLost","shouldRender","isDisposed","renderEvenInBackground","_windowIsBackground","beginFrame","_renderViews","_renderFrame","endFrame","_activeRenderLoops","_queueNewFrame","renderFunction","_boundRenderFunction","getHostWindow","enterPointerlock","RequestPointerlock","exitPointerlock","ExitPointerlock","_deletePipelineContext","webGLPipelineContext","transformFeedback","deleteTransformFeedback","createShaderProgram","vertexCode","fragmentCode","defines","transformFeedbackVaryings","onBeforeShaderCompilationObservable","onAfterShaderCompilationObservable","_createShaderProgram","vertexShader","fragmentShader","shaderProgram","createProgram","attachShader","createTransformFeedback","bindTransformFeedback","setTranformFeedbackVaryings","linkProgram","isParallelCompiled","_finalizePipelineContext","_releaseTexture","_releaseRenderTargetWrapper","forEach","postProcesses","postProcess","_outputTexture","cameras","camera","_postProcesses","_rescaleTexture","source","destination","onComplete","rtt","TEXTURETYPE_UNSIGNED_INT","externalTextureSamplerBinding","onCompiled","onApply","effect","_bindTexture","hostingScene","postProcessManager","directRender","copyTexImage2D","unBindFramebuffer","getEffect","executeWhenCompiled","onEffectCreatedObservable","addOnce","wrapWebGLTexture","hasMipMaps","WebGLHardwareTexture","useMipMaps","updateTextureSamplingMode","_uploadImageToTexture","lod","bindTarget","updateTextureComparisonFunction","createInstancesBuffer","capacity","deleteInstancesBuffer","deleteBuffer","_clientWaitAsync","sync","flags","intervalms","check","res","clientWaitSync","WAIT_FAILED","TIMEOUT_EXPIRED","setTimeout","_readPixelsAsync","w","h","outputBuffer","_webGLVersion","buf","PIXEL_PACK_BUFFER","STREAM_READ","fenceSync","SYNC_GPU_COMMANDS_COMPLETE","flush","then","deleteSync","getBufferSubData","hideLoadingUI","_CommonDispose","DELAYLOADSTATE_NONE","DELAYLOADSTATE_LOADED","DELAYLOADSTATE_LOADING","DELAYLOADSTATE_NOTLOADED","NEVER","ALWAYS","LESS","EQUAL","GREATER","GEQUAL","NOTEQUAL","KEEP","REPLACE","INCR","DECR","INVERT","INCR_WRAP","DECR_WRAP","TEXTURE_WRAP_ADDRESSMODE","TEXTURE_MIRROR_ADDRESSMODE","TEXTUREFORMAT_ALPHA","TEXTUREFORMAT_LUMINANCE","TEXTUREFORMAT_LUMINANCE_ALPHA","TEXTUREFORMAT_RGB","TEXTUREFORMAT_RED","TEXTUREFORMAT_R","TEXTUREFORMAT_R16_UNORM","TEXTUREFORMAT_RG16_UNORM","TEXTUREFORMAT_RGB16_UNORM","TEXTUREFORMAT_RGBA16_UNORM","TEXTUREFORMAT_R16_SNORM","TEXTUREFORMAT_RG16_SNORM","TEXTUREFORMAT_RGB16_SNORM","TEXTUREFORMAT_RGBA16_SNORM","TEXTUREFORMAT_RG","TEXTUREFORMAT_RED_INTEGER","TEXTUREFORMAT_R_INTEGER","TEXTUREFORMAT_RG_INTEGER","TEXTUREFORMAT_RGB_INTEGER","TEXTUREFORMAT_RGBA_INTEGER","TEXTURETYPE_BYTE","TEXTURETYPE_SHORT","TEXTURETYPE_UNSIGNED_SHORT","TEXTURETYPE_INT","TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4","TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1","TEXTURETYPE_UNSIGNED_SHORT_5_6_5","TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV","TEXTURETYPE_UNSIGNED_INT_24_8","TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV","TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV","TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV","TEXTURE_NEAREST_NEAREST_MIPLINEAR","TEXTURE_LINEAR_LINEAR_MIPNEAREST","TEXTURE_LINEAR_LINEAR_MIPLINEAR","TEXTURE_NEAREST_NEAREST_MIPNEAREST","TEXTURE_NEAREST_LINEAR_MIPNEAREST","TEXTURE_NEAREST_LINEAR_MIPLINEAR","TEXTURE_NEAREST_LINEAR","TEXTURE_NEAREST_NEAREST","TEXTURE_LINEAR_NEAREST_MIPNEAREST","TEXTURE_LINEAR_NEAREST_MIPLINEAR","TEXTURE_LINEAR_NEAREST","TEXTURE_EXPLICIT_MODE","TEXTURE_SPHERICAL_MODE","TEXTURE_PLANAR_MODE","TEXTURE_CUBIC_MODE","TEXTURE_PROJECTION_MODE","TEXTURE_SKYBOX_MODE","TEXTURE_INVCUBIC_MODE","TEXTURE_EQUIRECTANGULAR_MODE","TEXTURE_FIXED_EQUIRECTANGULAR_MODE","TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE","SCALEMODE_FLOOR","SCALEMODE_NEAREST","SCALEMODE_CEILING"],"mappings":"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"}