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