@babylonjs/viewer 7.41.0 → 7.41.1-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (619) hide show
  1. package/assets/photoStudio.env +0 -0
  2. package/dist/babylon-viewer.esm.js +2 -0
  3. package/dist/babylon-viewer.esm.js.map +1 -0
  4. package/dist/babylon-viewer.esm.min.js +2 -0
  5. package/dist/babylon-viewer.esm.min.js.map +1 -0
  6. package/dist/chunks/EXT_lights_ies-BS2USlck.esm.min.js +2 -0
  7. package/dist/chunks/EXT_lights_ies-BS2USlck.esm.min.js.map +1 -0
  8. package/dist/chunks/EXT_lights_ies-C-joQ5O4.esm.js +84 -0
  9. package/dist/chunks/EXT_lights_ies-C-joQ5O4.esm.js.map +1 -0
  10. package/dist/chunks/EXT_lights_image_based-C3wbbb5Z.esm.js +171 -0
  11. package/dist/chunks/EXT_lights_image_based-C3wbbb5Z.esm.js.map +1 -0
  12. package/dist/chunks/EXT_lights_image_based-DDdRDnM2.esm.min.js +2 -0
  13. package/dist/chunks/EXT_lights_image_based-DDdRDnM2.esm.min.js.map +1 -0
  14. package/dist/chunks/EXT_mesh_gpu_instancing-AXAnRQN7.esm.js +86 -0
  15. package/dist/chunks/EXT_mesh_gpu_instancing-AXAnRQN7.esm.js.map +1 -0
  16. package/dist/chunks/EXT_mesh_gpu_instancing-BcjPo6uC.esm.min.js +2 -0
  17. package/dist/chunks/EXT_mesh_gpu_instancing-BcjPo6uC.esm.min.js.map +1 -0
  18. package/dist/chunks/EXT_meshopt_compression-DlUkQB2P.esm.js +134 -0
  19. package/dist/chunks/EXT_meshopt_compression-DlUkQB2P.esm.js.map +1 -0
  20. package/dist/chunks/EXT_meshopt_compression-yJ4OpORd.esm.min.js +2 -0
  21. package/dist/chunks/EXT_meshopt_compression-yJ4OpORd.esm.min.js.map +1 -0
  22. package/dist/chunks/EXT_texture_avif-BQWbvJfK.esm.min.js +2 -0
  23. package/dist/chunks/EXT_texture_avif-BQWbvJfK.esm.min.js.map +1 -0
  24. package/dist/chunks/EXT_texture_avif-C0pGpnGv.esm.js +44 -0
  25. package/dist/chunks/EXT_texture_avif-C0pGpnGv.esm.js.map +1 -0
  26. package/dist/chunks/EXT_texture_webp-Dd7Uqtmh.esm.min.js +2 -0
  27. package/dist/chunks/EXT_texture_webp-Dd7Uqtmh.esm.min.js.map +1 -0
  28. package/dist/chunks/EXT_texture_webp-DehlrnW-.esm.js +43 -0
  29. package/dist/chunks/EXT_texture_webp-DehlrnW-.esm.js.map +1 -0
  30. package/dist/chunks/ExtrasAsMetadata-C5NMuDj4.esm.js +64 -0
  31. package/dist/chunks/ExtrasAsMetadata-C5NMuDj4.esm.js.map +1 -0
  32. package/dist/chunks/ExtrasAsMetadata-Cp3LHdoG.esm.min.js +2 -0
  33. package/dist/chunks/ExtrasAsMetadata-Cp3LHdoG.esm.min.js.map +1 -0
  34. package/dist/chunks/KHR_animation_pointer-DEBOwDXh.esm.min.js +2 -0
  35. package/dist/chunks/KHR_animation_pointer-DEBOwDXh.esm.min.js.map +1 -0
  36. package/dist/chunks/KHR_animation_pointer-Dx1OeG2b.esm.js +352 -0
  37. package/dist/chunks/KHR_animation_pointer-Dx1OeG2b.esm.js.map +1 -0
  38. package/dist/chunks/KHR_draco_mesh_compression-Ch0QOlBL.esm.min.js +2 -0
  39. package/dist/chunks/KHR_draco_mesh_compression-Ch0QOlBL.esm.min.js.map +1 -0
  40. package/dist/chunks/KHR_draco_mesh_compression-D59SFLyo.esm.js +610 -0
  41. package/dist/chunks/KHR_draco_mesh_compression-D59SFLyo.esm.js.map +1 -0
  42. package/dist/chunks/KHR_interactivity-Blj_9jts.esm.min.js +2 -0
  43. package/dist/chunks/KHR_interactivity-Blj_9jts.esm.min.js.map +1 -0
  44. package/dist/chunks/KHR_interactivity-CR0LYUa7.esm.js +4033 -0
  45. package/dist/chunks/KHR_interactivity-CR0LYUa7.esm.js.map +1 -0
  46. package/dist/chunks/KHR_lights_punctual--w0a62AP.esm.js +581 -0
  47. package/dist/chunks/KHR_lights_punctual--w0a62AP.esm.js.map +1 -0
  48. package/dist/chunks/KHR_lights_punctual-BojffBbG.esm.min.js +2 -0
  49. package/dist/chunks/KHR_lights_punctual-BojffBbG.esm.min.js.map +1 -0
  50. package/dist/chunks/KHR_materials_anisotropy-BPtHWkOQ.esm.js +65 -0
  51. package/dist/chunks/KHR_materials_anisotropy-BPtHWkOQ.esm.js.map +1 -0
  52. package/dist/chunks/KHR_materials_anisotropy-DU5_bnCL.esm.min.js +2 -0
  53. package/dist/chunks/KHR_materials_anisotropy-DU5_bnCL.esm.min.js.map +1 -0
  54. package/dist/chunks/KHR_materials_clearcoat-BBuRlPhc.esm.min.js +2 -0
  55. package/dist/chunks/KHR_materials_clearcoat-BBuRlPhc.esm.min.js.map +1 -0
  56. package/dist/chunks/KHR_materials_clearcoat-Eg0xbuWN.esm.js +96 -0
  57. package/dist/chunks/KHR_materials_clearcoat-Eg0xbuWN.esm.js.map +1 -0
  58. package/dist/chunks/KHR_materials_diffuse_transmission-Bkzk60Y5.esm.min.js +2 -0
  59. package/dist/chunks/KHR_materials_diffuse_transmission-Bkzk60Y5.esm.min.js.map +1 -0
  60. package/dist/chunks/KHR_materials_diffuse_transmission-C3DaLgRY.esm.js +97 -0
  61. package/dist/chunks/KHR_materials_diffuse_transmission-C3DaLgRY.esm.js.map +1 -0
  62. package/dist/chunks/KHR_materials_dispersion-DL_XFhxj.esm.js +62 -0
  63. package/dist/chunks/KHR_materials_dispersion-DL_XFhxj.esm.js.map +1 -0
  64. package/dist/chunks/KHR_materials_dispersion-DbMQPBgM.esm.min.js +2 -0
  65. package/dist/chunks/KHR_materials_dispersion-DbMQPBgM.esm.min.js.map +1 -0
  66. package/dist/chunks/KHR_materials_emissive_strength-BuHyjtBD.esm.js +55 -0
  67. package/dist/chunks/KHR_materials_emissive_strength-BuHyjtBD.esm.js.map +1 -0
  68. package/dist/chunks/KHR_materials_emissive_strength-Djlr_ul3.esm.min.js +2 -0
  69. package/dist/chunks/KHR_materials_emissive_strength-Djlr_ul3.esm.min.js.map +1 -0
  70. package/dist/chunks/KHR_materials_ior-BIe6qBOo.esm.js +64 -0
  71. package/dist/chunks/KHR_materials_ior-BIe6qBOo.esm.js.map +1 -0
  72. package/dist/chunks/KHR_materials_ior-DOfaAmNY.esm.min.js +2 -0
  73. package/dist/chunks/KHR_materials_ior-DOfaAmNY.esm.min.js.map +1 -0
  74. package/dist/chunks/KHR_materials_iridescence-BgElZgUu.esm.js +72 -0
  75. package/dist/chunks/KHR_materials_iridescence-BgElZgUu.esm.js.map +1 -0
  76. package/dist/chunks/KHR_materials_iridescence-lUeo07SZ.esm.min.js +2 -0
  77. package/dist/chunks/KHR_materials_iridescence-lUeo07SZ.esm.min.js.map +1 -0
  78. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-9ShQyhJ6.esm.min.js +2 -0
  79. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-9ShQyhJ6.esm.min.js.map +1 -0
  80. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-DE5LjLg6.esm.js +81 -0
  81. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-DE5LjLg6.esm.js.map +1 -0
  82. package/dist/chunks/KHR_materials_sheen-BfZe6ZFu.esm.js +85 -0
  83. package/dist/chunks/KHR_materials_sheen-BfZe6ZFu.esm.js.map +1 -0
  84. package/dist/chunks/KHR_materials_sheen-OWjuK2V4.esm.min.js +2 -0
  85. package/dist/chunks/KHR_materials_sheen-OWjuK2V4.esm.min.js.map +1 -0
  86. package/dist/chunks/KHR_materials_specular-dowPxbW3.esm.js +75 -0
  87. package/dist/chunks/KHR_materials_specular-dowPxbW3.esm.js.map +1 -0
  88. package/dist/chunks/KHR_materials_specular-nWeBZu0R.esm.min.js +2 -0
  89. package/dist/chunks/KHR_materials_specular-nWeBZu0R.esm.min.js.map +1 -0
  90. package/dist/chunks/KHR_materials_transmission-BPNQkK0O.esm.min.js +2 -0
  91. package/dist/chunks/KHR_materials_transmission-BPNQkK0O.esm.min.js.map +1 -0
  92. package/dist/chunks/KHR_materials_transmission-CHr_yLLX.esm.js +307 -0
  93. package/dist/chunks/KHR_materials_transmission-CHr_yLLX.esm.js.map +1 -0
  94. package/dist/chunks/KHR_materials_unlit-BYXpcsdj.esm.min.js +2 -0
  95. package/dist/chunks/KHR_materials_unlit-BYXpcsdj.esm.min.js.map +1 -0
  96. package/dist/chunks/KHR_materials_unlit-Cr7YsDHT.esm.js +74 -0
  97. package/dist/chunks/KHR_materials_unlit-Cr7YsDHT.esm.js.map +1 -0
  98. package/dist/chunks/KHR_materials_variants-BCVX3sJa.esm.js +262 -0
  99. package/dist/chunks/KHR_materials_variants-BCVX3sJa.esm.js.map +1 -0
  100. package/dist/chunks/KHR_materials_variants-BXzl6KpJ.esm.min.js +2 -0
  101. package/dist/chunks/KHR_materials_variants-BXzl6KpJ.esm.min.js.map +1 -0
  102. package/dist/chunks/KHR_materials_volume-BD9KEaJz.esm.min.js +2 -0
  103. package/dist/chunks/KHR_materials_volume-BD9KEaJz.esm.min.js.map +1 -0
  104. package/dist/chunks/KHR_materials_volume-DrqGUGW6.esm.js +87 -0
  105. package/dist/chunks/KHR_materials_volume-DrqGUGW6.esm.js.map +1 -0
  106. package/dist/chunks/KHR_mesh_quantization-Dg22auJA.esm.min.js +2 -0
  107. package/dist/chunks/KHR_mesh_quantization-Dg22auJA.esm.min.js.map +1 -0
  108. package/dist/chunks/KHR_mesh_quantization-hvxpvTbe.esm.js +26 -0
  109. package/dist/chunks/KHR_mesh_quantization-hvxpvTbe.esm.js.map +1 -0
  110. package/dist/chunks/KHR_node_hoverability-BDiqFmBB.esm.js +39 -0
  111. package/dist/chunks/KHR_node_hoverability-BDiqFmBB.esm.js.map +1 -0
  112. package/dist/chunks/KHR_node_hoverability-CumkOtZM.esm.min.js +2 -0
  113. package/dist/chunks/KHR_node_hoverability-CumkOtZM.esm.min.js.map +1 -0
  114. package/dist/chunks/KHR_node_visibility-BKEa-Yfj.esm.min.js +2 -0
  115. package/dist/chunks/KHR_node_visibility-BKEa-Yfj.esm.min.js.map +1 -0
  116. package/dist/chunks/KHR_node_visibility-K0fsD4Vv.esm.js +46 -0
  117. package/dist/chunks/KHR_node_visibility-K0fsD4Vv.esm.js.map +1 -0
  118. package/dist/chunks/KHR_texture_basisu-8YVY1pKo.esm.js +43 -0
  119. package/dist/chunks/KHR_texture_basisu-8YVY1pKo.esm.js.map +1 -0
  120. package/dist/chunks/KHR_texture_basisu-BM__NeSW.esm.min.js +2 -0
  121. package/dist/chunks/KHR_texture_basisu-BM__NeSW.esm.min.js.map +1 -0
  122. package/dist/chunks/KHR_texture_transform--qxpdvRw.esm.js +63 -0
  123. package/dist/chunks/KHR_texture_transform--qxpdvRw.esm.js.map +1 -0
  124. package/dist/chunks/KHR_texture_transform-C0MO-oJp.esm.min.js +2 -0
  125. package/dist/chunks/KHR_texture_transform-C0MO-oJp.esm.min.js.map +1 -0
  126. package/dist/chunks/KHR_xmp_json_ld-D9FpHvJo.esm.js +51 -0
  127. package/dist/chunks/KHR_xmp_json_ld-D9FpHvJo.esm.js.map +1 -0
  128. package/dist/chunks/KHR_xmp_json_ld-DeXPWWQE.esm.min.js +2 -0
  129. package/dist/chunks/KHR_xmp_json_ld-DeXPWWQE.esm.min.js.map +1 -0
  130. package/dist/chunks/MSFT_audio_emitter-BbICSwFH.esm.min.js +2 -0
  131. package/dist/chunks/MSFT_audio_emitter-BbICSwFH.esm.min.js.map +1 -0
  132. package/dist/chunks/MSFT_audio_emitter-Dd5lbfUc.esm.js +2201 -0
  133. package/dist/chunks/MSFT_audio_emitter-Dd5lbfUc.esm.js.map +1 -0
  134. package/dist/chunks/MSFT_lod-B0zrRF3s.esm.js +337 -0
  135. package/dist/chunks/MSFT_lod-B0zrRF3s.esm.js.map +1 -0
  136. package/dist/chunks/MSFT_lod-Bd4znUfD.esm.min.js +2 -0
  137. package/dist/chunks/MSFT_lod-Bd4znUfD.esm.min.js.map +1 -0
  138. package/dist/chunks/MSFT_minecraftMesh-CdIpMgsb.esm.min.js +2 -0
  139. package/dist/chunks/MSFT_minecraftMesh-CdIpMgsb.esm.min.js.map +1 -0
  140. package/dist/chunks/MSFT_minecraftMesh-WFc8m_Ka.esm.js +46 -0
  141. package/dist/chunks/MSFT_minecraftMesh-WFc8m_Ka.esm.js.map +1 -0
  142. package/dist/chunks/MSFT_sRGBFactors-CTbtGna8.esm.js +47 -0
  143. package/dist/chunks/MSFT_sRGBFactors-CTbtGna8.esm.js.map +1 -0
  144. package/dist/chunks/MSFT_sRGBFactors-yTSoBQJx.esm.min.js +2 -0
  145. package/dist/chunks/MSFT_sRGBFactors-yTSoBQJx.esm.min.js.map +1 -0
  146. package/dist/chunks/animationGroup-8TJDgymS.esm.js +2482 -0
  147. package/dist/chunks/animationGroup-8TJDgymS.esm.js.map +1 -0
  148. package/dist/chunks/animationGroup-toXtd3a1.esm.min.js +2 -0
  149. package/dist/chunks/animationGroup-toXtd3a1.esm.min.js.map +1 -0
  150. package/dist/chunks/assetContainer-7pMDUaac.esm.min.js +2 -0
  151. package/dist/chunks/assetContainer-7pMDUaac.esm.min.js.map +1 -0
  152. package/dist/chunks/assetContainer-DYzO0AbX.esm.js +1720 -0
  153. package/dist/chunks/assetContainer-DYzO0AbX.esm.js.map +1 -0
  154. package/dist/chunks/audioEngine-Kz4HSEXd.esm.min.js +2 -0
  155. package/dist/chunks/audioEngine-Kz4HSEXd.esm.min.js.map +1 -0
  156. package/dist/chunks/audioEngine-peiGqjr6.esm.js +305 -0
  157. package/dist/chunks/audioEngine-peiGqjr6.esm.js.map +1 -0
  158. package/dist/chunks/bakedVertexAnimation-BZvcL01J.esm.min.js +2 -0
  159. package/dist/chunks/bakedVertexAnimation-BZvcL01J.esm.min.js.map +1 -0
  160. package/dist/chunks/bakedVertexAnimation-CPflSjER.esm.js +114 -0
  161. package/dist/chunks/bakedVertexAnimation-CPflSjER.esm.js.map +1 -0
  162. package/dist/chunks/basisTextureLoader-CR0XhSAg.esm.js +600 -0
  163. package/dist/chunks/basisTextureLoader-CR0XhSAg.esm.js.map +1 -0
  164. package/dist/chunks/basisTextureLoader-DVJdcB62.esm.min.js +2 -0
  165. package/dist/chunks/basisTextureLoader-DVJdcB62.esm.min.js.map +1 -0
  166. package/dist/chunks/dds-6EdM5O6M.esm.js +540 -0
  167. package/dist/chunks/dds-6EdM5O6M.esm.js.map +1 -0
  168. package/dist/chunks/dds-DVX_K9B3.esm.min.js +2 -0
  169. package/dist/chunks/dds-DVX_K9B3.esm.min.js.map +1 -0
  170. package/dist/chunks/ddsTextureLoader-BAK7Ib2Z.esm.min.js +2 -0
  171. package/dist/chunks/ddsTextureLoader-BAK7Ib2Z.esm.min.js.map +1 -0
  172. package/dist/chunks/ddsTextureLoader-_nktVxwZ.esm.js +88 -0
  173. package/dist/chunks/ddsTextureLoader-_nktVxwZ.esm.js.map +1 -0
  174. package/dist/chunks/decalFragment-C_Cews3-.esm.js +18 -0
  175. package/dist/chunks/decalFragment-C_Cews3-.esm.js.map +1 -0
  176. package/dist/chunks/decalFragment-Dmj88EX9.esm.min.js +2 -0
  177. package/dist/chunks/decalFragment-Dmj88EX9.esm.min.js.map +1 -0
  178. package/dist/chunks/default.fragment-Bv_nR7po.esm.min.js +2 -0
  179. package/dist/chunks/default.fragment-Bv_nR7po.esm.min.js.map +1 -0
  180. package/dist/chunks/default.fragment-CkZQyJVM.esm.min.js +2 -0
  181. package/dist/chunks/default.fragment-CkZQyJVM.esm.min.js.map +1 -0
  182. package/dist/chunks/default.fragment-CyFHDykY.esm.js +446 -0
  183. package/dist/chunks/default.fragment-CyFHDykY.esm.js.map +1 -0
  184. package/dist/chunks/default.fragment-ej-2z5tS.esm.js +515 -0
  185. package/dist/chunks/default.fragment-ej-2z5tS.esm.js.map +1 -0
  186. package/dist/chunks/default.vertex-16mVOFgT.esm.js +211 -0
  187. package/dist/chunks/default.vertex-16mVOFgT.esm.js.map +1 -0
  188. package/dist/chunks/default.vertex-D--q2At3.esm.min.js +2 -0
  189. package/dist/chunks/default.vertex-D--q2At3.esm.min.js.map +1 -0
  190. package/dist/chunks/default.vertex-DDlgZTrR.esm.js +190 -0
  191. package/dist/chunks/default.vertex-DDlgZTrR.esm.js.map +1 -0
  192. package/dist/chunks/default.vertex-_jqs3KiZ.esm.min.js +2 -0
  193. package/dist/chunks/default.vertex-_jqs3KiZ.esm.min.js.map +1 -0
  194. package/dist/chunks/defaultUboDeclaration-8YG0iNg8.esm.js +15 -0
  195. package/dist/chunks/defaultUboDeclaration-8YG0iNg8.esm.js.map +1 -0
  196. package/dist/chunks/defaultUboDeclaration-BoBSRTbi.esm.js +13 -0
  197. package/dist/chunks/defaultUboDeclaration-BoBSRTbi.esm.js.map +1 -0
  198. package/dist/chunks/defaultUboDeclaration-Dt_5vo1d.esm.min.js +2 -0
  199. package/dist/chunks/defaultUboDeclaration-Dt_5vo1d.esm.min.js.map +1 -0
  200. package/dist/chunks/defaultUboDeclaration-R6gGjkAM.esm.min.js +2 -0
  201. package/dist/chunks/defaultUboDeclaration-R6gGjkAM.esm.min.js.map +1 -0
  202. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js +11 -0
  203. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js.map +1 -0
  204. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js +2 -0
  205. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js.map +1 -0
  206. package/dist/chunks/dumpTools-Bhux0wvM.esm.js +200 -0
  207. package/dist/chunks/dumpTools-Bhux0wvM.esm.js.map +1 -0
  208. package/dist/chunks/dumpTools-CHCb2UkY.esm.min.js +2 -0
  209. package/dist/chunks/dumpTools-CHCb2UkY.esm.min.js.map +1 -0
  210. package/dist/chunks/engine-DF_zE4qj.esm.js +2213 -0
  211. package/dist/chunks/engine-DF_zE4qj.esm.js.map +1 -0
  212. package/dist/chunks/engine-DVmdDcyP.esm.min.js +2 -0
  213. package/dist/chunks/engine-DVmdDcyP.esm.min.js.map +1 -0
  214. package/dist/chunks/engine.common-CvOmoKru.esm.js +1162 -0
  215. package/dist/chunks/engine.common-CvOmoKru.esm.js.map +1 -0
  216. package/dist/chunks/engine.common-DpTzktQJ.esm.min.js +2 -0
  217. package/dist/chunks/engine.common-DpTzktQJ.esm.min.js.map +1 -0
  218. package/dist/chunks/envTextureLoader-4YxGm-Px.esm.js +64 -0
  219. package/dist/chunks/envTextureLoader-4YxGm-Px.esm.js.map +1 -0
  220. package/dist/chunks/envTextureLoader-DMQui088.esm.min.js +2 -0
  221. package/dist/chunks/envTextureLoader-DMQui088.esm.min.js.map +1 -0
  222. package/dist/chunks/environmentTextureTools-BPGrTBPI.esm.min.js +2 -0
  223. package/dist/chunks/environmentTextureTools-BPGrTBPI.esm.min.js.map +1 -0
  224. package/dist/chunks/environmentTextureTools-DvkpsqkN.esm.js +382 -0
  225. package/dist/chunks/environmentTextureTools-DvkpsqkN.esm.js.map +1 -0
  226. package/dist/chunks/exrTextureLoader-BRkB54sO.esm.js +1683 -0
  227. package/dist/chunks/exrTextureLoader-BRkB54sO.esm.js.map +1 -0
  228. package/dist/chunks/exrTextureLoader-BtN7_zst.esm.min.js +2 -0
  229. package/dist/chunks/exrTextureLoader-BtN7_zst.esm.min.js.map +1 -0
  230. package/dist/chunks/fogFragment-BrGGFaiu.esm.js +101 -0
  231. package/dist/chunks/fogFragment-BrGGFaiu.esm.js.map +1 -0
  232. package/dist/chunks/fogFragment-ByOwwQur.esm.min.js +2 -0
  233. package/dist/chunks/fogFragment-ByOwwQur.esm.min.js.map +1 -0
  234. package/dist/chunks/fogFragment-Chod24nu.esm.min.js +2 -0
  235. package/dist/chunks/fogFragment-Chod24nu.esm.min.js.map +1 -0
  236. package/dist/chunks/fogFragment-gZfybCpt.esm.js +102 -0
  237. package/dist/chunks/fogFragment-gZfybCpt.esm.js.map +1 -0
  238. package/dist/chunks/fresnelFunction-BdEia8ob.esm.min.js +2 -0
  239. package/dist/chunks/fresnelFunction-BdEia8ob.esm.min.js.map +1 -0
  240. package/dist/chunks/fresnelFunction-DBlxfmri.esm.js +12 -0
  241. package/dist/chunks/fresnelFunction-DBlxfmri.esm.js.map +1 -0
  242. package/dist/chunks/glTFLoader-D4C1IGb3.esm.min.js +2 -0
  243. package/dist/chunks/glTFLoader-D4C1IGb3.esm.min.js.map +1 -0
  244. package/dist/chunks/glTFLoader-fUFiWvYb.esm.js +7693 -0
  245. package/dist/chunks/glTFLoader-fUFiWvYb.esm.js.map +1 -0
  246. package/dist/chunks/glTFLoaderAnimation-BB_Vw079.esm.min.js +2 -0
  247. package/dist/chunks/glTFLoaderAnimation-BB_Vw079.esm.min.js.map +1 -0
  248. package/dist/chunks/glTFLoaderAnimation-CttmY50U.esm.js +77 -0
  249. package/dist/chunks/glTFLoaderAnimation-CttmY50U.esm.js.map +1 -0
  250. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js +2 -0
  251. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js.map +1 -0
  252. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js +67 -0
  253. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js.map +1 -0
  254. package/dist/chunks/harmonicsFunctions-B0Rp1hEo.esm.min.js +2 -0
  255. package/dist/chunks/harmonicsFunctions-B0Rp1hEo.esm.min.js.map +1 -0
  256. package/dist/chunks/harmonicsFunctions-Cca_z552.esm.js +34 -0
  257. package/dist/chunks/harmonicsFunctions-Cca_z552.esm.js.map +1 -0
  258. package/dist/chunks/harmonicsFunctions-D4ID83NC.esm.min.js +2 -0
  259. package/dist/chunks/harmonicsFunctions-D4ID83NC.esm.min.js.map +1 -0
  260. package/dist/chunks/harmonicsFunctions-HJ5dbl0w.esm.js +35 -0
  261. package/dist/chunks/harmonicsFunctions-HJ5dbl0w.esm.js.map +1 -0
  262. package/dist/chunks/hdrTextureLoader-C3kqy6YV.esm.js +253 -0
  263. package/dist/chunks/hdrTextureLoader-C3kqy6YV.esm.js.map +1 -0
  264. package/dist/chunks/hdrTextureLoader-Dhlluz4z.esm.min.js +2 -0
  265. package/dist/chunks/hdrTextureLoader-Dhlluz4z.esm.min.js.map +1 -0
  266. package/dist/chunks/helperFunctions-BJotVqUd.esm.min.js +2 -0
  267. package/dist/chunks/helperFunctions-BJotVqUd.esm.min.js.map +1 -0
  268. package/dist/chunks/helperFunctions-C66wRWtu.esm.js +110 -0
  269. package/dist/chunks/helperFunctions-C66wRWtu.esm.js.map +1 -0
  270. package/dist/chunks/helperFunctions-DwEZ9rqh.esm.min.js +2 -0
  271. package/dist/chunks/helperFunctions-DwEZ9rqh.esm.min.js.map +1 -0
  272. package/dist/chunks/helperFunctions-gnki_9Kj.esm.js +83 -0
  273. package/dist/chunks/helperFunctions-gnki_9Kj.esm.js.map +1 -0
  274. package/dist/chunks/iesTextureLoader-QDs2Cwy5.esm.js +189 -0
  275. package/dist/chunks/iesTextureLoader-QDs2Cwy5.esm.js.map +1 -0
  276. package/dist/chunks/iesTextureLoader-pwA6Q4HK.esm.min.js +2 -0
  277. package/dist/chunks/iesTextureLoader-pwA6Q4HK.esm.min.js.map +1 -0
  278. package/dist/chunks/index-C6hXZyZb.esm.js +74889 -0
  279. package/dist/chunks/index-C6hXZyZb.esm.js.map +1 -0
  280. package/dist/chunks/index-rZVkfTE6.esm.min.js +57 -0
  281. package/dist/chunks/index-rZVkfTE6.esm.min.js.map +1 -0
  282. package/dist/chunks/ktxTextureLoader-jVu-Sj-0.esm.js +814 -0
  283. package/dist/chunks/ktxTextureLoader-jVu-Sj-0.esm.js.map +1 -0
  284. package/dist/chunks/ktxTextureLoader-zG9azrZF.esm.min.js +2 -0
  285. package/dist/chunks/ktxTextureLoader-zG9azrZF.esm.min.js.map +1 -0
  286. package/dist/chunks/logDepthDeclaration-0cA1pTvQ.esm.min.js +2 -0
  287. package/dist/chunks/logDepthDeclaration-0cA1pTvQ.esm.min.js.map +1 -0
  288. package/dist/chunks/logDepthDeclaration-CYxYhXIS.esm.js +11 -0
  289. package/dist/chunks/logDepthDeclaration-CYxYhXIS.esm.js.map +1 -0
  290. package/dist/chunks/logDepthDeclaration-D4KGxdX-.esm.min.js +2 -0
  291. package/dist/chunks/logDepthDeclaration-D4KGxdX-.esm.min.js.map +1 -0
  292. package/dist/chunks/logDepthDeclaration-DJlt2-H5.esm.js +35 -0
  293. package/dist/chunks/logDepthDeclaration-DJlt2-H5.esm.js.map +1 -0
  294. package/dist/chunks/logDepthVertex-BS2JEtXA.esm.min.js +2 -0
  295. package/dist/chunks/logDepthVertex-BS2JEtXA.esm.min.js.map +1 -0
  296. package/dist/chunks/logDepthVertex-DKPfA10X.esm.js +81 -0
  297. package/dist/chunks/logDepthVertex-DKPfA10X.esm.js.map +1 -0
  298. package/dist/chunks/logDepthVertex-ojTShW5I.esm.js +77 -0
  299. package/dist/chunks/logDepthVertex-ojTShW5I.esm.js.map +1 -0
  300. package/dist/chunks/logDepthVertex-v-0pHNc-.esm.min.js +2 -0
  301. package/dist/chunks/logDepthVertex-v-0pHNc-.esm.min.js.map +1 -0
  302. package/dist/chunks/mainUVVaryingDeclaration-BAzmbS0W.esm.min.js +2 -0
  303. package/dist/chunks/mainUVVaryingDeclaration-BAzmbS0W.esm.min.js.map +1 -0
  304. package/dist/chunks/mainUVVaryingDeclaration-Cnux1jkK.esm.js +11 -0
  305. package/dist/chunks/mainUVVaryingDeclaration-Cnux1jkK.esm.js.map +1 -0
  306. package/dist/chunks/mainUVVaryingDeclaration-CwS0hUUZ.esm.min.js +2 -0
  307. package/dist/chunks/mainUVVaryingDeclaration-CwS0hUUZ.esm.min.js.map +1 -0
  308. package/dist/chunks/mainUVVaryingDeclaration-DCawby1A.esm.js +11 -0
  309. package/dist/chunks/mainUVVaryingDeclaration-DCawby1A.esm.js.map +1 -0
  310. package/dist/chunks/mesh.vertexData.functions-B_pMCAzZ.esm.js +119 -0
  311. package/dist/chunks/mesh.vertexData.functions-B_pMCAzZ.esm.js.map +1 -0
  312. package/dist/chunks/mesh.vertexData.functions-Bo7e6Of9.esm.min.js +2 -0
  313. package/dist/chunks/mesh.vertexData.functions-Bo7e6Of9.esm.min.js.map +1 -0
  314. package/dist/chunks/meshUboDeclaration-QvH0RgeZ.esm.js +26 -0
  315. package/dist/chunks/meshUboDeclaration-QvH0RgeZ.esm.js.map +1 -0
  316. package/dist/chunks/meshUboDeclaration-g2s_cYI1.esm.min.js +2 -0
  317. package/dist/chunks/meshUboDeclaration-g2s_cYI1.esm.min.js.map +1 -0
  318. package/dist/chunks/objFileLoader-BOutXdVR.esm.min.js +2 -0
  319. package/dist/chunks/objFileLoader-BOutXdVR.esm.min.js.map +1 -0
  320. package/dist/chunks/objFileLoader-BPwrX8RK.esm.js +1338 -0
  321. package/dist/chunks/objFileLoader-BPwrX8RK.esm.js.map +1 -0
  322. package/dist/chunks/oitFragment-CmcWUhsZ.esm.js +1240 -0
  323. package/dist/chunks/oitFragment-CmcWUhsZ.esm.js.map +1 -0
  324. package/dist/chunks/oitFragment-D8XBQ6Wa.esm.js +1078 -0
  325. package/dist/chunks/oitFragment-D8XBQ6Wa.esm.js.map +1 -0
  326. package/dist/chunks/oitFragment-DgAlmoHs.esm.min.js +2 -0
  327. package/dist/chunks/oitFragment-DgAlmoHs.esm.min.js.map +1 -0
  328. package/dist/chunks/oitFragment-DpJ5xGhy.esm.min.js +2 -0
  329. package/dist/chunks/oitFragment-DpJ5xGhy.esm.min.js.map +1 -0
  330. package/dist/chunks/pass.fragment--XRaXRhU.esm.js +15 -0
  331. package/dist/chunks/pass.fragment--XRaXRhU.esm.js.map +1 -0
  332. package/dist/chunks/pass.fragment-5Q3qXxDe.esm.min.js +2 -0
  333. package/dist/chunks/pass.fragment-5Q3qXxDe.esm.min.js.map +1 -0
  334. package/dist/chunks/pass.fragment-BBLiyU_i.esm.min.js +2 -0
  335. package/dist/chunks/pass.fragment-BBLiyU_i.esm.min.js.map +1 -0
  336. package/dist/chunks/pass.fragment-DI4ZYZJe.esm.js +15 -0
  337. package/dist/chunks/pass.fragment-DI4ZYZJe.esm.js.map +1 -0
  338. package/dist/chunks/pbr.fragment-C7xQS4ZJ.esm.js +3269 -0
  339. package/dist/chunks/pbr.fragment-C7xQS4ZJ.esm.js.map +1 -0
  340. package/dist/chunks/pbr.fragment-Ddxaik8T.esm.min.js +2 -0
  341. package/dist/chunks/pbr.fragment-Ddxaik8T.esm.min.js.map +1 -0
  342. package/dist/chunks/pbr.fragment-fky04gH_.esm.js +3222 -0
  343. package/dist/chunks/pbr.fragment-fky04gH_.esm.js.map +1 -0
  344. package/dist/chunks/pbr.fragment-ya1zai4w.esm.min.js +2 -0
  345. package/dist/chunks/pbr.fragment-ya1zai4w.esm.min.js.map +1 -0
  346. package/dist/chunks/pbr.vertex-BPEYHoRM.esm.js +223 -0
  347. package/dist/chunks/pbr.vertex-BPEYHoRM.esm.js.map +1 -0
  348. package/dist/chunks/pbr.vertex-BXcMYADF.esm.js +348 -0
  349. package/dist/chunks/pbr.vertex-BXcMYADF.esm.js.map +1 -0
  350. package/dist/chunks/pbr.vertex-BjA08auU.esm.min.js +2 -0
  351. package/dist/chunks/pbr.vertex-BjA08auU.esm.min.js.map +1 -0
  352. package/dist/chunks/pbr.vertex-Cx2V3lNf.esm.min.js +2 -0
  353. package/dist/chunks/pbr.vertex-Cx2V3lNf.esm.min.js.map +1 -0
  354. package/dist/chunks/postprocess.vertex-BHpQrNSx.esm.min.js +2 -0
  355. package/dist/chunks/postprocess.vertex-BHpQrNSx.esm.min.js.map +1 -0
  356. package/dist/chunks/postprocess.vertex-DnDbk0tq.esm.js +20 -0
  357. package/dist/chunks/postprocess.vertex-DnDbk0tq.esm.js.map +1 -0
  358. package/dist/chunks/rawTexture-CWiRIto8.esm.js +191 -0
  359. package/dist/chunks/rawTexture-CWiRIto8.esm.js.map +1 -0
  360. package/dist/chunks/rawTexture-DX8V9PEj.esm.min.js +2 -0
  361. package/dist/chunks/rawTexture-DX8V9PEj.esm.min.js.map +1 -0
  362. package/dist/chunks/ray-ix7SqYNQ.esm.min.js +2 -0
  363. package/dist/chunks/ray-ix7SqYNQ.esm.min.js.map +1 -0
  364. package/dist/chunks/ray-nTZBkOil.esm.js +946 -0
  365. package/dist/chunks/ray-nTZBkOil.esm.js.map +1 -0
  366. package/dist/chunks/rgbdDecode.fragment-Be3ofvlt.esm.min.js +2 -0
  367. package/dist/chunks/rgbdDecode.fragment-Be3ofvlt.esm.min.js.map +1 -0
  368. package/dist/chunks/rgbdDecode.fragment-C05QJpT2.esm.js +13 -0
  369. package/dist/chunks/rgbdDecode.fragment-C05QJpT2.esm.js.map +1 -0
  370. package/dist/chunks/rgbdDecode.fragment-D3SYBclQ.esm.min.js +2 -0
  371. package/dist/chunks/rgbdDecode.fragment-D3SYBclQ.esm.min.js.map +1 -0
  372. package/dist/chunks/rgbdDecode.fragment-DBG6KfKF.esm.js +13 -0
  373. package/dist/chunks/rgbdDecode.fragment-DBG6KfKF.esm.js.map +1 -0
  374. package/dist/chunks/rgbdEncode.fragment-BlhtohrO.esm.js +13 -0
  375. package/dist/chunks/rgbdEncode.fragment-BlhtohrO.esm.js.map +1 -0
  376. package/dist/chunks/rgbdEncode.fragment-BmJKYw6A.esm.min.js +2 -0
  377. package/dist/chunks/rgbdEncode.fragment-BmJKYw6A.esm.min.js.map +1 -0
  378. package/dist/chunks/rgbdEncode.fragment-dr2kGjSO.esm.js +13 -0
  379. package/dist/chunks/rgbdEncode.fragment-dr2kGjSO.esm.js.map +1 -0
  380. package/dist/chunks/rgbdEncode.fragment-hXPzg1p5.esm.min.js +2 -0
  381. package/dist/chunks/rgbdEncode.fragment-hXPzg1p5.esm.min.js.map +1 -0
  382. package/dist/chunks/splatFileLoader-Bs42LtsP.esm.min.js +2 -0
  383. package/dist/chunks/splatFileLoader-Bs42LtsP.esm.min.js.map +1 -0
  384. package/dist/chunks/splatFileLoader-Dp33YOem.esm.js +3379 -0
  385. package/dist/chunks/splatFileLoader-Dp33YOem.esm.js.map +1 -0
  386. package/dist/chunks/spotLight-C0NmKeem.esm.js +701 -0
  387. package/dist/chunks/spotLight-C0NmKeem.esm.js.map +1 -0
  388. package/dist/chunks/spotLight-CcuCNdES.esm.min.js +2 -0
  389. package/dist/chunks/spotLight-CcuCNdES.esm.min.js.map +1 -0
  390. package/dist/chunks/standardMaterial-C1E5n_4w.esm.min.js +2 -0
  391. package/dist/chunks/standardMaterial-C1E5n_4w.esm.min.js.map +1 -0
  392. package/dist/chunks/standardMaterial-v_D8QA4q.esm.js +1807 -0
  393. package/dist/chunks/standardMaterial-v_D8QA4q.esm.js.map +1 -0
  394. package/dist/chunks/stlFileLoader-DC2IRQDj.esm.min.js +2 -0
  395. package/dist/chunks/stlFileLoader-DC2IRQDj.esm.min.js.map +1 -0
  396. package/dist/chunks/stlFileLoader-LRHEIFfU.esm.js +238 -0
  397. package/dist/chunks/stlFileLoader-LRHEIFfU.esm.js.map +1 -0
  398. package/dist/chunks/tgaTextureLoader-2ekJC0En.esm.js +349 -0
  399. package/dist/chunks/tgaTextureLoader-2ekJC0En.esm.js.map +1 -0
  400. package/dist/chunks/tgaTextureLoader-Clj6zUK-.esm.min.js +2 -0
  401. package/dist/chunks/tgaTextureLoader-Clj6zUK-.esm.min.js.map +1 -0
  402. package/dist/chunks/thinEngine-DksimP2U.esm.js +3848 -0
  403. package/dist/chunks/thinEngine-DksimP2U.esm.js.map +1 -0
  404. package/dist/chunks/thinEngine-tsALaFYH.esm.min.js +2 -0
  405. package/dist/chunks/thinEngine-tsALaFYH.esm.min.js.map +1 -0
  406. package/dist/chunks/thinInstanceMesh-B8AW0Oa2.esm.js +314 -0
  407. package/dist/chunks/thinInstanceMesh-B8AW0Oa2.esm.js.map +1 -0
  408. package/dist/chunks/thinInstanceMesh-kCGEJ0-e.esm.min.js +2 -0
  409. package/dist/chunks/thinInstanceMesh-kCGEJ0-e.esm.min.js.map +1 -0
  410. package/dist/chunks/vertexColorMixing-Bjijk3lU.esm.min.js +2 -0
  411. package/dist/chunks/vertexColorMixing-Bjijk3lU.esm.min.js.map +1 -0
  412. package/dist/chunks/vertexColorMixing-D9917nJN.esm.js +428 -0
  413. package/dist/chunks/vertexColorMixing-D9917nJN.esm.js.map +1 -0
  414. package/dist/chunks/vertexColorMixing-DgthWrKf.esm.min.js +2 -0
  415. package/dist/chunks/vertexColorMixing-DgthWrKf.esm.min.js.map +1 -0
  416. package/dist/chunks/vertexColorMixing-U1SA6UK3.esm.js +538 -0
  417. package/dist/chunks/vertexColorMixing-U1SA6UK3.esm.js.map +1 -0
  418. package/dist/chunks/webgpuEngine-BOGR1D8F.esm.min.js +2 -0
  419. package/dist/chunks/webgpuEngine-BOGR1D8F.esm.min.js.map +1 -0
  420. package/dist/chunks/webgpuEngine-BrzOpZ-2.esm.js +11533 -0
  421. package/dist/chunks/webgpuEngine-BrzOpZ-2.esm.js.map +1 -0
  422. package/dist/chunks/workerPool-BUOov2K1.esm.js +122 -0
  423. package/dist/chunks/workerPool-BUOov2K1.esm.js.map +1 -0
  424. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js +2 -0
  425. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js.map +1 -0
  426. package/lib/index.d.ts +591 -0
  427. package/lib/index.js +2165 -0
  428. package/lib/index.js.map +1 -0
  429. package/package.json +19 -28
  430. package/readme.md +28 -28
  431. package/configuration/configuration.d.ts +0 -107
  432. package/configuration/configuration.js +0 -16
  433. package/configuration/configuration.js.map +0 -1
  434. package/configuration/configurationCompatibility.d.ts +0 -8
  435. package/configuration/configurationCompatibility.js +0 -66
  436. package/configuration/configurationCompatibility.js.map +0 -1
  437. package/configuration/configurationContainer.d.ts +0 -10
  438. package/configuration/configurationContainer.js +0 -10
  439. package/configuration/configurationContainer.js.map +0 -1
  440. package/configuration/globals.d.ts +0 -6
  441. package/configuration/globals.js +0 -18
  442. package/configuration/globals.js.map +0 -1
  443. package/configuration/index.d.ts +0 -2
  444. package/configuration/index.js +0 -4
  445. package/configuration/index.js.map +0 -1
  446. package/configuration/interfaces/cameraConfiguration.d.ts +0 -31
  447. package/configuration/interfaces/cameraConfiguration.js +0 -2
  448. package/configuration/interfaces/cameraConfiguration.js.map +0 -1
  449. package/configuration/interfaces/colorGradingConfiguration.d.ts +0 -81
  450. package/configuration/interfaces/colorGradingConfiguration.js +0 -2
  451. package/configuration/interfaces/colorGradingConfiguration.js.map +0 -1
  452. package/configuration/interfaces/defaultRenderingPipelineConfiguration.d.ts +0 -20
  453. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js +0 -2
  454. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js.map +0 -1
  455. package/configuration/interfaces/environmentMapConfiguration.d.ts +0 -22
  456. package/configuration/interfaces/environmentMapConfiguration.js +0 -2
  457. package/configuration/interfaces/environmentMapConfiguration.js.map +0 -1
  458. package/configuration/interfaces/groundConfiguration.d.ts +0 -24
  459. package/configuration/interfaces/groundConfiguration.js +0 -2
  460. package/configuration/interfaces/groundConfiguration.js.map +0 -1
  461. package/configuration/interfaces/imageProcessingConfiguration.d.ts +0 -45
  462. package/configuration/interfaces/imageProcessingConfiguration.js +0 -2
  463. package/configuration/interfaces/imageProcessingConfiguration.js.map +0 -1
  464. package/configuration/interfaces/index.d.ts +0 -15
  465. package/configuration/interfaces/index.js +0 -16
  466. package/configuration/interfaces/index.js.map +0 -1
  467. package/configuration/interfaces/lightConfiguration.d.ts +0 -60
  468. package/configuration/interfaces/lightConfiguration.js +0 -2
  469. package/configuration/interfaces/lightConfiguration.js.map +0 -1
  470. package/configuration/interfaces/modelAnimationConfiguration.d.ts +0 -26
  471. package/configuration/interfaces/modelAnimationConfiguration.js +0 -2
  472. package/configuration/interfaces/modelAnimationConfiguration.js.map +0 -1
  473. package/configuration/interfaces/modelConfiguration.d.ts +0 -65
  474. package/configuration/interfaces/modelConfiguration.js +0 -2
  475. package/configuration/interfaces/modelConfiguration.js.map +0 -1
  476. package/configuration/interfaces/observersConfiguration.d.ts +0 -5
  477. package/configuration/interfaces/observersConfiguration.js +0 -2
  478. package/configuration/interfaces/observersConfiguration.js.map +0 -1
  479. package/configuration/interfaces/sceneConfiguration.d.ts +0 -48
  480. package/configuration/interfaces/sceneConfiguration.js +0 -2
  481. package/configuration/interfaces/sceneConfiguration.js.map +0 -1
  482. package/configuration/interfaces/sceneOptimizerConfiguration.d.ts +0 -23
  483. package/configuration/interfaces/sceneOptimizerConfiguration.js +0 -2
  484. package/configuration/interfaces/sceneOptimizerConfiguration.js.map +0 -1
  485. package/configuration/interfaces/skyboxConfiguration.d.ts +0 -21
  486. package/configuration/interfaces/skyboxConfiguration.js +0 -2
  487. package/configuration/interfaces/skyboxConfiguration.js.map +0 -1
  488. package/configuration/interfaces/templateConfiguration.d.ts +0 -67
  489. package/configuration/interfaces/templateConfiguration.js +0 -2
  490. package/configuration/interfaces/templateConfiguration.js.map +0 -1
  491. package/configuration/interfaces/vrConfiguration.d.ts +0 -16
  492. package/configuration/interfaces/vrConfiguration.js +0 -2
  493. package/configuration/interfaces/vrConfiguration.js.map +0 -1
  494. package/configuration/loader.d.ts +0 -4
  495. package/configuration/loader.js +0 -17
  496. package/configuration/loader.js.map +0 -1
  497. package/configuration/mappers.d.ts +0 -43
  498. package/configuration/mappers.js +0 -193
  499. package/configuration/mappers.js.map +0 -1
  500. package/configuration/renderOnlyLoader.d.ts +0 -33
  501. package/configuration/renderOnlyLoader.js +0 -162
  502. package/configuration/renderOnlyLoader.js.map +0 -1
  503. package/configuration/types/default.d.ts +0 -6
  504. package/configuration/types/default.js +0 -121
  505. package/configuration/types/default.js.map +0 -1
  506. package/configuration/types/environmentMap.d.ts +0 -5
  507. package/configuration/types/environmentMap.js +0 -14
  508. package/configuration/types/environmentMap.js.map +0 -1
  509. package/configuration/types/extended.d.ts +0 -6
  510. package/configuration/types/extended.js +0 -317
  511. package/configuration/types/extended.js.map +0 -1
  512. package/configuration/types/index.d.ts +0 -14
  513. package/configuration/types/index.js +0 -51
  514. package/configuration/types/index.js.map +0 -1
  515. package/configuration/types/minimal.d.ts +0 -6
  516. package/configuration/types/minimal.js +0 -43
  517. package/configuration/types/minimal.js.map +0 -1
  518. package/configuration/types/renderOnlyDefault.d.ts +0 -30
  519. package/configuration/types/renderOnlyDefault.js +0 -31
  520. package/configuration/types/renderOnlyDefault.js.map +0 -1
  521. package/configuration/types/shadowLight.d.ts +0 -9
  522. package/configuration/types/shadowLight.js +0 -64
  523. package/configuration/types/shadowLight.js.map +0 -1
  524. package/helper/index.d.ts +0 -29
  525. package/helper/index.js +0 -66
  526. package/helper/index.js.map +0 -1
  527. package/index.d.ts +0 -30
  528. package/index.js +0 -46
  529. package/index.js.map +0 -1
  530. package/initializer.d.ts +0 -11
  531. package/initializer.js +0 -35
  532. package/initializer.js.map +0 -1
  533. package/interfaces.d.ts +0 -5
  534. package/interfaces.js +0 -7
  535. package/interfaces.js.map +0 -1
  536. package/labs/environmentSerializer.d.ts +0 -126
  537. package/labs/environmentSerializer.js +0 -191
  538. package/labs/environmentSerializer.js.map +0 -1
  539. package/labs/texture.d.ts +0 -183
  540. package/labs/texture.js +0 -351
  541. package/labs/texture.js.map +0 -1
  542. package/labs/viewerLabs.d.ts +0 -51
  543. package/labs/viewerLabs.js +0 -134
  544. package/labs/viewerLabs.js.map +0 -1
  545. package/loader/modelLoader.d.ts +0 -56
  546. package/loader/modelLoader.js +0 -202
  547. package/loader/modelLoader.js.map +0 -1
  548. package/loader/plugins/applyMaterialConfig.d.ts +0 -12
  549. package/loader/plugins/applyMaterialConfig.js +0 -16
  550. package/loader/plugins/applyMaterialConfig.js.map +0 -1
  551. package/loader/plugins/extendedMaterialLoaderPlugin.d.ts +0 -9
  552. package/loader/plugins/extendedMaterialLoaderPlugin.js +0 -16
  553. package/loader/plugins/extendedMaterialLoaderPlugin.js.map +0 -1
  554. package/loader/plugins/index.d.ts +0 -19
  555. package/loader/plugins/index.js +0 -44
  556. package/loader/plugins/index.js.map +0 -1
  557. package/loader/plugins/loaderPlugin.d.ts +0 -24
  558. package/loader/plugins/loaderPlugin.js +0 -2
  559. package/loader/plugins/loaderPlugin.js.map +0 -1
  560. package/loader/plugins/msftLodLoaderPlugin.d.ts +0 -12
  561. package/loader/plugins/msftLodLoaderPlugin.js +0 -21
  562. package/loader/plugins/msftLodLoaderPlugin.js.map +0 -1
  563. package/loader/plugins/telemetryLoaderPlugin.d.ts +0 -12
  564. package/loader/plugins/telemetryLoaderPlugin.js +0 -36
  565. package/loader/plugins/telemetryLoaderPlugin.js.map +0 -1
  566. package/managers/observablesManager.d.ts +0 -66
  567. package/managers/observablesManager.js +0 -35
  568. package/managers/observablesManager.js.map +0 -1
  569. package/managers/sceneManager.d.ts +0 -245
  570. package/managers/sceneManager.js +0 -1375
  571. package/managers/sceneManager.js.map +0 -1
  572. package/managers/telemetryManager.d.ts +0 -78
  573. package/managers/telemetryManager.js +0 -117
  574. package/managers/telemetryManager.js.map +0 -1
  575. package/model/modelAnimation.d.ts +0 -215
  576. package/model/modelAnimation.js +0 -237
  577. package/model/modelAnimation.js.map +0 -1
  578. package/model/viewerModel.d.ts +0 -233
  579. package/model/viewerModel.js +0 -673
  580. package/model/viewerModel.js.map +0 -1
  581. package/optimizer/custom/extended.d.ts +0 -13
  582. package/optimizer/custom/extended.js +0 -101
  583. package/optimizer/custom/extended.js.map +0 -1
  584. package/optimizer/custom/index.d.ts +0 -9
  585. package/optimizer/custom/index.js +0 -26
  586. package/optimizer/custom/index.js.map +0 -1
  587. package/renderOnlyIndex.d.ts +0 -11
  588. package/renderOnlyIndex.js +0 -18
  589. package/renderOnlyIndex.js.map +0 -1
  590. package/templating/eventManager.d.ts +0 -35
  591. package/templating/eventManager.js +0 -66
  592. package/templating/eventManager.js.map +0 -1
  593. package/templating/plugins/hdButtonPlugin.d.ts +0 -9
  594. package/templating/plugins/hdButtonPlugin.js +0 -22
  595. package/templating/plugins/hdButtonPlugin.js.map +0 -1
  596. package/templating/plugins/printButton.d.ts +0 -9
  597. package/templating/plugins/printButton.js +0 -41
  598. package/templating/plugins/printButton.js.map +0 -1
  599. package/templating/templateManager.d.ts +0 -197
  600. package/templating/templateManager.js +0 -561
  601. package/templating/templateManager.js.map +0 -1
  602. package/templating/viewerTemplatePlugin.d.ts +0 -21
  603. package/templating/viewerTemplatePlugin.js +0 -69
  604. package/templating/viewerTemplatePlugin.js.map +0 -1
  605. package/viewer/defaultViewer.d.ts +0 -130
  606. package/viewer/defaultViewer.js +0 -672
  607. package/viewer/defaultViewer.js.map +0 -1
  608. package/viewer/renderOnlyViewer.d.ts +0 -9
  609. package/viewer/renderOnlyViewer.js +0 -46
  610. package/viewer/renderOnlyViewer.js.map +0 -1
  611. package/viewer/viewer.d.ts +0 -258
  612. package/viewer/viewer.js +0 -783
  613. package/viewer/viewer.js.map +0 -1
  614. package/viewer/viewerManager.d.ts +0 -58
  615. package/viewer/viewerManager.js +0 -91
  616. package/viewer/viewerManager.js.map +0 -1
  617. package/viewer/viewerWithTemplate.d.ts +0 -9
  618. package/viewer/viewerWithTemplate.js +0 -20
  619. package/viewer/viewerWithTemplate.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-DVmdDcyP.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\";\nimport { _retryWithInterval } from \"core/Misc/timingTools\";\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 _retryWithInterval(() => {\n const res = gl.clientWaitSync(sync, flags, 0);\n if (res == gl.WAIT_FAILED) {\n throw new Error(\"clientWaitSync failed\");\n }\n if (res == gl.TIMEOUT_EXPIRED) {\n return false;\n }\n return true;\n }, resolve, reject, intervalms);\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","_retryWithInterval","res","clientWaitSync","WAIT_FAILED","TIMEOUT_EXPIRED","_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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"}