@babylonjs/viewer 7.42.0 → 7.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/photoStudio.env +0 -0
- package/dist/babylon-viewer.esm.js +2 -0
- package/dist/babylon-viewer.esm.js.map +1 -0
- package/dist/babylon-viewer.esm.min.js +2 -0
- package/dist/babylon-viewer.esm.min.js.map +1 -0
- package/dist/chunks/EXT_lights_ies-D-oSSifC.esm.min.js +2 -0
- package/dist/chunks/EXT_lights_ies-D-oSSifC.esm.min.js.map +1 -0
- package/dist/chunks/EXT_lights_ies-DJJLktlG.esm.js +84 -0
- package/dist/chunks/EXT_lights_ies-DJJLktlG.esm.js.map +1 -0
- package/dist/chunks/EXT_lights_image_based-Bm1EdHWU.esm.js +171 -0
- package/dist/chunks/EXT_lights_image_based-Bm1EdHWU.esm.js.map +1 -0
- package/dist/chunks/EXT_lights_image_based-CPP95suP.esm.min.js +2 -0
- package/dist/chunks/EXT_lights_image_based-CPP95suP.esm.min.js.map +1 -0
- package/dist/chunks/EXT_mesh_gpu_instancing-DuFNjp-b.esm.js +86 -0
- package/dist/chunks/EXT_mesh_gpu_instancing-DuFNjp-b.esm.js.map +1 -0
- package/dist/chunks/EXT_mesh_gpu_instancing-RXBAS2yg.esm.min.js +2 -0
- package/dist/chunks/EXT_mesh_gpu_instancing-RXBAS2yg.esm.min.js.map +1 -0
- package/dist/chunks/EXT_meshopt_compression-B_tol2Sa.esm.min.js +2 -0
- package/dist/chunks/EXT_meshopt_compression-B_tol2Sa.esm.min.js.map +1 -0
- package/dist/chunks/EXT_meshopt_compression-Rai3-_W3.esm.js +134 -0
- package/dist/chunks/EXT_meshopt_compression-Rai3-_W3.esm.js.map +1 -0
- package/dist/chunks/EXT_texture_avif-D3PbSGsk.esm.js +44 -0
- package/dist/chunks/EXT_texture_avif-D3PbSGsk.esm.js.map +1 -0
- package/dist/chunks/EXT_texture_avif-DB96e8gK.esm.min.js +2 -0
- package/dist/chunks/EXT_texture_avif-DB96e8gK.esm.min.js.map +1 -0
- package/dist/chunks/EXT_texture_webp-BrAdNUVI.esm.min.js +2 -0
- package/dist/chunks/EXT_texture_webp-BrAdNUVI.esm.min.js.map +1 -0
- package/dist/chunks/EXT_texture_webp-BsSdw4hb.esm.js +43 -0
- package/dist/chunks/EXT_texture_webp-BsSdw4hb.esm.js.map +1 -0
- package/dist/chunks/ExtrasAsMetadata-CvpNkVJm.esm.js +64 -0
- package/dist/chunks/ExtrasAsMetadata-CvpNkVJm.esm.js.map +1 -0
- package/dist/chunks/ExtrasAsMetadata-CwSGAnId.esm.min.js +2 -0
- package/dist/chunks/ExtrasAsMetadata-CwSGAnId.esm.min.js.map +1 -0
- package/dist/chunks/KHR_animation_pointer-B29-7REN.esm.js +352 -0
- package/dist/chunks/KHR_animation_pointer-B29-7REN.esm.js.map +1 -0
- package/dist/chunks/KHR_animation_pointer-DXhkj5r0.esm.min.js +2 -0
- package/dist/chunks/KHR_animation_pointer-DXhkj5r0.esm.min.js.map +1 -0
- package/dist/chunks/KHR_draco_mesh_compression-4y3oU3vs.esm.js +611 -0
- package/dist/chunks/KHR_draco_mesh_compression-4y3oU3vs.esm.js.map +1 -0
- package/dist/chunks/KHR_draco_mesh_compression-OUEmCF9O.esm.min.js +2 -0
- package/dist/chunks/KHR_draco_mesh_compression-OUEmCF9O.esm.min.js.map +1 -0
- package/dist/chunks/KHR_interactivity-DmxwZO-B.esm.min.js +2 -0
- package/dist/chunks/KHR_interactivity-DmxwZO-B.esm.min.js.map +1 -0
- package/dist/chunks/KHR_interactivity-Nql0vbRS.esm.js +4033 -0
- package/dist/chunks/KHR_interactivity-Nql0vbRS.esm.js.map +1 -0
- package/dist/chunks/KHR_lights_punctual-BuxTRJTD.esm.min.js +2 -0
- package/dist/chunks/KHR_lights_punctual-BuxTRJTD.esm.min.js.map +1 -0
- package/dist/chunks/KHR_lights_punctual-DT1Tmy49.esm.js +581 -0
- package/dist/chunks/KHR_lights_punctual-DT1Tmy49.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_anisotropy-CkyM8JSq.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_anisotropy-CkyM8JSq.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_anisotropy-rMp1ahNa.esm.js +65 -0
- package/dist/chunks/KHR_materials_anisotropy-rMp1ahNa.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_clearcoat-Dw7bP6zs.esm.js +96 -0
- package/dist/chunks/KHR_materials_clearcoat-Dw7bP6zs.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_clearcoat-c_8cDReS.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_clearcoat-c_8cDReS.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_diffuse_transmission-CXn0MUer.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_diffuse_transmission-CXn0MUer.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_diffuse_transmission-CsMJW09v.esm.js +97 -0
- package/dist/chunks/KHR_materials_diffuse_transmission-CsMJW09v.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_dispersion-BDCbGsPA.esm.js +62 -0
- package/dist/chunks/KHR_materials_dispersion-BDCbGsPA.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_dispersion-D2yTJOjM.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_dispersion-D2yTJOjM.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_emissive_strength-Tz0C88U3.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_emissive_strength-Tz0C88U3.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_emissive_strength-jQMxZKq5.esm.js +55 -0
- package/dist/chunks/KHR_materials_emissive_strength-jQMxZKq5.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_ior-2zUX8jy7.esm.js +64 -0
- package/dist/chunks/KHR_materials_ior-2zUX8jy7.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_ior-sCAKuvLs.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_ior-sCAKuvLs.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_iridescence-CTk6lY7i.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_iridescence-CTk6lY7i.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_iridescence-DxBAsUzR.esm.js +72 -0
- package/dist/chunks/KHR_materials_iridescence-DxBAsUzR.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-BgkZXf0x.esm.js +81 -0
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-BgkZXf0x.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-Dq7WTMdT.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-Dq7WTMdT.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_sheen-35UGLw0C.esm.js +85 -0
- package/dist/chunks/KHR_materials_sheen-35UGLw0C.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_sheen-DQ6C57Dt.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_sheen-DQ6C57Dt.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_specular-BPk7EQUD.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_specular-BPk7EQUD.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_specular-DrL3M38a.esm.js +75 -0
- package/dist/chunks/KHR_materials_specular-DrL3M38a.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_transmission-3olkVCcW.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_transmission-3olkVCcW.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_transmission-BpjfU0Rf.esm.js +307 -0
- package/dist/chunks/KHR_materials_transmission-BpjfU0Rf.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_unlit-BK4Bp8qS.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_unlit-BK4Bp8qS.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_unlit-DqWkeMIs.esm.js +74 -0
- package/dist/chunks/KHR_materials_unlit-DqWkeMIs.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_variants-C8EH6z5q.esm.js +262 -0
- package/dist/chunks/KHR_materials_variants-C8EH6z5q.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_variants-U_7nHGWs.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_variants-U_7nHGWs.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_volume-QCITeTgE.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_volume-QCITeTgE.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_volume-eXcEVVpW.esm.js +87 -0
- package/dist/chunks/KHR_materials_volume-eXcEVVpW.esm.js.map +1 -0
- package/dist/chunks/KHR_mesh_quantization-BjqgHT7P.esm.js +26 -0
- package/dist/chunks/KHR_mesh_quantization-BjqgHT7P.esm.js.map +1 -0
- package/dist/chunks/KHR_mesh_quantization-CEo8-_n9.esm.min.js +2 -0
- package/dist/chunks/KHR_mesh_quantization-CEo8-_n9.esm.min.js.map +1 -0
- package/dist/chunks/KHR_node_hoverability-CLakAM7o.esm.min.js +2 -0
- package/dist/chunks/KHR_node_hoverability-CLakAM7o.esm.min.js.map +1 -0
- package/dist/chunks/KHR_node_hoverability-XR4H2sEJ.esm.js +39 -0
- package/dist/chunks/KHR_node_hoverability-XR4H2sEJ.esm.js.map +1 -0
- package/dist/chunks/KHR_node_visibility-D5-Uq040.esm.js +46 -0
- package/dist/chunks/KHR_node_visibility-D5-Uq040.esm.js.map +1 -0
- package/dist/chunks/KHR_node_visibility-JpHMpDZy.esm.min.js +2 -0
- package/dist/chunks/KHR_node_visibility-JpHMpDZy.esm.min.js.map +1 -0
- package/dist/chunks/KHR_texture_basisu-CK096eX9.esm.min.js +2 -0
- package/dist/chunks/KHR_texture_basisu-CK096eX9.esm.min.js.map +1 -0
- package/dist/chunks/KHR_texture_basisu-JvEhdHQJ.esm.js +43 -0
- package/dist/chunks/KHR_texture_basisu-JvEhdHQJ.esm.js.map +1 -0
- package/dist/chunks/KHR_texture_transform-ASnRyeyf.esm.js +63 -0
- package/dist/chunks/KHR_texture_transform-ASnRyeyf.esm.js.map +1 -0
- package/dist/chunks/KHR_texture_transform-Ci769L7F.esm.min.js +2 -0
- package/dist/chunks/KHR_texture_transform-Ci769L7F.esm.min.js.map +1 -0
- package/dist/chunks/KHR_xmp_json_ld-Cf0IphHD.esm.min.js +2 -0
- package/dist/chunks/KHR_xmp_json_ld-Cf0IphHD.esm.min.js.map +1 -0
- package/dist/chunks/KHR_xmp_json_ld-ZytUWg-l.esm.js +51 -0
- package/dist/chunks/KHR_xmp_json_ld-ZytUWg-l.esm.js.map +1 -0
- package/dist/chunks/MSFT_audio_emitter-BjoYL7lC.esm.min.js +2 -0
- package/dist/chunks/MSFT_audio_emitter-BjoYL7lC.esm.min.js.map +1 -0
- package/dist/chunks/MSFT_audio_emitter-Di8nqSDi.esm.js +2200 -0
- package/dist/chunks/MSFT_audio_emitter-Di8nqSDi.esm.js.map +1 -0
- package/dist/chunks/MSFT_lod-BMUlo5OU.esm.js +337 -0
- package/dist/chunks/MSFT_lod-BMUlo5OU.esm.js.map +1 -0
- package/dist/chunks/MSFT_lod-OG5_k4mO.esm.min.js +2 -0
- package/dist/chunks/MSFT_lod-OG5_k4mO.esm.min.js.map +1 -0
- package/dist/chunks/MSFT_minecraftMesh-CA9_SnEQ.esm.js +46 -0
- package/dist/chunks/MSFT_minecraftMesh-CA9_SnEQ.esm.js.map +1 -0
- package/dist/chunks/MSFT_minecraftMesh-DA-GfwSb.esm.min.js +2 -0
- package/dist/chunks/MSFT_minecraftMesh-DA-GfwSb.esm.min.js.map +1 -0
- package/dist/chunks/MSFT_sRGBFactors-BpXptZ3D.esm.js +47 -0
- package/dist/chunks/MSFT_sRGBFactors-BpXptZ3D.esm.js.map +1 -0
- package/dist/chunks/MSFT_sRGBFactors-COm0y2eh.esm.min.js +2 -0
- package/dist/chunks/MSFT_sRGBFactors-COm0y2eh.esm.min.js.map +1 -0
- package/dist/chunks/animationGroup-DeyI1KVN.esm.min.js +2 -0
- package/dist/chunks/animationGroup-DeyI1KVN.esm.min.js.map +1 -0
- package/dist/chunks/animationGroup-DrsZkXQW.esm.js +2482 -0
- package/dist/chunks/animationGroup-DrsZkXQW.esm.js.map +1 -0
- package/dist/chunks/assetContainer-Cx2Wvxkg.esm.js +1786 -0
- package/dist/chunks/assetContainer-Cx2Wvxkg.esm.js.map +1 -0
- package/dist/chunks/assetContainer-l3mez3br.esm.min.js +2 -0
- package/dist/chunks/assetContainer-l3mez3br.esm.min.js.map +1 -0
- package/dist/chunks/bakedVertexAnimation-CwJYQylG.esm.js +114 -0
- package/dist/chunks/bakedVertexAnimation-CwJYQylG.esm.js.map +1 -0
- package/dist/chunks/bakedVertexAnimation-D5PLG8Vz.esm.min.js +2 -0
- package/dist/chunks/bakedVertexAnimation-D5PLG8Vz.esm.min.js.map +1 -0
- package/dist/chunks/basisTextureLoader-BNH-2Zvb.esm.min.js +2 -0
- package/dist/chunks/basisTextureLoader-BNH-2Zvb.esm.min.js.map +1 -0
- package/dist/chunks/basisTextureLoader-JW5tEMV8.esm.js +600 -0
- package/dist/chunks/basisTextureLoader-JW5tEMV8.esm.js.map +1 -0
- package/dist/chunks/dds-B1kYpKg4.esm.js +540 -0
- package/dist/chunks/dds-B1kYpKg4.esm.js.map +1 -0
- package/dist/chunks/dds-BIaKvdM8.esm.min.js +2 -0
- package/dist/chunks/dds-BIaKvdM8.esm.min.js.map +1 -0
- package/dist/chunks/ddsTextureLoader-DHdy4-WN.esm.js +88 -0
- package/dist/chunks/ddsTextureLoader-DHdy4-WN.esm.js.map +1 -0
- package/dist/chunks/ddsTextureLoader-DQvH8BPG.esm.min.js +2 -0
- package/dist/chunks/ddsTextureLoader-DQvH8BPG.esm.min.js.map +1 -0
- package/dist/chunks/decalFragment-B07XA08h.esm.min.js +2 -0
- package/dist/chunks/decalFragment-B07XA08h.esm.min.js.map +1 -0
- package/dist/chunks/decalFragment-ClGzoop1.esm.js +18 -0
- package/dist/chunks/decalFragment-ClGzoop1.esm.js.map +1 -0
- package/dist/chunks/default.fragment-CAC3-eH5.esm.min.js +2 -0
- package/dist/chunks/default.fragment-CAC3-eH5.esm.min.js.map +1 -0
- package/dist/chunks/default.fragment-Cr0qnYU0.esm.js +446 -0
- package/dist/chunks/default.fragment-Cr0qnYU0.esm.js.map +1 -0
- package/dist/chunks/default.fragment-DJgifW8z.esm.min.js +2 -0
- package/dist/chunks/default.fragment-DJgifW8z.esm.min.js.map +1 -0
- package/dist/chunks/default.fragment-uFTw5k6Z.esm.js +515 -0
- package/dist/chunks/default.fragment-uFTw5k6Z.esm.js.map +1 -0
- package/dist/chunks/default.vertex-B_u-vpoR.esm.js +211 -0
- package/dist/chunks/default.vertex-B_u-vpoR.esm.js.map +1 -0
- package/dist/chunks/default.vertex-Bo-YeuPk.esm.min.js +2 -0
- package/dist/chunks/default.vertex-Bo-YeuPk.esm.min.js.map +1 -0
- package/dist/chunks/default.vertex-C6LMYeLT.esm.min.js +2 -0
- package/dist/chunks/default.vertex-C6LMYeLT.esm.min.js.map +1 -0
- package/dist/chunks/default.vertex-CzuD5tIE.esm.js +190 -0
- package/dist/chunks/default.vertex-CzuD5tIE.esm.js.map +1 -0
- package/dist/chunks/defaultUboDeclaration-BSYuerQe.esm.min.js +2 -0
- package/dist/chunks/defaultUboDeclaration-BSYuerQe.esm.min.js.map +1 -0
- package/dist/chunks/defaultUboDeclaration-CQJaKPLM.esm.min.js +2 -0
- package/dist/chunks/defaultUboDeclaration-CQJaKPLM.esm.min.js.map +1 -0
- package/dist/chunks/defaultUboDeclaration-DzRt1iTO.esm.js +13 -0
- package/dist/chunks/defaultUboDeclaration-DzRt1iTO.esm.js.map +1 -0
- package/dist/chunks/defaultUboDeclaration-DzpAmCf1.esm.js +15 -0
- package/dist/chunks/defaultUboDeclaration-DzpAmCf1.esm.js.map +1 -0
- package/dist/chunks/dumpTools-JfWNUHd1.esm.js +200 -0
- package/dist/chunks/dumpTools-JfWNUHd1.esm.js.map +1 -0
- package/dist/chunks/dumpTools-MGQM1tV4.esm.min.js +2 -0
- package/dist/chunks/dumpTools-MGQM1tV4.esm.min.js.map +1 -0
- package/dist/chunks/envTextureLoader-CoD9RkFy.esm.js +64 -0
- package/dist/chunks/envTextureLoader-CoD9RkFy.esm.js.map +1 -0
- package/dist/chunks/envTextureLoader-_huqF4Iu.esm.min.js +2 -0
- package/dist/chunks/envTextureLoader-_huqF4Iu.esm.min.js.map +1 -0
- package/dist/chunks/environmentTextureTools-BFBrSyc_.esm.min.js +2 -0
- package/dist/chunks/environmentTextureTools-BFBrSyc_.esm.min.js.map +1 -0
- package/dist/chunks/environmentTextureTools-DMKf2lIW.esm.js +382 -0
- package/dist/chunks/environmentTextureTools-DMKf2lIW.esm.js.map +1 -0
- package/dist/chunks/exrTextureLoader-BkuwS0XF.esm.min.js +2 -0
- package/dist/chunks/exrTextureLoader-BkuwS0XF.esm.min.js.map +1 -0
- package/dist/chunks/exrTextureLoader-DxOSgB3m.esm.js +1683 -0
- package/dist/chunks/exrTextureLoader-DxOSgB3m.esm.js.map +1 -0
- package/dist/chunks/fogFragment-CdyzhyDy.esm.min.js +2 -0
- package/dist/chunks/fogFragment-CdyzhyDy.esm.min.js.map +1 -0
- package/dist/chunks/fogFragment-Ct0roave.esm.js +101 -0
- package/dist/chunks/fogFragment-Ct0roave.esm.js.map +1 -0
- package/dist/chunks/fogFragment-DjORBY8D.esm.min.js +2 -0
- package/dist/chunks/fogFragment-DjORBY8D.esm.min.js.map +1 -0
- package/dist/chunks/fogFragment-DwdRh83Z.esm.js +102 -0
- package/dist/chunks/fogFragment-DwdRh83Z.esm.js.map +1 -0
- package/dist/chunks/fresnelFunction-CuDZqiSs.esm.js +12 -0
- package/dist/chunks/fresnelFunction-CuDZqiSs.esm.js.map +1 -0
- package/dist/chunks/fresnelFunction-zYzL693r.esm.min.js +2 -0
- package/dist/chunks/fresnelFunction-zYzL693r.esm.min.js.map +1 -0
- package/dist/chunks/glTFLoader-CKBe9bFc.esm.js +7735 -0
- package/dist/chunks/glTFLoader-CKBe9bFc.esm.js.map +1 -0
- package/dist/chunks/glTFLoader-HrDvovFY.esm.min.js +2 -0
- package/dist/chunks/glTFLoader-HrDvovFY.esm.min.js.map +1 -0
- package/dist/chunks/glTFLoaderAnimation-D-y1xZvo.esm.min.js +2 -0
- package/dist/chunks/glTFLoaderAnimation-D-y1xZvo.esm.min.js.map +1 -0
- package/dist/chunks/glTFLoaderAnimation-D57wBZJj.esm.js +77 -0
- package/dist/chunks/glTFLoaderAnimation-D57wBZJj.esm.js.map +1 -0
- package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js +2 -0
- package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js.map +1 -0
- package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js +67 -0
- package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js.map +1 -0
- package/dist/chunks/harmonicsFunctions-8p1AKl3B.esm.js +35 -0
- package/dist/chunks/harmonicsFunctions-8p1AKl3B.esm.js.map +1 -0
- package/dist/chunks/harmonicsFunctions-C3M4g6jE.esm.min.js +2 -0
- package/dist/chunks/harmonicsFunctions-C3M4g6jE.esm.min.js.map +1 -0
- package/dist/chunks/harmonicsFunctions-CoiTSsVa.esm.min.js +2 -0
- package/dist/chunks/harmonicsFunctions-CoiTSsVa.esm.min.js.map +1 -0
- package/dist/chunks/harmonicsFunctions-HT06ZoZl.esm.js +34 -0
- package/dist/chunks/harmonicsFunctions-HT06ZoZl.esm.js.map +1 -0
- package/dist/chunks/hdrTextureLoader-B0kksMif.esm.js +253 -0
- package/dist/chunks/hdrTextureLoader-B0kksMif.esm.js.map +1 -0
- package/dist/chunks/hdrTextureLoader-CnTSpduj.esm.min.js +2 -0
- package/dist/chunks/hdrTextureLoader-CnTSpduj.esm.min.js.map +1 -0
- package/dist/chunks/helperFunctions-Bq5KkNmT.esm.js +83 -0
- package/dist/chunks/helperFunctions-Bq5KkNmT.esm.js.map +1 -0
- package/dist/chunks/helperFunctions-DauLsm9X.esm.min.js +2 -0
- package/dist/chunks/helperFunctions-DauLsm9X.esm.min.js.map +1 -0
- package/dist/chunks/helperFunctions-Du6Zsfhy.esm.min.js +2 -0
- package/dist/chunks/helperFunctions-Du6Zsfhy.esm.min.js.map +1 -0
- package/dist/chunks/helperFunctions-oDSGYqJN.esm.js +110 -0
- package/dist/chunks/helperFunctions-oDSGYqJN.esm.js.map +1 -0
- package/dist/chunks/iesTextureLoader-DdRr77cj.esm.js +189 -0
- package/dist/chunks/iesTextureLoader-DdRr77cj.esm.js.map +1 -0
- package/dist/chunks/iesTextureLoader-DkEckxVj.esm.min.js +2 -0
- package/dist/chunks/iesTextureLoader-DkEckxVj.esm.min.js.map +1 -0
- package/dist/chunks/index-D46Rc8Qa.esm.js +82819 -0
- package/dist/chunks/index-D46Rc8Qa.esm.js.map +1 -0
- package/dist/chunks/index-r5IGv8fd.esm.min.js +57 -0
- package/dist/chunks/index-r5IGv8fd.esm.min.js.map +1 -0
- package/dist/chunks/ktxTextureLoader-CImJ68er.esm.min.js +2 -0
- package/dist/chunks/ktxTextureLoader-CImJ68er.esm.min.js.map +1 -0
- package/dist/chunks/ktxTextureLoader-CvQzBtnz.esm.js +814 -0
- package/dist/chunks/ktxTextureLoader-CvQzBtnz.esm.js.map +1 -0
- package/dist/chunks/logDepthDeclaration-BNJ_qeEv.esm.min.js +2 -0
- package/dist/chunks/logDepthDeclaration-BNJ_qeEv.esm.min.js.map +1 -0
- package/dist/chunks/logDepthDeclaration-Co9yKHfe.esm.js +35 -0
- package/dist/chunks/logDepthDeclaration-Co9yKHfe.esm.js.map +1 -0
- package/dist/chunks/logDepthDeclaration-DP9tYyv7.esm.min.js +2 -0
- package/dist/chunks/logDepthDeclaration-DP9tYyv7.esm.min.js.map +1 -0
- package/dist/chunks/logDepthDeclaration-KzS73dPG.esm.js +11 -0
- package/dist/chunks/logDepthDeclaration-KzS73dPG.esm.js.map +1 -0
- package/dist/chunks/logDepthVertex-BBDSLJJg.esm.js +77 -0
- package/dist/chunks/logDepthVertex-BBDSLJJg.esm.js.map +1 -0
- package/dist/chunks/logDepthVertex-CHXEv8Hm.esm.min.js +2 -0
- package/dist/chunks/logDepthVertex-CHXEv8Hm.esm.min.js.map +1 -0
- package/dist/chunks/logDepthVertex-CkCG5UAD.esm.min.js +2 -0
- package/dist/chunks/logDepthVertex-CkCG5UAD.esm.min.js.map +1 -0
- package/dist/chunks/logDepthVertex-DKTOhgu8.esm.js +81 -0
- package/dist/chunks/logDepthVertex-DKTOhgu8.esm.js.map +1 -0
- package/dist/chunks/mainUVVaryingDeclaration-BxP2qnf1.esm.js +11 -0
- package/dist/chunks/mainUVVaryingDeclaration-BxP2qnf1.esm.js.map +1 -0
- package/dist/chunks/mainUVVaryingDeclaration-D-YFWEWb.esm.min.js +2 -0
- package/dist/chunks/mainUVVaryingDeclaration-D-YFWEWb.esm.min.js.map +1 -0
- package/dist/chunks/mainUVVaryingDeclaration-D5LXIN_s.esm.min.js +2 -0
- package/dist/chunks/mainUVVaryingDeclaration-D5LXIN_s.esm.min.js.map +1 -0
- package/dist/chunks/mainUVVaryingDeclaration-DBd0Ca2K.esm.js +11 -0
- package/dist/chunks/mainUVVaryingDeclaration-DBd0Ca2K.esm.js.map +1 -0
- package/dist/chunks/mesh.vertexData.functions-B_pMCAzZ.esm.js +119 -0
- package/dist/chunks/mesh.vertexData.functions-B_pMCAzZ.esm.js.map +1 -0
- package/dist/chunks/mesh.vertexData.functions-Bo7e6Of9.esm.min.js +2 -0
- package/dist/chunks/mesh.vertexData.functions-Bo7e6Of9.esm.min.js.map +1 -0
- package/dist/chunks/meshUboDeclaration-D7vtpetW.esm.js +26 -0
- package/dist/chunks/meshUboDeclaration-D7vtpetW.esm.js.map +1 -0
- package/dist/chunks/meshUboDeclaration-tb8T5asG.esm.min.js +2 -0
- package/dist/chunks/meshUboDeclaration-tb8T5asG.esm.min.js.map +1 -0
- package/dist/chunks/objFileLoader-B0XaXxyr.esm.min.js +2 -0
- package/dist/chunks/objFileLoader-B0XaXxyr.esm.min.js.map +1 -0
- package/dist/chunks/objFileLoader-B1MaGxQt.esm.js +1338 -0
- package/dist/chunks/objFileLoader-B1MaGxQt.esm.js.map +1 -0
- package/dist/chunks/oitFragment-BEKFrqPY.esm.js +1078 -0
- package/dist/chunks/oitFragment-BEKFrqPY.esm.js.map +1 -0
- package/dist/chunks/oitFragment-CJrbQh0i.esm.min.js +2 -0
- package/dist/chunks/oitFragment-CJrbQh0i.esm.min.js.map +1 -0
- package/dist/chunks/oitFragment-DCxGblwL.esm.js +1240 -0
- package/dist/chunks/oitFragment-DCxGblwL.esm.js.map +1 -0
- package/dist/chunks/oitFragment-sZA5tkE3.esm.min.js +2 -0
- package/dist/chunks/oitFragment-sZA5tkE3.esm.min.js.map +1 -0
- package/dist/chunks/pass.fragment-BYDvFFL5.esm.js +15 -0
- package/dist/chunks/pass.fragment-BYDvFFL5.esm.js.map +1 -0
- package/dist/chunks/pass.fragment-BgXOqRns.esm.js +15 -0
- package/dist/chunks/pass.fragment-BgXOqRns.esm.js.map +1 -0
- package/dist/chunks/pass.fragment-DgadxzwS.esm.min.js +2 -0
- package/dist/chunks/pass.fragment-DgadxzwS.esm.min.js.map +1 -0
- package/dist/chunks/pass.fragment-Dqmp3CRB.esm.min.js +2 -0
- package/dist/chunks/pass.fragment-Dqmp3CRB.esm.min.js.map +1 -0
- package/dist/chunks/passCube.fragment-07CNLnnq.esm.js +34 -0
- package/dist/chunks/passCube.fragment-07CNLnnq.esm.js.map +1 -0
- package/dist/chunks/passCube.fragment-4R2Z-LXR.esm.min.js +2 -0
- package/dist/chunks/passCube.fragment-4R2Z-LXR.esm.min.js.map +1 -0
- package/dist/chunks/passCube.fragment-Aq1scRJ9.esm.js +34 -0
- package/dist/chunks/passCube.fragment-Aq1scRJ9.esm.js.map +1 -0
- package/dist/chunks/passCube.fragment-DiybDNvK.esm.min.js +2 -0
- package/dist/chunks/passCube.fragment-DiybDNvK.esm.min.js.map +1 -0
- package/dist/chunks/pbr.fragment-CBb8vd51.esm.min.js +2 -0
- package/dist/chunks/pbr.fragment-CBb8vd51.esm.min.js.map +1 -0
- package/dist/chunks/pbr.fragment-DSUT21Rk.esm.min.js +2 -0
- package/dist/chunks/pbr.fragment-DSUT21Rk.esm.min.js.map +1 -0
- package/dist/chunks/pbr.fragment-DmP7eqg7.esm.js +3272 -0
- package/dist/chunks/pbr.fragment-DmP7eqg7.esm.js.map +1 -0
- package/dist/chunks/pbr.fragment-DzIZJg6m.esm.js +3225 -0
- package/dist/chunks/pbr.fragment-DzIZJg6m.esm.js.map +1 -0
- package/dist/chunks/pbr.vertex--Lj5Uipt.esm.js +223 -0
- package/dist/chunks/pbr.vertex--Lj5Uipt.esm.js.map +1 -0
- package/dist/chunks/pbr.vertex-BScRF6wh.esm.min.js +2 -0
- package/dist/chunks/pbr.vertex-BScRF6wh.esm.min.js.map +1 -0
- package/dist/chunks/pbr.vertex-CZSsnbPf.esm.js +348 -0
- package/dist/chunks/pbr.vertex-CZSsnbPf.esm.js.map +1 -0
- package/dist/chunks/pbr.vertex-Nho2p99M.esm.min.js +2 -0
- package/dist/chunks/pbr.vertex-Nho2p99M.esm.min.js.map +1 -0
- package/dist/chunks/postprocess.vertex-B_q6GHTK.esm.js +20 -0
- package/dist/chunks/postprocess.vertex-B_q6GHTK.esm.js.map +1 -0
- package/dist/chunks/postprocess.vertex-C-ocJcje.esm.min.js +2 -0
- package/dist/chunks/postprocess.vertex-C-ocJcje.esm.min.js.map +1 -0
- package/dist/chunks/rawTexture-DeYN01jd.esm.min.js +2 -0
- package/dist/chunks/rawTexture-DeYN01jd.esm.min.js.map +1 -0
- package/dist/chunks/rawTexture-Dh4jdTlv.esm.js +191 -0
- package/dist/chunks/rawTexture-Dh4jdTlv.esm.js.map +1 -0
- package/dist/chunks/ray-DMN9ip7z.esm.min.js +2 -0
- package/dist/chunks/ray-DMN9ip7z.esm.min.js.map +1 -0
- package/dist/chunks/ray-QR2k6aJd.esm.js +946 -0
- package/dist/chunks/ray-QR2k6aJd.esm.js.map +1 -0
- package/dist/chunks/rgbdDecode.fragment-C3AkoFAQ.esm.min.js +2 -0
- package/dist/chunks/rgbdDecode.fragment-C3AkoFAQ.esm.min.js.map +1 -0
- package/dist/chunks/rgbdDecode.fragment-Cok6PVQr.esm.js +13 -0
- package/dist/chunks/rgbdDecode.fragment-Cok6PVQr.esm.js.map +1 -0
- package/dist/chunks/rgbdDecode.fragment-CqcagT1x.esm.min.js +2 -0
- package/dist/chunks/rgbdDecode.fragment-CqcagT1x.esm.min.js.map +1 -0
- package/dist/chunks/rgbdDecode.fragment-DRpqF3bE.esm.js +13 -0
- package/dist/chunks/rgbdDecode.fragment-DRpqF3bE.esm.js.map +1 -0
- package/dist/chunks/rgbdEncode.fragment-BLe7imXf.esm.min.js +2 -0
- package/dist/chunks/rgbdEncode.fragment-BLe7imXf.esm.min.js.map +1 -0
- package/dist/chunks/rgbdEncode.fragment-Bi6E_oVW.esm.js +13 -0
- package/dist/chunks/rgbdEncode.fragment-Bi6E_oVW.esm.js.map +1 -0
- package/dist/chunks/rgbdEncode.fragment-C7hBKPem.esm.min.js +2 -0
- package/dist/chunks/rgbdEncode.fragment-C7hBKPem.esm.min.js.map +1 -0
- package/dist/chunks/rgbdEncode.fragment-C9DicUjD.esm.js +13 -0
- package/dist/chunks/rgbdEncode.fragment-C9DicUjD.esm.js.map +1 -0
- package/dist/chunks/splatFileLoader-BzfYte-_.esm.min.js +2 -0
- package/dist/chunks/splatFileLoader-BzfYte-_.esm.min.js.map +1 -0
- package/dist/chunks/splatFileLoader-K9RpjB6c.esm.js +3660 -0
- package/dist/chunks/splatFileLoader-K9RpjB6c.esm.js.map +1 -0
- package/dist/chunks/spotLight-CJlK-_c5.esm.min.js +2 -0
- package/dist/chunks/spotLight-CJlK-_c5.esm.min.js.map +1 -0
- package/dist/chunks/spotLight-DxPJdRVZ.esm.js +701 -0
- package/dist/chunks/spotLight-DxPJdRVZ.esm.js.map +1 -0
- package/dist/chunks/standardMaterial-BRKRGk7c.esm.js +1811 -0
- package/dist/chunks/standardMaterial-BRKRGk7c.esm.js.map +1 -0
- package/dist/chunks/standardMaterial-Bs9Jda3X.esm.min.js +2 -0
- package/dist/chunks/standardMaterial-Bs9Jda3X.esm.min.js.map +1 -0
- package/dist/chunks/stlFileLoader-BSGzPo-z.esm.min.js +2 -0
- package/dist/chunks/stlFileLoader-BSGzPo-z.esm.min.js.map +1 -0
- package/dist/chunks/stlFileLoader-DtPzeNXZ.esm.js +238 -0
- package/dist/chunks/stlFileLoader-DtPzeNXZ.esm.js.map +1 -0
- package/dist/chunks/tgaTextureLoader-CFjxRPEE.esm.js +349 -0
- package/dist/chunks/tgaTextureLoader-CFjxRPEE.esm.js.map +1 -0
- package/dist/chunks/tgaTextureLoader-Ch1a2Rcd.esm.min.js +2 -0
- package/dist/chunks/tgaTextureLoader-Ch1a2Rcd.esm.min.js.map +1 -0
- package/dist/chunks/thinInstanceMesh-CgfQdxDM.esm.min.js +2 -0
- package/dist/chunks/thinInstanceMesh-CgfQdxDM.esm.min.js.map +1 -0
- package/dist/chunks/thinInstanceMesh-tQGPk8rE.esm.js +314 -0
- package/dist/chunks/thinInstanceMesh-tQGPk8rE.esm.js.map +1 -0
- package/dist/chunks/vertexColorMixing-BcDvzwMA.esm.js +440 -0
- package/dist/chunks/vertexColorMixing-BcDvzwMA.esm.js.map +1 -0
- package/dist/chunks/vertexColorMixing-CJeeWCpY.esm.min.js +2 -0
- package/dist/chunks/vertexColorMixing-CJeeWCpY.esm.min.js.map +1 -0
- package/dist/chunks/vertexColorMixing-DQESmS2T.esm.js +550 -0
- package/dist/chunks/vertexColorMixing-DQESmS2T.esm.js.map +1 -0
- package/dist/chunks/vertexColorMixing-DlrEyRWJ.esm.min.js +2 -0
- package/dist/chunks/vertexColorMixing-DlrEyRWJ.esm.min.js.map +1 -0
- package/dist/chunks/webgpuEngine-B8AMUx8i.esm.js +11539 -0
- package/dist/chunks/webgpuEngine-B8AMUx8i.esm.js.map +1 -0
- package/dist/chunks/webgpuEngine-CxY3O3Qz.esm.min.js +2 -0
- package/dist/chunks/webgpuEngine-CxY3O3Qz.esm.min.js.map +1 -0
- package/dist/chunks/workerPool-BUOov2K1.esm.js +122 -0
- package/dist/chunks/workerPool-BUOov2K1.esm.js.map +1 -0
- package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js +2 -0
- package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js.map +1 -0
- package/lib/index.d.ts +637 -0
- package/lib/index.js +2257 -0
- package/lib/index.js.map +1 -0
- package/package.json +38 -24
- package/readme.md +28 -28
- package/configuration/configuration.d.ts +0 -107
- package/configuration/configuration.js +0 -16
- package/configuration/configuration.js.map +0 -1
- package/configuration/configurationCompatibility.d.ts +0 -8
- package/configuration/configurationCompatibility.js +0 -66
- package/configuration/configurationCompatibility.js.map +0 -1
- package/configuration/configurationContainer.d.ts +0 -10
- package/configuration/configurationContainer.js +0 -10
- package/configuration/configurationContainer.js.map +0 -1
- package/configuration/globals.d.ts +0 -6
- package/configuration/globals.js +0 -18
- package/configuration/globals.js.map +0 -1
- package/configuration/index.d.ts +0 -2
- package/configuration/index.js +0 -4
- package/configuration/index.js.map +0 -1
- package/configuration/interfaces/cameraConfiguration.d.ts +0 -31
- package/configuration/interfaces/cameraConfiguration.js +0 -2
- package/configuration/interfaces/cameraConfiguration.js.map +0 -1
- package/configuration/interfaces/colorGradingConfiguration.d.ts +0 -81
- package/configuration/interfaces/colorGradingConfiguration.js +0 -2
- package/configuration/interfaces/colorGradingConfiguration.js.map +0 -1
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.d.ts +0 -20
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.js +0 -2
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.js.map +0 -1
- package/configuration/interfaces/environmentMapConfiguration.d.ts +0 -22
- package/configuration/interfaces/environmentMapConfiguration.js +0 -2
- package/configuration/interfaces/environmentMapConfiguration.js.map +0 -1
- package/configuration/interfaces/groundConfiguration.d.ts +0 -24
- package/configuration/interfaces/groundConfiguration.js +0 -2
- package/configuration/interfaces/groundConfiguration.js.map +0 -1
- package/configuration/interfaces/imageProcessingConfiguration.d.ts +0 -45
- package/configuration/interfaces/imageProcessingConfiguration.js +0 -2
- package/configuration/interfaces/imageProcessingConfiguration.js.map +0 -1
- package/configuration/interfaces/index.d.ts +0 -15
- package/configuration/interfaces/index.js +0 -16
- package/configuration/interfaces/index.js.map +0 -1
- package/configuration/interfaces/lightConfiguration.d.ts +0 -60
- package/configuration/interfaces/lightConfiguration.js +0 -2
- package/configuration/interfaces/lightConfiguration.js.map +0 -1
- package/configuration/interfaces/modelAnimationConfiguration.d.ts +0 -26
- package/configuration/interfaces/modelAnimationConfiguration.js +0 -2
- package/configuration/interfaces/modelAnimationConfiguration.js.map +0 -1
- package/configuration/interfaces/modelConfiguration.d.ts +0 -65
- package/configuration/interfaces/modelConfiguration.js +0 -2
- package/configuration/interfaces/modelConfiguration.js.map +0 -1
- package/configuration/interfaces/observersConfiguration.d.ts +0 -5
- package/configuration/interfaces/observersConfiguration.js +0 -2
- package/configuration/interfaces/observersConfiguration.js.map +0 -1
- package/configuration/interfaces/sceneConfiguration.d.ts +0 -48
- package/configuration/interfaces/sceneConfiguration.js +0 -2
- package/configuration/interfaces/sceneConfiguration.js.map +0 -1
- package/configuration/interfaces/sceneOptimizerConfiguration.d.ts +0 -23
- package/configuration/interfaces/sceneOptimizerConfiguration.js +0 -2
- package/configuration/interfaces/sceneOptimizerConfiguration.js.map +0 -1
- package/configuration/interfaces/skyboxConfiguration.d.ts +0 -21
- package/configuration/interfaces/skyboxConfiguration.js +0 -2
- package/configuration/interfaces/skyboxConfiguration.js.map +0 -1
- package/configuration/interfaces/templateConfiguration.d.ts +0 -67
- package/configuration/interfaces/templateConfiguration.js +0 -2
- package/configuration/interfaces/templateConfiguration.js.map +0 -1
- package/configuration/interfaces/vrConfiguration.d.ts +0 -16
- package/configuration/interfaces/vrConfiguration.js +0 -2
- package/configuration/interfaces/vrConfiguration.js.map +0 -1
- package/configuration/loader.d.ts +0 -4
- package/configuration/loader.js +0 -17
- package/configuration/loader.js.map +0 -1
- package/configuration/mappers.d.ts +0 -43
- package/configuration/mappers.js +0 -193
- package/configuration/mappers.js.map +0 -1
- package/configuration/renderOnlyLoader.d.ts +0 -33
- package/configuration/renderOnlyLoader.js +0 -162
- package/configuration/renderOnlyLoader.js.map +0 -1
- package/configuration/types/default.d.ts +0 -6
- package/configuration/types/default.js +0 -121
- package/configuration/types/default.js.map +0 -1
- package/configuration/types/environmentMap.d.ts +0 -5
- package/configuration/types/environmentMap.js +0 -14
- package/configuration/types/environmentMap.js.map +0 -1
- package/configuration/types/extended.d.ts +0 -6
- package/configuration/types/extended.js +0 -317
- package/configuration/types/extended.js.map +0 -1
- package/configuration/types/index.d.ts +0 -14
- package/configuration/types/index.js +0 -51
- package/configuration/types/index.js.map +0 -1
- package/configuration/types/minimal.d.ts +0 -6
- package/configuration/types/minimal.js +0 -43
- package/configuration/types/minimal.js.map +0 -1
- package/configuration/types/renderOnlyDefault.d.ts +0 -30
- package/configuration/types/renderOnlyDefault.js +0 -31
- package/configuration/types/renderOnlyDefault.js.map +0 -1
- package/configuration/types/shadowLight.d.ts +0 -9
- package/configuration/types/shadowLight.js +0 -64
- package/configuration/types/shadowLight.js.map +0 -1
- package/helper/index.d.ts +0 -29
- package/helper/index.js +0 -66
- package/helper/index.js.map +0 -1
- package/index.d.ts +0 -30
- package/index.js +0 -46
- package/index.js.map +0 -1
- package/initializer.d.ts +0 -11
- package/initializer.js +0 -35
- package/initializer.js.map +0 -1
- package/interfaces.d.ts +0 -5
- package/interfaces.js +0 -7
- package/interfaces.js.map +0 -1
- package/labs/environmentSerializer.d.ts +0 -126
- package/labs/environmentSerializer.js +0 -191
- package/labs/environmentSerializer.js.map +0 -1
- package/labs/texture.d.ts +0 -183
- package/labs/texture.js +0 -351
- package/labs/texture.js.map +0 -1
- package/labs/viewerLabs.d.ts +0 -51
- package/labs/viewerLabs.js +0 -134
- package/labs/viewerLabs.js.map +0 -1
- package/loader/modelLoader.d.ts +0 -56
- package/loader/modelLoader.js +0 -202
- package/loader/modelLoader.js.map +0 -1
- package/loader/plugins/applyMaterialConfig.d.ts +0 -12
- package/loader/plugins/applyMaterialConfig.js +0 -16
- package/loader/plugins/applyMaterialConfig.js.map +0 -1
- package/loader/plugins/extendedMaterialLoaderPlugin.d.ts +0 -9
- package/loader/plugins/extendedMaterialLoaderPlugin.js +0 -16
- package/loader/plugins/extendedMaterialLoaderPlugin.js.map +0 -1
- package/loader/plugins/index.d.ts +0 -19
- package/loader/plugins/index.js +0 -44
- package/loader/plugins/index.js.map +0 -1
- package/loader/plugins/loaderPlugin.d.ts +0 -24
- package/loader/plugins/loaderPlugin.js +0 -2
- package/loader/plugins/loaderPlugin.js.map +0 -1
- package/loader/plugins/msftLodLoaderPlugin.d.ts +0 -12
- package/loader/plugins/msftLodLoaderPlugin.js +0 -21
- package/loader/plugins/msftLodLoaderPlugin.js.map +0 -1
- package/loader/plugins/telemetryLoaderPlugin.d.ts +0 -12
- package/loader/plugins/telemetryLoaderPlugin.js +0 -36
- package/loader/plugins/telemetryLoaderPlugin.js.map +0 -1
- package/managers/observablesManager.d.ts +0 -66
- package/managers/observablesManager.js +0 -35
- package/managers/observablesManager.js.map +0 -1
- package/managers/sceneManager.d.ts +0 -245
- package/managers/sceneManager.js +0 -1375
- package/managers/sceneManager.js.map +0 -1
- package/managers/telemetryManager.d.ts +0 -78
- package/managers/telemetryManager.js +0 -117
- package/managers/telemetryManager.js.map +0 -1
- package/model/modelAnimation.d.ts +0 -215
- package/model/modelAnimation.js +0 -237
- package/model/modelAnimation.js.map +0 -1
- package/model/viewerModel.d.ts +0 -233
- package/model/viewerModel.js +0 -673
- package/model/viewerModel.js.map +0 -1
- package/optimizer/custom/extended.d.ts +0 -13
- package/optimizer/custom/extended.js +0 -101
- package/optimizer/custom/extended.js.map +0 -1
- package/optimizer/custom/index.d.ts +0 -9
- package/optimizer/custom/index.js +0 -26
- package/optimizer/custom/index.js.map +0 -1
- package/renderOnlyIndex.d.ts +0 -11
- package/renderOnlyIndex.js +0 -18
- package/renderOnlyIndex.js.map +0 -1
- package/templating/eventManager.d.ts +0 -35
- package/templating/eventManager.js +0 -66
- package/templating/eventManager.js.map +0 -1
- package/templating/plugins/hdButtonPlugin.d.ts +0 -9
- package/templating/plugins/hdButtonPlugin.js +0 -22
- package/templating/plugins/hdButtonPlugin.js.map +0 -1
- package/templating/plugins/printButton.d.ts +0 -9
- package/templating/plugins/printButton.js +0 -41
- package/templating/plugins/printButton.js.map +0 -1
- package/templating/templateManager.d.ts +0 -197
- package/templating/templateManager.js +0 -561
- package/templating/templateManager.js.map +0 -1
- package/templating/viewerTemplatePlugin.d.ts +0 -21
- package/templating/viewerTemplatePlugin.js +0 -69
- package/templating/viewerTemplatePlugin.js.map +0 -1
- package/viewer/defaultViewer.d.ts +0 -130
- package/viewer/defaultViewer.js +0 -672
- package/viewer/defaultViewer.js.map +0 -1
- package/viewer/renderOnlyViewer.d.ts +0 -9
- package/viewer/renderOnlyViewer.js +0 -46
- package/viewer/renderOnlyViewer.js.map +0 -1
- package/viewer/viewer.d.ts +0 -258
- package/viewer/viewer.js +0 -783
- package/viewer/viewer.js.map +0 -1
- package/viewer/viewerManager.d.ts +0 -58
- package/viewer/viewerManager.js +0 -91
- package/viewer/viewerManager.js.map +0 -1
- package/viewer/viewerWithTemplate.d.ts +0 -9
- package/viewer/viewerWithTemplate.js +0 -20
- package/viewer/viewerWithTemplate.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{I as e,C as t,P as r,A as s,L as n,U as i,a,b as o,F as u,D as c,c as h,d as l,V as d,S as p,e as _,f as g,g as f,T as m,B as b,R as x,G as T,h as y,i as E,j as S,k as R,_ as A,l as C,m as I,n as v,E as B,o as w,p as L,q as P,r as F,s as D,t as M,u as U}from"./index-r5IGv8fd.esm.min.js";import"./bakedVertexAnimation-D5PLG8Vz.esm.min.js";import"./helperFunctions-DauLsm9X.esm.min.js";import"./fresnelFunction-zYzL693r.esm.min.js";import"./meshUboDeclaration-tb8T5asG.esm.min.js";import"./decalFragment-B07XA08h.esm.min.js";class O{static ComputeNumMipmapLevels(t,r){return e(Math.max(t,r))+1}static GetTextureTypeFromFormat(e){switch(e){case"r8unorm":case"r8uint":case"rg8unorm":case"rg8uint":case"rgba8unorm":case"rgba8unorm-srgb":case"rgba8uint":case"bgra8unorm":case"bgra8unorm-srgb":case"rgb10a2uint":case"rgb10a2unorm":case"rgb9e5ufloat":case"rg11b10ufloat":case"bc7-rgba-unorm":case"bc7-rgba-unorm-srgb":case"bc6h-rgb-ufloat":case"bc5-rg-unorm":case"bc3-rgba-unorm":case"bc3-rgba-unorm-srgb":case"bc2-rgba-unorm":case"bc2-rgba-unorm-srgb":case"bc4-r-unorm":case"bc1-rgba-unorm":case"bc1-rgba-unorm-srgb":case"etc2-rgb8unorm":case"etc2-rgb8unorm-srgb":case"etc2-rgb8a1unorm":case"etc2-rgb8a1unorm-srgb":case"etc2-rgba8unorm":case"etc2-rgba8unorm-srgb":case"eac-r11unorm":case"eac-rg11unorm":case"astc-4x4-unorm":case"astc-4x4-unorm-srgb":case"astc-5x4-unorm":case"astc-5x4-unorm-srgb":case"astc-5x5-unorm":case"astc-5x5-unorm-srgb":case"astc-6x5-unorm":case"astc-6x5-unorm-srgb":case"astc-6x6-unorm":case"astc-6x6-unorm-srgb":case"astc-8x5-unorm":case"astc-8x5-unorm-srgb":case"astc-8x6-unorm":case"astc-8x6-unorm-srgb":case"astc-8x8-unorm":case"astc-8x8-unorm-srgb":case"astc-10x5-unorm":case"astc-10x5-unorm-srgb":case"astc-10x6-unorm":case"astc-10x6-unorm-srgb":case"astc-10x8-unorm":case"astc-10x8-unorm-srgb":case"astc-10x10-unorm":case"astc-10x10-unorm-srgb":case"astc-12x10-unorm":case"astc-12x10-unorm-srgb":case"astc-12x12-unorm":case"astc-12x12-unorm-srgb":case"stencil8":return t.TEXTURETYPE_UNSIGNED_BYTE;case"r8snorm":case"r8sint":case"rg8snorm":case"rg8sint":case"rgba8snorm":case"rgba8sint":case"bc6h-rgb-float":case"bc5-rg-snorm":case"bc4-r-snorm":case"eac-r11snorm":case"eac-rg11snorm":return t.TEXTURETYPE_BYTE;case"r16uint":case"r16unorm":case"rg16unorm":case"rgba16unorm":case"rg16uint":case"rgba16uint":case"depth16unorm":return t.TEXTURETYPE_UNSIGNED_SHORT;case"r16sint":case"r16snorm":case"rg16snorm":case"rgba16snorm":case"rg16sint":case"rgba16sint":return t.TEXTURETYPE_SHORT;case"r16float":case"rg16float":case"rgba16float":return t.TEXTURETYPE_HALF_FLOAT;case"r32uint":case"rg32uint":case"rgba32uint":case"r32sint":case"rg32sint":case"rgba32sint":return t.TEXTURETYPE_UNSIGNED_INTEGER;case"r32float":case"rg32float":case"rgba32float":case"depth32float":case"depth32float-stencil8":case"depth24plus":case"depth24plus-stencil8":return t.TEXTURETYPE_FLOAT}return t.TEXTURETYPE_UNSIGNED_BYTE}static GetBlockInformationFromFormat(e){switch(e){case"r8unorm":case"r8snorm":case"r8uint":case"r8sint":return{width:1,height:1,length:1};case"r16uint":case"r16sint":case"r16unorm":case"rg16unorm":case"rgba16unorm":case"r16snorm":case"rg16snorm":case"rgba16snorm":case"r16float":case"rg8unorm":case"rg8snorm":case"rg8uint":case"rg8sint":case"depth16unorm":return{width:1,height:1,length:2};case"r32uint":case"r32sint":case"r32float":case"rg16uint":case"rg16sint":case"rg16float":case"rgba8unorm":case"rgba8unorm-srgb":case"rgba8snorm":case"rgba8uint":case"rgba8sint":case"bgra8unorm":case"bgra8unorm-srgb":case"rgb9e5ufloat":case"rgb10a2uint":case"rgb10a2unorm":case"rg11b10ufloat":case"depth32float":return{width:1,height:1,length:4};case"rg32uint":case"rg32sint":case"rg32float":case"rgba16uint":case"rgba16sint":case"rgba16float":return{width:1,height:1,length:8};case"rgba32uint":case"rgba32sint":case"rgba32float":return{width:1,height:1,length:16};case"stencil8":throw"No fixed size for Stencil8 format!";case"depth24plus":throw"No fixed size for Depth24Plus format!";case"depth24plus-stencil8":throw"No fixed size for Depth24PlusStencil8 format!";case"depth32float-stencil8":return{width:1,height:1,length:5};case"bc7-rgba-unorm":case"bc7-rgba-unorm-srgb":case"bc6h-rgb-ufloat":case"bc6h-rgb-float":case"bc5-rg-unorm":case"bc5-rg-snorm":case"bc3-rgba-unorm":case"bc3-rgba-unorm-srgb":case"bc2-rgba-unorm":case"bc2-rgba-unorm-srgb":case"etc2-rgba8unorm":case"etc2-rgba8unorm-srgb":case"eac-rg11unorm":case"eac-rg11snorm":case"astc-4x4-unorm":case"astc-4x4-unorm-srgb":return{width:4,height:4,length:16};case"bc4-r-unorm":case"bc4-r-snorm":case"bc1-rgba-unorm":case"bc1-rgba-unorm-srgb":case"etc2-rgb8unorm":case"etc2-rgb8unorm-srgb":case"etc2-rgb8a1unorm":case"etc2-rgb8a1unorm-srgb":case"eac-r11unorm":case"eac-r11snorm":return{width:4,height:4,length:8};case"astc-5x4-unorm":case"astc-5x4-unorm-srgb":return{width:5,height:4,length:16};case"astc-5x5-unorm":case"astc-5x5-unorm-srgb":return{width:5,height:5,length:16};case"astc-6x5-unorm":case"astc-6x5-unorm-srgb":return{width:6,height:5,length:16};case"astc-6x6-unorm":case"astc-6x6-unorm-srgb":return{width:6,height:6,length:16};case"astc-8x5-unorm":case"astc-8x5-unorm-srgb":return{width:8,height:5,length:16};case"astc-8x6-unorm":case"astc-8x6-unorm-srgb":return{width:8,height:6,length:16};case"astc-8x8-unorm":case"astc-8x8-unorm-srgb":return{width:8,height:8,length:16};case"astc-10x5-unorm":case"astc-10x5-unorm-srgb":return{width:10,height:5,length:16};case"astc-10x6-unorm":case"astc-10x6-unorm-srgb":return{width:10,height:6,length:16};case"astc-10x8-unorm":case"astc-10x8-unorm-srgb":return{width:10,height:8,length:16};case"astc-10x10-unorm":case"astc-10x10-unorm-srgb":return{width:10,height:10,length:16};case"astc-12x10-unorm":case"astc-12x10-unorm-srgb":return{width:12,height:10,length:16};case"astc-12x12-unorm":case"astc-12x12-unorm-srgb":return{width:12,height:12,length:16}}return{width:1,height:1,length:4}}static IsHardwareTexture(e){return!!e.release}static IsInternalTexture(e){return!!e.dispose}static IsImageBitmap(e){return void 0!==e.close}static IsImageBitmapArray(e){return Array.isArray(e)&&void 0!==e[0].close}static IsCompressedFormat(e){switch(e){case"bc7-rgba-unorm-srgb":case"bc7-rgba-unorm":case"bc6h-rgb-float":case"bc6h-rgb-ufloat":case"bc5-rg-snorm":case"bc5-rg-unorm":case"bc4-r-snorm":case"bc4-r-unorm":case"bc3-rgba-unorm-srgb":case"bc3-rgba-unorm":case"bc2-rgba-unorm-srgb":case"bc2-rgba-unorm":case"bc1-rgba-unorm-srgb":case"bc1-rgba-unorm":case"etc2-rgb8unorm":case"etc2-rgb8unorm-srgb":case"etc2-rgb8a1unorm":case"etc2-rgb8a1unorm-srgb":case"etc2-rgba8unorm":case"etc2-rgba8unorm-srgb":case"eac-r11unorm":case"eac-r11snorm":case"eac-rg11unorm":case"eac-rg11snorm":case"astc-4x4-unorm":case"astc-4x4-unorm-srgb":case"astc-5x4-unorm":case"astc-5x4-unorm-srgb":case"astc-5x5-unorm":case"astc-5x5-unorm-srgb":case"astc-6x5-unorm":case"astc-6x5-unorm-srgb":case"astc-6x6-unorm":case"astc-6x6-unorm-srgb":case"astc-8x5-unorm":case"astc-8x5-unorm-srgb":case"astc-8x6-unorm":case"astc-8x6-unorm-srgb":case"astc-8x8-unorm":case"astc-8x8-unorm-srgb":case"astc-10x5-unorm":case"astc-10x5-unorm-srgb":case"astc-10x6-unorm":case"astc-10x6-unorm-srgb":case"astc-10x8-unorm":case"astc-10x8-unorm-srgb":case"astc-10x10-unorm":case"astc-10x10-unorm-srgb":case"astc-12x10-unorm":case"astc-12x10-unorm-srgb":case"astc-12x12-unorm":case"astc-12x12-unorm-srgb":return!0}return!1}static GetWebGPUTextureFormat(e,r,s=!1){switch(r){case t.TEXTUREFORMAT_DEPTH16:return"depth16unorm";case t.TEXTUREFORMAT_DEPTH24:return"depth24plus";case t.TEXTUREFORMAT_DEPTH24_STENCIL8:return"depth24plus-stencil8";case t.TEXTUREFORMAT_DEPTH32_FLOAT:return"depth32float";case t.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8:return"depth32float-stencil8";case t.TEXTUREFORMAT_STENCIL8:return"stencil8";case t.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM:return s?"bc7-rgba-unorm-srgb":"bc7-rgba-unorm";case t.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT:return"bc6h-rgb-ufloat";case t.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:return"bc6h-rgb-float";case t.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5:return s?"bc3-rgba-unorm-srgb":"bc3-rgba-unorm";case t.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3:return s?"bc2-rgba-unorm-srgb":"bc2-rgba-unorm";case t.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT1:case t.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1:return s?"bc1-rgba-unorm-srgb":"bc1-rgba-unorm";case t.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4:return s?"astc-4x4-unorm-srgb":"astc-4x4-unorm";case t.TEXTUREFORMAT_COMPRESSED_RGB_ETC1_WEBGL:case t.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2:return s?"etc2-rgb8unorm-srgb":"etc2-rgb8unorm";case t.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC:return s?"etc2-rgba8unorm-srgb":"etc2-rgba8unorm"}switch(e){case t.TEXTURETYPE_BYTE:switch(r){case t.TEXTUREFORMAT_RED:return"r8snorm";case t.TEXTUREFORMAT_RG:return"rg8snorm";case t.TEXTUREFORMAT_RGB:throw"RGB format not supported in WebGPU";case t.TEXTUREFORMAT_RED_INTEGER:return"r8sint";case t.TEXTUREFORMAT_RG_INTEGER:return"rg8sint";case t.TEXTUREFORMAT_RGB_INTEGER:throw"RGB_INTEGER format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA_INTEGER:return"rgba8sint";default:return"rgba8snorm"}case t.TEXTURETYPE_UNSIGNED_BYTE:switch(r){case t.TEXTUREFORMAT_RED:return"r8unorm";case t.TEXTUREFORMAT_RG:return"rg8unorm";case t.TEXTUREFORMAT_RGB:throw"TEXTUREFORMAT_RGB format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA:return s?"rgba8unorm-srgb":"rgba8unorm";case t.TEXTUREFORMAT_BGRA:return s?"bgra8unorm-srgb":"bgra8unorm";case t.TEXTUREFORMAT_RED_INTEGER:return"r8uint";case t.TEXTUREFORMAT_RG_INTEGER:return"rg8uint";case t.TEXTUREFORMAT_RGB_INTEGER:throw"RGB_INTEGER format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA_INTEGER:return"rgba8uint";case t.TEXTUREFORMAT_ALPHA:throw"TEXTUREFORMAT_ALPHA format not supported in WebGPU";case t.TEXTUREFORMAT_LUMINANCE:throw"TEXTUREFORMAT_LUMINANCE format not supported in WebGPU";case t.TEXTUREFORMAT_LUMINANCE_ALPHA:throw"TEXTUREFORMAT_LUMINANCE_ALPHA format not supported in WebGPU";default:return"rgba8unorm"}case t.TEXTURETYPE_SHORT:switch(r){case t.TEXTUREFORMAT_RED_INTEGER:return"r16sint";case t.TEXTUREFORMAT_RG_INTEGER:return"rg16sint";case t.TEXTUREFORMAT_RGB_INTEGER:throw"TEXTUREFORMAT_RGB_INTEGER format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA_INTEGER:default:return"rgba16sint"}case t.TEXTURETYPE_UNSIGNED_SHORT:switch(r){case t.TEXTUREFORMAT_RED_INTEGER:return"r16uint";case t.TEXTUREFORMAT_RG_INTEGER:return"rg16uint";case t.TEXTUREFORMAT_RGB_INTEGER:throw"TEXTUREFORMAT_RGB_INTEGER format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA_INTEGER:default:return"rgba16uint"}case t.TEXTURETYPE_INT:switch(r){case t.TEXTUREFORMAT_RED_INTEGER:return"r32sint";case t.TEXTUREFORMAT_RG_INTEGER:return"rg32sint";case t.TEXTUREFORMAT_RGB_INTEGER:throw"TEXTUREFORMAT_RGB_INTEGER format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA_INTEGER:default:return"rgba32sint"}case t.TEXTURETYPE_UNSIGNED_INTEGER:switch(r){case t.TEXTUREFORMAT_RED_INTEGER:return"r32uint";case t.TEXTUREFORMAT_RG_INTEGER:return"rg32uint";case t.TEXTUREFORMAT_RGB_INTEGER:throw"TEXTUREFORMAT_RGB_INTEGER format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA_INTEGER:default:return"rgba32uint"}case t.TEXTURETYPE_FLOAT:switch(r){case t.TEXTUREFORMAT_RED:return"r32float";case t.TEXTUREFORMAT_RG:return"rg32float";case t.TEXTUREFORMAT_RGB:throw"TEXTUREFORMAT_RGB format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA:default:return"rgba32float"}case t.TEXTURETYPE_HALF_FLOAT:switch(r){case t.TEXTUREFORMAT_RED:return"r16float";case t.TEXTUREFORMAT_RG:return"rg16float";case t.TEXTUREFORMAT_RGB:throw"TEXTUREFORMAT_RGB format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA:default:return"rgba16float"}case t.TEXTURETYPE_UNSIGNED_SHORT_5_6_5:throw"TEXTURETYPE_UNSIGNED_SHORT_5_6_5 format not supported in WebGPU";case t.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV:switch(r){case t.TEXTUREFORMAT_RGBA:return"rg11b10ufloat";case t.TEXTUREFORMAT_RGBA_INTEGER:throw"TEXTUREFORMAT_RGBA_INTEGER format not supported in WebGPU when type is TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV";default:return"rg11b10ufloat"}case t.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV:switch(r){case t.TEXTUREFORMAT_RGBA:return"rgb9e5ufloat";case t.TEXTUREFORMAT_RGBA_INTEGER:throw"TEXTUREFORMAT_RGBA_INTEGER format not supported in WebGPU when type is TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV";default:return"rgb9e5ufloat"}case t.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4:throw"TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4 format not supported in WebGPU";case t.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1:throw"TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1 format not supported in WebGPU";case t.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV:switch(r){case t.TEXTUREFORMAT_RGBA:return"rgb10a2unorm";case t.TEXTUREFORMAT_RGBA_INTEGER:return"rgb10a2uint";default:return"rgb10a2unorm"}}return s?"rgba8unorm-srgb":"rgba8unorm"}static GetNumChannelsFromWebGPUTextureFormat(e){switch(e){case"r8unorm":case"r8snorm":case"r8uint":case"r8sint":case"bc4-r-unorm":case"bc4-r-snorm":case"r16uint":case"r16sint":case"depth16unorm":case"r16float":case"r16unorm":case"r16snorm":case"r32uint":case"r32sint":case"r32float":case"depth32float":case"stencil8":case"depth24plus":case"eac-r11unorm":case"eac-r11snorm":return 1;case"rg8unorm":case"rg8snorm":case"rg8uint":case"rg8sint":case"depth32float-stencil8":case"bc5-rg-unorm":case"bc5-rg-snorm":case"rg16uint":case"rg16sint":case"rg16float":case"rg16unorm":case"rg16snorm":case"rg32uint":case"rg32sint":case"rg32float":case"depth24plus-stencil8":case"eac-rg11unorm":case"eac-rg11snorm":return 2;case"rgb9e5ufloat":case"rg11b10ufloat":case"bc6h-rgb-ufloat":case"bc6h-rgb-float":case"etc2-rgb8unorm":case"etc2-rgb8unorm-srgb":return 3;case"rgba8unorm":case"rgba8unorm-srgb":case"rgba8snorm":case"rgba8uint":case"rgba8sint":case"bgra8unorm":case"bgra8unorm-srgb":case"rgba16unorm":case"rgba16snorm":case"rgb10a2uint":case"rgb10a2unorm":case"bc7-rgba-unorm":case"bc7-rgba-unorm-srgb":case"bc3-rgba-unorm":case"bc3-rgba-unorm-srgb":case"bc2-rgba-unorm":case"bc2-rgba-unorm-srgb":case"bc1-rgba-unorm":case"bc1-rgba-unorm-srgb":case"rgba16uint":case"rgba16sint":case"rgba16float":case"rgba32uint":case"rgba32sint":case"rgba32float":case"etc2-rgb8a1unorm":case"etc2-rgb8a1unorm-srgb":case"etc2-rgba8unorm":case"etc2-rgba8unorm-srgb":case"astc-4x4-unorm":case"astc-4x4-unorm-srgb":case"astc-5x4-unorm":case"astc-5x4-unorm-srgb":case"astc-5x5-unorm":case"astc-5x5-unorm-srgb":case"astc-6x5-unorm":case"astc-6x5-unorm-srgb":case"astc-6x6-unorm":case"astc-6x6-unorm-srgb":case"astc-8x5-unorm":case"astc-8x5-unorm-srgb":case"astc-8x6-unorm":case"astc-8x6-unorm-srgb":case"astc-8x8-unorm":case"astc-8x8-unorm-srgb":case"astc-10x5-unorm":case"astc-10x5-unorm-srgb":case"astc-10x6-unorm":case"astc-10x6-unorm-srgb":case"astc-10x8-unorm":case"astc-10x8-unorm-srgb":case"astc-10x10-unorm":case"astc-10x10-unorm-srgb":case"astc-12x10-unorm":case"astc-12x10-unorm-srgb":case"astc-12x12-unorm":case"astc-12x12-unorm-srgb":return 4}throw`Unknown format ${e}!`}static HasStencilAspect(e){switch(e){case"stencil8":case"depth32float-stencil8":case"depth24plus-stencil8":return!0}return!1}static HasDepthAndStencilAspects(e){switch(e){case"depth32float-stencil8":case"depth24plus-stencil8":return!0}return!1}static GetDepthFormatOnly(e){switch(e){case"depth16unorm":return"depth16unorm";case"depth24plus":case"depth24plus-stencil8":return"depth24plus";case"depth32float":case"depth32float-stencil8":return"depth32float"}return e}static GetSample(e){return e>1?4:1}}class G{constructor(){this._gpuTimeInFrameId=-1,this.counter=new r}_addDuration(e,t){e<this._gpuTimeInFrameId||(this._gpuTimeInFrameId!==e?(this.counter._fetchResult(),this.counter.fetchNewFrame(),this.counter.addCount(t,!1),this._gpuTimeInFrameId=e):this.counter.addCount(t,!1))}}class N extends s{constructor(){super(...arguments),this.dbgShowShaderCode=!1,this.dbgSanityChecks=!0,this.dbgVerboseLogsNumFrames=10,this.dbgLogIfNotDrawWrapper=!0,this.dbgShowEmptyEnableEffectCalls=!0,this.dbgVerboseLogsForFirstFrames=!1,this._currentRenderPass=null,this._snapshotRenderingMode=t.SNAPSHOTRENDERING_STANDARD,this._timestampIndex=0,this._debugStackRenderPass=[]}get enableGPUTimingMeasurements(){return this._timestampQuery.enable}set enableGPUTimingMeasurements(e){this._timestampQuery.enable!==e&&(this.gpuTimeInFrameForMainPass=e?new G:void 0,this._timestampQuery.enable=e)}_currentPassIsMainPass(){return null===this._currentRenderTarget}_endCurrentRenderPass(){if(!this._currentRenderPass)return 0;if(0!==this._debugStackRenderPass.length)for(let e=0;e<this._debugStackRenderPass.length;++e)this._currentRenderPass.popDebugGroup();const e=this._currentPassIsMainPass()?2:1;return this._snapshotRendering.endRenderPass(this._currentRenderPass)||this.compatibilityMode||(this._bundleList.run(this._currentRenderPass),this._bundleList.reset()),this._currentRenderPass.end(),this._timestampQuery.endPass(this._timestampIndex,this._currentRenderTarget&&this._currentRenderTarget.gpuTimeInFrame?this._currentRenderTarget.gpuTimeInFrame:this.gpuTimeInFrameForMainPass),this._timestampIndex+=2,this.dbgVerboseLogsForFirstFrames&&(void 0===this._count&&(this._count=0),(!this._count||this._count<this.dbgVerboseLogsNumFrames)&&n.Log("frame #"+this._count+" - "+(2===e?"main":"render target")+" end pass"+(1===e?" - internalTexture.uniqueId="+this._currentRenderTarget?.texture?.uniqueId:""))),this._debugPopGroup?.(0),this._currentRenderPass=null,e}_generateMipmaps(e,t){t=t??this._renderEncoder;const r=e._hardwareTexture;if(!r)return;t===this._renderEncoder&&this._endCurrentRenderPass();const s=e._hardwareTexture.format,i=O.ComputeNumMipmapLevels(e.width,e.height);this.dbgVerboseLogsForFirstFrames&&(void 0===this._count&&(this._count=0),(!this._count||this._count<this.dbgVerboseLogsNumFrames)&&n.Log("frame #"+this._count+" - generate mipmaps - width="+e.width+", height="+e.height+", isCube="+e.isCube+", command encoder="+(t===this._renderEncoder?"render":"copy"))),e.isCube?this._textureHelper.generateCubeMipmaps(r,s,i,t):this._textureHelper.generateMipmaps(r,s,i,0,e.is3D,t)}}var W,$,V,H,X,k,Y,q,Q,z,K,j,J,Z,ee,te,re,se,ne,ie,ae,oe,ue,ce,he,le,de,pe,_e,ge,fe,me,be,xe,Te,ye,Ee,Se,Re,Ae,Ce;!function(e){e.LowPower="low-power",e.HighPerformance="high-performance"}(W||(W={})),function(e){e.DepthClipControl="depth-clip-control",e.Depth32FloatStencil8="depth32float-stencil8",e.TextureCompressionBC="texture-compression-bc",e.TextureCompressionBCSliced3D="texture-compression-bc-sliced-3d",e.TextureCompressionETC2="texture-compression-etc2",e.TextureCompressionASTC="texture-compression-astc",e.TextureCompressionASTCSliced3D="texture-compression-astc-sliced-3d",e.TimestampQuery="timestamp-query",e.IndirectFirstInstance="indirect-first-instance",e.ShaderF16="shader-f16",e.RG11B10UFloatRenderable="rg11b10ufloat-renderable",e.BGRA8UnormStorage="bgra8unorm-storage",e.Float32Filterable="float32-filterable",e.Float32Blendable="float32-blendable",e.ClipDistances="clip-distances",e.DualSourceBlending="dual-source-blending"}($||($={})),function(e){e.Unmapped="unmapped",e.Pending="pending",e.Mapped="mapped"}(V||(V={})),function(e){e[e.MapRead=1]="MapRead",e[e.MapWrite=2]="MapWrite",e[e.CopySrc=4]="CopySrc",e[e.CopyDst=8]="CopyDst",e[e.Index=16]="Index",e[e.Vertex=32]="Vertex",e[e.Uniform=64]="Uniform",e[e.Storage=128]="Storage",e[e.Indirect=256]="Indirect",e[e.QueryResolve=512]="QueryResolve"}(H||(H={})),function(e){e[e.Read=1]="Read",e[e.Write=2]="Write"}(X||(X={})),function(e){e.E1d="1d",e.E2d="2d",e.E3d="3d"}(k||(k={})),function(e){e[e.CopySrc=1]="CopySrc",e[e.CopyDst=2]="CopyDst",e[e.TextureBinding=4]="TextureBinding",e[e.StorageBinding=8]="StorageBinding",e[e.RenderAttachment=16]="RenderAttachment"}(Y||(Y={})),function(e){e.E1d="1d",e.E2d="2d",e.E2dArray="2d-array",e.Cube="cube",e.CubeArray="cube-array",e.E3d="3d"}(q||(q={})),function(e){e.All="all",e.StencilOnly="stencil-only",e.DepthOnly="depth-only"}(Q||(Q={})),function(e){e.R8Unorm="r8unorm",e.R8Snorm="r8snorm",e.R8Uint="r8uint",e.R8Sint="r8sint",e.R16Uint="r16uint",e.R16Sint="r16sint",e.R16Float="r16float",e.RG8Unorm="rg8unorm",e.RG8Snorm="rg8snorm",e.RG8Uint="rg8uint",e.RG8Sint="rg8sint",e.R16Unorm="r16unorm",e.R16Snorm="r16snorm",e.RG16Unorm="rg16unorm",e.RG16Snorm="rg16snorm",e.RGBA16Unorm="rgba16unorm",e.RGBA16Snorm="rgba16snorm",e.R32Uint="r32uint",e.R32Sint="r32sint",e.R32Float="r32float",e.RG16Uint="rg16uint",e.RG16Sint="rg16sint",e.RG16Float="rg16float",e.RGBA8Unorm="rgba8unorm",e.RGBA8UnormSRGB="rgba8unorm-srgb",e.RGBA8Snorm="rgba8snorm",e.RGBA8Uint="rgba8uint",e.RGBA8Sint="rgba8sint",e.BGRA8Unorm="bgra8unorm",e.BGRA8UnormSRGB="bgra8unorm-srgb",e.RGB9E5UFloat="rgb9e5ufloat",e.RGB10A2UINT="rgb10a2uint",e.RGB10A2Unorm="rgb10a2unorm",e.RG11B10UFloat="rg11b10ufloat",e.RG32Uint="rg32uint",e.RG32Sint="rg32sint",e.RG32Float="rg32float",e.RGBA16Uint="rgba16uint",e.RGBA16Sint="rgba16sint",e.RGBA16Float="rgba16float",e.RGBA32Uint="rgba32uint",e.RGBA32Sint="rgba32sint",e.RGBA32Float="rgba32float",e.Stencil8="stencil8",e.Depth16Unorm="depth16unorm",e.Depth24Plus="depth24plus",e.Depth24PlusStencil8="depth24plus-stencil8",e.Depth32Float="depth32float",e.BC1RGBAUnorm="bc1-rgba-unorm",e.BC1RGBAUnormSRGB="bc1-rgba-unorm-srgb",e.BC2RGBAUnorm="bc2-rgba-unorm",e.BC2RGBAUnormSRGB="bc2-rgba-unorm-srgb",e.BC3RGBAUnorm="bc3-rgba-unorm",e.BC3RGBAUnormSRGB="bc3-rgba-unorm-srgb",e.BC4RUnorm="bc4-r-unorm",e.BC4RSnorm="bc4-r-snorm",e.BC5RGUnorm="bc5-rg-unorm",e.BC5RGSnorm="bc5-rg-snorm",e.BC6HRGBUFloat="bc6h-rgb-ufloat",e.BC6HRGBFloat="bc6h-rgb-float",e.BC7RGBAUnorm="bc7-rgba-unorm",e.BC7RGBAUnormSRGB="bc7-rgba-unorm-srgb",e.ETC2RGB8Unorm="etc2-rgb8unorm",e.ETC2RGB8UnormSRGB="etc2-rgb8unorm-srgb",e.ETC2RGB8A1Unorm="etc2-rgb8a1unorm",e.ETC2RGB8A1UnormSRGB="etc2-rgb8a1unorm-srgb",e.ETC2RGBA8Unorm="etc2-rgba8unorm",e.ETC2RGBA8UnormSRGB="etc2-rgba8unorm-srgb",e.EACR11Unorm="eac-r11unorm",e.EACR11Snorm="eac-r11snorm",e.EACRG11Unorm="eac-rg11unorm",e.EACRG11Snorm="eac-rg11snorm",e.ASTC4x4Unorm="astc-4x4-unorm",e.ASTC4x4UnormSRGB="astc-4x4-unorm-srgb",e.ASTC5x4Unorm="astc-5x4-unorm",e.ASTC5x4UnormSRGB="astc-5x4-unorm-srgb",e.ASTC5x5Unorm="astc-5x5-unorm",e.ASTC5x5UnormSRGB="astc-5x5-unorm-srgb",e.ASTC6x5Unorm="astc-6x5-unorm",e.ASTC6x5UnormSRGB="astc-6x5-unorm-srgb",e.ASTC6x6Unorm="astc-6x6-unorm",e.ASTC6x6UnormSRGB="astc-6x6-unorm-srgb",e.ASTC8x5Unorm="astc-8x5-unorm",e.ASTC8x5UnormSRGB="astc-8x5-unorm-srgb",e.ASTC8x6Unorm="astc-8x6-unorm",e.ASTC8x6UnormSRGB="astc-8x6-unorm-srgb",e.ASTC8x8Unorm="astc-8x8-unorm",e.ASTC8x8UnormSRGB="astc-8x8-unorm-srgb",e.ASTC10x5Unorm="astc-10x5-unorm",e.ASTC10x5UnormSRGB="astc-10x5-unorm-srgb",e.ASTC10x6Unorm="astc-10x6-unorm",e.ASTC10x6UnormSRGB="astc-10x6-unorm-srgb",e.ASTC10x8Unorm="astc-10x8-unorm",e.ASTC10x8UnormSRGB="astc-10x8-unorm-srgb",e.ASTC10x10Unorm="astc-10x10-unorm",e.ASTC10x10UnormSRGB="astc-10x10-unorm-srgb",e.ASTC12x10Unorm="astc-12x10-unorm",e.ASTC12x10UnormSRGB="astc-12x10-unorm-srgb",e.ASTC12x12Unorm="astc-12x12-unorm",e.ASTC12x12UnormSRGB="astc-12x12-unorm-srgb",e.Depth32FloatStencil8="depth32float-stencil8"}(z||(z={})),function(e){e.ClampToEdge="clamp-to-edge",e.Repeat="repeat",e.MirrorRepeat="mirror-repeat"}(K||(K={})),function(e){e.Nearest="nearest",e.Linear="linear"}(j||(j={})),function(e){e.Nearest="nearest",e.Linear="linear"}(J||(J={})),function(e){e.Never="never",e.Less="less",e.Equal="equal",e.LessEqual="less-equal",e.Greater="greater",e.NotEqual="not-equal",e.GreaterEqual="greater-equal",e.Always="always"}(Z||(Z={})),function(e){e[e.Vertex=1]="Vertex",e[e.Fragment=2]="Fragment",e[e.Compute=4]="Compute"}(ee||(ee={})),function(e){e.Uniform="uniform",e.Storage="storage",e.ReadOnlyStorage="read-only-storage"}(te||(te={})),function(e){e.Filtering="filtering",e.NonFiltering="non-filtering",e.Comparison="comparison"}(re||(re={})),function(e){e.Float="float",e.UnfilterableFloat="unfilterable-float",e.Depth="depth",e.Sint="sint",e.Uint="uint"}(se||(se={})),function(e){e.WriteOnly="write-only",e.ReadOnly="read-only",e.ReadWrite="read-write"}(ne||(ne={})),function(e){e.Error="error",e.Warning="warning",e.Info="info"}(ie||(ie={})),function(e){e.Validation="validation",e.Internal="internal"}(ae||(ae={})),function(e){e.Auto="auto"}(oe||(oe={})),function(e){e.PointList="point-list",e.LineList="line-list",e.LineStrip="line-strip",e.TriangleList="triangle-list",e.TriangleStrip="triangle-strip"}(ue||(ue={})),function(e){e.CCW="ccw",e.CW="cw"}(ce||(ce={})),function(e){e.None="none",e.Front="front",e.Back="back"}(he||(he={})),function(e){e[e.Red=1]="Red",e[e.Green=2]="Green",e[e.Blue=4]="Blue",e[e.Alpha=8]="Alpha",e[e.All=15]="All"}(le||(le={})),function(e){e.Zero="zero",e.One="one",e.Src="src",e.OneMinusSrc="one-minus-src",e.SrcAlpha="src-alpha",e.OneMinusSrcAlpha="one-minus-src-alpha",e.Dst="dst",e.OneMinusDst="one-minus-dst",e.DstAlpha="dst-alpha",e.OneMinusDstAlpha="one-minus-dst-alpha",e.SrcAlphaSaturated="src-alpha-saturated",e.Constant="constant",e.OneMinusConstant="one-minus-constant",e.Src1="src1",e.OneMinusSrc1="one-minus-src1",e.Src1Alpha="src1-alpha",e.OneMinusSrc1Alpha="one-minus-src1-alpha"}(de||(de={})),function(e){e.Add="add",e.Subtract="subtract",e.ReverseSubtract="reverse-subtract",e.Min="min",e.Max="max"}(pe||(pe={})),function(e){e.Keep="keep",e.Zero="zero",e.Replace="replace",e.Invert="invert",e.IncrementClamp="increment-clamp",e.DecrementClamp="decrement-clamp",e.IncrementWrap="increment-wrap",e.DecrementWrap="decrement-wrap"}(_e||(_e={})),function(e){e.Uint16="uint16",e.Uint32="uint32"}(ge||(ge={})),function(e){e.Uint8x2="uint8x2",e.Uint8x4="uint8x4",e.Sint8x2="sint8x2",e.Sint8x4="sint8x4",e.Unorm8x2="unorm8x2",e.Unorm8x4="unorm8x4",e.Snorm8x2="snorm8x2",e.Snorm8x4="snorm8x4",e.Uint16x2="uint16x2",e.Uint16x4="uint16x4",e.Sint16x2="sint16x2",e.Sint16x4="sint16x4",e.Unorm16x2="unorm16x2",e.Unorm16x4="unorm16x4",e.Snorm16x2="snorm16x2",e.Snorm16x4="snorm16x4",e.Float16x2="float16x2",e.Float16x4="float16x4",e.Float32="float32",e.Float32x2="float32x2",e.Float32x3="float32x3",e.Float32x4="float32x4",e.Uint32="uint32",e.Uint32x2="uint32x2",e.Uint32x3="uint32x3",e.Uint32x4="uint32x4",e.Sint32="sint32",e.Sint32x2="sint32x2",e.Sint32x3="sint32x3",e.Sint32x4="sint32x4",e.UNORM10x10x10x2="unorm10-10-10-2"}(fe||(fe={})),function(e){e.Vertex="vertex",e.Instance="instance"}(me||(me={})),function(e){e.Beginning="beginning",e.End="end"}(be||(be={})),function(e){e.Beginning="beginning",e.End="end"}(xe||(xe={})),function(e){e.Load="load",e.Clear="clear"}(Te||(Te={})),function(e){e.Store="store",e.Discard="discard"}(ye||(ye={})),function(e){e.Occlusion="occlusion",e.Timestamp="timestamp"}(Ee||(Ee={})),function(e){e.Opaque="opaque",e.Premultiplied="premultiplied"}(Se||(Se={})),function(e){e.Standard="standard",e.Extended="extended"}(Re||(Re={})),function(e){e.Unknown="unknown",e.Destroyed="destroyed"}(Ae||(Ae={})),function(e){e.Validation="validation",e.OutOfMemory="out-of-memory",e.Internal="internal"}(Ce||(Ce={}));class Ie{constructor(){this.shaderLanguage=0}_addUniformToLeftOverUBO(e,t,r){let s=0;[e,t,s]=this._getArraySize(e,t,r);for(let t=0;t<this._webgpuProcessingContext.leftOverUniforms.length;t++)if(this._webgpuProcessingContext.leftOverUniforms[t].name===e)return;this._webgpuProcessingContext.leftOverUniforms.push({name:e,type:t,length:s})}_buildLeftOverUBO(){if(!this._webgpuProcessingContext.leftOverUniforms.length)return"";const e=Ie.LeftOvertUBOName;let t=this._webgpuProcessingContext.availableBuffers[e];return t||(t={binding:this._webgpuProcessingContext.getNextFreeUBOBinding()},this._webgpuProcessingContext.availableBuffers[e]=t,this._addBufferBindingDescription(e,t,"uniform",!0),this._addBufferBindingDescription(e,t,"uniform",!1)),this._generateLeftOverUBOCode(e,t)}_collectBindingNames(){for(let e=0;e<this._webgpuProcessingContext.bindGroupLayoutEntries.length;e++){const t=this._webgpuProcessingContext.bindGroupLayoutEntries[e];if(void 0!==t)for(let r=0;r<t.length;r++){const t=this._webgpuProcessingContext.bindGroupLayoutEntries[e][r],s=this._webgpuProcessingContext.bindGroupLayoutEntryInfo[e][t.binding].name,n=this._webgpuProcessingContext.bindGroupLayoutEntryInfo[e][t.binding].nameInArrayOfTexture;t&&(t.texture||t.externalTexture||t.storageTexture?this._webgpuProcessingContext.textureNames.push(n):t.sampler?this._webgpuProcessingContext.samplerNames.push(s):t.buffer&&this._webgpuProcessingContext.bufferNames.push(s))}else this._webgpuProcessingContext.bindGroupLayoutEntries[e]=[]}}_preCreateBindGroupEntries(){const e=this._webgpuProcessingContext.bindGroupEntries;for(let t=0;t<this._webgpuProcessingContext.bindGroupLayoutEntries.length;t++){const r=this._webgpuProcessingContext.bindGroupLayoutEntries[t],s=[];for(let e=0;e<r.length;e++){const r=this._webgpuProcessingContext.bindGroupLayoutEntries[t][e];r.sampler||r.texture||r.storageTexture||r.externalTexture?s.push({binding:r.binding,resource:void 0}):r.buffer&&s.push({binding:r.binding,resource:{buffer:void 0,offset:0,size:0}})}e[t]=s}}_addTextureBindingDescription(e,t,r,s,n,i){let{groupIndex:a,bindingIndex:o}=t.textures[r];if(this._webgpuProcessingContext.bindGroupLayoutEntries[a]||(this._webgpuProcessingContext.bindGroupLayoutEntries[a]=[],this._webgpuProcessingContext.bindGroupLayoutEntryInfo[a]=[]),!this._webgpuProcessingContext.bindGroupLayoutEntryInfo[a][o]){let i;i=null===s?this._webgpuProcessingContext.bindGroupLayoutEntries[a].push({binding:o,visibility:0,externalTexture:{}}):n?this._webgpuProcessingContext.bindGroupLayoutEntries[a].push({binding:o,visibility:0,storageTexture:{access:"write-only",format:n,viewDimension:s}}):this._webgpuProcessingContext.bindGroupLayoutEntries[a].push({binding:o,visibility:0,texture:{sampleType:t.sampleType,viewDimension:s,multisampled:!1}});const u=t.isTextureArray?e+r:e;this._webgpuProcessingContext.bindGroupLayoutEntryInfo[a][o]={name:e,index:i-1,nameInArrayOfTexture:u}}o=this._webgpuProcessingContext.bindGroupLayoutEntryInfo[a][o].index,this._webgpuProcessingContext.bindGroupLayoutEntries[a][o].visibility|=i?1:2}_addSamplerBindingDescription(e,t,r){let{groupIndex:s,bindingIndex:n}=t.binding;if(this._webgpuProcessingContext.bindGroupLayoutEntries[s]||(this._webgpuProcessingContext.bindGroupLayoutEntries[s]=[],this._webgpuProcessingContext.bindGroupLayoutEntryInfo[s]=[]),!this._webgpuProcessingContext.bindGroupLayoutEntryInfo[s][n]){const r=this._webgpuProcessingContext.bindGroupLayoutEntries[s].push({binding:n,visibility:0,sampler:{type:t.type}});this._webgpuProcessingContext.bindGroupLayoutEntryInfo[s][n]={name:e,index:r-1}}n=this._webgpuProcessingContext.bindGroupLayoutEntryInfo[s][n].index,this._webgpuProcessingContext.bindGroupLayoutEntries[s][n].visibility|=r?1:2}_addBufferBindingDescription(e,t,r,s){let{groupIndex:n,bindingIndex:i}=t.binding;if(this._webgpuProcessingContext.bindGroupLayoutEntries[n]||(this._webgpuProcessingContext.bindGroupLayoutEntries[n]=[],this._webgpuProcessingContext.bindGroupLayoutEntryInfo[n]=[]),!this._webgpuProcessingContext.bindGroupLayoutEntryInfo[n][i]){const t=this._webgpuProcessingContext.bindGroupLayoutEntries[n].push({binding:i,visibility:0,buffer:{type:r}});this._webgpuProcessingContext.bindGroupLayoutEntryInfo[n][i]={name:e,index:t-1}}i=this._webgpuProcessingContext.bindGroupLayoutEntryInfo[n][i].index,this._webgpuProcessingContext.bindGroupLayoutEntries[n][i].visibility|=s?1:2}}Ie.LeftOvertUBOName="LeftOver",Ie.InternalsUBOName="Internals",Ie.UniformSizes={bool:1,int:1,float:1,vec2:2,ivec2:2,uvec2:2,vec3:3,ivec3:3,uvec3:3,vec4:4,ivec4:4,uvec4:4,mat2:4,mat3:12,mat4:16,i32:1,u32:1,f32:1,mat2x2:4,mat3x3:12,mat4x4:16,mat2x2f:4,mat3x3f:12,mat4x4f:16,vec2i:2,vec3i:3,vec4i:4,vec2u:2,vec3u:3,vec4u:4,vec2f:2,vec3f:3,vec4f:4,vec2h:1,vec3h:2,vec4h:2},Ie._SamplerFunctionByWebGLSamplerType={sampler2D:"sampler2D",sampler2DArray:"sampler2DArray",sampler2DShadow:"sampler2DShadow",sampler2DArrayShadow:"sampler2DArrayShadow",samplerCube:"samplerCube",sampler3D:"sampler3D"},Ie._TextureTypeByWebGLSamplerType={sampler2D:"texture2D",sampler2DArray:"texture2DArray",sampler2DShadow:"texture2D",sampler2DArrayShadow:"texture2DArray",samplerCube:"textureCube",samplerCubeArray:"textureCubeArray",sampler3D:"texture3D"},Ie._GpuTextureViewDimensionByWebGPUTextureType={textureCube:"cube",textureCubeArray:"cube-array",texture2D:"2d",texture2DArray:"2d-array",texture3D:"3d"},Ie._SamplerTypeByWebGLSamplerType={sampler2DShadow:"samplerShadow",sampler2DArrayShadow:"samplerShadow"},Ie._IsComparisonSamplerByWebGPUSamplerType={samplerShadow:!0,samplerArrayShadow:!0,sampler:!1};class ve{get isAsync(){return!1}get isReady(){return!!this.stages}constructor(e,t){this.bindGroupLayouts={},this._name="unnamed",this.shaderProcessingContext=e,this._leftOverUniformsByName={},this.engine=t,this.vertexBufferKindToType={}}_handlesSpectorRebuildCallback(){}_fillEffectInformation(e,t,r,s,n,i,a,o){const u=this.engine;u._doNotHandleContextLost&&(e._fragmentSourceCode="",e._vertexSourceCode="");const c=this.shaderProcessingContext.availableTextures;let h;for(h=0;h<n.length;h++){const e=n[h],t=c[n[h]];null==t||null==t?(n.splice(h,1),h--):i[e]=h}for(const e of u.getAttributes(this,a))o.push(e);this.buildUniformLayout();const l=[],d=[];for(h=0;h<a.length;h++){const e=o[h];e>=0&&(l.push(a[h]),d.push(e))}this.shaderProcessingContext.attributeNamesFromEffect=l,this.shaderProcessingContext.attributeLocationsFromEffect=d}buildUniformLayout(){if(this.shaderProcessingContext.leftOverUniforms.length){this.uniformBuffer?.dispose(),this.uniformBuffer=new i(this.engine,void 0,void 0,"leftOver-"+this._name);for(const e of this.shaderProcessingContext.leftOverUniforms){const t=e.type.replace(/^(.*?)(<.*>)?$/,"$1"),r=Ie.UniformSizes[t];this.uniformBuffer.addUniform(e.name,r,e.length),this._leftOverUniformsByName[e.name]=e.type}this.uniformBuffer.create()}}setEngine(e){this.engine=e}dispose(){this.uniformBuffer&&this.uniformBuffer.dispose()}setInt(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateInt(e,t)}setInt2(e,t,r){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateInt2(e,t,r)}setInt3(e,t,r,s){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateInt3(e,t,r,s)}setInt4(e,t,r,s,n){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateInt4(e,t,r,s,n)}setIntArray(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateIntArray(e,t)}setIntArray2(e,t){this.setIntArray(e,t)}setIntArray3(e,t){this.setIntArray(e,t)}setIntArray4(e,t){this.setIntArray(e,t)}setUInt(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateUInt(e,t)}setUInt2(e,t,r){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateUInt2(e,t,r)}setUInt3(e,t,r,s){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateUInt3(e,t,r,s)}setUInt4(e,t,r,s,n){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateUInt4(e,t,r,s,n)}setUIntArray(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateUIntArray(e,t)}setUIntArray2(e,t){this.setUIntArray(e,t)}setUIntArray3(e,t){this.setUIntArray(e,t)}setUIntArray4(e,t){this.setUIntArray(e,t)}setArray(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateArray(e,t)}setArray2(e,t){this.setArray(e,t)}setArray3(e,t){this.setArray(e,t)}setArray4(e,t){this.setArray(e,t)}setMatrices(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateMatrices(e,t)}setMatrix(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateMatrix(e,t)}setMatrix3x3(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateMatrix3x3(e,t)}setMatrix2x2(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateMatrix2x2(e,t)}setFloat(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateFloat(e,t)}setVector2(e,t){this.setFloat2(e,t.x,t.y)}setFloat2(e,t,r){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateFloat2(e,t,r)}setVector3(e,t){this.setFloat3(e,t.x,t.y,t.z)}setFloat3(e,t,r,s){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateFloat3(e,t,r,s)}setVector4(e,t){this.setFloat4(e,t.x,t.y,t.z,t.w)}setQuaternion(e,t){this.setFloat4(e,t.x,t.y,t.z,t.w)}setFloat4(e,t,r,s,n){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateFloat4(e,t,r,s,n)}setColor3(e,t){this.setFloat3(e,t.r,t.g,t.b)}setColor4(e,t,r){this.setFloat4(e,t.r,t.g,t.b,r)}setDirectColor4(e,t){this.setFloat4(e,t.r,t.g,t.b,t.a)}_getVertexShaderCode(){return this.sources?.vertex}_getFragmentShaderCode(){return this.sources?.fragment}}const Be={mat2:2,mat3:3,mat4:4,mat2x2:2,mat3x3:3,mat4x4:4};class we{static get KnownUBOs(){return we._SimplifiedKnownBindings?we._SimplifiedKnownUBOs:we._KnownUBOs}constructor(e,t=!1){this.vertexBufferKindToNumberOfComponents={},this.shaderLanguage=e,this._attributeNextLocation=0,this._varyingNextLocation=0,this.freeGroupIndex=0,this.freeBindingIndex=0,this.availableVaryings={},this.availableAttributes={},this.availableBuffers={},this.availableTextures={},this.availableSamplers={},this.orderedAttributes=[],this.bindGroupLayoutEntries=[],this.bindGroupLayoutEntryInfo=[],this.bindGroupEntries=[],this.bufferNames=[],this.textureNames=[],this.samplerNames=[],this.leftOverUniforms=[],t||this._findStartingGroupBinding()}_findStartingGroupBinding(){const e=we.KnownUBOs,t=[];for(const r in e){const s=e[r].binding;-1!==s.groupIndex&&(void 0===t[s.groupIndex]?t[s.groupIndex]=s.bindingIndex:t[s.groupIndex]=Math.max(t[s.groupIndex],s.bindingIndex))}this.freeGroupIndex=t.length-1,0===this.freeGroupIndex?(this.freeGroupIndex++,this.freeBindingIndex=0):this.freeBindingIndex=t[t.length-1]+1}getAttributeNextLocation(e,t=0){const r=this._attributeNextLocation;return this._attributeNextLocation+=(Be[e]??1)*(t||1),r}getVaryingNextLocation(e,t=0){const r=this._varyingNextLocation;return this._varyingNextLocation+=(Be[e]??1)*(t||1),r}getNextFreeUBOBinding(){return this._getNextFreeBinding(1)}_getNextFreeBinding(e){if(this.freeBindingIndex>65536-e&&(this.freeGroupIndex++,this.freeBindingIndex=0),4===this.freeGroupIndex)throw"Too many textures or UBOs have been declared and it is not supported in WebGPU.";const t={groupIndex:this.freeGroupIndex,bindingIndex:this.freeBindingIndex};return this.freeBindingIndex+=e,t}}function Le(e,t,r,s){let n=s,i=0,a="";for(;n<r.length;){const s=r.charAt(n);if(a)s===a?'"'===a||"'"===a?"\\"!==r.charAt(n-1)&&(a=""):a="":"*/"===a&&"*"===s&&n+1<r.length&&("/"===r.charAt(n+1)&&(a=""),""===a&&n++);else switch(s){case e:i++;break;case t:i--;break;case'"':case"'":case"`":a=s;break;case"/":if(n+1<r.length){const e=r.charAt(n+1);"/"===e?a="\n":"*"===e&&(a="*/")}}if(n++,0===i)break}return 0===i?n-1:-1}function Pe(e,t){for(;t<e.length;){const r=e[t];if(" "!==r&&"\n"!==r&&"\r"!==r&&"\t"!==r&&"\n"!==r&&" "!==r)break;t++}return t}function Fe(e){const t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||95==t}function De(e){let t=0,r="",s=!1;const n=[];for(;t<e.length;){const i=e.charAt(t);if(r)i===r?'"'===r||"'"===r?("\\"!==e.charAt(t-1)&&(r=""),n.push(i)):(r="",s=!1):"*/"===r&&"*"===i&&t+1<e.length?("/"===e.charAt(t+1)&&(r=""),""===r&&(s=!1,t++)):s||n.push(i);else{switch(i){case'"':case"'":case"`":r=i;break;case"/":if(t+1<e.length){const n=e.charAt(t+1);"/"===n?(r="\n",s=!0):"*"===n&&(r="*/",s=!0)}}s||n.push(i)}t++}return n.join("")}function Me(e,t,r,s){for(;t>=0&&e.charAt(t)!==r&&e.charAt(t)!==s;)t--;return t}function Ue(e,t,r,s){let n=e.indexOf(t);if(n<0)return e;if(r){for(;n++<e.length&&"{"!=e.charAt(n););if(n<e.length){const t=e.substring(0,n+1),s=e.substring(n+1);e=t+r+s}}if(s){const t=e.lastIndexOf("}");e=e.substring(0,t),e+=s+"\n}"}return e}we._SimplifiedKnownBindings=!0,we._SimplifiedKnownUBOs={Scene:{binding:{groupIndex:0,bindingIndex:0}},Light0:{binding:{groupIndex:-1,bindingIndex:-1}},Light1:{binding:{groupIndex:-1,bindingIndex:-1}},Light2:{binding:{groupIndex:-1,bindingIndex:-1}},Light3:{binding:{groupIndex:-1,bindingIndex:-1}},Light4:{binding:{groupIndex:-1,bindingIndex:-1}},Light5:{binding:{groupIndex:-1,bindingIndex:-1}},Light6:{binding:{groupIndex:-1,bindingIndex:-1}},Light7:{binding:{groupIndex:-1,bindingIndex:-1}},Light8:{binding:{groupIndex:-1,bindingIndex:-1}},Light9:{binding:{groupIndex:-1,bindingIndex:-1}},Light10:{binding:{groupIndex:-1,bindingIndex:-1}},Light11:{binding:{groupIndex:-1,bindingIndex:-1}},Light12:{binding:{groupIndex:-1,bindingIndex:-1}},Light13:{binding:{groupIndex:-1,bindingIndex:-1}},Light14:{binding:{groupIndex:-1,bindingIndex:-1}},Light15:{binding:{groupIndex:-1,bindingIndex:-1}},Light16:{binding:{groupIndex:-1,bindingIndex:-1}},Light17:{binding:{groupIndex:-1,bindingIndex:-1}},Light18:{binding:{groupIndex:-1,bindingIndex:-1}},Light19:{binding:{groupIndex:-1,bindingIndex:-1}},Light20:{binding:{groupIndex:-1,bindingIndex:-1}},Light21:{binding:{groupIndex:-1,bindingIndex:-1}},Light22:{binding:{groupIndex:-1,bindingIndex:-1}},Light23:{binding:{groupIndex:-1,bindingIndex:-1}},Light24:{binding:{groupIndex:-1,bindingIndex:-1}},Light25:{binding:{groupIndex:-1,bindingIndex:-1}},Light26:{binding:{groupIndex:-1,bindingIndex:-1}},Light27:{binding:{groupIndex:-1,bindingIndex:-1}},Light28:{binding:{groupIndex:-1,bindingIndex:-1}},Light29:{binding:{groupIndex:-1,bindingIndex:-1}},Light30:{binding:{groupIndex:-1,bindingIndex:-1}},Light31:{binding:{groupIndex:-1,bindingIndex:-1}},Material:{binding:{groupIndex:-1,bindingIndex:-1}},Mesh:{binding:{groupIndex:-1,bindingIndex:-1}},Internals:{binding:{groupIndex:-1,bindingIndex:-1}}},we._KnownUBOs={Scene:{binding:{groupIndex:0,bindingIndex:0}},Light0:{binding:{groupIndex:1,bindingIndex:0}},Light1:{binding:{groupIndex:1,bindingIndex:1}},Light2:{binding:{groupIndex:1,bindingIndex:2}},Light3:{binding:{groupIndex:1,bindingIndex:3}},Light4:{binding:{groupIndex:1,bindingIndex:4}},Light5:{binding:{groupIndex:1,bindingIndex:5}},Light6:{binding:{groupIndex:1,bindingIndex:6}},Light7:{binding:{groupIndex:1,bindingIndex:7}},Light8:{binding:{groupIndex:1,bindingIndex:8}},Light9:{binding:{groupIndex:1,bindingIndex:9}},Light10:{binding:{groupIndex:1,bindingIndex:10}},Light11:{binding:{groupIndex:1,bindingIndex:11}},Light12:{binding:{groupIndex:1,bindingIndex:12}},Light13:{binding:{groupIndex:1,bindingIndex:13}},Light14:{binding:{groupIndex:1,bindingIndex:14}},Light15:{binding:{groupIndex:1,bindingIndex:15}},Light16:{binding:{groupIndex:1,bindingIndex:16}},Light17:{binding:{groupIndex:1,bindingIndex:17}},Light18:{binding:{groupIndex:1,bindingIndex:18}},Light19:{binding:{groupIndex:1,bindingIndex:19}},Light20:{binding:{groupIndex:1,bindingIndex:20}},Light21:{binding:{groupIndex:1,bindingIndex:21}},Light22:{binding:{groupIndex:1,bindingIndex:22}},Light23:{binding:{groupIndex:1,bindingIndex:23}},Light24:{binding:{groupIndex:1,bindingIndex:24}},Light25:{binding:{groupIndex:1,bindingIndex:25}},Light26:{binding:{groupIndex:1,bindingIndex:26}},Light27:{binding:{groupIndex:1,bindingIndex:27}},Light28:{binding:{groupIndex:1,bindingIndex:28}},Light29:{binding:{groupIndex:1,bindingIndex:29}},Light30:{binding:{groupIndex:1,bindingIndex:30}},Light31:{binding:{groupIndex:1,bindingIndex:31}},Material:{binding:{groupIndex:2,bindingIndex:0}},Mesh:{binding:{groupIndex:2,bindingIndex:1}},Internals:{binding:{groupIndex:2,bindingIndex:2}}};class Oe extends Ie{constructor(){super(...arguments),this._missingVaryings=[],this._textureArrayProcessing=[],this._vertexIsGLES3=!1,this._fragmentIsGLES3=!1,this.shaderLanguage=0,this.parseGLES3=!0}_getArraySize(e,t,r){let s=0;const n=e.indexOf("["),i=e.indexOf("]");if(n>0&&i>0){const t=e.substring(n+1,i);s=+t,isNaN(s)&&(s=+r[t.trim()]),e=e.substring(0,n)}return[e,t,s]}initializeShaders(e){this._webgpuProcessingContext=e,this._missingVaryings.length=0,this._textureArrayProcessing.length=0,this.attributeKeywordName=void 0,this.varyingVertexKeywordName=void 0,this.varyingFragmentKeywordName=void 0}preProcessShaderCode(e,t){const r=`// Internals UBO\nuniform ${Ie.InternalsUBOName} {\nfloat yFactor_;\nfloat textureOutputHeight_;\n};\n`,s=-1!==e.indexOf("// Internals UBO");return t?(this._fragmentIsGLES3=-1!==e.indexOf("#version 3"),this._fragmentIsGLES3&&(this.varyingFragmentKeywordName="in"),s?e:r+"##INJECTCODE##\n"+e):(this._vertexIsGLES3=-1!==e.indexOf("#version 3"),this._vertexIsGLES3&&(this.attributeKeywordName="in",this.varyingVertexKeywordName="out"),s?e:r+e)}varyingCheck(e,t){return(t&&this._fragmentIsGLES3?/(flat\s)?\s*\bin\b/:!t&&this._vertexIsGLES3?/(flat\s)?\s*\bout\b/:/(flat\s)?\s*\bvarying\b/).test(e)}varyingProcessor(e,t,r){this._preProcessors=r;const s=(t&&this._fragmentIsGLES3?/\s*(flat)?\s*in\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s+(\S+)\s*;/gm:!t&&this._vertexIsGLES3?/\s*(flat)?\s*out\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s+(\S+)\s*;/gm:/\s*(flat)?\s*varying\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s+(\S+)\s*;/gm).exec(e);if(null!==s){const i=s[1]??"",a=s[2],o=s[3];let u;t?(u=this._webgpuProcessingContext.availableVaryings[o],this._missingVaryings[u]="",void 0===u&&n.Warn(`Invalid fragment shader: The varying named "${o}" is not declared in the vertex shader! This declaration will be ignored.`)):(u=this._webgpuProcessingContext.getVaryingNextLocation(a,this._getArraySize(o,a,r)[2]),this._webgpuProcessingContext.availableVaryings[o]=u,this._missingVaryings[u]=`layout(location = ${u}) ${i} in ${a} ${o};`),e=e.replace(s[0],void 0===u?"":`layout(location = ${u}) ${i} ${t?"in":"out"} ${a} ${o};`)}return e}attributeProcessor(e,t){this._preProcessors=t;const r=(this._vertexIsGLES3?/\s*in\s+(\S+)\s+(\S+)\s*;/gm:/\s*attribute\s+(\S+)\s+(\S+)\s*;/gm).exec(e);if(null!==r){const s=r[1],n=r[2],i=this._webgpuProcessingContext.getAttributeNextLocation(s,this._getArraySize(n,s,t)[2]);this._webgpuProcessingContext.availableAttributes[n]=i,this._webgpuProcessingContext.orderedAttributes[i]=n;const a=this._webgpuProcessingContext.vertexBufferKindToNumberOfComponents[n];if(void 0!==a){const t=a<0?-1===a?"int":"ivec"+-a:1===a?"uint":"uvec"+a,o=`_int_${n}_`;e=e.replace(r[0],`layout(location = ${i}) in ${t} ${o}; ${s} ${n} = ${s}(${o});`)}else e=e.replace(r[0],`layout(location = ${i}) in ${s} ${n};`)}return e}uniformProcessor(e,r,s){this._preProcessors=s;const n=/\s*uniform\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s+(\S+)\s*;/gm.exec(e);if(null!==n){let i=n[1],a=n[2];if(0===i.indexOf("sampler")||1===i.indexOf("sampler")){let n=0;[a,i,n]=this._getArraySize(a,i,s);let o=this._webgpuProcessingContext.availableTextures[a];if(!o){o={autoBindSampler:!0,isTextureArray:n>0,isStorageTexture:!1,textures:[],sampleType:"float"};for(let e=0;e<(n||1);++e)o.textures.push(this._webgpuProcessingContext.getNextFreeUBOBinding())}const u=Ie._SamplerTypeByWebGLSamplerType[i]??"sampler",c=!!Ie._IsComparisonSamplerByWebGPUSamplerType[u],h=c?"comparison":"filtering",l=a+t.AUTOSAMPLERSUFFIX;let d=this._webgpuProcessingContext.availableSamplers[l];d||(d={binding:this._webgpuProcessingContext.getNextFreeUBOBinding(),type:h});const p="u"===i.charAt(0)?"u":"i"===i.charAt(0)?"i":"";p&&(i=i.substring(1));const _=c?"depth":"u"===p?"uint":"i"===p?"sint":"float";o.sampleType=_;const g=n>0,f=d.binding.groupIndex,m=d.binding.bindingIndex,b=Ie._SamplerFunctionByWebGLSamplerType[i],x=Ie._TextureTypeByWebGLSamplerType[i],T=Ie._GpuTextureViewDimensionByWebGPUTextureType[x];if(g){const t=[];t.push(`layout(set = ${f}, binding = ${m}) uniform ${p}${u} ${l};`),e="\n";for(let r=0;r<n;++r){const s=o.textures[r].groupIndex,n=o.textures[r].bindingIndex;t.push(`layout(set = ${s}, binding = ${n}) uniform ${x} ${a}Texture${r};`),e+=`${r>0?"\n":""}#define ${a}${r} ${p}${b}(${a}Texture${r}, ${l})`}e=t.join("\n")+e,this._textureArrayProcessing.push(a)}else n=1,e=`layout(set = ${f}, binding = ${m}) uniform ${u} ${l};\n layout(set = ${o.textures[0].groupIndex}, binding = ${o.textures[0].bindingIndex}) uniform ${p}${x} ${a}Texture;\n #define ${a} ${p}${b}(${a}Texture, ${l})`;this._webgpuProcessingContext.availableTextures[a]=o,this._webgpuProcessingContext.availableSamplers[l]=d,this._addSamplerBindingDescription(l,d,!r);for(let e=0;e<n;++e)this._addTextureBindingDescription(a,o,e,T,null,!r)}else this._addUniformToLeftOverUBO(a,i,s),e=""}return e}uniformBufferProcessor(e,t){const r=/uniform\s+(\w+)/gm.exec(e);if(null!==r){const s=r[1];let n=this._webgpuProcessingContext.availableBuffers[s];if(!n){const e=we.KnownUBOs[s];let t;t=e&&-1!==e.binding.groupIndex?e.binding:this._webgpuProcessingContext.getNextFreeUBOBinding(),n={binding:t},this._webgpuProcessingContext.availableBuffers[s]=n}this._addBufferBindingDescription(s,n,"uniform",!t),e=e.replace("uniform",`layout(set = ${n.binding.groupIndex}, binding = ${n.binding.bindingIndex}) uniform`)}return e}postProcessor(e,t,r,s,n){const i=-1!==e.search(/#extension.+GL_EXT_draw_buffers.+require/);if(e=(e=e.replace(/#extension.+(GL_OVR_multiview2|GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g,"")).replace(/texture2D\s*\(/g,"texture("),r){const t=e.indexOf("gl_FragCoord")>=0,r="\n glFragCoord_ = gl_FragCoord;\n if (yFactor_ == 1.) {\n glFragCoord_.y = textureOutputHeight_ - glFragCoord_.y;\n }\n ",s=t?"vec4 glFragCoord_;\n":"",n=-1!==e.search(/layout *\(location *= *0\) *out/g);if(e=(e=(e=(e=(e=(e=(e=e.replace(/texture2DLodEXT\s*\(/g,"textureLod(")).replace(/textureCubeLodEXT\s*\(/g,"textureLod(")).replace(/textureCube\s*\(/g,"texture(")).replace(/gl_FragDepthEXT/g,"gl_FragDepth")).replace(/gl_FragColor/g,"glFragColor")).replace(/gl_FragData/g,"glFragData")).replace(/gl_FragCoord/g,"glFragCoord_"),this._fragmentIsGLES3){const t=/^\s*out\s+\S+\s+\S+\s*;/gm.exec(e);null!==t&&(e=e.substring(0,t.index)+"layout(location = 0) "+e.substring(t.index))}else e=e.replace(/void\s+?main\s*\(/g,(i||n?"":"layout(location = 0) out vec4 glFragColor;\n")+"void main(");e=(e=e.replace(/dFdy/g,"(-yFactor_)*dFdy")).replace("##INJECTCODE##",s),t&&(e=Ue(e,"void main",r))}else{e=(e=e.replace(/gl_InstanceID/g,"gl_InstanceIndex")).replace(/gl_VertexID/g,"gl_VertexIndex");if(-1!==t.indexOf("#define MULTIVIEW"))return"#extension GL_OVR_multiview2 : require\nlayout (num_views = 2) in;\n"+e}if(!r){const t=e.lastIndexOf("}");e=e.substring(0,t),e+="gl_Position.y *= yFactor_;\n",e+="}"}return e}_applyTextureArrayProcessing(e,t){const r=new RegExp(t+"\\s*\\[(.+)?\\]","gm");let s=r.exec(e);for(;null!==s;){const n=s[1];let i=+n;this._preProcessors&&isNaN(i)&&(i=+this._preProcessors[n.trim()]),e=e.replace(s[0],t+i),s=r.exec(e)}return e}_generateLeftOverUBOCode(e,t){let r=`layout(set = ${t.binding.groupIndex}, binding = ${t.binding.bindingIndex}) uniform ${e} {\n `;for(const e of this._webgpuProcessingContext.leftOverUniforms)e.length>0?r+=` ${e.type} ${e.name}[${e.length}];\n`:r+=` ${e.type} ${e.name};\n`;return r+="};\n\n",r}finalizeShaders(e,t){for(let r=0;r<this._textureArrayProcessing.length;++r){const s=this._textureArrayProcessing[r];e=this._applyTextureArrayProcessing(e,s),t=this._applyTextureArrayProcessing(t,s)}for(let e=0;e<this._missingVaryings.length;++e){const r=this._missingVaryings[e];r&&r.length>0&&(t=r+"\n"+t)}const r=this._buildLeftOverUBO();return e=r+e,t=r+t,this._collectBindingNames(),this._preCreateBindGroupEntries(),this._preProcessors=null,this._webgpuProcessingContext.vertexBufferKindToNumberOfComponents={},{vertexCode:e,fragmentCode:t}}}const Ge="fragmentOutputs.fragDepth",Ne={texture_1d:"1d",texture_2d:"2d",texture_2d_array:"2d-array",texture_3d:"3d",texture_cube:"cube",texture_cube_array:"cube-array",texture_multisampled_2d:"2d",texture_depth_2d:"2d",texture_depth_2d_array:"2d-array",texture_depth_cube:"cube",texture_depth_cube_array:"cube-array",texture_depth_multisampled_2d:"2d",texture_storage_1d:"1d",texture_storage_2d:"2d",texture_storage_2d_array:"2d-array",texture_storage_3d:"3d",texture_external:null};class We extends Ie{constructor(){super(...arguments),this.shaderLanguage=1,this.uniformRegexp=/uniform\s+(\w+)\s*:\s*(.+)\s*;/,this.textureRegexp=/var\s+(\w+)\s*:\s*((array<\s*)?(texture_\w+)\s*(<\s*(.+)\s*>)?\s*(,\s*\w+\s*>\s*)?);/,this.noPrecision=!0,this.pureMode=!1}preProcessor(e,t,r,s,n){for(const t in r){if("__VERSION__"===t)continue;const s=r[t];isNaN(parseInt(s))&&isNaN(parseFloat(s))||(e=`const ${t} = ${s};\n`+e)}return e}_getArraySize(e,t,r){let s=0;const n=t.lastIndexOf(">");if(t.indexOf("array")>=0&&n>0){let e=n;for(;e>0&&" "!==t.charAt(e)&&","!==t.charAt(e);)e--;const i=t.substring(e+1,n);for(s=+i,isNaN(s)&&(s=+r[i.trim()]);e>0&&(" "===t.charAt(e)||","===t.charAt(e));)e--;t=t.substring(t.indexOf("<")+1,e+1)}return[e,t,s]}initializeShaders(e){this._webgpuProcessingContext=e,this._attributesInputWGSL=[],this._attributesWGSL=[],this._attributesConversionCodeWGSL=[],this._hasNonFloatAttribute=!1,this._varyingsWGSL=[],this._varyingNamesWGSL=[],this._stridedUniformArrays=[]}preProcessShaderCode(e){const t=this.pureMode?"":`struct ${Ie.InternalsUBOName} {\n yFactor_: f32,\n textureOutputHeight_: f32,\n};\nvar<uniform> internals : ${Ie.InternalsUBOName};\n`;return-1!==e.indexOf(t)?e:t+De(e)}varyingCheck(e){return/(flat|linear|perspective)?\s*(center|centroid|sample)?\s*\bvarying\b/.test(e)}varyingProcessor(e,t,r){const s=/\s*(flat|linear|perspective)?\s*(center|centroid|sample)?\s*varying\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s*:\s*(.+)\s*;/gm.exec(e);if(null!==s){const i=s[1]??"perspective",a=s[2]??"center",o=s[4],u=s[3],c="flat"===i?`@interpolate(${i})`:`@interpolate(${i}, ${a})`;let h;t?(h=this._webgpuProcessingContext.availableVaryings[u],void 0===h&&n.Warn(`Invalid fragment shader: The varying named "${u}" is not declared in the vertex shader! This declaration will be ignored.`)):(h=this._webgpuProcessingContext.getVaryingNextLocation(o,this._getArraySize(u,o,r)[2]),this._webgpuProcessingContext.availableVaryings[u]=h,this._varyingsWGSL.push(` @location(${h}) ${c} ${u} : ${o},`),this._varyingNamesWGSL.push(u)),e=""}return e}attributeProcessor(e,t){const r=/\s*attribute\s+(\S+)\s*:\s*(.+)\s*;/gm.exec(e);if(null!==r){const s=r[2],n=r[1],i=this._webgpuProcessingContext.getAttributeNextLocation(s,this._getArraySize(n,s,t)[2]);this._webgpuProcessingContext.availableAttributes[n]=i,this._webgpuProcessingContext.orderedAttributes[i]=n;const a=this._webgpuProcessingContext.vertexBufferKindToNumberOfComponents[n];if(void 0!==a){const e=a<0?-1===a?"i32":"vec"+-a+"<i32>":1===a?"u32":"vec"+a+"<u32>",t=`_int_${n}_`;this._attributesInputWGSL.push(`@location(${i}) ${t} : ${e},`),this._attributesWGSL.push(`${n} : ${s},`),this._attributesConversionCodeWGSL.push(`vertexInputs.${n} = ${s}(vertexInputs_.${t});`),this._hasNonFloatAttribute=!0}else this._attributesInputWGSL.push(`@location(${i}) ${n} : ${s},`),this._attributesWGSL.push(`${n} : ${s},`),this._attributesConversionCodeWGSL.push(`vertexInputs.${n} = vertexInputs_.${n};`);e=""}return e}uniformProcessor(e,t,r){const s=this.uniformRegexp.exec(e);if(null!==s){const t=s[2],n=s[1];this._addUniformToLeftOverUBO(n,t,r),e=""}return e}textureProcessor(e,t,r){const s=this.textureRegexp.exec(e);if(null!==s){const n=s[1],i=s[2],a=!!s[3],o=s[4],u=o.indexOf("storage")>0,c=s[6],h=u?c.substring(0,c.indexOf(",")).trim():null;let l=a?this._getArraySize(n,i,r)[2]:0,d=this._webgpuProcessingContext.availableTextures[n];if(d)l=d.textures.length;else{d={isTextureArray:l>0,isStorageTexture:u,textures:[],sampleType:"float"},l=l||1;for(let e=0;e<l;++e)d.textures.push(this._webgpuProcessingContext.getNextFreeUBOBinding())}this._webgpuProcessingContext.availableTextures[n]=d;const p=o.indexOf("depth")>0,_=Ne[o],g=p?"depth":"u32"===c?"uint":"i32"===c?"sint":"float";if(d.sampleType=g,void 0===_)throw`Can't get the texture dimension corresponding to the texture function "${o}"!`;for(let r=0;r<l;++r){const{groupIndex:s,bindingIndex:i}=d.textures[r];0===r&&(e=`@group(${s}) @binding(${i}) ${e}`),this._addTextureBindingDescription(n,d,r,_,h,!t)}}return e}postProcessor(e){const t=/#define (.+?) (.+?)$/gm;let r;for(;null!==(r=t.exec(e));)e=e.replace(new RegExp(r[1],"g"),r[2]);return e}finalizeShaders(e,r){const s=r.indexOf("fragmentInputs.position")>=0&&!this.pureMode?"\n if (internals.yFactor_ == 1.) {\n fragmentInputs.position.y = internals.textureOutputHeight_ - fragmentInputs.position.y;\n }\n ":"";e=this._processSamplers(e,!0),r=this._processSamplers(r,!1),e=this._processCustomBuffers(e,!0),r=this._processCustomBuffers(r,!1);const n=this._buildLeftOverUBO();r=n+r,e=(e=(e=n+e).replace(/#define (\w+)\s+(\d+\.?\d*)/g,"const $1 = $2;")).replace(/#define /g,"//#define "),e=this._processStridedUniformArrays(e);let i="struct VertexInputs {\n @builtin(vertex_index) vertexIndex : u32,\n @builtin(instance_index) instanceIndex : u32,\n";this._attributesInputWGSL.length>0&&(i+=this._attributesInputWGSL.join("\n")),i+="\n};\nvar<private> vertexInputs"+(this._hasNonFloatAttribute?"_":"")+" : VertexInputs;\n",this._hasNonFloatAttribute&&(i+="struct VertexInputs_ {\n vertexIndex : u32, instanceIndex : u32,\n",i+=this._attributesWGSL.join("\n"),i+="\n};\nvar<private> vertexInputs : VertexInputs_;\n");let a="struct FragmentInputs {\n @builtin(position) position : vec4<f32>,\n";this._varyingsWGSL.length>0&&(a+=this._varyingsWGSL.join("\n")),a+="\n};\nvar<private> vertexOutputs : FragmentInputs;\n",e=i+a+e;let o=`\n vertexInputs${this._hasNonFloatAttribute?"_":""} = input;\n`;this._hasNonFloatAttribute&&(o+="vertexInputs.vertexIndex = vertexInputs_.vertexIndex;\nvertexInputs.instanceIndex = vertexInputs_.instanceIndex;\n",o+=this._attributesConversionCodeWGSL.join("\n"),o+="\n");const u=this.pureMode?" return vertexOutputs;":" vertexOutputs.position.y = vertexOutputs.position.y * internals.yFactor_;\n return vertexOutputs;";let c=-1!==e.indexOf(t.DISABLEUA);e=(c?"diagnostic(off, derivative_uniformity);\n":"")+"diagnostic(off, chromium.unreachable_code);\n"+Ue(e,"fn main",o,u),r=(r=r.replace(/#define (\w+)\s+(\d+\.?\d*)/g,"const $1 = $2;")).replace(/#define /g,"//#define "),r=this._processStridedUniformArrays(r),this.pureMode||(r=r.replace(/dpdy/g,"(-internals.yFactor_)*dpdy"));let h="struct FragmentInputs {\n @builtin(position) position : vec4<f32>,\n @builtin(front_facing) frontFacing : bool,\n";this._varyingsWGSL.length>0&&(h+=this._varyingsWGSL.join("\n")),h+="\n};\nvar<private> fragmentInputs : FragmentInputs;\n";let l="struct FragmentOutputs {\n";const d="fragmentOutputs\\.fragData";let p=r.match(new RegExp(d+"0","g")),_=0;if(p){l+=` @location(${_}) fragData0 : vec4<f32>,\n`,_++;for(let e=1;e<8;e++)p=r.match(new RegExp(d+e,"g")),p&&(l+=` @location(${_}) fragData${_} : vec4<f32>,\n`,_++);-1!==r.indexOf("MRT_AND_COLOR")&&(l+=` @location(${_}) color : vec4<f32>,\n`,_++)}p=r.match(/oitDepthSampler/),p&&(l+=` @location(${_++}) depth : vec2<f32>,\n`,l+=` @location(${_++}) frontColor : vec4<f32>,\n`,l+=` @location(${_++}) backColor : vec4<f32>,\n`),0===_&&(l+=" @location(0) color : vec4<f32>,\n",_++);let g=!1,f=0;for(;!(g||(f=r.indexOf(Ge,f),f<0));){const e=f;for(g=!0;f>1&&"\n"!==r.charAt(f);){if("/"===r.charAt(f)&&"/"===r.charAt(f-1)){g=!1;break}f--}f=e+25}g&&(l+=" @builtin(frag_depth) fragDepth: f32,\n"),l+="};\nvar<private> fragmentOutputs : FragmentOutputs;\n";const m=" fragmentInputs = input;\n "+s;return c=-1!==(r=h+l+r).indexOf(t.DISABLEUA),r=(c?"diagnostic(off, derivative_uniformity);\n":"")+"diagnostic(off, chromium.unreachable_code);\n"+Ue(r,"fn main",m," return fragmentOutputs;"),this._collectBindingNames(),this._preCreateBindGroupEntries(),this._webgpuProcessingContext.vertexBufferKindToNumberOfComponents={},{vertexCode:e,fragmentCode:r}}_generateLeftOverUBOCode(e,t){let r="",s=`struct ${e} {\n`;for(const t of this._webgpuProcessingContext.leftOverUniforms){const n=t.type.replace(/^(.*?)(<.*>)?$/,"$1"),i=Ie.UniformSizes[n];if(t.length>0)if(i<=2){const i=`${e}_${this._stridedUniformArrays.length}_strided_arr`;r+=`struct ${i} {\n @size(16)\n el: ${n},\n }`,this._stridedUniformArrays.push(t.name),s+=` @align(16) ${t.name} : array<${i}, ${t.length}>,\n`}else s+=` ${t.name} : array<${t.type}, ${t.length}>,\n`;else s+=` ${t.name} : ${t.type},\n`}return s+="};\n",s=`${r}\n${s}`,s+=`@group(${t.binding.groupIndex}) @binding(${t.binding.bindingIndex}) var<uniform> uniforms : ${e};\n`,s}_processSamplers(e,r){const s=/var\s+(\w+Sampler)\s*:\s*(sampler|sampler_comparison)\s*;/gm;for(;;){const n=s.exec(e);if(null===n)break;const i=n[1],a=n[2],o=i.length-t.AUTOSAMPLERSUFFIX.length,u=i.lastIndexOf(t.AUTOSAMPLERSUFFIX)===o?i.substring(0,o):null,c="sampler_comparison"===a?"comparison":"filtering";if(u){const e=this._webgpuProcessingContext.availableTextures[u];e&&(e.autoBindSampler=!0)}let h=this._webgpuProcessingContext.availableSamplers[i];h||(h={binding:this._webgpuProcessingContext.getNextFreeUBOBinding(),type:c},this._webgpuProcessingContext.availableSamplers[i]=h),this._addSamplerBindingDescription(i,h,r);const l=e.substring(0,n.index),d=`@group(${h.binding.groupIndex}) @binding(${h.binding.bindingIndex}) `,p=e.substring(n.index);e=l+d+p,s.lastIndex+=d.length}return e}_processCustomBuffers(e,t){const r=/var<\s*(uniform|storage)\s*(,\s*(read|read_write)\s*)?>\s+(\S+)\s*:\s*(\S+)\s*;/gm;for(;;){const s=r.exec(e);if(null===s)break;const n=s[1],i=s[3];let a=s[4];const o=s[5];let u=this._webgpuProcessingContext.availableBuffers[a];if(!u){const e="uniform"===n?we.KnownUBOs[o]:null;let t;e?(a=o,t=e.binding,-1===t.groupIndex&&(t=this._webgpuProcessingContext.availableBuffers[a]?.binding,t||(t=this._webgpuProcessingContext.getNextFreeUBOBinding()))):t=this._webgpuProcessingContext.getNextFreeUBOBinding(),u={binding:t},this._webgpuProcessingContext.availableBuffers[a]=u}this._addBufferBindingDescription(a,this._webgpuProcessingContext.availableBuffers[a],"read_write"===i?"storage":"storage"===n?"read-only-storage":"uniform",t);const c=u.binding.groupIndex,h=u.binding.bindingIndex,l=e.substring(0,s.index),d=`@group(${c}) @binding(${h}) `,p=e.substring(s.index);e=l+d+p,r.lastIndex+=d.length}return e}_processStridedUniformArrays(e){for(const t of this._stridedUniformArrays)e=e.replace(new RegExp(`${t}\\s*\\[(.*?)\\]`,"g"),`${t}[$1].el`);return e}}class $e{get underlyingResource(){return this._webgpuTexture}getMSAATexture(e){return this._webgpuMSAATexture?.[e]??null}setMSAATexture(e,t){this._webgpuMSAATexture||(this._webgpuMSAATexture=[]),this._webgpuMSAATexture[t]=e}releaseMSAATexture(e){if(this._webgpuMSAATexture)if(void 0!==e)this._engine._textureHelper.releaseTexture(this._webgpuMSAATexture[e]),delete this._webgpuMSAATexture[e];else{for(const e of this._webgpuMSAATexture)this._engine._textureHelper.releaseTexture(e);this._webgpuMSAATexture=null}}constructor(e,t=null){this._engine=e,this._originalFormatIsRGB=!1,this.format="rgba8unorm",this.textureUsages=0,this.textureAdditionalUsages=0,this._webgpuTexture=t,this._webgpuMSAATexture=null,this.view=null,this.viewForWriting=null}set(e){this._webgpuTexture=e}setUsage(t,r,s,n,i,a,o,u){let c="2d",h=1;n?(c=s?"cube-array":"cube",h=6*(u||1)):i?(c="3d",h=1):s&&(c="2d-array",h=u);const l=O.GetDepthFormatOnly(this.format),d=O.HasDepthAndStencilAspects(this.format)?"depth-only":"all";this.createView({label:`TextureView${i?"3D":n?"Cube":"2D"}${s?"_Array"+h:""}_${a}x${o}_${r?"wmips":"womips"}_${this.format}_${c}`,format:l,dimension:c,mipLevelCount:r?e(Math.max(a,o))+1:1,baseArrayLayer:0,baseMipLevel:0,arrayLayerCount:h,aspect:d})}createView(e,t=!1){if(this.view=this._webgpuTexture.createView(e),t&&e){const t=e.mipLevelCount;e.mipLevelCount=1,this.viewForWriting=this._webgpuTexture.createView(e),e.mipLevelCount=t}}reset(){this._webgpuTexture=null,this._webgpuMSAATexture=null,this.view=null,this.viewForWriting=null}release(){this._webgpuTexture?.destroy(),this.releaseMSAATexture(),this._copyInvertYTempTexture?.destroy(),this.reset()}}const Ve="\n const pos = array<vec2<f32>, 4>( vec2f(-1.0f, 1.0f), vec2f(1.0f, 1.0f), vec2f(-1.0f, -1.0f), vec2f(1.0f, -1.0f));\n const tex = array<vec2<f32>, 4>( vec2f(0.0f, 0.0f), vec2f(1.0f, 0.0f), vec2f(0.0f, 1.0f), vec2f(1.0f, 1.0f));\n\n var img: texture_2d<f32>;\n\n #ifdef INVERTY\n varying vTextureSize: vec2f;\n #endif\n\n @vertex\n fn main(input : VertexInputs) -> FragmentInputs {\n #ifdef INVERTY\n vertexOutputs.vTextureSize = vec2f(textureDimensions(img, 0));\n #endif\n vertexOutputs.position = vec4f(pos[input.vertexIndex], 0.0, 1.0);\n }\n ",He=Ve;var Xe,ke;!function(e){e[e.MipMap=0]="MipMap",e[e.InvertYPremultiplyAlpha=1]="InvertYPremultiplyAlpha",e[e.Clear=2]="Clear",e[e.InvertYPremultiplyAlphaWithOfst=3]="InvertYPremultiplyAlphaWithOfst"}(Xe||(Xe={})),function(e){e[e.DontInvertY=0]="DontInvertY",e[e.InvertY=1]="InvertY"}(ke||(ke={}));const Ye=[{vertex:"\n const pos = array<vec2<f32>, 4>( vec2f(-1.0f, 1.0f), vec2f(1.0f, 1.0f), vec2f(-1.0f, -1.0f), vec2f(1.0f, -1.0f));\n const tex = array<vec2<f32>, 4>( vec2f(0.0f, 0.0f), vec2f(1.0f, 0.0f), vec2f(0.0f, 1.0f), vec2f(1.0f, 1.0f));\n\n varying vTex: vec2f;\n\n @vertex\n fn main(input : VertexInputs) -> FragmentInputs {\n vertexOutputs.vTex = tex[input.vertexIndex];\n vertexOutputs.position = vec4f(pos[input.vertexIndex], 0.0, 1.0);\n }\n ",fragment:"\n var imgSampler: sampler;\n var img: texture_2d<f32>;\n\n varying vTex: vec2f;\n\n @fragment\n fn main(input: FragmentInputs) -> FragmentOutputs {\n fragmentOutputs.color = textureSample(img, imgSampler, input.vTex);\n }\n "},{vertex:Ve,fragment:"\n var img: texture_2d<f32>;\n\n #ifdef INVERTY\n varying vTextureSize: vec2f;\n #endif\n\n @fragment\n fn main(input: FragmentInputs) -> FragmentOutputs {\n #ifdef INVERTY\n var color: vec4f = textureLoad(img, vec2i(i32(input.position.x), i32(input.vTextureSize.y - input.position.y)), 0);\n #else\n var color: vec4f = textureLoad(img, vec2i(input.position.xy), 0);\n #endif\n #ifdef PREMULTIPLYALPHA\n fragmentOutputs.color = vec4f(color.rgb * color.a, color.a);\n #endif\n fragmentOutputs.color = color;\n }\n "},{vertex:"\n const pos = array<vec2<f32>, 4>( vec2f(-1.0f, 1.0f), vec2f(1.0f, 1.0f), vec2f(-1.0f, -1.0f), vec2f(1.0f, -1.0f));\n\n @vertex\n fn main(input : VertexInputs) -> FragmentInputs {\n vertexOutputs.position = vec4f(pos[input.vertexIndex], 0.0, 1.0);\n }\n ",fragment:"\n uniform color: vec4f;\n\n\n @fragment\n fn main(input: FragmentInputs) -> FragmentOutputs {\n fragmentOutputs.color = uniforms.color;\n }\n "},{vertex:He,fragment:"\n var img: texture_2d<f32>;\n uniform ofstX: f32;\n uniform ofstY: f32;\n uniform width: f32;\n uniform height: f32;\n\n #ifdef INVERTY\n varying vTextureSize: vec2f;\n #endif\n\n @fragment\n fn main(input: FragmentInputs) -> FragmentOutputs {\n if (input.position.x < uniforms.ofstX || input.position.x >= uniforms.ofstX + uniforms.width) {\n discard;\n }\n if (input.position.y < uniforms.ofstY || input.position.y >= uniforms.ofstY + uniforms.height) {\n discard;\n }\n #ifdef INVERTY\n var color: vec4f = textureLoad(img, vec2i(i32(input.position.x), i32(uniforms.ofstY + uniforms.height - (input.position.y - uniforms.ofstY))), 0);\n #else\n var color: vec4f = textureLoad(img, vec2i(input.position.xy), 0);\n #endif\n #ifdef PREMULTIPLYALPHA\n color = vec4f(color.rgb * color.a, color.a);\n #endif\n fragmentOutputs.color = color;\n }\n "}],qe={"":0,r8unorm:1,r8uint:2,r8sint:3,r16uint:4,r16sint:5,r16float:6,rg8unorm:7,rg8uint:8,rg8sint:9,r32uint:10,r32sint:11,r32float:12,rg16uint:13,rg16sint:14,rg16float:15,rgba8unorm:16,"rgba8unorm-srgb":17,rgba8uint:18,rgba8sint:19,bgra8unorm:20,"bgra8unorm-srgb":21,rgb10a2uint:22,rgb10a2unorm:23,rg32uint:24,rg32sint:25,rg32float:26,rgba16uint:27,rgba16sint:28,rgba16float:29,rgba32uint:30,rgba32sint:31,rgba32float:32,stencil8:33,depth16unorm:34,depth24plus:35,"depth24plus-stencil8":36,depth32float:37,"depth32float-stencil8":38,r16unorm:39,rg16unorm:40,rgba16unorm:41,r16snorm:42,rg16snorm:43,rgba16snorm:44};class Qe{constructor(e,t,r,s){if(this._pipelines={},this._compiledShaders=[],this._videoPipelines={},this._videoCompiledShaders=[],this._deferredReleaseTextures=[],this._engine=e,this._device=t,this._bufferManager=r,-1!==s.indexOf("rg11b10ufloat-renderable")){const e=Object.keys(qe);qe.rg11b10ufloat=qe[e[e.length-1]]+1}this._mipmapSampler=t.createSampler({minFilter:"linear"}),this._videoSampler=t.createSampler({minFilter:"linear"}),this._ubCopyWithOfst=this._bufferManager.createBuffer(16,H.Uniform|H.CopyDst,"UBCopyWithOffset").underlyingResource,this._getPipeline("rgba8unorm"),this._getVideoPipeline("rgba8unorm")}_getPipeline(e,t=Xe.MipMap,r){const s=t===Xe.MipMap?1:t===Xe.InvertYPremultiplyAlpha?((r.invertY?1:0)<<1)+((r.premultiplyAlpha?1:0)<<2):t===Xe.Clear?8:t===Xe.InvertYPremultiplyAlphaWithOfst?((r.invertY?1:0)<<4)+((r.premultiplyAlpha?1:0)<<5):0;this._pipelines[e]||(this._pipelines[e]=[]);let n=this._pipelines[e][s];if(!n){let i="";t!==Xe.InvertYPremultiplyAlpha&&t!==Xe.InvertYPremultiplyAlphaWithOfst||(r.invertY&&(i+="#define INVERTY\n"),r.premultiplyAlpha&&(i+="#define PREMULTIPLYALPHA\n"));let c=this._compiledShaders[s];if(!c){let e=Ye[t].vertex,r=Ye[t].fragment;const n={defines:i.split("\n"),indexParameters:null,isFragment:!1,shouldUseHighPrecisionShader:!0,processor:this._engine._getShaderProcessor(1),supportsUniformBuffers:!0,shadersRepository:"",includesShadersStore:{},version:(100*this._engine.version).toString(),platformName:this._engine.shaderPlatformName,processingContext:this._engine._getShaderProcessingContext(1,!0),isNDCHalfZRange:this._engine.isNDCHalfZRange,useReverseDepthBuffer:this._engine.useReverseDepthBuffer};a(n),n.processor.pureMode=!0,o(e,n,(t=>{e=t}),this._engine),n.isFragment=!0,o(r,n,(e=>{r=e}),this._engine);const h=u(e,r,n);n.processor.pureMode=!1;const l=this._device.createShaderModule({label:`BabylonWebGPUDevice${this._engine.uniqueId}_InternalVertexShader_${s}`,code:h.vertexCode}),d=this._device.createShaderModule({label:`BabylonWebGPUDevice${this._engine.uniqueId}_InternalFragmentShader_${s}`,code:h.fragmentCode});c=this._compiledShaders[s]=[l,d]}const h=this._device.createRenderPipeline({label:`BabylonWebGPUDevice${this._engine.uniqueId}_InternalPipeline_${e}_${s}`,layout:"auto",vertex:{module:c[0],entryPoint:"main"},fragment:{module:c[1],entryPoint:"main",targets:[{format:e}]},primitive:{topology:"triangle-strip",stripIndexFormat:"uint16"}});n=this._pipelines[e][s]=[h,h.getBindGroupLayout(0)]}return n}_getVideoPipeline(e,t=ke.DontInvertY){const r=t===ke.InvertY?1:0;this._videoPipelines[e]||(this._videoPipelines[e]=[]);let s=this._videoPipelines[e][r];if(!s){let t=this._videoCompiledShaders[r];if(!t){const e=this._device.createShaderModule({code:"\n struct VertexOutput {\n @builtin(position) Position : vec4<f32>,\n @location(0) fragUV : vec2<f32>\n }\n\n @vertex\n fn main(\n @builtin(vertex_index) VertexIndex : u32\n ) -> VertexOutput {\n var pos = array<vec2<f32>, 4>(\n vec2(-1.0, 1.0),\n vec2( 1.0, 1.0),\n vec2(-1.0, -1.0),\n vec2( 1.0, -1.0)\n );\n var tex = array<vec2<f32>, 4>(\n vec2(0.0, 0.0),\n vec2(1.0, 0.0),\n vec2(0.0, 1.0),\n vec2(1.0, 1.0)\n );\n\n var output: VertexOutput;\n\n output.Position = vec4<f32>(pos[VertexIndex], 0.0, 1.0);\n output.fragUV = tex[VertexIndex];\n\n return output;\n }\n ",label:`BabylonWebGPUDevice${this._engine.uniqueId}_CopyVideoToTexture_VertexShader`}),s=this._device.createShaderModule({code:0===r?"\n @group(0) @binding(0) var videoSampler: sampler;\n @group(0) @binding(1) var videoTexture: texture_external;\n\n @fragment\n fn main(\n @location(0) fragUV: vec2<f32>\n ) -> @location(0) vec4<f32> {\n return textureSampleBaseClampToEdge(videoTexture, videoSampler, fragUV);\n }\n ":"\n @group(0) @binding(0) var videoSampler: sampler;\n @group(0) @binding(1) var videoTexture: texture_external;\n\n @fragment\n fn main(\n @location(0) fragUV: vec2<f32>\n ) -> @location(0) vec4<f32> {\n return textureSampleBaseClampToEdge(videoTexture, videoSampler, vec2<f32>(fragUV.x, 1.0 - fragUV.y));\n }\n ",label:`BabylonWebGPUDevice${this._engine.uniqueId}_CopyVideoToTexture_FragmentShader_${0===r?"DontInvertY":"InvertY"}`});t=this._videoCompiledShaders[r]=[e,s]}const n=this._device.createRenderPipeline({label:`BabylonWebGPUDevice${this._engine.uniqueId}_InternalVideoPipeline_${e}_${0===r?"DontInvertY":"InvertY"}`,layout:"auto",vertex:{module:t[0],entryPoint:"main"},fragment:{module:t[1],entryPoint:"main",targets:[{format:e}]},primitive:{topology:"triangle-strip",stripIndexFormat:"uint16"}});s=this._videoPipelines[e][r]=[n,n.getBindGroupLayout(0)]}return s}setCommandEncoder(e){this._commandEncoderForCreation=e}copyVideoToTexture(e,t,r,s=!1,n){const i=void 0===n,[a,o]=this._getVideoPipeline(r,s?ke.InvertY:ke.DontInvertY);i&&(n=this._device.createCommandEncoder({})),n.pushDebugGroup?.(`copy video to texture - invertY=${s}`);const u=t._hardwareTexture,c={label:`BabylonWebGPUDevice${this._engine.uniqueId}_copyVideoToTexture_${r}_${s?"InvertY":"DontInvertY"}${t.label?"_"+t.label:""}`,colorAttachments:[{view:u.underlyingResource.createView({format:r,dimension:"2d",mipLevelCount:1,baseArrayLayer:0,baseMipLevel:0,arrayLayerCount:1,aspect:"all"}),loadOp:"load",storeOp:"store"}]},h=n.beginRenderPass(c),l={layout:o,entries:[{binding:0,resource:this._videoSampler},{binding:1,resource:this._device.importExternalTexture({source:e.underlyingResource})}]},d=this._device.createBindGroup(l);h.setPipeline(a),h.setBindGroup(0,d),h.draw(4,1,0,0),h.end(),n.popDebugGroup?.(),i&&(this._device.queue.submit([n.finish()]),n=null)}invertYPreMultiplyAlpha(e,t,r,s,n=!1,i=!1,a=0,o=0,u=1,c=0,h=0,l=0,d=0,p,_){const g=0!==l,f=void 0===p,[m,b]=this._getPipeline(s,g?Xe.InvertYPremultiplyAlphaWithOfst:Xe.InvertYPremultiplyAlpha,{invertY:n,premultiplyAlpha:i});let x;if(a=Math.max(a,0),f&&(p=this._device.createCommandEncoder({})),p.pushDebugGroup?.(`internal process texture - invertY=${n} premultiplyAlpha=${i}`),O.IsHardwareTexture(e)?(x=e.underlyingResource,n&&!i&&1===u&&0===a||(e=void 0)):(x=e,e=void 0),!x)return;g&&this._bufferManager.setRawData(this._ubCopyWithOfst,0,new Float32Array([c,h,l,d]),0,16);const T=e,y=T?._copyInvertYTempTexture??this.createTexture({width:t,height:r,layers:1},!1,!1,!1,!1,!1,s,1,p,21,void 0,"TempTextureForCopyWithInvertY"),E=T?._copyInvertYRenderPassDescr??{label:`BabylonWebGPUDevice${this._engine.uniqueId}_invertYPreMultiplyAlpha_${s}_${n?"InvertY":"DontInvertY"}_${i?"PremultiplyAlpha":"DontPremultiplyAlpha"}`,colorAttachments:[{view:y.createView({format:s,dimension:"2d",baseMipLevel:0,mipLevelCount:1,arrayLayerCount:1,baseArrayLayer:0}),loadOp:"load",storeOp:"store"}]},S=p.beginRenderPass(E);let R=g?T?._copyInvertYBindGroupWithOfst:T?._copyInvertYBindGroup;if(!R){const e={layout:b,entries:[{binding:0,resource:x.createView({format:s,dimension:"2d",baseMipLevel:o,mipLevelCount:1,arrayLayerCount:u,baseArrayLayer:a})}]};g&&e.entries.push({binding:1,resource:{buffer:this._ubCopyWithOfst}}),R=this._device.createBindGroup(e)}S.setPipeline(m),S.setBindGroup(0,R),S.draw(4,1,0,0),S.end(),p.copyTextureToTexture({texture:y},{texture:x,mipLevel:o,origin:{x:0,y:0,z:a}},{width:t,height:r,depthOrArrayLayers:1}),T?(T._copyInvertYTempTexture=y,T._copyInvertYRenderPassDescr=E,g?T._copyInvertYBindGroupWithOfst=R:T._copyInvertYBindGroup=R):this._deferredReleaseTextures.push([y,null]),p.popDebugGroup?.(),f&&(this._device.queue.submit([p.finish()]),p=null)}copyWithInvertY(e,t,r,s){const n=void 0===s,[i,a]=this._getPipeline(t,Xe.InvertYPremultiplyAlpha,{invertY:!0,premultiplyAlpha:!1});n&&(s=this._device.createCommandEncoder({})),s.pushDebugGroup?.("internal copy texture with invertY");const o=s.beginRenderPass(r),u=this._device.createBindGroup({layout:a,entries:[{binding:0,resource:e}]});o.setPipeline(i),o.setBindGroup(0,u),o.draw(4,1,0,0),o.end(),s.popDebugGroup?.(),n&&(this._device.queue.submit([s.finish()]),s=null)}createTexture(e,t=!1,r=!1,s=!1,n=!1,i=!1,a="rgba8unorm",o=1,u,c=-1,h=0,l){o=O.GetSample(o);const d=e.layers||1,p={width:e.width,height:e.height,depthOrArrayLayers:d},_=qe[a]?16:0,g=O.IsCompressedFormat(a),f=t?O.ComputeNumMipmapLevels(e.width,e.height):1,m=c>=0?c:7;h|=t&&!g?1|_:0,g||i||(h|=2|_);const b=this._device.createTexture({label:`BabylonWebGPUDevice${this._engine.uniqueId}_Texture${i?"3D":"2D"}_${l?l+"_":""}${p.width}x${p.height}x${p.depthOrArrayLayers}_${t?"wmips":"womips"}_${a}_samples${o}`,size:p,dimension:i?"3d":"2d",format:a,usage:m|h,sampleCount:o,mipLevelCount:f});return O.IsImageBitmap(e)&&(this.updateTexture(e,b,e.width,e.height,d,a,0,0,s,n,0,0),t&&r&&this.generateMipmaps(b,a,f,0,i,u)),b}createCubeTexture(e,t=!1,r=!1,s=!1,n=!1,i="rgba8unorm",a=1,o,u=-1,c=0,h){a=O.GetSample(a);const l=O.IsImageBitmapArray(e)?e[0].width:e.width,d=O.IsImageBitmapArray(e)?e[0].height:e.height,p=qe[i]?16:0,_=O.IsCompressedFormat(i),g=t?O.ComputeNumMipmapLevels(l,d):1,f=u>=0?u:7;c|=t&&!_?1|p:0,_||(c|=2|p);const m=this._device.createTexture({label:`BabylonWebGPUDevice${this._engine.uniqueId}_TextureCube_${h?h+"_":""}${l}x${d}x6_${t?"wmips":"womips"}_${i}_samples${a}`,size:{width:l,height:d,depthOrArrayLayers:6},dimension:"2d",format:i,usage:f|c,sampleCount:a,mipLevelCount:g});return O.IsImageBitmapArray(e)&&(this.updateCubeTextures(e,m,l,d,i,s,n,0,0),t&&r&&this.generateCubeMipmaps(m,i,g,o)),m}generateCubeMipmaps(e,t,r,s){const n=void 0===s;n&&(s=this._device.createCommandEncoder({})),s.pushDebugGroup?.(`create cube mipmaps - ${r} levels`);for(let n=0;n<6;++n)this.generateMipmaps(e,t,r,n,!1,s);s.popDebugGroup?.(),n&&(this._device.queue.submit([s.finish()]),s=null)}generateMipmaps(e,t,r,s=0,n=!1,i){const a=void 0===i,[o,u]=this._getPipeline(t);let c;if(s=Math.max(s,0),a&&(i=this._device.createCommandEncoder({})),i.pushDebugGroup?.(`create mipmaps for face #${s} - ${r} levels`),O.IsHardwareTexture(e)?(c=e.underlyingResource,e._mipmapGenRenderPassDescr=e._mipmapGenRenderPassDescr||[],e._mipmapGenBindGroup=e._mipmapGenBindGroup||[]):(c=e,e=void 0),!c)return;const h=e;for(let e=1;e<r;++e){const r=h?._mipmapGenRenderPassDescr[s]?.[e-1]??{label:`BabylonWebGPUDevice${this._engine.uniqueId}_generateMipmaps_${t}_faceIndex${s}_level${e}`,colorAttachments:[{view:c.createView({format:t,dimension:n?"3d":"2d",baseMipLevel:e,mipLevelCount:1,arrayLayerCount:1,baseArrayLayer:s}),loadOp:"load",storeOp:"store"}]};h&&(h._mipmapGenRenderPassDescr[s]=h._mipmapGenRenderPassDescr[s]||[],h._mipmapGenRenderPassDescr[s][e-1]=r);const a=i.beginRenderPass(r),l=h?._mipmapGenBindGroup[s]?.[e-1]??this._device.createBindGroup({layout:u,entries:[{binding:0,resource:c.createView({format:t,dimension:n?"3d":"2d",baseMipLevel:e-1,mipLevelCount:1,arrayLayerCount:1,baseArrayLayer:s})},{binding:1,resource:this._mipmapSampler}]});h&&(h._mipmapGenBindGroup[s]=h._mipmapGenBindGroup[s]||[],h._mipmapGenBindGroup[s][e-1]=l),a.setPipeline(o),a.setBindGroup(0,l),a.draw(4,1,0,0),a.end()}i.popDebugGroup?.(),a&&(this._device.queue.submit([i.finish()]),i=null)}createGPUTextureForInternalTexture(e,r,s,n,i,a){e._hardwareTexture||(e._hardwareTexture=new $e(this._engine)),void 0===r&&(r=e.width),void 0===s&&(s=e.height),void 0===n&&(n=e.depth);const o=e._hardwareTexture,u=!!((i??0)&t.TEXTURE_CREATIONFLAG_STORAGE);o.format=O.GetWebGPUTextureFormat(e.type,e.format,e._useSRGBBuffer),o.textureUsages=5===e._source||6===e.source?21:12===e._source?20:-1,o.textureAdditionalUsages=u?8:0;const c=e.generateMipMaps,h=n||1;let l;if(l=null!==e._maxLodLevel?e._maxLodLevel:c?O.ComputeNumMipmapLevels(r,s):1,e.isCube){const t=this.createCubeTexture({width:r,height:s},e.generateMipMaps,e.generateMipMaps,e.invertY,!1,o.format,1,this._commandEncoderForCreation,o.textureUsages,o.textureAdditionalUsages,e.label);o.set(t);const n=e.is3D?1:h,i=O.GetDepthFormatOnly(o.format),a=O.HasDepthAndStencilAspects(o.format)?"depth-only":"all",d=e.is2DArray?"cube-array":"cube";o.createView({label:`BabylonWebGPUDevice${this._engine.uniqueId}_TextureViewCube${e.is2DArray?"_Array"+n:""}_${r}x${s}_${c?"wmips":"womips"}_${i}_${d}_${a}_${e.label??"noname"}`,format:i,dimension:d,mipLevelCount:l,baseArrayLayer:0,baseMipLevel:0,arrayLayerCount:6,aspect:a},u)}else{const t=this.createTexture({width:r,height:s,layers:h},e.generateMipMaps,e.generateMipMaps,e.invertY,!1,e.is3D,o.format,1,this._commandEncoderForCreation,o.textureUsages,o.textureAdditionalUsages,e.label);o.set(t);const n=e.is3D?1:h,i=O.GetDepthFormatOnly(o.format),a=O.HasDepthAndStencilAspects(o.format)?"depth-only":"all",d=e.is2DArray?"2d-array":e.is3D?"3d":"2d";o.createView({label:`BabylonWebGPUDevice${this._engine.uniqueId}_TextureView${e.is3D?"3D":"2D"}${e.is2DArray?"_Array"+n:""}_${r}x${s}${e.is3D?"x"+h:""}_${c?"wmips":"womips"}_${i}_${d}_${a}_${e.label??"noname"}`,format:i,dimension:d,mipLevelCount:l,baseArrayLayer:0,baseMipLevel:0,arrayLayerCount:n,aspect:a},u)}return e.width=e.baseWidth=r,e.height=e.baseHeight=s,e.depth=e.baseDepth=n,a||this.createMSAATexture(e,e.samples),o}createMSAATexture(e,t,r=!0,s=0){const n=e._hardwareTexture;if(r&&n?.releaseMSAATexture(),!n||(t??1)<=1)return;const i=e.width,a=e.height,o=this.createTexture({width:i,height:a,layers:1},!1,!1,!1,!1,!1,n.format,t,this._commandEncoderForCreation,16,0,e.label?"MSAA_"+e.label:"MSAA");n.setMSAATexture(o,s)}updateCubeTextures(e,t,r,s,n,i=!1,a=!1,o=0,u=0){const c=[0,3,1,4,2,5];for(let h=0;h<c.length;++h){const l=e[c[h]];this.updateTexture(l,t,r,s,1,n,h,0,i,a,o,u)}}updateTexture(e,t,r,s,n,i,a=0,o=0,u=!1,c=!1,h=0,l=0,d){const p=O.IsInternalTexture(t)?t._hardwareTexture.underlyingResource:t,_=O.GetBlockInformationFromFormat(i),g=O.IsInternalTexture(t)?t._hardwareTexture:t,f={texture:p,origin:{x:h,y:l,z:Math.max(a,0)},mipLevel:o,premultipliedAlpha:c},m={width:Math.ceil(r/_.width)*_.width,height:Math.ceil(s/_.height)*_.height,depthOrArrayLayers:n||1};if(void 0!==e.byteLength){const b=Math.ceil(r/_.width)*_.length;if(256*Math.ceil(b/256)===b){const t=this._device.createCommandEncoder({}),r=this._bufferManager.createRawBuffer(e.byteLength,H.MapWrite|H.CopySrc,!0,"TempBufferForUpdateTexture"+(p?"_"+p.label:"")),n=r.getMappedRange();new Uint8Array(n).set(e),r.unmap(),t.copyBufferToTexture({buffer:r,offset:0,bytesPerRow:b,rowsPerImage:s},f,m),this._device.queue.submit([t.finish()]),this._bufferManager.releaseBuffer(r)}else this._device.queue.writeTexture(f,e,{offset:0,bytesPerRow:b,rowsPerImage:s},m);if(u||c){if(!O.IsInternalTexture(t))throw"updateTexture: Can't process the texture data because a GPUTexture was provided instead of an InternalTexture!";{const e=0===h&&0===l&&r===t.width&&s===t.height;this.invertYPreMultiplyAlpha(g,t.width,t.height,i,u,c,a,o,n||1,h,l,e?0:r,e?0:s,void 0,d)}}}else if(u)if(f.premultipliedAlpha=!1,O.IsInternalTexture(t)&&0===h&&0===l&&r===t.width&&s===t.height)this._device.queue.copyExternalImageToTexture({source:e},f,m),this.invertYPreMultiplyAlpha(g,r,s,i,u,c,a,o,n||1,0,0,0,0,void 0,d);else{const t=this._device.createCommandEncoder({}),h=this.createTexture({width:r,height:s,layers:1},!1,!1,!1,!1,!1,i,1,t,5,void 0,"TempTextureForUpdateTexture");this._deferredReleaseTextures.push([h,null]),m.depthOrArrayLayers=1,this._device.queue.copyExternalImageToTexture({source:e},{texture:h},m),m.depthOrArrayLayers=n||1,this.invertYPreMultiplyAlpha(h,r,s,i,u,c,a,o,n||1,0,0,0,0,t,d),t.copyTextureToTexture({texture:h},f,m),this._device.queue.submit([t.finish()])}else this._device.queue.copyExternalImageToTexture({source:e},f,m)}readPixels(e,t,r,s,n,i,a=0,o=0,u=null,c=!1){const h=O.GetBlockInformationFromFormat(i),l=Math.ceil(s/h.width)*h.length,d=256*Math.ceil(l/256),p=d*n,_=this._bufferManager.createRawBuffer(p,H.MapRead|H.CopyDst,void 0,"TempBufferForReadPixels"+(e.label?"_"+e.label:"")),g=this._device.createCommandEncoder({});return g.copyTextureToBuffer({texture:e,mipLevel:o,origin:{x:t,y:r,z:Math.max(a,0)}},{buffer:_,offset:0,bytesPerRow:d},{width:s,height:n,depthOrArrayLayers:1}),this._device.queue.submit([g.finish()]),this._bufferManager.readDataFromBuffer(_,p,s,n,l,d,O.GetTextureTypeFromFormat(i),0,u,!0,c)}releaseTexture(e){if(O.IsInternalTexture(e)){const t=e._hardwareTexture,r=e._irradianceTexture;this._deferredReleaseTextures.push([t,r])}else this._deferredReleaseTextures.push([e,null])}destroyDeferredTextures(){for(let e=0;e<this._deferredReleaseTextures.length;++e){const[t,r]=this._deferredReleaseTextures[e];t&&(O.IsHardwareTexture(t)?t.release():t.destroy()),r?.dispose()}this._deferredReleaseTextures.length=0}}class ze extends c{set buffer(e){this._buffer=e}constructor(e,t=0){super(),this.engineId=-1,this.capacity=t,e&&(this._buffer=e)}get underlyingResource(){return this._buffer}}class Ke{static _IsGPUBuffer(e){return void 0===e.underlyingResource}static _FlagsToString(e,t=""){let r=t;for(let t=0;t<=9;++t)e&1<<t&&(r&&(r+="_"),r+=H[1<<t]);return r}constructor(e,t){this._deferredReleaseBuffers=[],this._engine=e,this._device=t}createRawBuffer(e,t,r=!1,s){const n=void 0!==e.byteLength?e.byteLength+3&-4:e+3&-4,i={label:"BabylonWebGPUDevice"+this._engine.uniqueId+"_"+Ke._FlagsToString(t,s??"Buffer")+"_size"+n,mappedAtCreation:r,size:n,usage:t};return this._device.createBuffer(i)}createBuffer(e,t,r){const s=void 0!==e.byteLength,n=new ze,i="DataBufferUniqueId="+n.uniqueId;return n.buffer=this.createRawBuffer(e,t,void 0,r?i+"-"+r:i),n.references=1,n.capacity=s?e.byteLength:e,n.engineId=this._engine.uniqueId,s&&this.setSubData(n,0,e),n}setRawData(e,t,r,s,n){this._device.queue.writeBuffer(e,t,r.buffer,s,n)}setSubData(e,t,r,s=0,n=0){const i=e.underlyingResource;n=n||r.byteLength,n=Math.min(n,e.capacity-t);let a=r.byteOffset+s,o=a+n;const u=n+3&-4;if(u!==n){const e=new Uint8Array(r.buffer.slice(a,o));(r=new Uint8Array(u)).set(e),s=0,a=0,o=u,n=u}const c=15728640;let h=0;for(;o-(a+h)>c;)this._device.queue.writeBuffer(i,t+h,r.buffer,a+h,c),h+=c;this._device.queue.writeBuffer(i,t+h,r.buffer,a+h,n-h)}_getHalfFloatAsFloatRGBAArrayBuffer(e,t,r){r||(r=new Float32Array(e));const s=new Uint16Array(t);for(;e--;)r[e]=h(s[e]);return r}readDataFromBuffer(e,r,s,n,i,a,o=t.TEXTURETYPE_UNSIGNED_BYTE,u=0,c=null,h=!0,d=!1){const p=o===t.TEXTURETYPE_FLOAT?2:o===t.TEXTURETYPE_HALF_FLOAT?1:0,_=this._engine.uniqueId;return new Promise(((t,s)=>{e.mapAsync(1,u,r).then((()=>{const s=e.getMappedRange(u,r);let _=c;if(d)_=null===_?l(o,r,!0,s):l(o,_.buffer,void 0,s);else if(null===_)switch(p){case 0:_=new Uint8Array(r),_.set(new Uint8Array(s));break;case 1:_=this._getHalfFloatAsFloatRGBAArrayBuffer(r/2,s);break;case 2:_=new Float32Array(r/4),_.set(new Float32Array(s))}else switch(p){case 0:_=new Uint8Array(_.buffer),_.set(new Uint8Array(s));break;case 1:_=this._getHalfFloatAsFloatRGBAArrayBuffer(r/2,s,c);break;case 2:_=new Float32Array(_.buffer),_.set(new Float32Array(s))}if(i!==a){1!==p||d||(i*=2,a*=2);const e=new Uint8Array(_.buffer);let t=i,r=0;for(let s=1;s<n;++s){r=s*a;for(let s=0;s<i;++s)e[t++]=e[r++]}_=0===p||d?new Uint8Array(e.buffer,0,t):new Float32Array(e.buffer,0,t/4)}e.unmap(),h&&this.releaseBuffer(e),t(_)}),(e=>{this._engine.isDisposed||this._engine.uniqueId!==_?t(new Uint8Array):s(e)}))}))}releaseBuffer(e){return Ke._IsGPUBuffer(e)?(this._deferredReleaseBuffers.push(e),!0):(e.references--,0===e.references&&(this._deferredReleaseBuffers.push(e.underlyingResource),!0))}destroyDeferredBuffers(){for(let e=0;e<this._deferredReleaseBuffers.length;++e)this._deferredReleaseBuffers[e].destroy();this._deferredReleaseBuffers.length=0}}const je=[0,0,3,7,0,2,6,2,4,1,5,3,1],Je=[0,64,32,96,16,80,48,112,8],Ze=[0,128,128,0,0,0,0,128,0,0,0,0,128];class et{constructor(e){this._samplers={},this._device=e,this.disabled=!1}static GetSamplerHashCode(e){const t=e._cachedAnisotropicFilteringLevel?e._cachedAnisotropicFilteringLevel:1;return je[e.samplingMode]+Je[(e._comparisonFunction||514)-512+1]+Ze[e.samplingMode]+((e._cachedWrapU??1)<<8)+((e._cachedWrapV??1)<<10)+((e._cachedWrapR??1)<<12)+((e.useMipMaps?1:0)<<14)+(t<<15)}static _GetSamplerFilterDescriptor(e,r){let s,n,i,a,o;const u=e.useMipMaps;switch(e.samplingMode){case t.TEXTURE_LINEAR_LINEAR_MIPNEAREST:s="linear",n="linear",i="nearest",u||(a=o=0);break;case t.TEXTURE_LINEAR_LINEAR_MIPLINEAR:case t.TEXTURE_TRILINEAR_SAMPLINGMODE:s="linear",n="linear",u?i="linear":(i="nearest",a=o=0);break;case t.TEXTURE_NEAREST_NEAREST_MIPLINEAR:s="nearest",n="nearest",u?i="linear":(i="nearest",a=o=0);break;case t.TEXTURE_NEAREST_NEAREST_MIPNEAREST:s="nearest",n="nearest",i="nearest",u||(a=o=0);break;case t.TEXTURE_NEAREST_LINEAR_MIPNEAREST:s="nearest",n="linear",i="nearest",u||(a=o=0);break;case t.TEXTURE_NEAREST_LINEAR_MIPLINEAR:s="nearest",n="linear",u?i="linear":(i="nearest",a=o=0);break;case t.TEXTURE_NEAREST_LINEAR:s="nearest",n="linear",i="nearest",a=o=0;break;case t.TEXTURE_NEAREST_NEAREST:case t.TEXTURE_NEAREST_SAMPLINGMODE:s="nearest",n="nearest",i="nearest",a=o=0;break;case t.TEXTURE_LINEAR_NEAREST_MIPNEAREST:s="linear",n="nearest",i="nearest",u||(a=o=0);break;case t.TEXTURE_LINEAR_NEAREST_MIPLINEAR:s="linear",n="nearest",u?i="linear":(i="nearest",a=o=0);break;case t.TEXTURE_LINEAR_LINEAR:case t.TEXTURE_BILINEAR_SAMPLINGMODE:s="linear",n="linear",i="nearest",a=o=0;break;case t.TEXTURE_LINEAR_NEAREST:s="linear",n="nearest",i="nearest",a=o=0;break;default:s="nearest",n="nearest",i="nearest",a=o=0}return r>1&&(0!==a||0!==o)&&"nearest"!==i?{magFilter:"linear",minFilter:"linear",mipmapFilter:"linear",anisotropyEnabled:!0}:{magFilter:s,minFilter:n,mipmapFilter:i,lodMinClamp:a,lodMaxClamp:o}}static _GetWrappingMode(e){switch(e){case t.TEXTURE_WRAP_ADDRESSMODE:return"repeat";case t.TEXTURE_CLAMP_ADDRESSMODE:return"clamp-to-edge";case t.TEXTURE_MIRROR_ADDRESSMODE:return"mirror-repeat"}return"repeat"}static _GetSamplerWrappingDescriptor(e){return{addressModeU:this._GetWrappingMode(e._cachedWrapU),addressModeV:this._GetWrappingMode(e._cachedWrapV),addressModeW:this._GetWrappingMode(e._cachedWrapR)}}static _GetSamplerDescriptor(e,t){const r=e.useMipMaps&&e._cachedAnisotropicFilteringLevel?e._cachedAnisotropicFilteringLevel:1,s=this._GetSamplerFilterDescriptor(e,r);return{label:t,...s,...this._GetSamplerWrappingDescriptor(e),compare:e._comparisonFunction?et.GetCompareFunction(e._comparisonFunction):void 0,maxAnisotropy:s.anisotropyEnabled?r:1}}static GetCompareFunction(e){switch(e){case t.ALWAYS:return"always";case t.EQUAL:return"equal";case t.GREATER:return"greater";case t.GEQUAL:return"greater-equal";case t.LESS:return"less";case t.LEQUAL:return"less-equal";case t.NEVER:return"never";case t.NOTEQUAL:return"not-equal";default:return"less"}}getSampler(e,t=!1,r=0,s){if(this.disabled)return this._device.createSampler(et._GetSamplerDescriptor(e,s));t?r=0:0===r&&(r=et.GetSamplerHashCode(e));let n=t?void 0:this._samplers[r];return n||(n=this._device.createSampler(et._GetSamplerDescriptor(e,s)),t||(this._samplers[r]=n)),n}}const tt={[d.PositionKind]:!0,[d.NormalKind]:!0,[d.TangentKind]:!0,[d.UVKind]:!0,[d.UV2Kind]:!0,[d.UV3Kind]:!0,[d.UV4Kind]:!0,[d.UV5Kind]:!0,[d.UV6Kind]:!0,[d.ColorKind]:!0,[d.ColorInstanceKind]:!0,[d.MatricesIndicesKind]:!0,[d.MatricesWeightsKind]:!0,[d.MatricesIndicesExtraKind]:!0,[d.MatricesWeightsExtraKind]:!0};function rt(e){switch(e){case d.BYTE:case d.SHORT:case d.INT:case d.FLOAT:return!0;case d.UNSIGNED_BYTE:case d.UNSIGNED_SHORT:case d.UNSIGNED_INT:return!1;default:throw new Error(`Invalid type '${e}'`)}}var st;!function(e){e[e.StencilReadMask=0]="StencilReadMask",e[e.StencilWriteMask=1]="StencilWriteMask",e[e.DepthBias=2]="DepthBias",e[e.DepthBiasSlopeScale=3]="DepthBiasSlopeScale",e[e.DepthStencilState=4]="DepthStencilState",e[e.MRTAttachments1=5]="MRTAttachments1",e[e.MRTAttachments2=6]="MRTAttachments2",e[e.RasterizationState=7]="RasterizationState",e[e.ColorStates=8]="ColorStates",e[e.ShaderStage=9]="ShaderStage",e[e.TextureStage=10]="TextureStage",e[e.VertexState=11]="VertexState",e[e.NumStates=12]="NumStates"}(st||(st={}));const nt={0:1,1:2,768:3,769:4,770:5,771:6,772:7,773:8,774:9,775:10,776:11,32769:12,32770:13,32771:12,32772:13},it={0:0,7680:1,7681:2,7682:3,7683:4,5386:5,34055:6,34056:7};class at{constructor(e,t){this.mrtTextureCount=0,this._device=e,this._useTextureStage=!0,this._states=new Array(30),this._statesLength=0,this._stateDirtyLowestIndex=0,this._emptyVertexBuffer=t,this._mrtFormats=[],this._parameter={token:void 0,pipeline:null},this.disabled=!1,this.vertexBuffers=[],this._kMaxVertexBufferStride=e.limits.maxVertexBufferArrayStride||2048,this.reset()}reset(){this._isDirty=!0,this.vertexBuffers.length=0,this.setAlphaToCoverage(!1),this.resetDepthCullingState(),this.setClampDepth(!1),this.setDepthBias(0),this._webgpuColorFormat=["bgra8unorm"],this.setColorFormat("bgra8unorm"),this.setMRT([]),this.setAlphaBlendEnabled(!1),this.setAlphaBlendFactors([null,null,null,null],[null,null]),this.setWriteMask(15),this.setDepthStencilFormat("depth24plus-stencil8"),this.setStencilEnabled(!1),this.resetStencilState(),this.setBuffers(null,null,null),this._setTextureState(0)}get colorFormats(){return this._mrtAttachments1>0?this._mrtFormats:this._webgpuColorFormat}getRenderPipeline(e,t,r,s=0){if(r=O.GetSample(r),this.disabled){const n=at._GetTopology(e);return this._setVertexState(t),this._setTextureState(s),this._parameter.pipeline=this._createRenderPipeline(t,n,r),at.NumCacheMiss++,at._NumPipelineCreationCurrentFrame++,this._parameter.pipeline}if(this._setShaderStage(t.uniqueId),this._setRasterizationState(e,r),this._setColorStates(),this._setDepthStencilState(),this._setVertexState(t),this._setTextureState(s),this.lastStateDirtyLowestIndex=this._stateDirtyLowestIndex,!this._isDirty&&this._parameter.pipeline)return this._stateDirtyLowestIndex=this._statesLength,at.NumCacheHitWithoutHash++,this._parameter.pipeline;if(this._getRenderPipeline(this._parameter),this._isDirty=!1,this._stateDirtyLowestIndex=this._statesLength,this._parameter.pipeline)return at.NumCacheHitWithHash++,this._parameter.pipeline;const n=at._GetTopology(e);return this._parameter.pipeline=this._createRenderPipeline(t,n,r),this._setRenderPipeline(this._parameter),at.NumCacheMiss++,at._NumPipelineCreationCurrentFrame++,this._parameter.pipeline}endFrame(){at.NumPipelineCreationLastFrame=at._NumPipelineCreationCurrentFrame,at._NumPipelineCreationCurrentFrame=0}setAlphaToCoverage(e){this._alphaToCoverageEnabled=e}setFrontFace(e){this._frontFace=e}setCullEnabled(e){this._cullEnabled=e}setCullFace(e){this._cullFace=e}setClampDepth(e){this._clampDepth=e}resetDepthCullingState(){this.setDepthCullingState(!1,2,1,0,0,!0,!0,t.ALWAYS)}setDepthCullingState(e,r,s,n,i,a,o,u){this._depthWriteEnabled=o,this._depthTestEnabled=a,this._depthCompare=(u??t.ALWAYS)-512,this._cullFace=s,this._cullEnabled=e,this._frontFace=r,this.setDepthBiasSlopeScale(n),this.setDepthBias(i)}setDepthBias(e){this._depthBias!==e&&(this._depthBias=e,this._states[st.DepthBias]=e,this._isDirty=!0,this._stateDirtyLowestIndex=Math.min(this._stateDirtyLowestIndex,st.DepthBias))}setDepthBiasSlopeScale(e){this._depthBiasSlopeScale!==e&&(this._depthBiasSlopeScale=e,this._states[st.DepthBiasSlopeScale]=e,this._isDirty=!0,this._stateDirtyLowestIndex=Math.min(this._stateDirtyLowestIndex,st.DepthBiasSlopeScale))}setColorFormat(e){this._webgpuColorFormat[0]=e,this._colorFormat=qe[e??""]}setMRTAttachments(e){this.mrtAttachments=e;let t=0;for(let r=0;r<e.length;++r)0!==e[r]&&(t+=1<<r);this._mrtEnabledMask!==t&&(this._mrtEnabledMask=t,this._isDirty=!0,this._stateDirtyLowestIndex=Math.min(this._stateDirtyLowestIndex,st.MRTAttachments1))}setMRT(e,t){if((t=t??e.length)>10)throw"Can't handle more than 10 attachments for a MRT in cache render pipeline!";this.mrtTextureArray=e,this.mrtTextureCount=t,this._mrtEnabledMask=65535;const r=[0,0];let s=0,n=0,i=0;for(let a=0;a<t;++a){const t=e[a],o=t?._hardwareTexture;this._mrtFormats[i]=o?.format??this._webgpuColorFormat[0],r[s]+=qe[this._mrtFormats[i]??""]<<n,n+=6,i++,n>=32&&(n=0,s++)}this._mrtFormats.length=i,this._mrtAttachments1===r[0]&&this._mrtAttachments2===r[1]||(this._mrtAttachments1=r[0],this._mrtAttachments2=r[1],this._states[st.MRTAttachments1]=r[0],this._states[st.MRTAttachments2]=r[1],this._isDirty=!0,this._stateDirtyLowestIndex=Math.min(this._stateDirtyLowestIndex,st.MRTAttachments1))}setAlphaBlendEnabled(e){this._alphaBlendEnabled=e}setAlphaBlendFactors(e,t){this._alphaBlendFuncParams=e,this._alphaBlendEqParams=t}setWriteMask(e){this._writeMask=e}setDepthStencilFormat(e){this._webgpuDepthStencilFormat=e,this._depthStencilFormat=void 0===e?0:qe[e]}setDepthTestEnabled(e){this._depthTestEnabled=e}setDepthWriteEnabled(e){this._depthWriteEnabled=e}setDepthCompare(e){this._depthCompare=(e??t.ALWAYS)-512}setStencilEnabled(e){this._stencilEnabled=e}setStencilCompare(e){this._stencilFrontCompare=(e??t.ALWAYS)-512}setStencilDepthFailOp(e){this._stencilFrontDepthFailOp=null===e?1:it[e]}setStencilPassOp(e){this._stencilFrontPassOp=null===e?2:it[e]}setStencilFailOp(e){this._stencilFrontFailOp=null===e?1:it[e]}setStencilReadMask(e){this._stencilReadMask!==e&&(this._stencilReadMask=e,this._states[st.StencilReadMask]=e,this._isDirty=!0,this._stateDirtyLowestIndex=Math.min(this._stateDirtyLowestIndex,st.StencilReadMask))}setStencilWriteMask(e){this._stencilWriteMask!==e&&(this._stencilWriteMask=e,this._states[st.StencilWriteMask]=e,this._isDirty=!0,this._stateDirtyLowestIndex=Math.min(this._stateDirtyLowestIndex,st.StencilWriteMask))}resetStencilState(){this.setStencilState(!1,t.ALWAYS,t.KEEP,t.REPLACE,t.KEEP,255,255)}setStencilState(e,r,s,n,i,a,o){this._stencilEnabled=e,this._stencilFrontCompare=(r??t.ALWAYS)-512,this._stencilFrontDepthFailOp=null===s?1:it[s],this._stencilFrontPassOp=null===n?2:it[n],this._stencilFrontFailOp=null===i?1:it[i],this.setStencilReadMask(a),this.setStencilWriteMask(o)}setBuffers(e,t,r){this._vertexBuffers=e,this._overrideVertexBuffers=r,this._indexBuffer=t}static _GetTopology(e){switch(e){case t.MATERIAL_TriangleFillMode:return"triangle-list";case t.MATERIAL_PointFillMode:return"point-list";case t.MATERIAL_WireFrameFillMode:return"line-list";case t.MATERIAL_PointListDrawMode:return"point-list";case t.MATERIAL_LineListDrawMode:return"line-list";case t.MATERIAL_LineLoopDrawMode:throw"LineLoop is an unsupported fillmode in WebGPU";case t.MATERIAL_LineStripDrawMode:return"line-strip";case t.MATERIAL_TriangleStripDrawMode:return"triangle-strip";case t.MATERIAL_TriangleFanDrawMode:throw"TriangleFan is an unsupported fillmode in WebGPU";default:return"triangle-list"}}static _GetAphaBlendOperation(e){switch(e){case t.GL_ALPHA_EQUATION_ADD:return"add";case t.GL_ALPHA_EQUATION_SUBTRACT:return"subtract";case t.GL_ALPHA_EQUATION_REVERSE_SUBTRACT:return"reverse-subtract";case t.GL_ALPHA_EQUATION_MIN:return"min";case t.GL_ALPHA_EQUATION_MAX:return"max";default:return"add"}}static _GetAphaBlendFactor(e){switch(e){case 0:return"zero";case 1:return"one";case t.GL_ALPHA_FUNCTION_SRC:return"src";case t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR:return"one-minus-src";case t.GL_ALPHA_FUNCTION_SRC_ALPHA:return"src-alpha";case t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA:return"one-minus-src-alpha";case t.GL_ALPHA_FUNCTION_DST_ALPHA:return"dst-alpha";case t.GL_ALPHA_FUNCTION_ONE_MINUS_DST_ALPHA:return"one-minus-dst-alpha";case t.GL_ALPHA_FUNCTION_DST_COLOR:return"dst";case t.GL_ALPHA_FUNCTION_ONE_MINUS_DST_COLOR:return"one-minus-dst";case t.GL_ALPHA_FUNCTION_SRC_ALPHA_SATURATED:return"src-alpha-saturated";case t.GL_ALPHA_FUNCTION_CONSTANT_COLOR:return"constant";case t.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_COLOR:return"one-minus-constant";case t.GL_ALPHA_FUNCTION_CONSTANT_ALPHA:return"constant";case t.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_ALPHA:return"one-minus-constant";case t.GL_ALPHA_FUNCTION_SRC1_COLOR:return"src1";case t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_COLOR:return"one-minus-src1";case t.GL_ALPHA_FUNCTION_SRC1_ALPHA:return"src1-alpha";case t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_ALPHA:return"one-minus-src1-alpha";default:return"one"}}static _GetCompareFunction(e){switch(e){case 0:return"never";case 1:return"less";case 2:return"equal";case 3:return"less-equal";case 4:return"greater";case 5:return"not-equal";case 6:return"greater-equal";case 7:return"always"}return"never"}static _GetStencilOpFunction(e){switch(e){case 0:return"zero";case 1:return"keep";case 2:return"replace";case 3:return"increment-clamp";case 4:return"decrement-clamp";case 5:return"invert";case 6:return"increment-wrap";case 7:return"decrement-wrap"}return"keep"}static _GetVertexInputDescriptorFormat(e){const t=e.type,r=e.normalized,s=e.getSize();switch(t){case d.BYTE:switch(s){case 1:case 2:return r?"snorm8x2":"sint8x2";case 3:case 4:return r?"snorm8x4":"sint8x4"}break;case d.UNSIGNED_BYTE:switch(s){case 1:case 2:return r?"unorm8x2":"uint8x2";case 3:case 4:return r?"unorm8x4":"uint8x4"}break;case d.SHORT:switch(s){case 1:case 2:return r?"snorm16x2":"sint16x2";case 3:case 4:return r?"snorm16x4":"sint16x4"}break;case d.UNSIGNED_SHORT:switch(s){case 1:case 2:return r?"unorm16x2":"uint16x2";case 3:case 4:return r?"unorm16x4":"uint16x4"}break;case d.INT:switch(s){case 1:return"sint32";case 2:return"sint32x2";case 3:return"sint32x3";case 4:return"sint32x4"}break;case d.UNSIGNED_INT:switch(s){case 1:return"uint32";case 2:return"uint32x2";case 3:return"uint32x3";case 4:return"uint32x4"}break;case d.FLOAT:switch(s){case 1:return"float32";case 2:return"float32x2";case 3:return"float32x3";case 4:return"float32x4"}}throw new Error(`Invalid Format '${e.getKind()}' - type=${t}, normalized=${r}, size=${s}`)}_getAphaBlendState(){return this._alphaBlendEnabled?{srcFactor:at._GetAphaBlendFactor(this._alphaBlendFuncParams[2]),dstFactor:at._GetAphaBlendFactor(this._alphaBlendFuncParams[3]),operation:at._GetAphaBlendOperation(this._alphaBlendEqParams[1])}:null}_getColorBlendState(){return this._alphaBlendEnabled?{srcFactor:at._GetAphaBlendFactor(this._alphaBlendFuncParams[0]),dstFactor:at._GetAphaBlendFactor(this._alphaBlendFuncParams[1]),operation:at._GetAphaBlendOperation(this._alphaBlendEqParams[0])}:null}_setShaderStage(e){this._shaderId!==e&&(this._shaderId=e,this._states[st.ShaderStage]=e,this._isDirty=!0,this._stateDirtyLowestIndex=Math.min(this._stateDirtyLowestIndex,st.ShaderStage))}_setRasterizationState(e,t){const r=this._frontFace-1+((this._cullEnabled?this._cullFace:0)<<1)+((this._clampDepth?1:0)<<3)+((this._alphaToCoverageEnabled?1:0)<<4)+(e<<5)+(t<<8);this._rasterizationState!==r&&(this._rasterizationState=r,this._states[st.RasterizationState]=this._rasterizationState,this._isDirty=!0,this._stateDirtyLowestIndex=Math.min(this._stateDirtyLowestIndex,st.RasterizationState))}_setColorStates(){let e=((this._writeMask?1:0)<<22)+(this._colorFormat<<23)+((this._depthWriteEnabled?1:0)<<29);this._alphaBlendEnabled&&(e+=((null===this._alphaBlendFuncParams[0]?2:nt[this._alphaBlendFuncParams[0]])|0)+((null===this._alphaBlendFuncParams[1]?2:nt[this._alphaBlendFuncParams[1]])<<4)+((null===this._alphaBlendFuncParams[2]?2:nt[this._alphaBlendFuncParams[2]])<<8)+((null===this._alphaBlendFuncParams[3]?2:nt[this._alphaBlendFuncParams[3]])<<12)+((null===this._alphaBlendEqParams[0]?1:this._alphaBlendEqParams[0]-32773)<<16)+((null===this._alphaBlendEqParams[1]?1:this._alphaBlendEqParams[1]-32773)<<19)),e!==this._colorStates&&(this._colorStates=e,this._states[st.ColorStates]=this._colorStates,this._isDirty=!0,this._stateDirtyLowestIndex=Math.min(this._stateDirtyLowestIndex,st.ColorStates))}_setDepthStencilState(){const e=this._stencilEnabled?this._stencilFrontCompare+(this._stencilFrontDepthFailOp<<3)+(this._stencilFrontPassOp<<6)+(this._stencilFrontFailOp<<9):591,t=this._depthStencilFormat+((this._depthTestEnabled?this._depthCompare:7)<<6)+(e<<10);this._depthStencilState!==t&&(this._depthStencilState=t,this._states[st.DepthStencilState]=this._depthStencilState,this._isDirty=!0,this._stateDirtyLowestIndex=Math.min(this._stateDirtyLowestIndex,st.DepthStencilState))}_setVertexState(e){const t=this._statesLength;let r=st.VertexState;const s=e._pipelineContext,i=s.shaderProcessingContext.attributeNamesFromEffect,a=s.shaderProcessingContext.attributeLocationsFromEffect;let o,u=0;for(let e=0;e<i.length;e++){const t=a[e];let s=(this._overrideVertexBuffers&&this._overrideVertexBuffers[i[e]])??this._vertexBuffers[i[e]];s||(s=this._emptyVertexBuffer,at.LogErrorIfNoVertexBuffer&&n.Error(`No vertex buffer is provided for the "${i[e]}" attribute. A default empty vertex buffer will be used, but this may generate errors in some browsers.`));const c=s.effectiveBuffer?.underlyingResource;if(void 0===s._validOffsetRange){const e=s.effectiveByteOffset,t=s.getSize(!0),r=s.effectiveByteStride;s._validOffsetRange=e+t<=this._kMaxVertexBufferStride&&0===r||0!==r&&e+t<=r}o&&o===c&&s._validOffsetRange||(this.vertexBuffers[u++]=s,o=s._validOffsetRange?c:null);const h=s.hashCode+(t<<7);this._isDirty=this._isDirty||this._states[r]!==h,this._states[r++]=h}this.vertexBuffers.length=u,this._statesLength=r,this._isDirty=this._isDirty||r!==t,this._isDirty&&(this._stateDirtyLowestIndex=Math.min(this._stateDirtyLowestIndex,st.VertexState))}_setTextureState(e){this._textureState!==e&&(this._textureState=e,this._states[st.TextureStage]=this._textureState,this._isDirty=!0,this._stateDirtyLowestIndex=Math.min(this._stateDirtyLowestIndex,st.TextureStage))}_createPipelineLayout(e){if(this._useTextureStage)return this._createPipelineLayoutWithTextureStage(e);const t=[],r=e.shaderProcessingContext.bindGroupLayoutEntries;for(let e=0;e<r.length;e++){const s=r[e];t[e]=this._device.createBindGroupLayout({entries:s})}return e.bindGroupLayouts[0]=t,this._device.createPipelineLayout({bindGroupLayouts:t})}_createPipelineLayoutWithTextureStage(e){const r=e.shaderProcessingContext,s=r.bindGroupLayoutEntries;let n=1;for(let e=0;e<s.length;e++){const i=s[e];for(let a=0;a<i.length;a++){const i=s[e][a];if(i.texture){const a=r.bindGroupLayoutEntryInfo[e][i.binding].name,o=r.availableTextures[a],u=o.autoBindSampler?r.availableSamplers[a+t.AUTOSAMPLERSUFFIX]:null;let c=o.sampleType,h=u?.type??"filtering";if(this._textureState&n&&"depth"!==c&&(o.autoBindSampler&&(h="non-filtering"),c="unfilterable-float"),i.texture.sampleType=c,u){const e=r.bindGroupLayoutEntryInfo[u.binding.groupIndex][u.binding.bindingIndex].index;s[u.binding.groupIndex][e].sampler.type=h}n<<=1}}}const i=[];for(let e=0;e<s.length;++e)i[e]=this._device.createBindGroupLayout({entries:s[e]});return e.bindGroupLayouts[this._textureState]=i,this._device.createPipelineLayout({bindGroupLayouts:i})}_getVertexInputDescriptor(e){const t=[],r=e._pipelineContext,s=r.shaderProcessingContext.attributeNamesFromEffect,n=r.shaderProcessingContext.attributeLocationsFromEffect;let i,a;for(let e=0;e<s.length;e++){const r=n[e];let o=(this._overrideVertexBuffers&&this._overrideVertexBuffers[s[e]])??this._vertexBuffers[s[e]];o||(o=this._emptyVertexBuffer);let u=o.effectiveBuffer?.underlyingResource,c=o.effectiveByteOffset;const h=!o._validOffsetRange;if(!i||!a||i!==u||h){const e={arrayStride:o.effectiveByteStride,stepMode:o.getIsInstanced()?"instance":"vertex",attributes:[]};t.push(e),a=e.attributes,h&&(c=0,u=null)}a.push({shaderLocation:r,offset:c,format:at._GetVertexInputDescriptorFormat(o)}),i=u}return t}_createRenderPipeline(e,t,r){const s=e._pipelineContext,n=this._getVertexInputDescriptor(e),i=this._createPipelineLayout(s),a=[],o=this._getAphaBlendState(),u=this._getColorBlendState();if(this._vertexBuffers&&function(e,t){const r=t.getEngine(),s=t._pipelineContext;if(!s?.vertexBufferKindToType)return;let n=null;for(const i in e){const a=e[i];if(!a||!tt[i])continue;const o=a.normalized?d.FLOAT:a.type,u=s.vertexBufferKindToType[i];(o!==d.FLOAT&&void 0===u||void 0!==u&&u!==o)&&(n||(n=r._getShaderProcessingContext(t.shaderLanguage,!1)),s.vertexBufferKindToType[i]=o,o!==d.FLOAT&&(n.vertexBufferKindToNumberOfComponents[i]=d.DeduceStride(i),rt(o)&&(n.vertexBufferKindToNumberOfComponents[i]*=-1)))}if(n){const e=r._caps.parallelShaderCompile;r._caps.parallelShaderCompile=void 0,t._processShaderCodeAsync(null,r._features._checkNonFloatVertexBuffersDontRecreatePipelineContext,n),r._caps.parallelShaderCompile=e}}(this._vertexBuffers,e),this._mrtAttachments1>0)for(let e=0;e<this._mrtFormats.length;++e){const t=this._mrtFormats[e];if(t){const r={format:t,writeMask:this._mrtEnabledMask&1<<e?this._writeMask:0};o&&u&&(r.blend={alpha:o,color:u}),a.push(r)}else a.push(null)}else if(this._webgpuColorFormat[0]){const e={format:this._webgpuColorFormat[0],writeMask:this._writeMask};o&&u&&(e.blend={alpha:o,color:u}),a.push(e)}else a.push(null);const c={compare:at._GetCompareFunction(this._stencilEnabled?this._stencilFrontCompare:7),depthFailOp:at._GetStencilOpFunction(this._stencilEnabled?this._stencilFrontDepthFailOp:1),failOp:at._GetStencilOpFunction(this._stencilEnabled?this._stencilFrontFailOp:1),passOp:at._GetStencilOpFunction(this._stencilEnabled?this._stencilFrontPassOp:1)},h="triangle-list"===t||"triangle-strip"===t;let l;"line-strip"!==t&&"triangle-strip"!==t||(l=!this._indexBuffer||this._indexBuffer.is32Bits?"uint32":"uint16");const p=!!this._webgpuDepthStencilFormat&&O.HasStencilAspect(this._webgpuDepthStencilFormat);return this._device.createRenderPipeline({label:`RenderPipeline_${a[0]?.format??"nooutput"}_${this._webgpuDepthStencilFormat??"nodepth"}_samples${r}_textureState${this._textureState}`,layout:i,vertex:{module:s.stages.vertexStage.module,entryPoint:s.stages.vertexStage.entryPoint,buffers:n},primitive:{topology:t,stripIndexFormat:l,frontFace:1===this._frontFace?"ccw":"cw",cullMode:this._cullEnabled?2===this._cullFace?"front":"back":"none"},fragment:s.stages.fragmentStage?{module:s.stages.fragmentStage.module,entryPoint:s.stages.fragmentStage.entryPoint,targets:a}:void 0,multisample:{count:r},depthStencil:void 0===this._webgpuDepthStencilFormat?void 0:{depthWriteEnabled:this._depthWriteEnabled,depthCompare:this._depthTestEnabled?at._GetCompareFunction(this._depthCompare):"always",format:this._webgpuDepthStencilFormat,stencilFront:this._stencilEnabled&&p?c:void 0,stencilBack:this._stencilEnabled&&p?c:void 0,stencilReadMask:this._stencilEnabled&&p?this._stencilReadMask:void 0,stencilWriteMask:this._stencilEnabled&&p?this._stencilWriteMask:void 0,depthBias:this._depthBias,depthBiasClamp:h?this._depthBiasClamp:0,depthBiasSlopeScale:h?this._depthBiasSlopeScale:0}})}}at.LogErrorIfNoVertexBuffer=!1,at.NumCacheHitWithoutHash=0,at.NumCacheHitWithHash=0,at.NumCacheMiss=0,at.NumPipelineCreationLastFrame=0,at._NumPipelineCreationCurrentFrame=0;class ot{constructor(){this.values={}}count(){let e=0,t=this.pipeline?1:0;for(const r in this.values){const s=this.values[r],[n,i]=s.count();e+=n,t+=i,e++}return[e,t]}}class ut extends at{static GetNodeCounts(){const e=ut._Cache.count();return{nodeCount:e[0],pipelineCount:e[1]}}static _GetPipelines(e,t,r,s){if(e.pipeline){const e=r.slice();e.length=s,t.push(e)}for(const n in e.values){const i=e.values[n];r[s]=parseInt(n),ut._GetPipelines(i,t,r,s+1)}}static GetPipelines(){const e=[];return ut._GetPipelines(ut._Cache,e,[],0),e}static ResetCache(){ut._Cache=new ot}reset(){this._nodeStack=[],this._nodeStack[0]=ut._Cache,super.reset()}_getRenderPipeline(e){let t=this._nodeStack[this._stateDirtyLowestIndex];for(let e=this._stateDirtyLowestIndex;e<this._statesLength;++e){let r=t.values[this._states[e]];r||(r=new ot,t.values[this._states[e]]=r),t=r,this._nodeStack[e+1]=t}e.token=t,e.pipeline=t.pipeline}_setRenderPipeline(e){e.token.pipeline=e.pipeline}}ut._Cache=new ot;class ct extends p{constructor(e){super(!1),this._cache=e,this.reset()}get func(){return this._func}set func(e){this._func!==e&&(this._func=e,this._cache.setStencilCompare(e))}get funcMask(){return this._funcMask}set funcMask(e){this._funcMask!==e&&(this._funcMask=e,this._cache.setStencilReadMask(e))}get opStencilFail(){return this._opStencilFail}set opStencilFail(e){this._opStencilFail!==e&&(this._opStencilFail=e,this._cache.setStencilFailOp(e))}get opDepthFail(){return this._opDepthFail}set opDepthFail(e){this._opDepthFail!==e&&(this._opDepthFail=e,this._cache.setStencilDepthFailOp(e))}get opStencilDepthPass(){return this._opStencilDepthPass}set opStencilDepthPass(e){this._opStencilDepthPass!==e&&(this._opStencilDepthPass=e,this._cache.setStencilPassOp(e))}get mask(){return this._mask}set mask(e){this._mask!==e&&(this._mask=e,this._cache.setStencilWriteMask(e))}get enabled(){return this._enabled}set enabled(e){this._enabled!==e&&(this._enabled=e,this._cache.setStencilEnabled(e))}reset(){super.reset(),this._cache.resetStencilState()}apply(){const e=this.stencilMaterial?.enabled;this.enabled=e?this.stencilMaterial.enabled:this.stencilGlobal.enabled,this.enabled&&(this.func=e?this.stencilMaterial.func:this.stencilGlobal.func,this.funcRef=e?this.stencilMaterial.funcRef:this.stencilGlobal.funcRef,this.funcMask=e?this.stencilMaterial.funcMask:this.stencilGlobal.funcMask,this.opStencilFail=e?this.stencilMaterial.opStencilFail:this.stencilGlobal.opStencilFail,this.opDepthFail=e?this.stencilMaterial.opDepthFail:this.stencilGlobal.opDepthFail,this.opStencilDepthPass=e?this.stencilMaterial.opStencilDepthPass:this.stencilGlobal.opStencilDepthPass,this.mask=e?this.stencilMaterial.mask:this.stencilGlobal.mask)}}class ht extends _{constructor(e){super(!1),this._cache=e,this.reset()}get zOffset(){return this._zOffset}set zOffset(e){this._zOffset!==e&&(this._zOffset=e,this._isZOffsetDirty=!0,this._cache.setDepthBiasSlopeScale(e))}get zOffsetUnits(){return this._zOffsetUnits}set zOffsetUnits(e){this._zOffsetUnits!==e&&(this._zOffsetUnits=e,this._isZOffsetDirty=!0,this._cache.setDepthBias(e))}get cullFace(){return this._cullFace}set cullFace(e){this._cullFace!==e&&(this._cullFace=e,this._isCullFaceDirty=!0,this._cache.setCullFace(e??1))}get cull(){return this._cull}set cull(e){this._cull!==e&&(this._cull=e,this._isCullDirty=!0,this._cache.setCullEnabled(!!e))}get depthFunc(){return this._depthFunc}set depthFunc(e){this._depthFunc!==e&&(this._depthFunc=e,this._isDepthFuncDirty=!0,this._cache.setDepthCompare(e))}get depthMask(){return this._depthMask}set depthMask(e){this._depthMask!==e&&(this._depthMask=e,this._isDepthMaskDirty=!0,this._cache.setDepthWriteEnabled(e))}get depthTest(){return this._depthTest}set depthTest(e){this._depthTest!==e&&(this._depthTest=e,this._isDepthTestDirty=!0,this._cache.setDepthTestEnabled(e))}get frontFace(){return this._frontFace}set frontFace(e){this._frontFace!==e&&(this._frontFace=e,this._isFrontFaceDirty=!0,this._cache.setFrontFace(e??2))}reset(){super.reset(),this._cache.resetDepthCullingState()}apply(){}}class lt{static IsExternalTexture(e){return void 0!==e.underlyingResource}getClassName(){return"ExternalTexture"}get underlyingResource(){return this._video}constructor(e){this.useMipMaps=!1,this.type=t.TEXTURETYPE_UNDEFINED,this.format=t.TEXTUREFORMAT_UNDEFINED,this._video=e,this.uniqueId=g._Counter++}isReady(){return this._video.readyState>=this._video.HAVE_CURRENT_DATA}dispose(){}}class dt{get forceBindGroupCreation(){return this._numExternalTextures>0}get hasFloatOrDepthTextures(){return this._numFloatOrDepthTextures>0}constructor(){this.uniqueId=dt._Counter++,this.updateId=0,this.textureState=0,this.reset()}reset(){this.samplers={},this.textures={},this.isDirty=!0,this._numFloatOrDepthTextures=0,this._numExternalTextures=0}setSampler(e,t){let r=this.samplers[e],s=-1;r?s=r.hashCode:this.samplers[e]=r={sampler:t,hashCode:0},r.sampler=t,r.hashCode=t?et.GetSamplerHashCode(t):0;const n=s!==r.hashCode;n&&this.updateId++,this.isDirty||=n}setTexture(e,r){let s=this.textures[e],n=-1;s?n=s.texture?.uniqueId??-1:this.textures[e]=s={texture:r,isFloatOrDepthTexture:!1,isExternalTexture:!1},s.isExternalTexture&&this._numExternalTextures--,s.isFloatOrDepthTexture&&this._numFloatOrDepthTextures--,r?(s.isFloatOrDepthTexture=r.type===t.TEXTURETYPE_FLOAT||r.format>=t.TEXTUREFORMAT_DEPTH24_STENCIL8&&r.format<=t.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8,s.isExternalTexture=lt.IsExternalTexture(r),s.isFloatOrDepthTexture&&this._numFloatOrDepthTextures++,s.isExternalTexture&&this._numExternalTextures++):(s.isFloatOrDepthTexture=!1,s.isExternalTexture=!1),s.texture=r;const i=n!==(r?.uniqueId??-1);i&&this.updateId++,this.isDirty||=i}}dt._Counter=0;class pt{isDirty(e){return this._isDirty||this._materialContextUpdateId!==e}resetIsDirty(e){this._isDirty=!1,this._materialContextUpdateId=e}get useInstancing(){return this._useInstancing}set useInstancing(e){this._useInstancing!==e&&(e?(this.indirectDrawBuffer=this._bufferManager.createRawBuffer(20,H.CopyDst|H.Indirect|H.Storage,void 0,"IndirectDrawBuffer"),this._indirectDrawData=new Uint32Array(5),this._indirectDrawData[3]=0,this._indirectDrawData[4]=0):(this.indirectDrawBuffer&&this._bufferManager.releaseBuffer(this.indirectDrawBuffer),this.indirectDrawBuffer=void 0,this._indirectDrawData=void 0),this._useInstancing=e,this._currentInstanceCount=-1)}constructor(e){this._bufferManager=e,this.uniqueId=pt._Counter++,this._useInstancing=!1,this._currentInstanceCount=0,this.reset()}reset(){this.buffers={},this._isDirty=!0,this._materialContextUpdateId=0,this.fastBundle=void 0,this.bindGroups=void 0}setBuffer(e,t){this._isDirty||=t?.uniqueId!==this.buffers[e]?.uniqueId,this.buffers[e]=t}setIndirectData(e,t,r){t!==this._currentInstanceCount&&this.indirectDrawBuffer&&this._indirectDrawData&&(this._currentInstanceCount=t,this._indirectDrawData[0]=e,this._indirectDrawData[1]=t,this._indirectDrawData[2]=r,this._bufferManager.setRawData(this.indirectDrawBuffer,0,this._indirectDrawData,0,20))}dispose(){this.indirectDrawBuffer&&(this._bufferManager.releaseBuffer(this.indirectDrawBuffer),this.indirectDrawBuffer=void 0,this._indirectDrawData=void 0),this.fastBundle=void 0,this.bindGroups=void 0,this.buffers=void 0}}pt._Counter=0;const _t=2**35;class gt{constructor(){this.values={}}}class ft{static get Statistics(){return{totalCreated:ft.NumBindGroupsCreatedTotal,lastFrameCreated:ft.NumBindGroupsCreatedLastFrame,lookupLastFrame:ft.NumBindGroupsLookupLastFrame,noLookupLastFrame:ft.NumBindGroupsNoLookupLastFrame}}static ResetCache(){ft._Cache=new gt,ft.NumBindGroupsCreatedTotal=0,ft.NumBindGroupsCreatedLastFrame=0,ft.NumBindGroupsLookupLastFrame=0,ft.NumBindGroupsNoLookupLastFrame=0,ft._NumBindGroupsCreatedCurrentFrame=0,ft._NumBindGroupsLookupCurrentFrame=0,ft._NumBindGroupsNoLookupCurrentFrame=0}constructor(e,t,r){this.disabled=!1,this._device=e,this._cacheSampler=t,this._engine=r}endFrame(){ft.NumBindGroupsCreatedLastFrame=ft._NumBindGroupsCreatedCurrentFrame,ft.NumBindGroupsLookupLastFrame=ft._NumBindGroupsLookupCurrentFrame,ft.NumBindGroupsNoLookupLastFrame=ft._NumBindGroupsNoLookupCurrentFrame,ft._NumBindGroupsCreatedCurrentFrame=0,ft._NumBindGroupsLookupCurrentFrame=0,ft._NumBindGroupsNoLookupCurrentFrame=0}getBindGroups(e,t,r){let s,i=ft._Cache;const a=this.disabled||r.forceBindGroupCreation;if(!a){if(!t.isDirty(r.updateId)&&!r.isDirty)return ft._NumBindGroupsNoLookupCurrentFrame++,t.bindGroups;for(const r of e.shaderProcessingContext.bufferNames){const e=(t.buffers[r]?.uniqueId??0)+1048576;let s=i.values[e];s||(s=new gt,i.values[e]=s),i=s}for(const t of e.shaderProcessingContext.samplerNames){const e=r.samplers[t]?.hashCode??0;let s=i.values[e];s||(s=new gt,i.values[e]=s),i=s}for(const t of e.shaderProcessingContext.textureNames){const e=(r.textures[t]?.texture?.uniqueId??0)+_t;let s=i.values[e];s||(s=new gt,i.values[e]=s),i=s}s=i.bindGroups}if(t.resetIsDirty(r.updateId),r.isDirty=!1,s)return t.bindGroups=s,ft._NumBindGroupsLookupCurrentFrame++,s;s=[],t.bindGroups=s,a||(i.bindGroups=s),ft.NumBindGroupsCreatedTotal++,ft._NumBindGroupsCreatedCurrentFrame++;const o=e.bindGroupLayouts[r.textureState];for(let i=0;i<e.shaderProcessingContext.bindGroupLayoutEntries.length;i++){const a=e.shaderProcessingContext.bindGroupLayoutEntries[i],u=e.shaderProcessingContext.bindGroupEntries[i];for(let s=0;s<a.length;s++){const a=e.shaderProcessingContext.bindGroupLayoutEntries[i][s],o=e.shaderProcessingContext.bindGroupLayoutEntryInfo[i][a.binding],c=o.nameInArrayOfTexture??o.name;if(a.sampler){const e=r.samplers[c];if(e){const t=e.sampler;if(!t){this._engine.dbgSanityChecks&&n.Error(`Trying to bind a null sampler! entry=${JSON.stringify(a)}, name=${c}, bindingInfo=${JSON.stringify(e,((e,t)=>"texture"===e?"<no dump>":t))}, materialContext.uniqueId=${r.uniqueId}`,50);continue}u[s].resource=this._cacheSampler.getSampler(t,!1,e.hashCode,t.label)}else n.Error(`Sampler "${c}" could not be bound. entry=${JSON.stringify(a)}, materialContext=${JSON.stringify(r,((e,t)=>"texture"===e||"sampler"===e?"<no dump>":t))}`,50)}else if(a.texture||a.storageTexture){const e=r.textures[c];if(e){if(this._engine.dbgSanityChecks&&null===e.texture){n.Error(`Trying to bind a null texture! entry=${JSON.stringify(a)}, bindingInfo=${JSON.stringify(e,((e,t)=>"texture"===e?"<no dump>":t))}, materialContext.uniqueId=${r.uniqueId}`,50);continue}const t=e.texture._hardwareTexture;if(this._engine.dbgSanityChecks&&(!t||a.texture&&!t.view||a.storageTexture&&!t.viewForWriting)){n.Error(`Trying to bind a null gpu texture or view! entry=${JSON.stringify(a)}, name=${c}, bindingInfo=${JSON.stringify(e,((e,t)=>"texture"===e?"<no dump>":t))}, isReady=${e.texture?.isReady}, materialContext.uniqueId=${r.uniqueId}`,50);continue}u[s].resource=a.storageTexture?t.viewForWriting:t.view}else n.Error(`Texture "${c}" could not be bound. entry=${JSON.stringify(a)}, materialContext=${JSON.stringify(r,((e,t)=>"texture"===e||"sampler"===e?"<no dump>":t))}`,50)}else if(a.externalTexture){const e=r.textures[c];if(e){if(this._engine.dbgSanityChecks&&null===e.texture){n.Error(`Trying to bind a null external texture! entry=${JSON.stringify(a)}, name=${c}, bindingInfo=${JSON.stringify(e,((e,t)=>"texture"===e?"<no dump>":t))}, materialContext.uniqueId=${r.uniqueId}`,50);continue}const t=e.texture.underlyingResource;if(this._engine.dbgSanityChecks&&!t){n.Error(`Trying to bind a null gpu external texture! entry=${JSON.stringify(a)}, name=${c}, bindingInfo=${JSON.stringify(e,((e,t)=>"texture"===e?"<no dump>":t))}, isReady=${e.texture?.isReady}, materialContext.uniqueId=${r.uniqueId}`,50);continue}u[s].resource=this._device.importExternalTexture({source:t})}else n.Error(`Texture "${c}" could not be bound. entry=${JSON.stringify(a)}, materialContext=${JSON.stringify(r,((e,t)=>"texture"===e||"sampler"===e?"<no dump>":t))}`,50)}else if(a.buffer){const e=t.buffers[c];if(e){const t=e.underlyingResource;u[s].resource.buffer=t,u[s].resource.size=e.capacity}else n.Error(`Can't find buffer "${c}". entry=${JSON.stringify(a)}, buffers=${JSON.stringify(t.buffers)}, drawContext.uniqueId=${t.uniqueId}`,50)}}const c=o[i];s[i]=this._device.createBindGroup({layout:c,entries:u})}return s}}ft.NumBindGroupsCreatedTotal=0,ft.NumBindGroupsCreatedLastFrame=0,ft.NumBindGroupsLookupLastFrame=0,ft.NumBindGroupsNoLookupLastFrame=0,ft._Cache=new gt,ft._NumBindGroupsCreatedCurrentFrame=0,ft._NumBindGroupsLookupCurrentFrame=0,ft._NumBindGroupsNoLookupCurrentFrame=0;f.ShadersStoreWGSL.clearQuadVertexShader="uniform depthValue: f32;const pos=array(\nvec2f(-1.0,1.0),\nvec2f(1.0,1.0),\nvec2f(-1.0,-1.0),\nvec2f(1.0,-1.0)\n);\n#define CUSTOM_VERTEX_DEFINITIONS\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {\n#define CUSTOM_VERTEX_MAIN_BEGIN\nvertexOutputs.position=vec4f(pos[input.vertexIndex],uniforms.depthValue,1.0);\n#define CUSTOM_VERTEX_MAIN_END\n}\n";f.ShadersStoreWGSL.clearQuadPixelShader="uniform color: vec4f;@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {fragmentOutputs.color=uniforms.color;}\n";class mt{setDepthStencilFormat(e){this._depthTextureFormat=e,this._cacheRenderPipeline.setDepthStencilFormat(e)}setColorFormat(e){this._cacheRenderPipeline.setColorFormat(e)}setMRTAttachments(e,t,r){this._cacheRenderPipeline.setMRT(t,r),this._cacheRenderPipeline.setMRTAttachments(e)}constructor(e,t,r){this._bindGroups={},this._bundleCache={},this._keyTemp=[],this._device=e,this._engine=t,this._cacheRenderPipeline=new ut(this._device,r),this._cacheRenderPipeline.setDepthTestEnabled(!1),this._cacheRenderPipeline.setStencilReadMask(255),this._effect=t.createEffect("clearQuad",[],["color","depthValue"],void 0,void 0,void 0,void 0,void 0,void 0,1)}clear(e,r,s,n,i=1){let a,o,u=null;const c=!!this._engine._currentRenderTarget;if(e)a=e;else{let e=0;this._keyTemp.length=0;for(let t=0;t<this._cacheRenderPipeline.colorFormats.length;++t)this._keyTemp[e++]=qe[this._cacheRenderPipeline.colorFormats[t]??""];const t=qe[this._depthTextureFormat??0];if(this._keyTemp[e]=(r?r.r+256*r.g+256*r.b*256+256*r.a*256*256:0)+(s?2**32:0)+(n?2**33:0)+(this._engine.useReverseDepthBuffer?2**34:0)+(c?2**35:0)+(i>1?2**36:0)+t*2**37,o=this._keyTemp.join("_"),u=this._bundleCache[o],u)return u;a=this._device.createRenderBundleEncoder({label:"clearQuadRenderBundle",colorFormats:this._cacheRenderPipeline.colorFormats,depthStencilFormat:this._depthTextureFormat,sampleCount:O.GetSample(i)})}this._cacheRenderPipeline.setDepthWriteEnabled(!!s),this._cacheRenderPipeline.setStencilEnabled(!!n&&!!this._depthTextureFormat&&O.HasStencilAspect(this._depthTextureFormat)),this._cacheRenderPipeline.setStencilWriteMask(n?255:0),this._cacheRenderPipeline.setStencilCompare(n?t.ALWAYS:t.NEVER),this._cacheRenderPipeline.setStencilPassOp(n?t.REPLACE:t.KEEP),this._cacheRenderPipeline.setWriteMask(r?15:0);const h=this._cacheRenderPipeline.getRenderPipeline(t.MATERIAL_TriangleStripDrawMode,this._effect,i),l=this._effect._pipelineContext;r&&this._effect.setDirectColor4("color",r),this._effect.setFloat("depthValue",this._engine.useReverseDepthBuffer?this._engine._clearReverseDepthValue:this._engine._clearDepthValue),l.uniformBuffer.update();const d=c?this._engine._ubInvertY:this._engine._ubDontInvertY,p=l.uniformBuffer.getBuffer(),_=p.uniqueId+"-"+d.uniqueId;let g=this._bindGroups[_];if(!g){const e=l.bindGroupLayouts[0];g=this._bindGroups[_]=[],g.push(this._device.createBindGroup({label:`clearQuadBindGroup0-${_}`,layout:e[0],entries:[]})),we._SimplifiedKnownBindings||g.push(this._device.createBindGroup({label:`clearQuadBindGroup1-${_}`,layout:e[1],entries:[]})),g.push(this._device.createBindGroup({label:`clearQuadBindGroup${we._SimplifiedKnownBindings?1:2}-${_}`,layout:e[we._SimplifiedKnownBindings?1:2],entries:[{binding:0,resource:{buffer:d.underlyingResource,size:d.capacity}},{binding:1,resource:{buffer:p.underlyingResource,size:p.capacity}}]}))}a.setPipeline(h);for(let e=0;e<g.length;++e)a.setBindGroup(e,g[e]);return a.draw(4,1,0,0),e||(u=a.finish(),this._bundleCache[o]=u),u}}class bt{constructor(e,t,r,s){this.x=Math.floor(e),this.y=Math.floor(t),this.w=Math.floor(r),this.h=Math.floor(s)}run(e){e.setViewport(this.x,this.y,this.w,this.h,0,1)}clone(){return new bt(this.x,this.y,this.w,this.h)}}class xt{constructor(e,t,r,s){this.x=e,this.y=t,this.w=r,this.h=s}run(e){e.setScissorRect(this.x,this.y,this.w,this.h)}clone(){return new xt(this.x,this.y,this.w,this.h)}}class Tt{constructor(e){this.ref=e}run(e){e.setStencilReference(this.ref)}clone(){return new Tt(this.ref)}}class yt{constructor(e){this.color=e}run(e){e.setBlendConstant(this.color)}clone(){return new yt(this.color)}}class Et{constructor(e){this.query=e}run(e){e.beginOcclusionQuery(this.query)}clone(){return new Et(this.query)}}class St{constructor(){}run(e){e.endOcclusionQuery()}clone(){return new St}}class Rt{constructor(){this.bundles=[]}run(e){e.executeBundles(this.bundles)}clone(){const e=new Rt;return e.bundles=this.bundles,e}}class At{constructor(e){this.numDrawCalls=0,this._device=e,this._list=new Array(10),this._listLength=0}addBundle(e){if(!this._currentItemIsBundle){const e=new Rt;this._list[this._listLength++]=e,this._currentBundleList=e.bundles,this._currentItemIsBundle=!0}e&&this._currentBundleList.push(e)}_finishBundle(){this._currentItemIsBundle&&this._bundleEncoder&&(this._currentBundleList.push(this._bundleEncoder.finish()),this._bundleEncoder=void 0,this._currentItemIsBundle=!1)}addItem(e){this._finishBundle(),this._list[this._listLength++]=e,this._currentItemIsBundle=!1}getBundleEncoder(e,t,r){return this._currentItemIsBundle||(this.addBundle(),this._bundleEncoder=this._device.createRenderBundleEncoder({colorFormats:e,depthStencilFormat:t,sampleCount:O.GetSample(r)})),this._bundleEncoder}close(){this._finishBundle()}run(e){this.close();for(let t=0;t<this._listLength;++t)this._list[t].run(e)}reset(){this._listLength=0,this._currentItemIsBundle=!1,this.numDrawCalls=0}clone(){this.close();const e=new At(this._device);e._list=new Array(this._listLength),e._listLength=this._listLength,e.numDrawCalls=this.numDrawCalls;for(let t=0;t<this._listLength;++t)e._list[t]=this._list[t].clone();return e}}class Ct{get querySet(){return this._querySet}constructor(e,t,r,s,n,i=!0,a){this._dstBuffers=[],this._engine=e,this._device=s,this._bufferManager=n,this._count=t,this._canUseMultipleBuffers=i,this._querySet=s.createQuerySet({label:a??"QuerySet",type:r,count:t}),this._queryBuffer=n.createRawBuffer(8*t,H.QueryResolve|H.CopySrc,void 0,"QueryBuffer"),i||this._dstBuffers.push(this._bufferManager.createRawBuffer(8*this._count,H.MapRead|H.CopyDst,void 0,"QueryBufferNoMultipleBuffers"))}_getBuffer(e,t){if(!this._canUseMultipleBuffers&&0===this._dstBuffers.length)return null;const r=this._device.createCommandEncoder();let s;return 0===this._dstBuffers.length?s=this._bufferManager.createRawBuffer(8*this._count,H.MapRead|H.CopyDst,void 0,"QueryBufferAdditionalBuffer"):(s=this._dstBuffers[this._dstBuffers.length-1],this._dstBuffers.length--),r.resolveQuerySet(this._querySet,e,t,this._queryBuffer,0),r.copyBufferToBuffer(this._queryBuffer,0,s,0,8*t),this._device.queue.submit([r.finish()]),s}async readValues(e=0,t=1){const r=this._getBuffer(e,t);if(null===r)return null;const s=this._engine.uniqueId;return r.mapAsync(1).then((()=>{const e=new BigUint64Array(r.getMappedRange()).slice();return r.unmap(),this._dstBuffers[this._dstBuffers.length]=r,e}),(e=>{if(this._engine.isDisposed||this._engine.uniqueId!==s)return null;throw e}))}async readValue(e=0){const t=this._getBuffer(e,1);if(null===t)return null;const r=this._engine.uniqueId;return t.mapAsync(1).then((()=>{const e=new BigUint64Array(t.getMappedRange()),r=Number(e[0]);return t.unmap(),this._dstBuffers[this._dstBuffers.length]=t,r}),(e=>{if(this._engine.isDisposed||this._engine.uniqueId!==r)return 0;throw e}))}async readTwoValuesAndSubtract(e=0){const t=this._getBuffer(e,2);if(null===t)return null;const r=this._engine.uniqueId;return t.mapAsync(1).then((()=>{const e=new BigUint64Array(t.getMappedRange()),r=Number(e[1]-e[0]);return t.unmap(),this._dstBuffers[this._dstBuffers.length]=t,r}),(e=>{if(this._engine.isDisposed||this._engine.uniqueId!==r)return 0;throw e}))}dispose(){this._querySet.destroy(),this._bufferManager.releaseBuffer(this._queryBuffer);for(let e=0;e<this._dstBuffers.length;++e)this._bufferManager.releaseBuffer(this._dstBuffers[e])}}class It{get gpuFrameTimeCounter(){return this._gpuFrameTimeCounter}constructor(e,t,s){this._enabled=!1,this._gpuFrameTimeCounter=new r,this._measureDurationState=0,this._engine=e,this._device=t,this._bufferManager=s}get enable(){return this._enabled}set enable(e){if(this._enabled!==e)if(this._enabled=e,this._measureDurationState=0,e)try{this._measureDuration=new vt(this._engine,this._device,this._bufferManager,2e3,"QuerySet_TimestampQuery")}catch(e){return this._enabled=!1,void n.Error("Could not create a WebGPUDurationMeasure!\nError: "+e.message+"\nMake sure timestamp query is supported and enabled in your browser.")}else this._measureDuration.dispose()}startFrame(e){this._enabled&&0===this._measureDurationState&&(this._measureDuration.start(e),this._measureDurationState=1)}endFrame(e){1===this._measureDurationState&&(this._measureDurationState=2,this._measureDuration.stop(e).then((e=>{null!==e&&e>=0&&(this._gpuFrameTimeCounter.fetchNewFrame(),this._gpuFrameTimeCounter.addCount(e,!0)),this._measureDurationState=0})))}startPass(e,t){this._enabled?this._measureDuration.startPass(e,t):e.timestampWrites=void 0}endPass(e,t){if(!this._enabled||!t)return;const r=this._engine.frameId;this._measureDuration.stopPass(e).then((e=>{t._addDuration(r,null!==e&&e>0?e:0)}))}dispose(){this._measureDuration?.dispose()}}class vt{constructor(e,t,r,s=2,n){this._count=s,this._querySet=new Ct(e,s,"timestamp",t,r,!0,n)}start(e){e.writeTimestamp?.(this._querySet.querySet,0)}async stop(e){return e.writeTimestamp?.(this._querySet.querySet,1),e.writeTimestamp?this._querySet.readTwoValuesAndSubtract(0):0}startPass(e,t){if(t+3>this._count)throw new Error("WebGPUDurationMeasure: index out of range ("+t+")");e.timestampWrites={querySet:this._querySet.querySet,beginningOfPassWriteIndex:t+2,endOfPassWriteIndex:t+3}}async stopPass(e){return this._querySet.readTwoValuesAndSubtract(e+2)}dispose(){this._querySet.dispose()}}class Bt{get querySet(){return this._querySet.querySet}get hasQueries(){return this._currentTotalIndices!==this._availableIndices.length}canBeginQuery(e){if(this._frameQuerySetIsDirty===this._engine.frameId||this._queryFrameId[e]===this._engine.frameId)return!1;const t=void 0!==this._engine._getCurrentRenderPassWrapper().renderPassDescriptor.occlusionQuerySet;return t&&(this._queryFrameId[e]=this._engine.frameId),t}constructor(e,t,r,s=50,n=100){this._availableIndices=[],this._frameQuerySetIsDirty=-1,this._queryFrameId=[],this._engine=e,this._device=t,this._bufferManager=r,this._frameLastBuffer=-1,this._currentTotalIndices=0,this._countIncrement=n,this._allocateNewIndices(s)}createQuery(){0===this._availableIndices.length&&this._allocateNewIndices();const e=this._availableIndices[this._availableIndices.length-1];return this._availableIndices.length--,e}deleteQuery(e){this._availableIndices[this._availableIndices.length]=e}isQueryResultAvailable(e){return this._retrieveQueryBuffer(),!!this._lastBuffer&&e<this._lastBuffer.length}getQueryResult(e){return Number(this._lastBuffer?.[e]??-1)}_retrieveQueryBuffer(){this._lastBuffer&&this._frameLastBuffer===this._engine.frameId||this._frameLastBuffer!==this._engine.frameId&&(this._frameLastBuffer=this._engine.frameId,this._querySet.readValues(0,this._currentTotalIndices).then((e=>{this._lastBuffer=e})))}_allocateNewIndices(e){e=e??this._countIncrement,this._delayQuerySetDispose();for(let t=0;t<e;++t)this._availableIndices.push(this._currentTotalIndices+t);this._currentTotalIndices+=e,this._querySet=new Ct(this._engine,this._currentTotalIndices,"occlusion",this._device,this._bufferManager,!1,"QuerySet_OcclusionQuery_count_"+this._currentTotalIndices),this._frameQuerySetIsDirty=this._engine.frameId}_delayQuerySetDispose(){const e=this._querySet;e&&setTimeout((()=>e.dispose),1e3)}dispose(){this._querySet?.dispose(),this._availableIndices.length=0}}class wt{get code(){return this._sourceCode}constructor(e,t=20){this.debug=!1,this._sourceCode=e,this._numMaxIterations=t,this._functionDescr=[],this.inlineToken="#define inline"}processCode(){this.debug&&n.Log(`Start inlining process (code size=${this._sourceCode.length})...`),this._collectFunctions(),this._processInlining(this._numMaxIterations),this.debug&&n.Log("End of inlining process.")}_collectFunctions(){let e=0;for(;e<this._sourceCode.length;){const t=this._sourceCode.indexOf(this.inlineToken,e);if(t<0)break;const r=this._sourceCode.indexOf("(",t+this.inlineToken.length);if(r<0){this.debug&&n.Warn(`Could not find the opening parenthesis after the token. startIndex=${e}`),e=t+this.inlineToken.length;continue}const s=wt._RegexpFindFunctionNameAndType.exec(this._sourceCode.substring(t+this.inlineToken.length,r));if(!s){this.debug&&n.Warn(`Could not extract the name/type of the function from: ${this._sourceCode.substring(t+this.inlineToken.length,r)}`),e=t+this.inlineToken.length;continue}const[i,a]=[s[3],s[4]],o=Le("(",")",this._sourceCode,r);if(o<0){this.debug&&n.Warn(`Could not extract the parameters the function '${a}' (type=${i}). funcParamsStartIndex=${r}`),e=t+this.inlineToken.length;continue}const u=this._sourceCode.substring(r+1,o),c=Pe(this._sourceCode,o+1);if(c===this._sourceCode.length){this.debug&&n.Warn(`Could not extract the body of the function '${a}' (type=${i}). funcParamsEndIndex=${o}`),e=t+this.inlineToken.length;continue}const h=Le("{","}",this._sourceCode,c);if(h<0){this.debug&&n.Warn(`Could not extract the body of the function '${a}' (type=${i}). funcBodyStartIndex=${c}`),e=t+this.inlineToken.length;continue}const l=this._sourceCode.substring(c,h+1),d=De(u).split(","),p=[];for(let e=0;e<d.length;++e){const t=d[e].trim(),r=t.lastIndexOf(" ");r>=0&&p.push(t.substring(r+1))}"void"!==i&&p.push("return"),this._functionDescr.push({name:a,type:i,parameters:p,body:l,callIndex:0}),e=h+1;const _=t>0?this._sourceCode.substring(0,t):"",g=h+1<this._sourceCode.length-1?this._sourceCode.substring(h+1):"";this._sourceCode=_+g,e-=h+1-t}this.debug&&n.Log(`Collect functions: ${this._functionDescr.length} functions found. functionDescr=${this._functionDescr}`)}_processInlining(e=20){for(;e-- >=0&&this._replaceFunctionCallsByCode(););return this.debug&&n.Log(`numMaxIterations is ${e} after inlining process`),e>=0}_replaceFunctionCallsByCode(){let e=!1;for(const t of this._functionDescr){const{name:r,type:s,parameters:i,body:a}=t;let o=0;for(;o<this._sourceCode.length;){const u=this._sourceCode.indexOf(r,o);if(u<0)break;if(0===u||Fe(this._sourceCode.charAt(u-1))){o=u+r.length;continue}const c=Pe(this._sourceCode,u+r.length);if(c===this._sourceCode.length||"("!==this._sourceCode.charAt(c)){o=u+r.length;continue}const h=Le("(",")",this._sourceCode,c);if(h<0){this.debug&&n.Warn(`Could not extract the parameters of the function call. Function '${r}' (type=${s}). callParamsStartIndex=${c}`),o=u+r.length;continue}const l=this._sourceCode.substring(c+1,h),d=e=>{const t=[];let r=0,s=0;for(;r<e.length;){if("("===e.charAt(r)){const t=Le("(",")",e,r);if(t<0)return null;r=t}else","===e.charAt(r)&&(t.push(e.substring(s,r)),s=r+1);r++}return s<r&&t.push(e.substring(s,r)),t},p=d(De(l));if(null===p){this.debug&&n.Warn(`Invalid function call: can't extract the parameters of the function call. Function '${r}' (type=${s}). callParamsStartIndex=${c}, callParams=`+l),o=u+r.length;continue}const _=[];for(let e=0;e<p.length;++e){const t=p[e].trim();_.push(t)}const g="void"!==s?r+"_"+t.callIndex++:null;if(g&&_.push(g+" ="),_.length!==i.length){this.debug&&n.Warn(`Invalid function call: not the same number of parameters for the call than the number expected by the function. Function '${r}' (type=${s}). function parameters=${i}, call parameters=${_}`),o=u+r.length;continue}o=h+1;const f=this._replaceNames(a,i,_);let m=u>0?this._sourceCode.substring(0,u):"";const b=h+1<this._sourceCode.length-1?this._sourceCode.substring(h+1):"";if(g){const e=Me(this._sourceCode,u-1,"\n","{");m=this._sourceCode.substring(0,e+1);const t=this._sourceCode.substring(e+1,u);this._sourceCode=m+s+" "+g+";\n"+f+"\n"+t+g+b,this.debug&&n.Log(`Replace function call by code. Function '${r}' (type=${s}). injectDeclarationIndex=${e}, call parameters=${_}`)}else this._sourceCode=m+f+b,o+=f.length-(h+1-u),this.debug&&n.Log(`Replace function call by code. Function '${r}' (type=${s}). functionCallIndex=${u}, call parameters=${_}`);e=!0}}return e}_replaceNames(e,t,r){for(let s=0;s<t.length;++s){const n=new RegExp(t[s].replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),i=t[s].length,a=r[s];e=e.replace(n,((r,...n)=>{const o=n[0];return Fe(e.charAt(o-1))||Fe(e.charAt(o+i))?t[s]:a}))}return e}}wt._RegexpFindFunctionNameAndType=/((\s+?)(\w+)\s+(\w+)\s*?)$/;class Lt{async initTwgsl(e){if(!Lt._Twgsl)return e=e||{},(e={...Lt._TWgslDefaultOptions,...e}).twgsl?(Lt._Twgsl=e.twgsl,Promise.resolve()):(e.jsPath&&e.wasmPath&&await m.LoadBabylonScriptAsync(e.jsPath),self.twgsl?(Lt._Twgsl=await self.twgsl(m.GetBabylonScriptURL(e.wasmPath)),Promise.resolve()):Promise.reject("twgsl is not available."))}convertSpirV2WGSL(e,t=!1){const r=Lt._Twgsl.convertSpirV2WGSL(e,Lt.DisableUniformityAnalysis||t);return Lt.ShowWGSLShaderCode&&(n.Log(r),n.Log("***********************************************")),Lt.DisableUniformityAnalysis||t?"diagnostic(off, derivative_uniformity);\n"+r:r}}Lt._TWgslDefaultOptions={jsPath:`${m._DefaultCdnUrl}/twgsl/twgsl.js`,wasmPath:`${m._DefaultCdnUrl}/twgsl/twgsl.wasm`},Lt.ShowWGSLShaderCode=!1,Lt.DisableUniformityAnalysis=!1,Lt._Twgsl=null;class Pt{constructor(e,t,r){this._record=!1,this._play=!1,this._playBundleListIndex=0,this._allBundleLists=[],this._enabled=!1,this._engine=e,this._mode=t,this._bundleList=r}get enabled(){return this._enabled}get play(){return this._play}get record(){return this._record}set enabled(e){this._allBundleLists.length=0,this._record=this._enabled=e,this._play=!1,e&&(this._modeSaved=this._mode,this._mode=t.SNAPSHOTRENDERING_STANDARD)}get mode(){return this._mode}set mode(e){this._record?this._modeSaved=e:this._mode=e}endRenderPass(e){if(!this._record&&!this._play)return!1;let r;if(this._record)r=this._bundleList.clone(),this._allBundleLists.push(r),this._bundleList.reset();else{if(this._playBundleListIndex>=this._allBundleLists.length)throw new Error(`Invalid playBundleListIndex! Your snapshot is no longer valid for the current frame, you should recreate a new one. playBundleListIndex=${this._playBundleListIndex}, allBundleLists.length=${this._allBundleLists.length}}`);r=this._allBundleLists[this._playBundleListIndex++]}return r.run(e),this._mode===t.SNAPSHOTRENDERING_FAST&&this._engine._reportDrawCall(r.numDrawCalls),!0}endFrame(){this._record&&(this._record=!1,this._play=!0,this._mode=this._modeSaved),this._playBundleListIndex=0}reset(){this._record&&(this._mode=this._modeSaved),this.enabled=!1,this.enabled=!0}}const Ft=(()=>{const e=new Uint8Array(4);return!!((new Uint32Array(e.buffer)[0]=1)&e[0])})();Object.defineProperty(d.prototype,"effectiveByteStride",{get:function(){return this._alignedBuffer&&this._alignedBuffer.byteStride||this.byteStride},enumerable:!0,configurable:!0}),Object.defineProperty(d.prototype,"effectiveByteOffset",{get:function(){return this._alignedBuffer?0:this.byteOffset},enumerable:!0,configurable:!0}),Object.defineProperty(d.prototype,"effectiveBuffer",{get:function(){return this._alignedBuffer&&this._alignedBuffer.getBuffer()||this._buffer.getBuffer()},enumerable:!0,configurable:!0}),d.prototype._rebuild=function(){this._buffer?._rebuild(),this._alignedBuffer?._rebuild()},d.prototype.dispose=function(){this._ownsBuffer&&this._buffer.dispose(),this._alignedBuffer?.dispose(),this._alignedBuffer=void 0,this._isDisposed=!0},d.prototype.getWrapperBuffer=function(){return this._alignedBuffer||this._buffer},d.prototype._alignBuffer=function(){const e=this._buffer.getData();if(!this.engine._features.forceVertexBufferStrideAndOffsetMultiple4Bytes||this.byteStride%4==0&&this.byteOffset%4==0||!e)return;const t=d.GetTypeByteLength(this.type),r=this.byteStride+3&-4,s=r/t,n=this._maxVerticesCount,i=n*r/t;let a,o;if(Array.isArray(e)){const t=new Float32Array(e);a=new DataView(t.buffer,t.byteOffset,t.byteLength)}else a=e instanceof ArrayBuffer?new DataView(e,0,e.byteLength):new DataView(e.buffer,e.byteOffset,e.byteLength);o=this.type===d.BYTE?new Int8Array(i):this.type===d.UNSIGNED_BYTE?new Uint8Array(i):this.type===d.SHORT?new Int16Array(i):this.type===d.UNSIGNED_SHORT?new Uint16Array(i):this.type===d.INT?new Int32Array(i):this.type===d.UNSIGNED_INT?new Uint32Array(i):new Float32Array(i);const u=this.getSize();let c=this.byteOffset;for(let e=0;e<n;++e){for(let t=0;t<u;++t)switch(this.type){case d.BYTE:o[e*s+t]=a.getInt8(c+t);break;case d.UNSIGNED_BYTE:o[e*s+t]=a.getUint8(c+t);break;case d.SHORT:o[e*s+t]=a.getInt16(c+2*t,Ft);break;case d.UNSIGNED_SHORT:o[e*s+t]=a.getUint16(c+2*t,Ft);break;case d.INT:o[e*s+t]=a.getInt32(c+4*t,Ft);break;case d.UNSIGNED_INT:o[e*s+t]=a.getUint32(c+4*t,Ft);break;case d.FLOAT:o[e*s+t]=a.getFloat32(c+4*t,Ft)}c+=this.byteStride}this._alignedBuffer?.dispose(),this._alignedBuffer=new b(this.engine,o,!1,r,!1,this.getIsInstanced(),!0,this.instanceDivisor,(this._label??"VertexBuffer")+"_aligned")};class Dt extends lt{constructor(e){super(e)}}function Mt(e,r,s,n){let i,a=1;n===t.TEXTURETYPE_FLOAT?i=new Float32Array(r*s*4):n===t.TEXTURETYPE_HALF_FLOAT?(i=new Uint16Array(r*s*4),a=15360):i=n===t.TEXTURETYPE_UNSIGNED_INTEGER?new Uint32Array(r*s*4):new Uint8Array(r*s*4);for(let t=0;t<r;t++)for(let n=0;n<s;n++){const s=3*(n*r+t),o=4*(n*r+t);i[o+0]=e[s+0],i[o+1]=e[s+1],i[o+2]=e[s+2],i[o+3]=a}return i}N.prototype.setAlphaMode=function(e,r=!1){if(this._alphaMode===e&&(e===t.ALPHA_DISABLE&&!this._alphaState.alphaBlend||e!==t.ALPHA_DISABLE&&this._alphaState.alphaBlend)){if(!r){const r=e===t.ALPHA_DISABLE;this.depthCullingState.depthMask!==r&&(this.setDepthWrite(r),this._cacheRenderPipeline.setDepthWriteEnabled(r))}}else{switch(e){case t.ALPHA_DISABLE:this._alphaState.alphaBlend=!1;break;case t.ALPHA_PREMULTIPLIED:this._alphaState.setAlphaBlendFunctionParameters(1,t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA,1,1),this._alphaState.alphaBlend=!0;break;case t.ALPHA_PREMULTIPLIED_PORTERDUFF:this._alphaState.setAlphaBlendFunctionParameters(1,t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA,1,t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA),this._alphaState.alphaBlend=!0;break;case t.ALPHA_COMBINE:this._alphaState.setAlphaBlendFunctionParameters(t.GL_ALPHA_FUNCTION_SRC_ALPHA,t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA,1,1),this._alphaState.alphaBlend=!0;break;case t.ALPHA_ONEONE:this._alphaState.setAlphaBlendFunctionParameters(1,1,0,1),this._alphaState.alphaBlend=!0;break;case t.ALPHA_ADD:this._alphaState.setAlphaBlendFunctionParameters(t.GL_ALPHA_FUNCTION_SRC_ALPHA,1,0,1),this._alphaState.alphaBlend=!0;break;case t.ALPHA_SUBTRACT:this._alphaState.setAlphaBlendFunctionParameters(0,t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR,1,1),this._alphaState.alphaBlend=!0;break;case t.ALPHA_MULTIPLY:this._alphaState.setAlphaBlendFunctionParameters(t.GL_ALPHA_FUNCTION_DST_COLOR,0,1,1),this._alphaState.alphaBlend=!0;break;case t.ALPHA_MAXIMIZED:this._alphaState.setAlphaBlendFunctionParameters(t.GL_ALPHA_FUNCTION_SRC_ALPHA,t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR,1,1),this._alphaState.alphaBlend=!0;break;case t.ALPHA_INTERPOLATE:this._alphaState.setAlphaBlendFunctionParameters(t.GL_ALPHA_FUNCTION_CONSTANT_COLOR,t.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_COLOR,t.GL_ALPHA_FUNCTION_CONSTANT_ALPHA,t.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_ALPHA),this._alphaState.alphaBlend=!0;break;case t.ALPHA_SCREENMODE:this._alphaState.setAlphaBlendFunctionParameters(1,t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR,1,t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA),this._alphaState.alphaBlend=!0;break;case t.ALPHA_ONEONE_ONEONE:this._alphaState.setAlphaBlendFunctionParameters(1,1,1,1),this._alphaState.alphaBlend=!0;break;case t.ALPHA_ALPHATOCOLOR:this._alphaState.setAlphaBlendFunctionParameters(t.GL_ALPHA_FUNCTION_DST_ALPHA,1,0,0),this._alphaState.alphaBlend=!0;break;case t.ALPHA_REVERSEONEMINUS:this._alphaState.setAlphaBlendFunctionParameters(t.GL_ALPHA_FUNCTION_ONE_MINUS_DST_COLOR,t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR,t.GL_ALPHA_FUNCTION_ONE_MINUS_DST_ALPHA,t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA),this._alphaState.alphaBlend=!0;break;case t.ALPHA_SRC_DSTONEMINUSSRCALPHA:this._alphaState.setAlphaBlendFunctionParameters(1,t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA,1,t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA),this._alphaState.alphaBlend=!0;break;case t.ALPHA_ONEONE_ONEZERO:this._alphaState.setAlphaBlendFunctionParameters(1,1,1,0),this._alphaState.alphaBlend=!0;break;case t.ALPHA_EXCLUSION:this._alphaState.setAlphaBlendFunctionParameters(t.GL_ALPHA_FUNCTION_ONE_MINUS_DST_COLOR,t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR,0,1),this._alphaState.alphaBlend=!0;break;case t.ALPHA_LAYER_ACCUMULATE:this._alphaState.setAlphaBlendFunctionParameters(t.GL_ALPHA_FUNCTION_SRC_ALPHA,t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA,1,t.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA),this._alphaState.alphaBlend=!0}r||(this.setDepthWrite(e===t.ALPHA_DISABLE),this._cacheRenderPipeline.setDepthWriteEnabled(e===t.ALPHA_DISABLE)),this._alphaMode=e,this._cacheRenderPipeline.setAlphaBlendEnabled(this._alphaState.alphaBlend),this._cacheRenderPipeline.setAlphaBlendFactors(this._alphaState._blendFunctionParameters,this._alphaState._blendEquationParameters)}},N.prototype.setAlphaEquation=function(e){s.prototype.setAlphaEquation.call(this,e),this._cacheRenderPipeline.setAlphaBlendFactors(this._alphaState._blendFunctionParameters,this._alphaState._blendEquationParameters)},N.prototype.createRawTexture=function(e,r,s,n,i,a,o,u=null,c=t.TEXTURETYPE_UNSIGNED_BYTE,h=0,l=!1){const d=new g(this,3);return d.baseWidth=r,d.baseHeight=s,d.width=r,d.height=s,d.format=n,d.generateMipMaps=i,d.samplingMode=o,d.invertY=a,d._compression=u,d.type=c,d._creationFlags=h,d._useSRGBBuffer=l,this._doNotHandleContextLost||(d._bufferView=e),this._textureHelper.createGPUTextureForInternalTexture(d,r,s,void 0,h),this.updateRawTexture(d,e,n,a,u,c,l),this._internalTexturesCache.push(d),d},N.prototype.updateRawTexture=function(e,r,s,n,i=null,a=t.TEXTURETYPE_UNSIGNED_BYTE,o=!1){if(e){if(this._doNotHandleContextLost||(e._bufferView=r,e.invertY=n,e._compression=i,e._useSRGBBuffer=o),r){const i=e._hardwareTexture;s===t.TEXTUREFORMAT_RGB&&(r=Mt(r,e.width,e.height,a));const o=new Uint8Array(r.buffer,r.byteOffset,r.byteLength);this._textureHelper.updateTexture(o,e,e.width,e.height,e.depth,i.format,0,0,n,!1,0,0),e.generateMipMaps&&this._generateMipmaps(e,this._uploadEncoder)}e.isReady=!0}},N.prototype.createRawCubeTexture=function(e,r,s,i,a,o,u,c=null){const h=new g(this,8);if(i!==t.TEXTURETYPE_FLOAT||this._caps.textureFloatLinearFiltering?i!==t.TEXTURETYPE_HALF_FLOAT||this._caps.textureHalfFloatLinearFiltering?i!==t.TEXTURETYPE_FLOAT||this._caps.textureFloatRender?i!==t.TEXTURETYPE_HALF_FLOAT||this._caps.colorBufferFloat||(a=!1,n.Warn("Render to half float textures is not supported. Mipmap generation forced to false.")):(a=!1,n.Warn("Render to float textures is not supported. Mipmap generation forced to false.")):(a=!1,u=t.TEXTURE_NEAREST_SAMPLINGMODE,n.Warn("Half float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.")):(a=!1,u=t.TEXTURE_NEAREST_SAMPLINGMODE,n.Warn("Float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.")),h.isCube=!0,h._originalFormat=s,h.format=s===t.TEXTUREFORMAT_RGB?t.TEXTUREFORMAT_RGBA:s,h.type=i,h.generateMipMaps=a,h.width=r,h.height=r,h.samplingMode=u,this._doNotHandleContextLost||(h._bufferViewArray=e),h.invertY=o,h._compression=c,h._cachedWrapU=t.TEXTURE_CLAMP_ADDRESSMODE,h._cachedWrapV=t.TEXTURE_CLAMP_ADDRESSMODE,this._textureHelper.createGPUTextureForInternalTexture(h),s===t.TEXTUREFORMAT_RGB){h._hardwareTexture._originalFormatIsRGB=!0}return e&&this.updateRawCubeTexture(h,e,s,i,o,c),h.isReady=!0,h},N.prototype.updateRawCubeTexture=function(e,t,r,s,n,i=null){e._bufferViewArray=t,e.invertY=n,e._compression=i;const a=e._hardwareTexture,o=a._originalFormatIsRGB,u=[0,2,4,1,3,5],c=[];for(let r=0;r<t.length;++r){let n=t[u[r]];o&&(n=Mt(n,e.width,e.height,s)),c.push(new Uint8Array(n.buffer,n.byteOffset,n.byteLength))}this._textureHelper.updateCubeTextures(c,a.underlyingResource,e.width,e.height,a.format,n,!1,0,0),e.generateMipMaps&&this._generateMipmaps(e,this._uploadEncoder),e.isReady=!0},N.prototype.createRawCubeTextureFromUrl=function(e,r,s,n,i,a,o,u,c=null,h=null,l=t.TEXTURE_TRILINEAR_SAMPLINGMODE,d=!1){const p=this.createRawCubeTexture(null,s,n,i,!a,d,l,null);r?.addPendingData(p),p.url=e,p.isReady=!1,this._internalTexturesCache.push(p);const _=e=>{const s=p.width,a=o(e);if(a){if(u){const e=n===t.TEXTUREFORMAT_RGB,r=u(a),o=p._hardwareTexture,c=[0,1,2,3,4,5];for(let t=0;t<r.length;t++){const n=s>>t,a=[];for(let s=0;s<6;s++){let o=r[t][c[s]];e&&(o=Mt(o,n,n,i)),a.push(new Uint8Array(o.buffer,o.byteOffset,o.byteLength))}this._textureHelper.updateCubeTextures(a,o.underlyingResource,n,n,o.format,d,!1,0,0)}}else this.updateRawCubeTexture(p,a,n,i,d);p.isReady=!0,r?.removePendingData(p),c&&c()}};return this._loadFile(e,(e=>{_(e)}),void 0,r?.offlineProvider,!0,((e,t)=>{r?.removePendingData(p),h&&e&&h(e.status+" "+e.statusText,t)})),p},N.prototype.createRawTexture3D=function(e,r,s,n,i,a,o,u,c=null,h=t.TEXTURETYPE_UNSIGNED_BYTE,l=0){const d=new g(this,10);return d.baseWidth=r,d.baseHeight=s,d.baseDepth=n,d.width=r,d.height=s,d.depth=n,d.format=i,d.type=h,d.generateMipMaps=a,d.samplingMode=u,d.is3D=!0,d._creationFlags=l,this._doNotHandleContextLost||(d._bufferView=e),this._textureHelper.createGPUTextureForInternalTexture(d,r,s,void 0,l),this.updateRawTexture3D(d,e,i,o,c,h),this._internalTexturesCache.push(d),d},N.prototype.updateRawTexture3D=function(e,r,s,n,i=null,a=t.TEXTURETYPE_UNSIGNED_BYTE){if(this._doNotHandleContextLost||(e._bufferView=r,e.format=s,e.invertY=n,e._compression=i),r){const i=e._hardwareTexture;s===t.TEXTUREFORMAT_RGB&&(r=Mt(r,e.width,e.height,a));const o=new Uint8Array(r.buffer,r.byteOffset,r.byteLength);this._textureHelper.updateTexture(o,e,e.width,e.height,e.depth,i.format,0,0,n,!1,0,0),e.generateMipMaps&&this._generateMipmaps(e,this._uploadEncoder)}e.isReady=!0},N.prototype.createRawTexture2DArray=function(e,r,s,n,i,a,o,u,c=null,h=t.TEXTURETYPE_UNSIGNED_BYTE,l=0){const d=new g(this,11);return d.baseWidth=r,d.baseHeight=s,d.baseDepth=n,d.width=r,d.height=s,d.depth=n,d.format=i,d.type=h,d.generateMipMaps=a,d.samplingMode=u,d.is2DArray=!0,d._creationFlags=l,this._doNotHandleContextLost||(d._bufferView=e),this._textureHelper.createGPUTextureForInternalTexture(d,r,s,n,l),this.updateRawTexture2DArray(d,e,i,o,c,h),this._internalTexturesCache.push(d),d},N.prototype.updateRawTexture2DArray=function(e,r,s,n,i=null,a=t.TEXTURETYPE_UNSIGNED_BYTE){if(this._doNotHandleContextLost||(e._bufferView=r,e.format=s,e.invertY=n,e._compression=i),r){const i=e._hardwareTexture;s===t.TEXTUREFORMAT_RGB&&(r=Mt(r,e.width,e.height,a));const o=new Uint8Array(r.buffer,r.byteOffset,r.byteLength);this._textureHelper.updateTexture(o,e,e.width,e.height,e.depth,i.format,0,0,n,!1,0,0),e.generateMipMaps&&this._generateMipmaps(e,this._uploadEncoder)}e.isReady=!0},N.prototype._readTexturePixels=function(e,t,r,s=-1,n=0,i=null,a=!0,o=!1,u=0,c=0){const h=e._hardwareTexture;return a&&this.flushFramebuffer(),this._textureHelper.readPixels(h.underlyingResource,u,c,t,r,h.format,s,n,i,o)},N.prototype._readTexturePixelsSync=function(){throw"_readTexturePixelsSync is unsupported in WebGPU!"},N.prototype._createDepthStencilCubeTexture=function(e,r){const s=new g(this,r.generateStencil?12:14);s.isCube=!0,s.label=r.label;const n={bilinearFiltering:!1,comparisonFunction:0,generateStencil:!1,samples:1,depthTextureFormat:r.generateStencil?t.TEXTUREFORMAT_DEPTH24_STENCIL8:t.TEXTUREFORMAT_DEPTH32_FLOAT,...r};s.format=n.depthTextureFormat,this._setupDepthStencilTexture(s,e,n.bilinearFiltering,n.comparisonFunction,n.samples),this._textureHelper.createGPUTextureForInternalTexture(s);const i=s._hardwareTexture;return s.type=O.GetTextureTypeFromFormat(i.format),this._internalTexturesCache.push(s),s},N.prototype.createCubeTexture=function(e,t,r,s,n=null,i=null,a,o=null,u=!1,c=0,h=0,l=null,d,p=!1,_=null){return this.createCubeTextureBase(e,t,r,!!s,n,i,a,o,u,c,h,l,null,((e,t)=>{const r=t,i=r[0].width,o=i;this._setCubeMapTextureParams(e,!s),e.format=a??-1;const u=this._textureHelper.createGPUTextureForInternalTexture(e,i,o);this._textureHelper.updateCubeTextures(r,u.underlyingResource,i,o,u.format,!1,!1,0,0),s||this._generateMipmaps(e,this._uploadEncoder),e.isReady=!0,e.onLoadedObservable.notifyObservers(e),e.onLoadedObservable.clear(),n&&n()}),!!p,_)},N.prototype._setCubeMapTextureParams=function(e,r,s){e.samplingMode=r?t.TEXTURE_TRILINEAR_SAMPLINGMODE:t.TEXTURE_BILINEAR_SAMPLINGMODE,e._cachedWrapU=t.TEXTURE_CLAMP_ADDRESSMODE,e._cachedWrapV=t.TEXTURE_CLAMP_ADDRESSMODE,s&&(e._maxLodLevel=s)},N.prototype.generateMipMapsForCubemap=function(e){if(e.generateMipMaps){const t=e._hardwareTexture?.underlyingResource;t||this._textureHelper.createGPUTextureForInternalTexture(e),this._generateMipmaps(e)}};class Ut extends x{constructor(e,t,r,s,n){super(e,t,r,s,n),s.enableGPUTimingMeasurements&&(this.gpuTimeInFrame=new G)}}N.prototype._createHardwareRenderTargetWrapper=function(e,t,r){const s=new Ut(e,t,r,this);return this._renderTargetWrapperCache.push(s),s},N.prototype.createRenderTargetTexture=function(e,r){const s=this._createHardwareRenderTargetWrapper(!1,!1,e),n={};void 0!==r&&"object"==typeof r?(n.generateMipMaps=r.generateMipMaps,n.generateDepthBuffer=void 0===r.generateDepthBuffer||r.generateDepthBuffer,n.generateStencilBuffer=n.generateDepthBuffer&&r.generateStencilBuffer,n.samplingMode=void 0===r.samplingMode?t.TEXTURE_TRILINEAR_SAMPLINGMODE:r.samplingMode,n.creationFlags=r.creationFlags??0,n.noColorAttachment=!!r.noColorAttachment,n.colorAttachment=r.colorAttachment,n.samples=r.samples,n.label=r.label,n.format=r.format,n.type=r.type):(n.generateMipMaps=r,n.generateDepthBuffer=!0,n.generateStencilBuffer=!1,n.samplingMode=t.TEXTURE_TRILINEAR_SAMPLINGMODE,n.creationFlags=0,n.noColorAttachment=!1);const i=n.colorAttachment||(n.noColorAttachment?null:this._createInternalTexture(e,n,!0,5));return s.label=n.label??"RenderTargetWrapper",s._samples=n.colorAttachment?.samples??n.samples??1,s._generateDepthBuffer=n.generateDepthBuffer,s._generateStencilBuffer=!!n.generateStencilBuffer,s.setTextures(i),(s._generateDepthBuffer||s._generateStencilBuffer)&&s.createDepthStencilTexture(0,!1,s._generateStencilBuffer,s.samples,n.generateStencilBuffer?t.TEXTUREFORMAT_DEPTH24_STENCIL8:t.TEXTUREFORMAT_DEPTH32_FLOAT,n.label?n.label+"-DepthStencil":void 0),i&&!n.colorAttachment&&(void 0!==r&&"object"==typeof r&&r.createMipMaps&&!n.generateMipMaps&&(i.generateMipMaps=!0),this._textureHelper.createGPUTextureForInternalTexture(i,void 0,void 0,void 0,n.creationFlags),void 0!==r&&"object"==typeof r&&r.createMipMaps&&!n.generateMipMaps&&(i.generateMipMaps=!1)),s},N.prototype._createDepthStencilTexture=function(e,r,s){const n={bilinearFiltering:!1,comparisonFunction:0,generateStencil:!1,samples:1,depthTextureFormat:r.generateStencil?t.TEXTUREFORMAT_DEPTH24_STENCIL8:t.TEXTUREFORMAT_DEPTH32_FLOAT,...r},i=n.depthTextureFormat===t.TEXTUREFORMAT_DEPTH24UNORM_STENCIL8||n.depthTextureFormat===t.TEXTUREFORMAT_DEPTH24_STENCIL8||n.depthTextureFormat===t.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8;s._depthStencilTextureWithStencil=i;const a=new g(this,i?12:14);return a.label=r.label,a.format=n.depthTextureFormat,a.type=T(a.format),this._setupDepthStencilTexture(a,e,n.bilinearFiltering,n.comparisonFunction,n.samples),this._textureHelper.createGPUTextureForInternalTexture(a),this._internalTexturesCache.push(a),a},N.prototype._setupDepthStencilTexture=function(e,r,s,n,i=1){const a=r.width??r,o=r.height??r,u=r.layers||0,c=r.depth||0;e.baseWidth=a,e.baseHeight=o,e.width=a,e.height=o,e.is2DArray=u>0,e.is3D=c>0,e.depth=u||c,e.isReady=!0,e.samples=i,e.generateMipMaps=!1,e.samplingMode=s?t.TEXTURE_BILINEAR_SAMPLINGMODE:t.TEXTURE_NEAREST_SAMPLINGMODE,e.type=t.TEXTURETYPE_FLOAT,e._comparisonFunction=n,e._cachedWrapU=t.TEXTURE_CLAMP_ADDRESSMODE,e._cachedWrapV=t.TEXTURE_CLAMP_ADDRESSMODE},N.prototype.updateRenderTargetTextureSampleCount=function(e,t){return e&&e.texture&&e.samples!==t?(t=Math.min(t,this.getCaps().maxMSAASamples),this._textureHelper.createMSAATexture(e.texture,t),e._depthStencilTexture&&(this._textureHelper.createMSAATexture(e._depthStencilTexture,t),e._depthStencilTexture.samples=t),e._samples=t,e.texture.samples=t,t):t},N.prototype.setDepthStencilTexture=function(e,t,r,s){r&&r.depthStencilTexture?this._setTexture(e,r,!1,!0,s):this._setTexture(e,null,void 0,void 0,s)},N.prototype.createRenderTargetCubeTexture=function(e,r){const s=this._createHardwareRenderTargetWrapper(!1,!0,e),n={generateMipMaps:!0,generateDepthBuffer:!0,generateStencilBuffer:!1,type:t.TEXTURETYPE_UNSIGNED_BYTE,samplingMode:t.TEXTURE_TRILINEAR_SAMPLINGMODE,format:t.TEXTUREFORMAT_RGBA,samples:1,...r};n.generateStencilBuffer=n.generateDepthBuffer&&n.generateStencilBuffer,s.label=n.label??"RenderTargetWrapper",s._generateDepthBuffer=n.generateDepthBuffer,s._generateStencilBuffer=n.generateStencilBuffer;const i=new g(this,5);return i.width=e,i.height=e,i.depth=0,i.isReady=!0,i.isCube=!0,i.samples=n.samples,i.generateMipMaps=n.generateMipMaps,i.samplingMode=n.samplingMode,i.type=n.type,i.format=n.format,this._internalTexturesCache.push(i),s.setTextures(i),(s._generateDepthBuffer||s._generateStencilBuffer)&&s.createDepthStencilTexture(0,void 0===n.samplingMode||n.samplingMode===t.TEXTURE_BILINEAR_SAMPLINGMODE||n.samplingMode===t.TEXTURE_LINEAR_LINEAR||n.samplingMode===t.TEXTURE_TRILINEAR_SAMPLINGMODE||n.samplingMode===t.TEXTURE_LINEAR_LINEAR_MIPLINEAR||n.samplingMode===t.TEXTURE_NEAREST_LINEAR_MIPNEAREST||n.samplingMode===t.TEXTURE_NEAREST_LINEAR_MIPLINEAR||n.samplingMode===t.TEXTURE_NEAREST_LINEAR||n.samplingMode===t.TEXTURE_LINEAR_LINEAR_MIPNEAREST,s._generateStencilBuffer,s.samples),r&&r.createMipMaps&&!n.generateMipMaps&&(i.generateMipMaps=!0),this._textureHelper.createGPUTextureForInternalTexture(i),r&&r.createMipMaps&&!n.generateMipMaps&&(i.generateMipMaps=!1),s};class Ot{constructor(){this.occlusionInternalRetryCounter=0,this.isOcclusionQueryInProgress=!1,this.isOccluded=!1,this.occlusionRetryCount=-1,this.occlusionType=y.OCCLUSION_TYPE_NONE,this.occlusionQueryAlgorithmType=y.OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE,this.forceRenderingWhenOccluded=!1}}s.prototype.getGPUFrameTimeCounter=function(){return null},s.prototype.captureGPUFrameTime=function(e){},s.prototype.createQuery=function(){return null},s.prototype.deleteQuery=function(e){return this},s.prototype.isQueryResultAvailable=function(e){return!1},s.prototype.getQueryResult=function(e){return 0},s.prototype.beginOcclusionQuery=function(e,t){return!1},s.prototype.endOcclusionQuery=function(e){return this},Object.defineProperty(y.prototype,"isOcclusionQueryInProgress",{get:function(){return this._occlusionDataStorage.isOcclusionQueryInProgress},set:function(e){this._occlusionDataStorage.isOcclusionQueryInProgress=e},enumerable:!1,configurable:!0}),Object.defineProperty(y.prototype,"_occlusionDataStorage",{get:function(){return this.__occlusionDataStorage||(this.__occlusionDataStorage=new Ot),this.__occlusionDataStorage},enumerable:!1,configurable:!0}),Object.defineProperty(y.prototype,"isOccluded",{get:function(){return this._occlusionDataStorage.isOccluded},set:function(e){this._occlusionDataStorage.isOccluded=e},enumerable:!0,configurable:!0}),Object.defineProperty(y.prototype,"occlusionQueryAlgorithmType",{get:function(){return this._occlusionDataStorage.occlusionQueryAlgorithmType},set:function(e){this._occlusionDataStorage.occlusionQueryAlgorithmType=e},enumerable:!0,configurable:!0}),Object.defineProperty(y.prototype,"occlusionType",{get:function(){return this._occlusionDataStorage.occlusionType},set:function(e){this._occlusionDataStorage.occlusionType=e},enumerable:!0,configurable:!0}),Object.defineProperty(y.prototype,"occlusionRetryCount",{get:function(){return this._occlusionDataStorage.occlusionRetryCount},set:function(e){this._occlusionDataStorage.occlusionRetryCount=e},enumerable:!0,configurable:!0}),Object.defineProperty(y.prototype,"forceRenderingWhenOccluded",{get:function(){return this._occlusionDataStorage.forceRenderingWhenOccluded},set:function(e){this._occlusionDataStorage.forceRenderingWhenOccluded=e},enumerable:!0,configurable:!0}),y.prototype._checkOcclusionQuery=function(){const e=this._occlusionDataStorage;if(e.occlusionType===y.OCCLUSION_TYPE_NONE)return e.isOccluded=!1,!1;const t=this.getEngine();if(!t.getCaps().supportOcclusionQuery)return e.isOccluded=!1,!1;if(!t.isQueryResultAvailable)return e.isOccluded=!1,!1;if(this.isOcclusionQueryInProgress&&null!==this._occlusionQuery&&void 0!==this._occlusionQuery){if(t.isQueryResultAvailable(this._occlusionQuery)){const r=t.getQueryResult(this._occlusionQuery);e.isOcclusionQueryInProgress=!1,e.occlusionInternalRetryCounter=0,e.isOccluded=!(r>0)}else{if(e.occlusionInternalRetryCounter++,!(-1!==e.occlusionRetryCount&&e.occlusionInternalRetryCounter>e.occlusionRetryCount))return e.occlusionType!==y.OCCLUSION_TYPE_OPTIMISTIC&&e.isOccluded;e.isOcclusionQueryInProgress=!1,e.occlusionInternalRetryCounter=0,e.isOccluded=e.occlusionType!==y.OCCLUSION_TYPE_OPTIMISTIC&&e.isOccluded}}const r=this.getScene();if(r.getBoundingBoxRenderer){const s=r.getBoundingBoxRenderer();null===this._occlusionQuery&&(this._occlusionQuery=t.createQuery()),this._occlusionQuery&&t.beginOcclusionQuery(e.occlusionQueryAlgorithmType,this._occlusionQuery)&&(s.renderOcclusionBoundingBox(this),t.endOcclusionQuery(e.occlusionQueryAlgorithmType),this._occlusionDataStorage.isOcclusionQueryInProgress=!0)}return e.isOccluded},N.prototype.getGPUFrameTimeCounter=function(){return this._timestampQuery.gpuFrameTimeCounter},N.prototype.captureGPUFrameTime=function(e){this._timestampQuery.enable=e&&!!this._caps.timerQuery},N.prototype.createQuery=function(){return this._occlusionQuery.createQuery()},N.prototype.deleteQuery=function(e){return this._occlusionQuery.deleteQuery(e),this},N.prototype.isQueryResultAvailable=function(e){return this._occlusionQuery.isQueryResultAvailable(e)},N.prototype.getQueryResult=function(e){return this._occlusionQuery.getQueryResult(e)},N.prototype.beginOcclusionQuery=function(e,t){return this.compatibilityMode?!!this._occlusionQuery.canBeginQuery(t)&&(this._currentRenderPass?.beginOcclusionQuery(t),!0):(this._bundleList.addItem(new Et(t)),!0)},N.prototype.endOcclusionQuery=function(){return this.compatibilityMode?this._currentRenderPass?.endOcclusionQuery():this._bundleList.addItem(new St),this};const Gt={label:"TextureView_SwapChain_ResolveTarget",dimension:"2d",format:void 0,mipLevelCount:1,arrayLayerCount:1},Nt={label:"TextureView_SwapChain",dimension:"2d",format:void 0,mipLevelCount:1,arrayLayerCount:1},Wt=new R;class $t extends N{get snapshotRenderingMode(){return this._snapshotRendering.mode}set snapshotRenderingMode(e){this._snapshotRendering.mode=e}snapshotRenderingReset(){this._snapshotRendering.reset()}get snapshotRendering(){return this._snapshotRendering.enabled}set snapshotRendering(e){this._snapshotRendering.enabled=e}get disableCacheSamplers(){return!!this._cacheSampler&&this._cacheSampler.disabled}set disableCacheSamplers(e){this._cacheSampler&&(this._cacheSampler.disabled=e)}get disableCacheRenderPipelines(){return!!this._cacheRenderPipeline&&this._cacheRenderPipeline.disabled}set disableCacheRenderPipelines(e){this._cacheRenderPipeline&&(this._cacheRenderPipeline.disabled=e)}get disableCacheBindGroups(){return!!this._cacheBindGroups&&this._cacheBindGroups.disabled}set disableCacheBindGroups(e){this._cacheBindGroups&&(this._cacheBindGroups.disabled=e)}areAllEffectsReady(){return!0}getFontOffset(e){return E(e)}static get IsSupportedAsync(){return navigator.gpu?navigator.gpu.requestAdapter().then((e=>!!e),(()=>!1)).catch((()=>!1)):Promise.resolve(!1)}static get IsSupported(){return n.Warn("You must call IsSupportedAsync for WebGPU!"),!1}get supportsUniformBuffers(){return!0}get supportedExtensions(){return this._adapterSupportedExtensions}get enabledExtensions(){return this._deviceEnabledExtensions}get supportedLimits(){return this._adapterSupportedLimits}get currentLimits(){return this._deviceLimits}get description(){return this.name+this.version}get version(){return 1}getInfo(){return{vendor:this._adapterInfo.vendor||"unknown vendor",renderer:this._adapterInfo.architecture||"unknown renderer",version:this._adapterInfo.description||"unknown version"}}get compatibilityMode(){return this._compatibilityMode}set compatibilityMode(e){this._compatibilityMode=e}get currentSampleCount(){return this._currentRenderTarget?this._currentRenderTarget.samples:this._mainPassSampleCount}static CreateAsync(e,t={}){const r=new $t(e,t);return new Promise((e=>{r.initAsync(t.glslangOptions,t.twgslOptions).then((()=>e(r)))}))}constructor(e,t={}){super(t.antialias??!0,t),this.uniqueId=-1,this._uploadEncoderDescriptor={label:"upload"},this._renderEncoderDescriptor={label:"render"},this._clearDepthValue=1,this._clearReverseDepthValue=0,this._clearStencilValue=0,this._defaultSampleCount=4,this._glslang=null,this._tintWASM=null,this._glslangAndTintAreFullyLoaded=!1,this._adapterInfo={vendor:"",architecture:"",device:"",description:""},this._compiledComputeEffects={},this._counters={numEnableEffects:0,numEnableDrawWrapper:0,numBundleCreationNonCompatMode:0,numBundleReuseNonCompatMode:0},this.countersLastFrame={numEnableEffects:0,numEnableDrawWrapper:0,numBundleCreationNonCompatMode:0,numBundleReuseNonCompatMode:0},this.numMaxUncapturedErrors=20,this.scenes=[],this._virtualScenes=new Array,this._commandBuffers=[null,null],this._mainRenderPassWrapper={renderPassDescriptor:null,colorAttachmentViewDescriptor:null,depthAttachmentViewDescriptor:null,colorAttachmentGPUTextures:[],depthTextureFormat:void 0},this._rttRenderPassWrapper={renderPassDescriptor:null,colorAttachmentViewDescriptor:null,depthAttachmentViewDescriptor:null,colorAttachmentGPUTextures:[],depthTextureFormat:void 0},this._pendingDebugCommands=[],this._currentOverrideVertexBuffers=null,this._currentIndexBuffer=null,this._colorWriteLocal=!0,this._forceEnableEffect=!1,this.isNDCHalfZRange=!0,this.hasOriginBottomLeft=!1,this._workingGlslangAndTintPromise=null,this._viewportsCurrent={x:0,y:0,w:0,h:0},this._scissorsCurrent={x:0,y:0,w:0,h:0},this._scissorCached={x:0,y:0,z:0,w:0},this._stencilRefsCurrent=-1,this._blendColorsCurrent=[null,null,null,null],this._performanceMonitor=new S,this._name="WebGPU",this._drawCalls=new r,t.deviceDescriptor=t.deviceDescriptor||{},t.enableGPUDebugMarkers=t.enableGPUDebugMarkers??!1,n.Log(`Babylon.js v${s.Version} - ${this.description} engine`),navigator.gpu?(t.swapChainFormat=t.swapChainFormat||navigator.gpu.getPreferredCanvasFormat(),this._isWebGPU=!0,this._shaderPlatformName="WEBGPU",this._renderingCanvas=e,this._options=t,this._mainPassSampleCount=t.antialias?this._defaultSampleCount:1,navigator&&navigator.userAgent&&this._setupMobileChecks(),this._sharedInit(this._renderingCanvas),this._shaderProcessor=new Oe,this._shaderProcessorWGSL=new We):n.Error("WebGPU is not supported by your browser.")}prepareGlslangAndTintAsync(){return this._workingGlslangAndTintPromise||(this._workingGlslangAndTintPromise=new Promise((e=>{this._initGlslang(this._glslangOptions??this._options?.glslangOptions).then((t=>{this._glslang=t,this._tintWASM=new Lt,this._tintWASM.initTwgsl(this._twgslOptions??this._options?.twgslOptions).then((()=>{this._glslangAndTintAreFullyLoaded=!0,e()}))}))}))),this._workingGlslangAndTintPromise}initAsync(e,r){return this.uniqueId=$t._InstanceId++,this._glslangOptions=e,this._twgslOptions=r,navigator.gpu.requestAdapter(this._options).then((e=>{if(e){this._adapter=e,this._adapterSupportedExtensions=[],this._adapter.features?.forEach((e=>this._adapterSupportedExtensions.push(e))),this._adapterSupportedLimits=this._adapter.limits,this._adapterInfo=this._adapter.info;const t=this._options.deviceDescriptor??{},r=t?.requiredFeatures??(this._options.enableAllFeatures?this._adapterSupportedExtensions:void 0);if(r){const e=r,s=[];for(const t of e)-1!==this._adapterSupportedExtensions.indexOf(t)&&s.push(t);t.requiredFeatures=s}if(this._options.setMaximumLimits&&!t.requiredLimits){t.requiredLimits={};for(const e in this._adapterSupportedLimits)"minSubgroupSize"!==e&&"maxSubgroupSize"!==e&&(t.requiredLimits[e]=this._adapterSupportedLimits[e])}return t.label=`BabylonWebGPUDevice${this.uniqueId}`,this._adapter.requestDevice(t)}throw"Could not retrieve a WebGPU adapter (adapter is null)."})).then((e=>{this._device=e,this._deviceEnabledExtensions=[],this._device.features?.forEach((e=>this._deviceEnabledExtensions.push(e))),this._deviceLimits=e.limits;let t=-1;this._device.addEventListener("uncapturederror",(e=>{++t<this.numMaxUncapturedErrors?n.Warn(`WebGPU uncaptured error (${t+1}): ${e.error} - ${e.error.message}`):t++===this.numMaxUncapturedErrors&&n.Warn(`WebGPU uncaptured error: too many warnings (${this.numMaxUncapturedErrors}), no more warnings will be reported to the console for this engine.`)})),this._doNotHandleContextLost||this._device.lost?.then((e=>{this._isDisposed||(this._contextWasLost=!0,n.Warn("WebGPU context lost. "+e),this.onContextLostObservable.notifyObservers(this),this._restoreEngineAfterContextLost((async()=>{const e=this.snapshotRenderingMode,t=this.snapshotRendering,r=this.disableCacheSamplers,s=this.disableCacheRenderPipelines,n=this.disableCacheBindGroups,i=this.enableGPUTimingMeasurements;await this.initAsync(this._glslangOptions??this._options?.glslangOptions,this._twgslOptions??this._options?.twgslOptions),this.snapshotRenderingMode=e,this.snapshotRendering=t,this.disableCacheSamplers=r,this.disableCacheRenderPipelines=s,this.disableCacheBindGroups=n,this.enableGPUTimingMeasurements=i,this._currentRenderPass=null})))}))})).then((()=>{this._initializeLimits(),this._bufferManager=new Ke(this,this._device),this._textureHelper=new Qe(this,this._device,this._bufferManager,this._deviceEnabledExtensions),this._cacheSampler=new et(this._device),this._cacheBindGroups=new ft(this._device,this._cacheSampler,this),this._timestampQuery=new It(this,this._device,this._bufferManager),this._occlusionQuery=this._device.createQuerySet?new Bt(this,this._device,this._bufferManager):void 0,this._bundleList=new At(this._device),this._snapshotRendering=new Pt(this,this._snapshotRenderingMode,this._bundleList),this._ubInvertY=this._bufferManager.createBuffer(new Float32Array([-1,0]),H.Uniform|H.CopyDst,"UBInvertY"),this._ubDontInvertY=this._bufferManager.createBuffer(new Float32Array([1,0]),H.Uniform|H.CopyDst,"UBDontInvertY"),this.dbgVerboseLogsForFirstFrames&&void 0===this._count&&(this._count=0,n.Log(["%c frame #"+this._count+" - begin","background: #ffff00"])),this._uploadEncoder=this._device.createCommandEncoder(this._uploadEncoderDescriptor),this._renderEncoder=this._device.createCommandEncoder(this._renderEncoderDescriptor),this._emptyVertexBuffer=new d(this,[0],"",{stride:1,offset:0,size:1,label:"EmptyVertexBuffer"}),this._cacheRenderPipeline=new ut(this._device,this._emptyVertexBuffer),this._depthCullingState=new ht(this._cacheRenderPipeline),this._stencilStateComposer=new ct(this._cacheRenderPipeline),this._stencilStateComposer.stencilGlobal=this._stencilState,this._depthCullingState.depthTest=!0,this._depthCullingState.depthFunc=t.LEQUAL,this._depthCullingState.depthMask=!0,this._textureHelper.setCommandEncoder(this._uploadEncoder),this._clearQuad=new mt(this._device,this,this._emptyVertexBuffer),this._defaultDrawContext=this.createDrawContext(),this._currentDrawContext=this._defaultDrawContext,this._defaultMaterialContext=this.createMaterialContext(),this._currentMaterialContext=this._defaultMaterialContext,this._initializeContextAndSwapChain(),this._initializeMainAttachments(),this.resize()})).catch((e=>{throw n.Error("A fatal error occurred during WebGPU creation/initialization."),e}))}_initGlslang(e){return e=e||{},(e={...$t._GlslangDefaultOptions,...e}).glslang?Promise.resolve(e.glslang):self.glslang?self.glslang(e.wasmPath):e.jsPath&&e.wasmPath?m.LoadBabylonScriptAsync(e.jsPath).then((()=>self.glslang(m.GetBabylonScriptURL(e.wasmPath)))):Promise.reject("gslang is not available.")}_initializeLimits(){this._caps={maxTexturesImageUnits:this._deviceLimits.maxSampledTexturesPerShaderStage,maxVertexTextureImageUnits:this._deviceLimits.maxSampledTexturesPerShaderStage,maxCombinedTexturesImageUnits:2*this._deviceLimits.maxSampledTexturesPerShaderStage,maxTextureSize:this._deviceLimits.maxTextureDimension2D,maxCubemapTextureSize:this._deviceLimits.maxTextureDimension2D,maxRenderTextureSize:this._deviceLimits.maxTextureDimension2D,maxVertexAttribs:this._deviceLimits.maxVertexAttributes,maxDrawBuffers:8,maxVaryingVectors:this._deviceLimits.maxInterStageShaderVariables,maxFragmentUniformVectors:Math.floor(this._deviceLimits.maxUniformBufferBindingSize/4),maxVertexUniformVectors:Math.floor(this._deviceLimits.maxUniformBufferBindingSize/4),standardDerivatives:!0,astc:this._deviceEnabledExtensions.indexOf("texture-compression-astc")>=0||void 0,s3tc:this._deviceEnabledExtensions.indexOf("texture-compression-bc")>=0||void 0,pvrtc:null,etc1:null,etc2:this._deviceEnabledExtensions.indexOf("texture-compression-etc2")>=0||void 0,bptc:this._deviceEnabledExtensions.indexOf("texture-compression-bc")>=0||void 0,maxAnisotropy:16,uintIndices:!0,fragmentDepthSupported:!0,highPrecisionShaderSupported:!0,colorBufferFloat:!0,supportFloatTexturesResolve:!1,rg11b10ufColorRenderable:this._deviceEnabledExtensions.indexOf("rg11b10ufloat-renderable")>=0,textureFloat:!0,textureFloatLinearFiltering:this._deviceEnabledExtensions.indexOf("float32-filterable")>=0,textureFloatRender:!0,textureHalfFloat:!0,textureHalfFloatLinearFiltering:!0,textureHalfFloatRender:!0,textureLOD:!0,texelFetch:!0,drawBuffersExtension:!0,depthTextureExtension:!0,vertexArrayObject:!1,instancedArrays:!0,timerQuery:"undefined"!=typeof BigUint64Array&&-1!==this._deviceEnabledExtensions.indexOf("timestamp-query")||void 0,supportOcclusionQuery:"undefined"!=typeof BigUint64Array,canUseTimestampForTimerQuery:!0,multiview:!1,oculusMultiview:!1,parallelShaderCompile:void 0,blendMinMax:!0,maxMSAASamples:4,canUseGLInstanceID:!0,canUseGLVertexID:!0,supportComputeShaders:!0,supportSRGBBuffers:!0,supportTransformFeedbacks:!1,textureMaxLevel:!0,texture2DArrayMaxLayerCount:this._deviceLimits.maxTextureArrayLayers,disableMorphTargetTexture:!1,textureNorm16:!1},this._features={forceBitmapOverHTMLImageElement:!0,supportRenderAndCopyToLodForFloatTextures:!0,supportDepthStencilTexture:!0,supportShadowSamplers:!0,uniformBufferHardCheckMatrix:!1,allowTexturePrefiltering:!0,trackUbosInFrame:!0,checkUbosContentBeforeUpload:!0,supportCSM:!0,basisNeedsPOT:!1,support3DTextures:!0,needTypeSuffixInShaderConstants:!0,supportMSAA:!0,supportSSAO2:!0,supportIBLShadows:!0,supportExtendedTextureFormats:!0,supportSwitchCaseInShader:!0,supportSyncTextureRead:!1,needsInvertingBitmap:!1,useUBOBindingCache:!1,needShaderCodeInlining:!0,needToAlwaysBindUniformBuffers:!0,supportRenderPasses:!0,supportSpriteInstancing:!0,forceVertexBufferStrideAndOffsetMultiple4Bytes:!0,_checkNonFloatVertexBuffersDontRecreatePipelineContext:!0,_collectUbosUpdatedInFrame:!1}}_initializeContextAndSwapChain(){if(!this._renderingCanvas)throw"The rendering canvas has not been set!";this._context=this._renderingCanvas.getContext("webgpu"),this._configureContext(),this._colorFormat=this._options.swapChainFormat,this._mainRenderPassWrapper.colorAttachmentGPUTextures=[new $e(this)],this._mainRenderPassWrapper.colorAttachmentGPUTextures[0].format=this._colorFormat,this._setColorFormat(this._mainRenderPassWrapper)}_initializeMainAttachments(){if(!this._bufferManager)return;this.flushFramebuffer(),this._mainTextureExtends={width:this.getRenderWidth(!0),height:this.getRenderHeight(!0),depthOrArrayLayers:1};const e=new Float32Array([this.getRenderHeight(!0)]);let t;if(this._bufferManager.setSubData(this._ubInvertY,4,e),this._bufferManager.setSubData(this._ubDontInvertY,4,e),this._options.antialias){const e={label:`Texture_MainColor_${this._mainTextureExtends.width}x${this._mainTextureExtends.height}_antialiasing`,size:this._mainTextureExtends,mipLevelCount:1,sampleCount:this._mainPassSampleCount,dimension:"2d",format:this._options.swapChainFormat,usage:16};this._mainTexture&&this._textureHelper.releaseTexture(this._mainTexture),this._mainTexture=this._device.createTexture(e),t=[{view:this._mainTexture.createView({label:"TextureView_MainColor_antialiasing",dimension:"2d",format:this._options.swapChainFormat,mipLevelCount:1,arrayLayerCount:1}),clearValue:new R(0,0,0,1),loadOp:"clear",storeOp:"store"}]}else t=[{view:void 0,clearValue:new R(0,0,0,1),loadOp:"clear",storeOp:"store"}];this._mainRenderPassWrapper.depthTextureFormat=this.isStencilEnable?"depth24plus-stencil8":"depth32float",this._setDepthTextureFormat(this._mainRenderPassWrapper),this._setColorFormat(this._mainRenderPassWrapper);const r={label:`Texture_MainDepthStencil_${this._mainTextureExtends.width}x${this._mainTextureExtends.height}`,size:this._mainTextureExtends,mipLevelCount:1,sampleCount:this._mainPassSampleCount,dimension:"2d",format:this._mainRenderPassWrapper.depthTextureFormat,usage:16};this._depthTexture&&this._textureHelper.releaseTexture(this._depthTexture),this._depthTexture=this._device.createTexture(r);const s={view:this._depthTexture.createView({label:`TextureView_MainDepthStencil_${this._mainTextureExtends.width}x${this._mainTextureExtends.height}`,dimension:"2d",format:this._depthTexture.format,mipLevelCount:1,arrayLayerCount:1}),depthClearValue:this._clearDepthValue,depthLoadOp:"clear",depthStoreOp:"store",stencilClearValue:this._clearStencilValue,stencilLoadOp:this.isStencilEnable?"clear":void 0,stencilStoreOp:this.isStencilEnable?"store":void 0};this._mainRenderPassWrapper.renderPassDescriptor={label:"MainRenderPass",colorAttachments:t,depthStencilAttachment:s}}_sharedInit(e){super._sharedInit(e),A(this,e,this._creationOptions)}_configureContext(){this._context.configure({device:this._device,format:this._options.swapChainFormat,usage:17,alphaMode:this.premultipliedAlpha?"premultiplied":"opaque"})}resizeImageBitmap(e,t,r){return C(this,e,t,r)}_createImageBitmapFromSource(e,t){return I(this,e,t)}switchFullscreen(e){this.isFullscreen?this.exitFullscreen():this.enterFullscreen(e)}enterFullscreen(e){this.isFullscreen||(this._pointerLockRequested=e,this._renderingCanvas&&v(this._renderingCanvas))}exitFullscreen(){this.isFullscreen&&B()}enterPointerlock(){this._renderingCanvas&&w(this._renderingCanvas)}exitPointerlock(){L()}_rebuildBuffers(){super._rebuildBuffers();for(const e of this._storageBuffers)e.getBuffer().engineId!==this.uniqueId&&e._rebuild()}_restoreEngineAfterContextLost(e){ut.ResetCache(),ft.ResetCache();const t=e=>{for(const t of e){for(const e of t.meshes){const t=e.subMeshes;if(t)for(const e of t)e._drawWrappers=[]}for(const e of t.materials)e._materialContext?.reset()}};t(this.scenes),t(this._virtualScenes);const r=[];for(const e of this._uniformBuffers)e.name.indexOf("leftOver")<0&&r.push(e);this._uniformBuffers=r,super._restoreEngineAfterContextLost(e)}setSize(e,t,r=!1){return!!super.setSize(e,t,r)&&(this.dbgVerboseLogsForFirstFrames&&(void 0===this._count&&(this._count=0),(!this._count||this._count<this.dbgVerboseLogsNumFrames)&&n.Log(["frame #"+this._count+" - setSize -",e,t])),this._initializeMainAttachments(),this.snapshotRendering&&this.snapshotRenderingReset(),!0)}_getShaderProcessor(e){return 1===e?this._shaderProcessorWGSL:this._shaderProcessor}_getShaderProcessingContext(e,t){return new we(e,t)}_getCurrentRenderPass(){return this._currentRenderTarget&&!this._currentRenderPass?this._startRenderTargetRenderPass(this._currentRenderTarget,!1,null,!1,!1):this._currentRenderPass||this._startMainRenderPass(!1),this._currentRenderPass}_getCurrentRenderPassWrapper(){return this._currentRenderTarget?this._rttRenderPassWrapper:this._mainRenderPassWrapper}applyStates(){this._stencilStateComposer.apply(),this._cacheRenderPipeline.setAlphaBlendEnabled(this._alphaState.alphaBlend)}wipeCaches(e){this.preventCacheWipeBetweenFrames&&!e||(this._forceEnableEffect=!0,this._currentIndexBuffer=null,this._currentOverrideVertexBuffers=null,this._cacheRenderPipeline.setBuffers(null,null,null),e&&(this._stencilStateComposer.reset(),this._depthCullingState.reset(),this._depthCullingState.depthFunc=t.LEQUAL,this._alphaState.reset(),this._alphaMode=t.ALPHA_ADD,this._alphaEquation=t.ALPHA_DISABLE,this._cacheRenderPipeline.setAlphaBlendFactors(this._alphaState._blendFunctionParameters,this._alphaState._blendEquationParameters),this._cacheRenderPipeline.setAlphaBlendEnabled(!1),this.setColorWrite(!0)),this._cachedVertexBuffers=null,this._cachedIndexBuffer=null,this._cachedEffectForVertexBuffers=null)}setColorWrite(e){this._colorWriteLocal=e,this._cacheRenderPipeline.setWriteMask(e?15:0)}getColorWrite(){return this._colorWriteLocal}_mustUpdateViewport(){const e=this._viewportCached.x,t=this._viewportCached.y,r=this._viewportCached.z,s=this._viewportCached.w,n=this._viewportsCurrent.x!==e||this._viewportsCurrent.y!==t||this._viewportsCurrent.w!==r||this._viewportsCurrent.h!==s;return n&&(this._viewportsCurrent.x=this._viewportCached.x,this._viewportsCurrent.y=this._viewportCached.y,this._viewportsCurrent.w=this._viewportCached.z,this._viewportsCurrent.h=this._viewportCached.w),n}_applyViewport(e){const t=Math.floor(this._viewportCached.x),r=Math.floor(this._viewportCached.z),s=Math.floor(this._viewportCached.w);let i=Math.floor(this._viewportCached.y);this._currentRenderTarget||(i=this.getRenderHeight(!0)-i-s),e?e.addItem(new bt(t,i,r,s)):this._getCurrentRenderPass().setViewport(t,i,r,s,0,1),this.dbgVerboseLogsForFirstFrames&&(void 0===this._count&&(this._count=0),(!this._count||this._count<this.dbgVerboseLogsNumFrames)&&n.Log(["frame #"+this._count+" - viewport applied - (",this._viewportCached.x,this._viewportCached.y,this._viewportCached.z,this._viewportCached.w,") current pass is main pass="+this._currentPassIsMainPass()]))}_viewport(e,t,r,s){this._viewportCached.x=e,this._viewportCached.y=t,this._viewportCached.z=r,this._viewportCached.w=s}_mustUpdateScissor(){const e=this._scissorCached.x,t=this._scissorCached.y,r=this._scissorCached.z,s=this._scissorCached.w,n=this._scissorsCurrent.x!==e||this._scissorsCurrent.y!==t||this._scissorsCurrent.w!==r||this._scissorsCurrent.h!==s;return n&&(this._scissorsCurrent.x=this._scissorCached.x,this._scissorsCurrent.y=this._scissorCached.y,this._scissorsCurrent.w=this._scissorCached.z,this._scissorsCurrent.h=this._scissorCached.w),n}_applyScissor(e){const t=this._currentRenderTarget?this._scissorCached.y:this.getRenderHeight()-this._scissorCached.w-this._scissorCached.y;e?e.addItem(new xt(this._scissorCached.x,t,this._scissorCached.z,this._scissorCached.w)):this._getCurrentRenderPass().setScissorRect(this._scissorCached.x,t,this._scissorCached.z,this._scissorCached.w),this.dbgVerboseLogsForFirstFrames&&(void 0===this._count&&(this._count=0),(!this._count||this._count<this.dbgVerboseLogsNumFrames)&&n.Log(["frame #"+this._count+" - scissor applied - (",this._scissorCached.x,this._scissorCached.y,this._scissorCached.z,this._scissorCached.w,") current pass is main pass="+this._currentPassIsMainPass()]))}_scissorIsActive(){return 0!==this._scissorCached.x||0!==this._scissorCached.y||0!==this._scissorCached.z||0!==this._scissorCached.w}enableScissor(e,t,r,s){this._scissorCached.x=e,this._scissorCached.y=t,this._scissorCached.z=r,this._scissorCached.w=s}disableScissor(){this._scissorCached.x=this._scissorCached.y=this._scissorCached.z=this._scissorCached.w=0,this._scissorsCurrent.x=this._scissorsCurrent.y=this._scissorsCurrent.w=this._scissorsCurrent.h=0}_mustUpdateStencilRef(){const e=this._stencilStateComposer.funcRef!==this._stencilRefsCurrent;return e&&(this._stencilRefsCurrent=this._stencilStateComposer.funcRef),e}_applyStencilRef(e){e?e.addItem(new Tt(this._stencilStateComposer.funcRef??0)):this._getCurrentRenderPass().setStencilReference(this._stencilStateComposer.funcRef??0)}_mustUpdateBlendColor(){const e=this._alphaState._blendConstants,t=e[0]!==this._blendColorsCurrent[0]||e[1]!==this._blendColorsCurrent[1]||e[2]!==this._blendColorsCurrent[2]||e[3]!==this._blendColorsCurrent[3];return t&&(this._blendColorsCurrent[0]=e[0],this._blendColorsCurrent[1]=e[1],this._blendColorsCurrent[2]=e[2],this._blendColorsCurrent[3]=e[3]),t}_applyBlendColor(e){e?e.addItem(new yt(this._alphaState._blendConstants.slice())):this._getCurrentRenderPass().setBlendConstant(this._alphaState._blendConstants)}_resetRenderPassStates(){this._viewportsCurrent.x=this._viewportsCurrent.y=this._viewportsCurrent.w=this._viewportsCurrent.h=0,this._scissorsCurrent.x=this._scissorsCurrent.y=this._scissorsCurrent.w=this._scissorsCurrent.h=0,this._stencilRefsCurrent=-1,this._blendColorsCurrent[0]=this._blendColorsCurrent[1]=this._blendColorsCurrent[2]=this._blendColorsCurrent[3]=null}clear(e,t,r,s=!1){e&&void 0===e.a&&(e.a=1);const i=this._scissorIsActive();this.dbgVerboseLogsForFirstFrames&&(void 0===this._count&&(this._count=0),(!this._count||this._count<this.dbgVerboseLogsNumFrames)&&n.Log(["frame #"+this._count+" - clear - backBuffer=",t," depth=",r," stencil=",s," scissor is active=",i])),this._currentRenderTarget?i?(this._currentRenderPass||this._startRenderTargetRenderPass(this._currentRenderTarget,!1,t?e:null,r,s),this._applyScissor(this.compatibilityMode?null:this._bundleList),this._clearFullQuad(t?e:null,r,s)):(this._currentRenderPass&&this._endCurrentRenderPass(),this._startRenderTargetRenderPass(this._currentRenderTarget,!0,t?e:null,r,s)):(this._currentRenderPass&&i||this._startMainRenderPass(!i,t?e:null,r,s),i&&(this._applyScissor(this.compatibilityMode?null:this._bundleList),this._clearFullQuad(t?e:null,r,s)))}_clearFullQuad(e,t,r){const s=this.compatibilityMode?this._getCurrentRenderPass():null;this._clearQuad.setColorFormat(this._colorFormat),this._clearQuad.setDepthStencilFormat(this._depthTextureFormat),this._clearQuad.setMRTAttachments(this._cacheRenderPipeline.mrtAttachments??[],this._cacheRenderPipeline.mrtTextureArray??[],this._cacheRenderPipeline.mrtTextureCount),this.compatibilityMode?s.setStencilReference(this._clearStencilValue):this._bundleList.addItem(new Tt(this._clearStencilValue));const n=this._clearQuad.clear(s,e,t,r,this.currentSampleCount);this.compatibilityMode?this._applyStencilRef(null):(this._bundleList.addBundle(n),this._applyStencilRef(this._bundleList),this._reportDrawCall())}createVertexBuffer(e,t,r){let s;s=e instanceof Array?new Float32Array(e):e instanceof ArrayBuffer?new Uint8Array(e):e;return this._bufferManager.createBuffer(s,H.Vertex|H.CopyDst,r)}createDynamicVertexBuffer(e,t){return this.createVertexBuffer(e,void 0,t)}createIndexBuffer(e,t,r){let s,n=!0;e instanceof Uint32Array||e instanceof Int32Array?s=e:e instanceof Uint16Array?(s=e,n=!1):e.length>65535?s=new Uint32Array(e):(s=new Uint16Array(e),n=!1);const i=this._bufferManager.createBuffer(s,H.Index|H.CopyDst,r);return i.is32Bits=n,i}updateDynamicIndexBuffer(e,t,r=0){const s=e;let n;n=e.is32Bits?t instanceof Uint32Array?t:new Uint32Array(t):t instanceof Uint16Array?t:new Uint16Array(t),this._bufferManager.setSubData(s,r,n)}updateDynamicVertexBuffer(e,t,r,s){const n=e;let i;void 0===r&&(r=0),void 0===s?(i=t instanceof Array?new Float32Array(t):t instanceof ArrayBuffer?new Uint8Array(t):t,s=i.byteLength):i=t instanceof Array?new Float32Array(t):t instanceof ArrayBuffer?new Uint8Array(t):t,this._bufferManager.setSubData(n,r,i,0,s)}_createBuffer(e,r,s){let n;n=e instanceof Array?new Float32Array(e):e instanceof ArrayBuffer?new Uint8Array(e):e;let i=0;return r&t.BUFFER_CREATIONFLAG_READ&&(i|=H.CopySrc),r&t.BUFFER_CREATIONFLAG_WRITE&&(i|=H.CopyDst),r&t.BUFFER_CREATIONFLAG_UNIFORM&&(i|=H.Uniform),r&t.BUFFER_CREATIONFLAG_VERTEX&&(i|=H.Vertex),r&t.BUFFER_CREATIONFLAG_INDEX&&(i|=H.Index),r&t.BUFFER_CREATIONFLAG_STORAGE&&(i|=H.Storage),r&t.BUFFER_CREATIONFLAG_INDIRECT&&(i|=H.Indirect),this._bufferManager.createBuffer(n,i,s)}bindBuffersDirectly(){throw"Not implemented on WebGPU"}updateAndBindInstancesBuffer(){throw"Not implemented on WebGPU"}unbindInstanceAttributes(){}bindBuffers(e,t,r,s){this._currentIndexBuffer=t,this._currentOverrideVertexBuffers=s??null,this._cacheRenderPipeline.setBuffers(e,t,this._currentOverrideVertexBuffers)}_releaseBuffer(e){return this._bufferManager.releaseBuffer(e)}createUniformBuffer(e,t){let r;r=e instanceof Array?new Float32Array(e):e;return this._bufferManager.createBuffer(r,H.Uniform|H.CopyDst,t)}createDynamicUniformBuffer(e,t){return this.createUniformBuffer(e,t)}updateUniformBuffer(e,t,r,s){void 0===r&&(r=0);const n=e;let i;void 0===s?(i=t instanceof Float32Array?t:new Float32Array(t),s=i.byteLength):i=t instanceof Float32Array?t:new Float32Array(t),this._bufferManager.setSubData(n,r,i,0,s)}bindUniformBufferBase(e,t,r){this._currentDrawContext.setBuffer(r,e)}bindUniformBlock(){}createEffect(e,t,r,s,n,i,a,o,u,c=0,h){const l="string"==typeof e?e:e.vertexToken||e.vertexSource||e.vertexElement||e.vertex,d="string"==typeof e?e:e.fragmentToken||e.fragmentSource||e.fragmentElement||e.fragment,p=this._getGlobalDefines();let _=n??t.defines??"";p&&(_+="\n"+p);const g=l+"+"+d+"@"+_;if(this._compiledEffects[g]){const e=this._compiledEffects[g];return a&&e.isReady()&&a(e),e._refCount++,e}const f=new P(e,t,r,s,this,n,i,a,o,u,g,t.shaderLanguage??c,t.extraInitializationsAsync??h);return this._compiledEffects[g]=f,f}_compileRawShaderToSpirV(e,t){return this._glslang.compileGLSL(e,t)}_compileShaderToSpirV(e,t,r,s){return this._compileRawShaderToSpirV(s+(r?r+"\n":"")+e,t)}_getWGSLShader(e,t,r){return(r=r?"//"+r.split("\n").join("\n//")+"\n":"")+e}_createPipelineStageDescriptor(e,t,r,s,n){return this._tintWASM&&0===r&&(e=this._tintWASM.convertSpirV2WGSL(e,s),t=this._tintWASM.convertSpirV2WGSL(t,n)),{vertexStage:{module:this._device.createShaderModule({label:"vertex",code:e}),entryPoint:"main"},fragmentStage:{module:this._device.createShaderModule({label:"fragment",code:t}),entryPoint:"main"}}}_compileRawPipelineStageDescriptor(e,r,s){const n=e.indexOf(t.DISABLEUA)>=0,i=r.indexOf(t.DISABLEUA)>=0,a=0===s?this._compileRawShaderToSpirV(e,"vertex"):e,o=0===s?this._compileRawShaderToSpirV(r,"fragment"):r;return this._createPipelineStageDescriptor(a,o,s,n,i)}_compilePipelineStageDescriptor(e,r,s,n){this.onBeforeShaderCompilationObservable.notifyObservers(this);const i=e.indexOf(t.DISABLEUA)>=0,a=r.indexOf(t.DISABLEUA)>=0,o="#version 450\n",u=0===n?this._compileShaderToSpirV(e,"vertex",s,o):this._getWGSLShader(e,"vertex",s),c=0===n?this._compileShaderToSpirV(r,"fragment",s,o):this._getWGSLShader(r,"fragment",s),h=this._createPipelineStageDescriptor(u,c,n,i,a);return this.onAfterShaderCompilationObservable.notifyObservers(this),h}createRawShaderProgram(){throw"Not available on WebGPU"}createShaderProgram(){throw"Not available on WebGPU"}inlineShaderCode(e){const t=new wt(e);return t.debug=!1,t.processCode(),t.code}createPipelineContext(e){return new ve(e,this)}createMaterialContext(){return new dt}createDrawContext(){return new pt(this._bufferManager)}async _preparePipelineContext(e,t,r,s,i,a,o,u,c,h,l){const d=e,p=d.shaderProcessingContext.shaderLanguage;0!==p||this._glslangAndTintAreFullyLoaded||await this.prepareGlslangAndTintAsync(),this.dbgShowShaderCode&&(n.Log(["defines",u]),n.Log(t),n.Log(r),n.Log("***********************************************")),d.sources={fragment:r,vertex:t,rawVertex:i,rawFragment:a},d.stages=s?this._compileRawPipelineStageDescriptor(t,r,p):this._compilePipelineStageDescriptor(t,r,u,p),l()}getAttributes(e,t){const r=new Array(t.length),s=e;for(let e=0;e<t.length;e++){const n=t[e],i=s.shaderProcessingContext.availableAttributes[n];void 0!==i&&(r[e]=i)}return r}enableEffect(e){if(e){if(F(e)){if(!e.effect||e.effect===this._currentEffect&&e.materialContext===this._currentMaterialContext&&e.drawContext===this._currentDrawContext&&!this._forceEnableEffect){if(!e.effect&&this.dbgShowEmptyEnableEffectCalls)throw n.Log(["drawWrapper=",e]),"Invalid call to enableEffect: the effect property is empty!";return}if(this._currentEffect=e.effect,this._currentMaterialContext=e.materialContext,this._currentDrawContext=e.drawContext,this._counters.numEnableDrawWrapper++,!this._currentMaterialContext)throw n.Log(["drawWrapper=",e]),"Invalid call to enableEffect: the materialContext property is empty!"}else this._currentEffect=e,this._currentMaterialContext=this._defaultMaterialContext,this._currentDrawContext=this._defaultDrawContext,this._counters.numEnableEffects++,this.dbgLogIfNotDrawWrapper&&n.Warn(`enableEffect has been called with an Effect and not a Wrapper! effect.uniqueId=${e.uniqueId}, effect.name=${e.name}, effect.name.vertex=${"string"==typeof e.name?"":e.name.vertex}, effect.name.fragment=${"string"==typeof e.name?"":e.name.fragment}`,10);this._stencilStateComposer.stencilMaterial=void 0,this._forceEnableEffect=!1,this._currentEffect.onBind&&this._currentEffect.onBind(this._currentEffect),this._currentEffect._onBindObservable&&this._currentEffect._onBindObservable.notifyObservers(this._currentEffect)}}_releaseEffect(e){this._compiledEffects[e._key]&&(delete this._compiledEffects[e._key],this._deletePipelineContext(e.getPipelineContext()))}releaseEffects(){for(const e in this._compiledEffects){const t=this._compiledEffects[e].getPipelineContext();this._deletePipelineContext(t)}this._compiledEffects={}}_deletePipelineContext(e){e&&D(e)}get needPOTTextures(){return!1}_createHardwareTexture(){return new $e(this)}_releaseTexture(e){const t=this._internalTexturesCache.indexOf(e);-1!==t&&this._internalTexturesCache.splice(t,1),this._textureHelper.releaseTexture(e)}_getRGBABufferInternalSizedFormat(){return t.TEXTUREFORMAT_RGBA}updateTextureComparisonFunction(e,t){e._comparisonFunction=t}_createInternalTexture(e,r,s=!0,i=0){const a={};void 0!==r&&"object"==typeof r?(a.generateMipMaps=r.generateMipMaps,a.createMipMaps=r.createMipMaps,a.type=void 0===r.type?t.TEXTURETYPE_UNSIGNED_BYTE:r.type,a.samplingMode=void 0===r.samplingMode?t.TEXTURE_TRILINEAR_SAMPLINGMODE:r.samplingMode,a.format=void 0===r.format?t.TEXTUREFORMAT_RGBA:r.format,a.samples=r.samples??1,a.creationFlags=r.creationFlags??0,a.useSRGBBuffer=r.useSRGBBuffer??!1,a.label=r.label):(a.generateMipMaps=r,a.type=t.TEXTURETYPE_UNSIGNED_BYTE,a.samplingMode=t.TEXTURE_TRILINEAR_SAMPLINGMODE,a.format=t.TEXTUREFORMAT_RGBA,a.samples=1,a.creationFlags=0,a.useSRGBBuffer=!1),(a.type!==t.TEXTURETYPE_FLOAT||this._caps.textureFloatLinearFiltering)&&(a.type!==t.TEXTURETYPE_HALF_FLOAT||this._caps.textureHalfFloatLinearFiltering)||(a.samplingMode=t.TEXTURE_NEAREST_SAMPLINGMODE),a.type!==t.TEXTURETYPE_FLOAT||this._caps.textureFloat||(a.type=t.TEXTURETYPE_UNSIGNED_BYTE,n.Warn("Float textures are not supported. Type forced to TEXTURETYPE_UNSIGNED_BYTE"));const o=new g(this,i),u=e.width||e,c=e.height||e,h=e.depth||0,l=e.layers||0;if(o.baseWidth=u,o.baseHeight=c,o.width=u,o.height=c,o.depth=h||l,o.isReady=!0,o.samples=a.samples,o.generateMipMaps=!!a.generateMipMaps,o.samplingMode=a.samplingMode,o.type=a.type,o.format=a.format,o.is2DArray=l>0,o.is3D=h>0,o._cachedWrapU=t.TEXTURE_CLAMP_ADDRESSMODE,o._cachedWrapV=t.TEXTURE_CLAMP_ADDRESSMODE,o._useSRGBBuffer=a.useSRGBBuffer,o.label=a.label,this._internalTexturesCache.push(o),!s){const e=!a.generateMipMaps&&a.createMipMaps;e&&(o.generateMipMaps=!0),this._textureHelper.createGPUTextureForInternalTexture(o,u,c,l||1,a.creationFlags),e&&(o.generateMipMaps=!1)}return o}createTexture(e,r,s,n,i=t.TEXTURE_TRILINEAR_SAMPLINGMODE,a=null,o=null,u=null,c=null,h=null,l=null,d,p,_,g){return this._createTextureBase(e,r,s,n,i,a,o,((e,r,s,n,i,a,o,u)=>{const c=n;if(e.baseWidth=c.width,e.baseHeight=c.height,e.width=c.width,e.height=c.height,e.format=-1!==e.format?e.format:h??t.TEXTUREFORMAT_RGBA,e.type=-1!==e.type?e.type:t.TEXTURETYPE_UNSIGNED_BYTE,e._creationFlags=_??0,u(e.width,e.height,c,r,e,(()=>{})),e._hardwareTexture?.underlyingResource)a||o||this._generateMipmaps(e,this._uploadEncoder);else{const t=this._textureHelper.createGPUTextureForInternalTexture(e,c.width,c.height,void 0,_);O.IsImageBitmap(c)&&(this._textureHelper.updateTexture(c,e,c.width,c.height,e.depth,t.format,0,0,i,!1,0,0),a||o||this._generateMipmaps(e,this._uploadEncoder))}s&&s.removePendingData(e),e.isReady=!0,e.onLoadedObservable.notifyObservers(e),e.onLoadedObservable.clear()}),(()=>!1),u,c,h,l,d,p,g)}wrapWebGPUTexture(e){const t=new $e(this,e),r=new g(this,0,!0);return r._hardwareTexture=t,r.isReady=!0,r}wrapWebGLTexture(){throw new Error("wrapWebGLTexture is not supported, use wrapWebGPUTexture instead.")}_getUseSRGBBuffer(e,t){return e&&this._caps.supportSRGBBuffers}_unpackFlipY(e){}updateTextureSamplingMode(e,t,r=!1){r&&(t.generateMipMaps=!0,this._generateMipmaps(t)),t.samplingMode=e}updateTextureWrappingMode(e,t,r=null,s=null){null!==t&&(e._cachedWrapU=t),null!==r&&(e._cachedWrapV=r),(e.is2DArray||e.is3D)&&null!==s&&(e._cachedWrapR=s)}updateTextureDimensions(e,t,r,s=1){if(!e._hardwareTexture)return;if(e.width===t&&e.height===r&&e.depth===s)return;const n=e._hardwareTexture.textureAdditionalUsages;e._hardwareTexture.release(),this._textureHelper.createGPUTextureForInternalTexture(e,t,r,s,n)}_setInternalTexture(e,r,s){if(s=s??e,this._currentEffect){const n=this._currentEffect._pipelineContext.shaderProcessingContext.availableTextures[s];if(this._currentMaterialContext.setTexture(e,r),n&&n.autoBindSampler){const e=s+t.AUTOSAMPLERSUFFIX;this._currentMaterialContext.setSampler(e,r)}}}createPrefilteredCubeTexture(e,t,r,s,n=null,i=null,a,o=null,u=!0){return this.createCubeTexture(e,t,null,!1,(e=>{if(!e)return void(n&&n(null));const t=e.texture;u?e.info.sphericalPolynomial&&(t._sphericalPolynomial=e.info.sphericalPolynomial):t._sphericalPolynomial=new U,t._source=9,n&&n(t)}),i,a,o,u,r,s)}setTexture(e,t,r,s){this._setTexture(e,r,!1,!1,s,s)}setTextureArray(e,t,r,s){for(let e=0;e<r.length;e++)this._setTexture(-1,r[e],!0,!1,s+e.toString(),s)}_setTexture(e,r,s=!1,i=!1,a="",o){if(o=o??a,this._currentEffect){if(!r)return this._currentMaterialContext.setTexture(a,null),!1;if(r.video)r.update();else if(r.delayLoadState===t.DELAYLOADSTATE_NOTLOADED)return r.delayLoad(),!1;let e=null;if(e=i?r.depthStencilTexture:r.isReady()?r.getInternalTexture():r.isCube?this.emptyCubeTexture:r.is3D?this.emptyTexture3D:r.is2DArray?this.emptyTexture2DArray:this.emptyTexture,e&&!e.isMultiview){if(e.isCube&&e._cachedCoordinatesMode!==r.coordinatesMode){e._cachedCoordinatesMode=r.coordinatesMode;const s=r.coordinatesMode!==t.TEXTURE_CUBIC_MODE&&r.coordinatesMode!==t.TEXTURE_SKYBOX_MODE?t.TEXTURE_WRAP_ADDRESSMODE:t.TEXTURE_CLAMP_ADDRESSMODE;r.wrapU=s,r.wrapV=s}e._cachedWrapU=r.wrapU,e._cachedWrapV=r.wrapV,e.is3D&&(e._cachedWrapR=r.wrapR),this._setAnisotropicLevel(0,e,r.anisotropicFilteringLevel)}this._setInternalTexture(a,e,o)}else this.dbgVerboseLogsForFirstFrames&&(void 0===this._count&&(this._count=0),(!this._count||this._count<this.dbgVerboseLogsNumFrames)&&n.Log(["frame #"+this._count+" - _setTexture called with a null _currentEffect! texture=",r]));return!0}_setAnisotropicLevel(e,t,r){t._cachedAnisotropicFilteringLevel!==r&&(t._cachedAnisotropicFilteringLevel=Math.min(r,this._caps.maxAnisotropy))}_bindTexture(e,t,r){void 0!==e&&this._setInternalTexture(r,t)}generateMipmaps(e){this._generateMipmaps(e)}updateTextureData(e,t,r,s,n,i,a=0,o=0,u=!1){let c=e._hardwareTexture;e._hardwareTexture?.underlyingResource||(c=this._textureHelper.createGPUTextureForInternalTexture(e));const h=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);this._textureHelper.updateTexture(h,e,n,i,e.depth,c.format,a,o,e.invertY,!1,r,s),u&&this._generateMipmaps(e)}_uploadCompressedDataToTextureDirectly(e,t,r,s,n,i=0,a=0){let o=e._hardwareTexture;e._hardwareTexture?.underlyingResource||(e.format=t,o=this._textureHelper.createGPUTextureForInternalTexture(e,r,s));const u=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);this._textureHelper.updateTexture(u,e,r,s,e.depth,o.format,i,a,!1,!1,0,0)}_uploadDataToTextureDirectly(e,t,r=0,s=0,n,i=!1){const a=Math.round(Math.log(e.width)*Math.LOG2E),o=Math.round(Math.log(e.height)*Math.LOG2E),u=i?e.width:Math.pow(2,Math.max(a-s,0)),c=i?e.height:Math.pow(2,Math.max(o-s,0));let h=e._hardwareTexture;e._hardwareTexture?.underlyingResource||(h=this._textureHelper.createGPUTextureForInternalTexture(e,u,c));const l=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);this._textureHelper.updateTexture(l,e,u,c,e.depth,h.format,r,s,e.invertY,!1,0,0)}_uploadArrayBufferViewToTexture(e,t,r=0,s=0){this._uploadDataToTextureDirectly(e,t,r,s)}_uploadImageToTexture(e,t,r=0,s=0){let n=e._hardwareTexture;if(e._hardwareTexture?.underlyingResource||(n=this._textureHelper.createGPUTextureForInternalTexture(e)),t instanceof HTMLImageElement)throw"WebGPU engine: HTMLImageElement not supported in _uploadImageToTexture!";const i=t,a=Math.ceil(e.width/(1<<s)),o=Math.ceil(e.height/(1<<s));this._textureHelper.updateTexture(i,e,a,o,e.depth,n.format,r,s,e.invertY,!1,0,0)}readPixels(e,t,r,s,n=!0,i=!0){const a=this._getCurrentRenderPassWrapper().colorAttachmentGPUTextures[0];if(!a)return Promise.resolve(new Uint8Array(0));const o=a.underlyingResource,u=a.format;return o?(i&&this.flushFramebuffer(),this._textureHelper.readPixels(o,e,t,r,s,u)):Promise.resolve(new Uint8Array(0))}_measureFps(){this._performanceMonitor.sampleFrame(),this._fps=this._performanceMonitor.averageFPS,this._deltaTime=this._performanceMonitor.instantaneousFrameTime||0}get performanceMonitor(){return this._performanceMonitor}beginFrame(){this._measureFps(),super.beginFrame()}endFrame(){if(this._endCurrentRenderPass(),this._snapshotRendering.endFrame(),this._timestampQuery.endFrame(this._renderEncoder),this._timestampIndex=0,this.flushFramebuffer(),this._textureHelper.destroyDeferredTextures(),this._bufferManager.destroyDeferredBuffers(),this._features._collectUbosUpdatedInFrame){if(this.dbgVerboseLogsForFirstFrames&&(void 0===this._count&&(this._count=0),!this._count||this._count<this.dbgVerboseLogsNumFrames)){const e=[];for(const t in i._UpdatedUbosInFrame)e.push(t+":"+i._UpdatedUbosInFrame[t]);n.Log(["frame #"+this._count+" - updated ubos -",e.join(", ")])}i._UpdatedUbosInFrame={}}this.countersLastFrame.numEnableEffects=this._counters.numEnableEffects,this.countersLastFrame.numEnableDrawWrapper=this._counters.numEnableDrawWrapper,this.countersLastFrame.numBundleCreationNonCompatMode=this._counters.numBundleCreationNonCompatMode,this.countersLastFrame.numBundleReuseNonCompatMode=this._counters.numBundleReuseNonCompatMode,this._counters.numEnableEffects=0,this._counters.numEnableDrawWrapper=0,this._counters.numBundleCreationNonCompatMode=0,this._counters.numBundleReuseNonCompatMode=0,this._cacheRenderPipeline.endFrame(),this._cacheBindGroups.endFrame(),this._pendingDebugCommands.length=0,this.dbgVerboseLogsForFirstFrames&&(void 0===this._count&&(this._count=0),this._count<this.dbgVerboseLogsNumFrames&&n.Log(["%c frame #"+this._count+" - end","background: #ffff00"]),this._count<this.dbgVerboseLogsNumFrames&&(this._count++,this._count!==this.dbgVerboseLogsNumFrames&&n.Log(["%c frame #"+this._count+" - begin","background: #ffff00"]))),super.endFrame()}extractDriverInfo(){return""}flushFramebuffer(){this._endCurrentRenderPass(),this._commandBuffers[0]=this._uploadEncoder.finish(),this._commandBuffers[1]=this._renderEncoder.finish(),this._device.queue.submit(this._commandBuffers),this._uploadEncoder=this._device.createCommandEncoder(this._uploadEncoderDescriptor),this._renderEncoder=this._device.createCommandEncoder(this._renderEncoderDescriptor),this._timestampQuery.startFrame(this._uploadEncoder),this._textureHelper.setCommandEncoder(this._uploadEncoder),this._bundleList.reset()}_currentFrameBufferIsDefaultFrameBuffer(){return this._currentPassIsMainPass()}_startRenderTargetRenderPass(e,r,s,i,a){this._endCurrentRenderPass();const o=e,u=o._depthStencilTexture,c=u?._hardwareTexture,h=c?.underlyingResource,l=c?.getMSAATexture(0),d=h?.createView(this._rttRenderPassWrapper.depthAttachmentViewDescriptor),p=l?.createView(this._rttRenderPassWrapper.depthAttachmentViewDescriptor),_=!!c&&O.HasStencilAspect(c.format),g=[];this.useReverseDepthBuffer&&this.setDepthFunctionToGreaterOrEqual();const f=Wt;s&&(f.r=255*s.r,f.g=255*s.g,f.b=255*s.b,f.a=255*s.a);const m=r&&s,b=r&&i,x=r&&a;if(o._attachments&&o.isMulti){this._mrtAttachments&&0!==this._mrtAttachments.length||(this._mrtAttachments=o._defaultAttachments);for(let e=0;e<this._mrtAttachments.length;++e){const r=this._mrtAttachments[e],n=o.textures[e],i=n?._hardwareTexture,a=i?.underlyingResource;if(i&&a){const u=o.getBaseArrayLayer(e),c=i.getMSAATexture(u),h={...this._rttRenderPassWrapper.colorAttachmentViewDescriptor,dimension:n.is3D?"3d":"2d",format:i.format,baseArrayLayer:u},l={...this._rttRenderPassWrapper.colorAttachmentViewDescriptor,dimension:n.is3D?"3d":"2d",format:i.format,baseArrayLayer:0},d=n.type===t.TEXTURETYPE_UNSIGNED_INTEGER||n.type===t.TEXTURETYPE_UNSIGNED_SHORT,p=a.createView(h),_=c?.createView(l);g.push({view:_||p,resolveTarget:c?p:void 0,depthSlice:n.is3D?o.layerIndices?.[e]??0:void 0,clearValue:0!==r&&m?d?f:s:void 0,loadOp:0!==r&&m?"clear":"load",storeOp:"store"})}}this._cacheRenderPipeline.setMRT(o.textures,this._mrtAttachments.length),this._cacheRenderPipeline.setMRTAttachments(this._mrtAttachments)}else{const e=o.texture;if(e){const r=e._hardwareTexture,n=r.underlyingResource;let i;o.is3D&&(i=this._rttRenderPassWrapper.colorAttachmentViewDescriptor.baseArrayLayer,this._rttRenderPassWrapper.colorAttachmentViewDescriptor.baseArrayLayer=0);const a=r.getMSAATexture(0),u=n.createView(this._rttRenderPassWrapper.colorAttachmentViewDescriptor),c=a?.createView(this._rttRenderPassWrapper.colorAttachmentViewDescriptor),h=e.type===t.TEXTURETYPE_UNSIGNED_INTEGER||e.type===t.TEXTURETYPE_UNSIGNED_SHORT;g.push({view:c||u,resolveTarget:a?u:void 0,depthSlice:i,clearValue:m?h?f:s:void 0,loadOp:m?"clear":"load",storeOp:"store"})}else g.push(null)}if(this._debugPushGroup?.("render target pass"+(e.label?" ("+e.label+")":""),0),this._rttRenderPassWrapper.renderPassDescriptor={label:(e.label??"RTT")+" - RenderPass",colorAttachments:g,depthStencilAttachment:u&&h?{view:p||d,depthClearValue:b?this.useReverseDepthBuffer?this._clearReverseDepthValue:this._clearDepthValue:void 0,depthLoadOp:b?"clear":"load",depthStoreOp:"store",stencilClearValue:o._depthStencilTextureWithStencil&&x?this._clearStencilValue:void 0,stencilLoadOp:_?o._depthStencilTextureWithStencil&&x?"clear":"load":void 0,stencilStoreOp:_?"store":void 0}:void 0,occlusionQuerySet:this._occlusionQuery?.hasQueries?this._occlusionQuery.querySet:void 0},this._timestampQuery.startPass(this._rttRenderPassWrapper.renderPassDescriptor,this._timestampIndex),this._currentRenderPass=this._renderEncoder.beginRenderPass(this._rttRenderPassWrapper.renderPassDescriptor),this.dbgVerboseLogsForFirstFrames&&(void 0===this._count&&(this._count=0),!this._count||this._count<this.dbgVerboseLogsNumFrames)){const t=o.texture;n.Log(["frame #"+this._count+" - render target begin pass - rtt name="+e.label+", internalTexture.uniqueId="+t.uniqueId+", width="+t.width+", height="+t.height+", setClearStates="+r,"renderPassDescriptor=",this._rttRenderPassWrapper.renderPassDescriptor])}this._debugFlushPendingCommands?.(),this._resetRenderPassStates(),c&&O.HasStencilAspect(c.format)||(this._stencilStateComposer.enabled=!1)}_startMainRenderPass(e,t,r,s){this._endCurrentRenderPass(),this.useReverseDepthBuffer&&this.setDepthFunctionToGreaterOrEqual();const i=e&&t,a=e&&r,o=e&&s;this._mainRenderPassWrapper.renderPassDescriptor.colorAttachments[0].clearValue=i?t:void 0,this._mainRenderPassWrapper.renderPassDescriptor.colorAttachments[0].loadOp=i?"clear":"load",this._mainRenderPassWrapper.renderPassDescriptor.depthStencilAttachment.depthClearValue=a?this.useReverseDepthBuffer?this._clearReverseDepthValue:this._clearDepthValue:void 0,this._mainRenderPassWrapper.renderPassDescriptor.depthStencilAttachment.depthLoadOp=a?"clear":"load",this._mainRenderPassWrapper.renderPassDescriptor.depthStencilAttachment.stencilClearValue=o?this._clearStencilValue:void 0,this._mainRenderPassWrapper.renderPassDescriptor.depthStencilAttachment.stencilLoadOp=this.isStencilEnable?o?"clear":"load":void 0,this._mainRenderPassWrapper.renderPassDescriptor.occlusionQuerySet=this._occlusionQuery?.hasQueries?this._occlusionQuery.querySet:void 0;const u=this._context.getCurrentTexture();this._mainRenderPassWrapper.colorAttachmentGPUTextures[0].set(u),this._options.antialias?(Gt.format=u.format,this._mainRenderPassWrapper.renderPassDescriptor.colorAttachments[0].resolveTarget=u.createView(Gt)):(Nt.format=u.format,this._mainRenderPassWrapper.renderPassDescriptor.colorAttachments[0].view=u.createView(Nt)),this.dbgVerboseLogsForFirstFrames&&(void 0===this._count&&(this._count=0),(!this._count||this._count<this.dbgVerboseLogsNumFrames)&&n.Log(["frame #"+this._count+" - main begin pass - texture width="+this._mainTextureExtends.width," height="+this._mainTextureExtends.height+", setClearStates="+e,"renderPassDescriptor=",this._mainRenderPassWrapper.renderPassDescriptor])),this._debugPushGroup?.("main pass",0),this._timestampQuery.startPass(this._mainRenderPassWrapper.renderPassDescriptor,this._timestampIndex),this._currentRenderPass=this._renderEncoder.beginRenderPass(this._mainRenderPassWrapper.renderPassDescriptor),this._setDepthTextureFormat(this._mainRenderPassWrapper),this._setColorFormat(this._mainRenderPassWrapper),this._debugFlushPendingCommands?.(),this._resetRenderPassStates(),this._isStencilEnable||(this._stencilStateComposer.enabled=!1)}bindFramebuffer(e,t=0,r,s,i,a=0,o=0){const u=e.texture?._hardwareTexture;this._currentRenderTarget?this.unBindFramebuffer(this._currentRenderTarget):this._endCurrentRenderPass(),this._currentRenderTarget=e;const c=this._currentRenderTarget._depthStencilTexture;this._rttRenderPassWrapper.colorAttachmentGPUTextures[0]=u,this._rttRenderPassWrapper.depthTextureFormat=c?O.GetWebGPUTextureFormat(-1,c.format):void 0,this._setDepthTextureFormat(this._rttRenderPassWrapper),this._setColorFormat(this._rttRenderPassWrapper),this._rttRenderPassWrapper.colorAttachmentViewDescriptor={format:this._colorFormat,dimension:e.is3D?"3d":"2d",mipLevelCount:1,baseArrayLayer:e.isCube?6*o+t:o,baseMipLevel:a,arrayLayerCount:1,aspect:"all"},this._rttRenderPassWrapper.depthAttachmentViewDescriptor={format:this._depthTextureFormat,dimension:c&&c.is3D?"3d":"2d",mipLevelCount:1,baseArrayLayer:c?c.isCube?6*o+t:o:0,baseMipLevel:0,arrayLayerCount:1,aspect:"all"},this.dbgVerboseLogsForFirstFrames&&(void 0===this._count&&(this._count=0),(!this._count||this._count<this.dbgVerboseLogsNumFrames)&&n.Log(["frame #"+this._count+" - bindFramebuffer - rtt name="+e.label+", internalTexture.uniqueId="+e.texture?.uniqueId+", face="+t+", lodLevel="+a+", layer="+o,"colorAttachmentViewDescriptor=",this._rttRenderPassWrapper.colorAttachmentViewDescriptor,"depthAttachmentViewDescriptor=",this._rttRenderPassWrapper.depthAttachmentViewDescriptor])),this._cachedViewport&&!i?this.setViewport(this._cachedViewport,r,s):(r||(r=e.width,a&&(r/=Math.pow(2,a))),s||(s=e.height,a&&(s/=Math.pow(2,a))),this._viewport(0,0,r,s)),this.wipeCaches()}unBindFramebuffer(e,t=!1,r){const s=this._currentRenderTarget;this._currentRenderTarget=null,r&&r(),this._currentRenderTarget=s,this._endCurrentRenderPass(),t||(e.isMulti?this.generateMipMapsMultiFramebuffer(e):this.generateMipMapsFramebuffer(e)),this._currentRenderTarget=null,this.dbgVerboseLogsForFirstFrames&&(void 0===this._count&&(this._count=0),(!this._count||this._count<this.dbgVerboseLogsNumFrames)&&n.Log("frame #"+this._count+" - unBindFramebuffer - rtt name="+e.label+", internalTexture.uniqueId=",e.texture?.uniqueId)),this._mrtAttachments=[],this._cacheRenderPipeline.setMRT([]),this._cacheRenderPipeline.setMRTAttachments(this._mrtAttachments)}generateMipMapsFramebuffer(e){e.isMulti||!e.texture?.generateMipMaps||e.isCube||this._generateMipmaps(e.texture)}resolveFramebuffer(e){throw new Error("resolveFramebuffer is not yet implemented in WebGPU!")}restoreDefaultFramebuffer(){this._currentRenderTarget?this.unBindFramebuffer(this._currentRenderTarget):this._currentRenderPass||this._startMainRenderPass(!1),this._cachedViewport&&this.setViewport(this._cachedViewport),this.wipeCaches()}_setColorFormat(e){const t=e.colorAttachmentGPUTextures[0]?.format??null;this._cacheRenderPipeline.setColorFormat(t),this._colorFormat!==t&&(this._colorFormat=t)}_setDepthTextureFormat(e){this._cacheRenderPipeline.setDepthStencilFormat(e.depthTextureFormat),this._depthTextureFormat!==e.depthTextureFormat&&(this._depthTextureFormat=e.depthTextureFormat)}setDitheringState(){}setRasterizerState(){}_executeWhenRenderingStateIsCompiled(e,t){t()}bindSamplers(){}_getUnpackAlignement(){return 1}_bindTextureDirectly(){return!1}setState(e,t=0,r,s=!1,n,i,a=0){(this._depthCullingState.cull!==e||r)&&(this._depthCullingState.cull=e);const o=this.cullBackFaces??n??1?1:2;(this._depthCullingState.cullFace!==o||r)&&(this._depthCullingState.cullFace=o),this.setZOffset(t),this.setZOffsetUnits(a);const u=s?this._currentRenderTarget?1:2:this._currentRenderTarget?2:1;(this._depthCullingState.frontFace!==u||r)&&(this._depthCullingState.frontFace=u),this._stencilStateComposer.stencilMaterial=i}_applyRenderPassChanges(e){const t=!!this._stencilStateComposer.enabled&&this._mustUpdateStencilRef(),r=!!this._alphaState.alphaBlend&&this._mustUpdateBlendColor();this._mustUpdateViewport()&&this._applyViewport(e),this._mustUpdateScissor()&&this._applyScissor(e),t&&this._applyStencilRef(e),r&&this._applyBlendColor(e)}_draw(e,r,s,n,i){const a=this._getCurrentRenderPass(),o=this._bundleList;this.applyStates();const u=this._currentEffect._pipelineContext;if(this.bindUniformBufferBase(this._currentRenderTarget?this._ubInvertY:this._ubDontInvertY,0,Ie.InternalsUBOName),u.uniformBuffer&&(u.uniformBuffer.update(),this.bindUniformBufferBase(u.uniformBuffer.getBuffer(),0,Ie.LeftOvertUBOName)),this._snapshotRendering.play)return void this._reportDrawCall();!this.compatibilityMode&&(this._currentDrawContext.isDirty(this._currentMaterialContext.updateId)||this._currentMaterialContext.isDirty||this._currentMaterialContext.forceBindGroupCreation)&&(this._currentDrawContext.fastBundle=void 0);let c=a;if(!this.compatibilityMode&&this._currentDrawContext.fastBundle||this._snapshotRendering.record){if(this._applyRenderPassChanges(o),!this._snapshotRendering.record)return this._counters.numBundleReuseNonCompatMode++,this._currentDrawContext.indirectDrawBuffer&&this._currentDrawContext.setIndirectData(n,i||1,s),o.addBundle(this._currentDrawContext.fastBundle),void this._reportDrawCall();c=o.getBundleEncoder(this._cacheRenderPipeline.colorFormats,this._depthTextureFormat,this.currentSampleCount),o.numDrawCalls++}let h=0;if(this._currentMaterialContext.hasFloatOrDepthTextures){let e=1;for(let r=0;r<u.shaderProcessingContext.textureNames.length;++r){const s=u.shaderProcessingContext.textureNames[r],n=this._currentMaterialContext.textures[s]?.texture,i=n&&n.format>=t.TEXTUREFORMAT_DEPTH24_STENCIL8&&n.format<=t.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8;(n?.type===t.TEXTURETYPE_FLOAT&&!this._caps.textureFloatLinearFiltering||i)&&(h|=e),e<<=1}}this._currentMaterialContext.textureState=h;const l=this._cacheRenderPipeline.getRenderPipeline(r,this._currentEffect,this.currentSampleCount,h),d=this._cacheBindGroups.getBindGroups(u,this._currentDrawContext,this._currentMaterialContext);this._snapshotRendering.record||(this._applyRenderPassChanges(this.compatibilityMode?null:o),this.compatibilityMode||(this._counters.numBundleCreationNonCompatMode++,c=this._device.createRenderBundleEncoder({colorFormats:this._cacheRenderPipeline.colorFormats,depthStencilFormat:this._depthTextureFormat,sampleCount:O.GetSample(this.currentSampleCount)}))),c.setPipeline(l),this._currentIndexBuffer&&c.setIndexBuffer(this._currentIndexBuffer.underlyingResource,this._currentIndexBuffer.is32Bits?"uint32":"uint16",0);const p=this._cacheRenderPipeline.vertexBuffers;for(let e=0;e<p.length;e++){const t=p[e],r=t.effectiveBuffer;r&&c.setVertexBuffer(e,r.underlyingResource,t._validOffsetRange?0:t.byteOffset)}for(let e=0;e<d.length;e++)c.setBindGroup(e,d[e]);const _=!this.compatibilityMode&&!this._snapshotRendering.record;_&&this._currentDrawContext.indirectDrawBuffer?(this._currentDrawContext.setIndirectData(n,i||1,s),0===e?c.drawIndexedIndirect(this._currentDrawContext.indirectDrawBuffer,0):c.drawIndirect(this._currentDrawContext.indirectDrawBuffer,0)):0===e?c.drawIndexed(n,i||1,s,0,0):c.draw(n,i||1,s,0),_&&(this._currentDrawContext.fastBundle=c.finish(),o.addBundle(this._currentDrawContext.fastBundle)),this._reportDrawCall()}drawElementsType(e,t,r,s=1){this._draw(0,e,t,r,s)}drawArraysType(e,t,r,s=1){this._currentIndexBuffer=null,this._draw(1,e,t,r,s)}dispose(){this._isDisposed=!0,this.hideLoadingUI(),this._timestampQuery.dispose(),this._mainTexture?.destroy(),this._depthTexture?.destroy(),this._textureHelper.destroyDeferredTextures(),this._bufferManager.destroyDeferredBuffers(),this._device.destroy(),M(this,this._renderingCanvas),super.dispose()}getRenderWidth(e=!1){return!e&&this._currentRenderTarget?this._currentRenderTarget.width:this._renderingCanvas?.width??0}getRenderHeight(e=!1){return!e&&this._currentRenderTarget?this._currentRenderTarget.height:this._renderingCanvas?.height??0}getError(){return 0}createExternalTexture(e){return new Dt(e)}setExternalTexture(e,t){t?this._setInternalTexture(e,t):this._currentMaterialContext.setTexture(e,null)}setTextureSampler(e,t){this._currentMaterialContext?.setSampler(e,t)}createStorageBuffer(e,r,s){return this._createBuffer(e,r|t.BUFFER_CREATIONFLAG_STORAGE,s)}updateStorageBuffer(e,t,r,s){const n=e;let i;void 0===r&&(r=0),void 0===s?(i=t instanceof Array?new Float32Array(t):t instanceof ArrayBuffer?new Uint8Array(t):t,s=i.byteLength):i=t instanceof Array?new Float32Array(t):t instanceof ArrayBuffer?new Uint8Array(t):t,this._bufferManager.setSubData(n,r,i,0,s)}_readFromGPUBuffer(e,t,r,s){return new Promise(((n,i)=>{const a=()=>{e.mapAsync(1,0,t).then((()=>{const s=e.getMappedRange(0,t);let i=r;if(void 0===i)i=new Uint8Array(t),i.set(new Uint8Array(s));else{const e=i.constructor;i=new e(i.buffer),i.set(new e(s))}e.unmap(),this._bufferManager.releaseBuffer(e),n(i)}),(e=>{this.isDisposed?n(new Uint8Array):i(e)}))};s?(this.flushFramebuffer(),a()):this.onEndFrameObservable.addOnce((()=>{a()}))}))}readFromStorageBuffer(e,t,r,s,n){r=r||e.capacity;const i=this._bufferManager.createRawBuffer(r,H.MapRead|H.CopyDst,void 0,"TempReadFromStorageBuffer");return this._renderEncoder.copyBufferToBuffer(e.underlyingResource,t??0,i,0,r),this._readFromGPUBuffer(i,r,s,n)}readFromMultipleStorageBuffers(e,t,r,s,n){r=r||e[0].capacity;const i=this._bufferManager.createRawBuffer(r*e.length,H.MapRead|H.CopyDst,void 0,"TempReadFromMultipleStorageBuffers");for(let s=0;s<e.length;s++)this._renderEncoder.copyBufferToBuffer(e[s].underlyingResource,t??0,i,s*r,r);return this._readFromGPUBuffer(i,r*e.length,s,n)}setStorageBuffer(e,t){this._currentDrawContext?.setBuffer(e,t?.getBuffer()??null)}}$t._GlslangDefaultOptions={jsPath:`${m._DefaultCdnUrl}/glslang/glslang.js`,wasmPath:`${m._DefaultCdnUrl}/glslang/glslang.wasm`},$t._InstanceId=0;export{$t as WebGPUEngine};
|
|
2
|
+
//# sourceMappingURL=webgpuEngine-CxY3O3Qz.esm.min.js.map
|