@babylonjs/lite 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_math-factory-C-QqW-Wi.js +55 -0
- package/_math-factory-C-QqW-Wi.js.map +1 -0
- package/add-block-CikX5gWy.js +6 -0
- package/add-block-CikX5gWy.js.map +1 -0
- package/alpha-test-fragment-CUiHCw7W.js +22 -0
- package/alpha-test-fragment-CUiHCw7W.js.map +1 -0
- package/ambient-occlusion-block-DForhWL3.js +77 -0
- package/ambient-occlusion-block-DForhWL3.js.map +1 -0
- package/anisotropy-block-D5fXH_OY.js +12 -0
- package/anisotropy-block-D5fXH_OY.js.map +1 -0
- package/anisotropy-fragment-HgasXS7l.js +89 -0
- package/anisotropy-fragment-HgasXS7l.js.map +1 -0
- package/arc-tan2-block-d8sWt_x0.js +12 -0
- package/arc-tan2-block-d8sWt_x0.js.map +1 -0
- package/assets/splat-sort-worker-Crg3CaCc.js.map +1 -0
- package/background-dds-skybox-yHTqabU3.js +221 -0
- package/background-dds-skybox-yHTqabU3.js.map +1 -0
- package/background-ground-DIw6D3qf.js +235 -0
- package/background-ground-DIw6D3qf.js.map +1 -0
- package/background-hdr-skybox-c4uuTmkP.js +179 -0
- package/background-hdr-skybox-c4uuTmkP.js.map +1 -0
- package/background-solid-skybox-DPGBpPbm.js +235 -0
- package/background-solid-skybox-DPGBpPbm.js.map +1 -0
- package/bake-local-matrix-Dfpd3b06.js +28 -0
- package/bake-local-matrix-Dfpd3b06.js.map +1 -0
- package/billboard-renderable-D8mlVGCd.js +242 -0
- package/billboard-renderable-D8mlVGCd.js.map +1 -0
- package/biplanar-block-DZnKuV81.js +115 -0
- package/biplanar-block-DZnKuV81.js.map +1 -0
- package/bones-block-D6IhqUVV.js +31 -0
- package/bones-block-D6IhqUVV.js.map +1 -0
- package/clamp-block-BdII67hT.js +21 -0
- package/clamp-block-BdII67hT.js.map +1 -0
- package/clearcoat-block-BGML4npi.js +12 -0
- package/clearcoat-block-BGML4npi.js.map +1 -0
- package/clearcoat-fragment-LCiG98Rf.js +256 -0
- package/clearcoat-fragment-LCiG98Rf.js.map +1 -0
- package/clip-planes-block-BPfFJrbf.js +26 -0
- package/clip-planes-block-BPfFJrbf.js.map +1 -0
- package/cloud-block-BeVrangc.js +90 -0
- package/cloud-block-BeVrangc.js.map +1 -0
- package/color-converter-block-CvwKiW4k.js +123 -0
- package/color-converter-block-CvwKiW4k.js.map +1 -0
- package/color-merger-CCu21ZII.js +57 -0
- package/color-merger-CCu21ZII.js.map +1 -0
- package/color-splitter-CGn1G4ow.js +33 -0
- package/color-splitter-CGn1G4ow.js.map +1 -0
- package/conditional-block-Cd2pbejI.js +51 -0
- package/conditional-block-Cd2pbejI.js.map +1 -0
- package/create-skeleton-C9JdIJnb.js +44 -0
- package/create-skeleton-C9JdIJnb.js.map +1 -0
- package/cross-block-DCrLwCpt.js +12 -0
- package/cross-block-DCrLwCpt.js.map +1 -0
- package/cubemap-skybox-material-DvXMVc4k.js +79 -0
- package/cubemap-skybox-material-DvXMVc4k.js.map +1 -0
- package/curve-block-BlJpXVYv.js +89 -0
- package/curve-block-BlJpXVYv.js.map +1 -0
- package/debug-block-D2pg4Yf6.js +14 -0
- package/debug-block-D2pg4Yf6.js.map +1 -0
- package/derivative-block-B8KjtaWs.js +20 -0
- package/derivative-block-B8KjtaWs.js.map +1 -0
- package/desaturate-block-C1RghNSB.js +15 -0
- package/desaturate-block-C1RghNSB.js.map +1 -0
- package/discard-block-B2jKjaEL.js +21 -0
- package/discard-block-B2jKjaEL.js.map +1 -0
- package/distance-block-3NkgFZ3f.js +16 -0
- package/distance-block-3NkgFZ3f.js.map +1 -0
- package/divide-block-ZyepIg_-.js +6 -0
- package/divide-block-ZyepIg_-.js.map +1 -0
- package/dot-block-VlfAC6cD.js +16 -0
- package/dot-block-VlfAC6cD.js.map +1 -0
- package/elbow-block-NEOiIxzO.js +10 -0
- package/elbow-block-NEOiIxzO.js.map +1 -0
- package/emissive-fragment-BnNvbBCw.js +39 -0
- package/emissive-fragment-BnNvbBCw.js.map +1 -0
- package/esm-shadow-view-DGKdF1NI.js +18 -0
- package/esm-shadow-view-DGKdF1NI.js.map +1 -0
- package/esm-shadow-view-DN9HIaM4.js +15 -0
- package/esm-shadow-view-DN9HIaM4.js.map +1 -0
- package/esm-shadow-view-Dk9NFtLq.js +15 -0
- package/esm-shadow-view-Dk9NFtLq.js.map +1 -0
- package/fog-block-DJ9hEolm.js +41 -0
- package/fog-block-DJ9hEolm.js.map +1 -0
- package/frag-coord-block-DzXfFgfV.js +25 -0
- package/frag-coord-block-DzXfFgfV.js.map +1 -0
- package/frag-depth-block-UQbeKP2D.js +34 -0
- package/frag-depth-block-UQbeKP2D.js.map +1 -0
- package/fragment-output-BOphkIeh.js +26 -0
- package/fragment-output-BOphkIeh.js.map +1 -0
- package/fresnel-block-DefHWeO-.js +20 -0
- package/fresnel-block-DefHWeO-.js.map +1 -0
- package/front-facing-0d6aiyrv.js +11 -0
- package/front-facing-0d6aiyrv.js.map +1 -0
- package/gaussian-splatting-pipeline-sh-DgJl7l56.js +500 -0
- package/gaussian-splatting-pipeline-sh-DgJl7l56.js.map +1 -0
- package/gltf-animation-D7uyTyO3.js +245 -0
- package/gltf-animation-D7uyTyO3.js.map +1 -0
- package/gltf-ext-anisotropy-CknJiJK8.js +22 -0
- package/gltf-ext-anisotropy-CknJiJK8.js.map +1 -0
- package/gltf-ext-basisu-CPg5kPrx.js +452 -0
- package/gltf-ext-basisu-CPg5kPrx.js.map +1 -0
- package/gltf-ext-clearcoat-CLH2SVph.js +31 -0
- package/gltf-ext-clearcoat-CLH2SVph.js.map +1 -0
- package/gltf-ext-dielectric-qHzlnvdl.js +105 -0
- package/gltf-ext-dielectric-qHzlnvdl.js.map +1 -0
- package/gltf-ext-emissive-strength-nzGZXZVK.js +19 -0
- package/gltf-ext-emissive-strength-nzGZXZVK.js.map +1 -0
- package/gltf-ext-iridescence-C6bq7jiM.js +26 -0
- package/gltf-ext-iridescence-C6bq7jiM.js.map +1 -0
- package/gltf-ext-node-visibility-MafA9ot2.js +25 -0
- package/gltf-ext-node-visibility-MafA9ot2.js.map +1 -0
- package/gltf-ext-orm-CT18G_vQ.js +33 -0
- package/gltf-ext-orm-CT18G_vQ.js.map +1 -0
- package/gltf-ext-quantization-CpZyLDIz.js +94 -0
- package/gltf-ext-quantization-CpZyLDIz.js.map +1 -0
- package/gltf-ext-sheen-BgIxUzyZ.js +25 -0
- package/gltf-ext-sheen-BgIxUzyZ.js.map +1 -0
- package/gltf-ext-spec-gloss-D0LJLBUM.js +24 -0
- package/gltf-ext-spec-gloss-D0LJLBUM.js.map +1 -0
- package/gltf-ext-unlit-D2ANui0V.js +16 -0
- package/gltf-ext-unlit-D2ANui0V.js.map +1 -0
- package/gltf-ext-uv-transform-CE_-T1Tr.js +38 -0
- package/gltf-ext-uv-transform-CE_-T1Tr.js.map +1 -0
- package/gltf-feature-animation-pointer-BjpwOOqo.js +88 -0
- package/gltf-feature-animation-pointer-BjpwOOqo.js.map +1 -0
- package/gltf-feature-animations-CCizegp8.js +15 -0
- package/gltf-feature-animations-CCizegp8.js.map +1 -0
- package/gltf-feature-draco-yGSMGTE3.js +124 -0
- package/gltf-feature-draco-yGSMGTE3.js.map +1 -0
- package/gltf-feature-gpu-instancing-2e_CFQnl.js +151 -0
- package/gltf-feature-gpu-instancing-2e_CFQnl.js.map +1 -0
- package/gltf-feature-lights-punctual-DDDg4j0U.js +71 -0
- package/gltf-feature-lights-punctual-DDDg4j0U.js.map +1 -0
- package/gltf-feature-meshopt-Des96YFI.js +84 -0
- package/gltf-feature-meshopt-Des96YFI.js.map +1 -0
- package/gltf-feature-morph-CKCw6tkX.js +29 -0
- package/gltf-feature-morph-CKCw6tkX.js.map +1 -0
- package/gltf-feature-skeleton-D8hWLqi2.js +36 -0
- package/gltf-feature-skeleton-D8hWLqi2.js.map +1 -0
- package/gltf-feature-variants-Ds6v9byg.js +17 -0
- package/gltf-feature-variants-Ds6v9byg.js.map +1 -0
- package/gltf-feature-xmp-BUfq_IVG.js +15 -0
- package/gltf-feature-xmp-BUfq_IVG.js.map +1 -0
- package/gltf-glb-parser-D6UZWFuC.js +27 -0
- package/gltf-glb-parser-D6UZWFuC.js.map +1 -0
- package/gltf-interleave-DGnUlz28.js +241 -0
- package/gltf-interleave-DGnUlz28.js.map +1 -0
- package/gltf-pbr-builder-ext-BFOxOCnQ.js +85 -0
- package/gltf-pbr-builder-ext-BFOxOCnQ.js.map +1 -0
- package/gltf-variants-DFbr8EES.js +88 -0
- package/gltf-variants-DFbr8EES.js.map +1 -0
- package/gradient-block-DL_60sDc.js +50 -0
- package/gradient-block-DL_60sDc.js.map +1 -0
- package/gs-picking-pipeline-DzfMASL9.js +280 -0
- package/gs-picking-pipeline-DzfMASL9.js.map +1 -0
- package/height-to-normal-block-DhPHkDFg.js +65 -0
- package/height-to-normal-block-DhPHkDFg.js.map +1 -0
- package/ibl-fragment-DqQVi8k0.js +91 -0
- package/ibl-fragment-DqQVi8k0.js.map +1 -0
- package/ibl-skybox-wgsl-DCah0kWV.js +13 -0
- package/ibl-skybox-wgsl-DCah0kWV.js.map +1 -0
- package/image-processing-block-DwrhhmuF.js +40 -0
- package/image-processing-block-DwrhhmuF.js.map +1 -0
- package/image-source-BuMJgd9-.js +17 -0
- package/image-source-BuMJgd9-.js.map +1 -0
- package/index-C8HOR2sB.js +19222 -0
- package/index-C8HOR2sB.js.map +1 -0
- package/index.d.ts +4611 -0
- package/index.js +309 -0
- package/index.js.map +1 -0
- package/input-block-DgAJBzN_.js +109 -0
- package/input-block-DgAJBzN_.js.map +1 -0
- package/instances-block-BaSSiz8m.js +12 -0
- package/instances-block-BaSSiz8m.js.map +1 -0
- package/iridescence-block-B0pRFoOU.js +67 -0
- package/iridescence-block-B0pRFoOU.js.map +1 -0
- package/iridescence-fragment-Gymp7or5.js +243 -0
- package/iridescence-fragment-Gymp7or5.js.map +1 -0
- package/length-block-ChOkeiHR.js +11 -0
- package/length-block-ChOkeiHR.js.map +1 -0
- package/lerp-block-DjI2SfmI.js +18 -0
- package/lerp-block-DjI2SfmI.js.map +1 -0
- package/light-block-B11ew7FA.js +123 -0
- package/light-block-B11ew7FA.js.map +1 -0
- package/light-information-VJbW0jbs.js +19 -0
- package/light-information-VJbW0jbs.js.map +1 -0
- package/loop-block-Bb23EOMb.js +71 -0
- package/loop-block-Bb23EOMb.js.map +1 -0
- package/manifold-AS8POaOr.js +3022 -0
- package/manifold-AS8POaOr.js.map +1 -0
- package/manifold-RCa7RkKz.js +5 -0
- package/manifold-RCa7RkKz.js.map +1 -0
- package/matrix-blocks-acWn_V6g.js +51 -0
- package/matrix-blocks-acWn_V6g.js.map +1 -0
- package/max-block-CjFgljZ7.js +6 -0
- package/max-block-CjFgljZ7.js.map +1 -0
- package/mesh-attribute-exists-block-BfK8UiSL.js +44 -0
- package/mesh-attribute-exists-block-BfK8UiSL.js.map +1 -0
- package/mesh-features-BLENkYVt.js +341 -0
- package/mesh-features-BLENkYVt.js.map +1 -0
- package/min-block-CHtBngNl.js +6 -0
- package/min-block-CHtBngNl.js.map +1 -0
- package/mod-block-Ceizv8Y7.js +6 -0
- package/mod-block-Ceizv8Y7.js.map +1 -0
- package/morph-fragment-DOVo70gP.js +59 -0
- package/morph-fragment-DOVo70gP.js.map +1 -0
- package/morph-targets-55z342ZB.js +35 -0
- package/morph-targets-55z342ZB.js.map +1 -0
- package/multilight-wgsl-BGyiIOp3.js +112 -0
- package/multilight-wgsl-BGyiIOp3.js.map +1 -0
- package/multiply-block-DaXLJ7Ud.js +6 -0
- package/multiply-block-DaXLJ7Ud.js.map +1 -0
- package/negate-block-9CSLc5pM.js +6 -0
- package/negate-block-9CSLc5pM.js.map +1 -0
- package/nlerp-block-BNK1adIb.js +21 -0
- package/nlerp-block-BNK1adIb.js.map +1 -0
- package/node-env-BPZXZzBf.js +39 -0
- package/node-env-BPZXZzBf.js.map +1 -0
- package/node-registry-DwgC4yth.js +190 -0
- package/node-registry-DwgC4yth.js.map +1 -0
- package/node-registry-extra-advanced-2DJVt67-.js +45 -0
- package/node-registry-extra-advanced-2DJVt67-.js.map +1 -0
- package/node-registry-extra-compat-Dhrw8fDQ.js +41 -0
- package/node-registry-extra-compat-Dhrw8fDQ.js.map +1 -0
- package/node-registry-extra-math-CsAHvIZo.js +49 -0
- package/node-registry-extra-math-CsAHvIZo.js.map +1 -0
- package/node-registry-extra-procedural-5pLQ3Bhz.js +45 -0
- package/node-registry-extra-procedural-5pLQ3Bhz.js.map +1 -0
- package/node-renderable-DlLIdBmd.js +269 -0
- package/node-renderable-DlLIdBmd.js.map +1 -0
- package/node-shadow-DKrcqmNg.js +122 -0
- package/node-shadow-DKrcqmNg.js.map +1 -0
- package/node-snippet-DUMm9qEO.js +22 -0
- package/node-snippet-DUMm9qEO.js.map +1 -0
- package/normal-blend-block-BfH_nBoj.js +29 -0
- package/normal-blend-block-BfH_nBoj.js.map +1 -0
- package/normal-map-fragment-DpsIXrJf.js +38 -0
- package/normal-map-fragment-DpsIXrJf.js.map +1 -0
- package/normalize-block-F2bLNj9K.js +6 -0
- package/normalize-block-F2bLNj9K.js.map +1 -0
- package/oneminus-block-BP9x4Dc3.js +6 -0
- package/oneminus-block-BP9x4Dc3.js.map +1 -0
- package/opposite-block-Cnqmm-lH.js +6 -0
- package/opposite-block-Cnqmm-lH.js.map +1 -0
- package/package.json +26 -0
- package/panner-block-BwMQq-6Y.js +13 -0
- package/panner-block-BwMQq-6Y.js.map +1 -0
- package/parse-camera-DM3oJJeT.js +23 -0
- package/parse-camera-DM3oJJeT.js.map +1 -0
- package/pbr-aces-wgsl-HpiQHGN_.js +13 -0
- package/pbr-aces-wgsl-HpiQHGN_.js.map +1 -0
- package/pbr-metallic-roughness-block-full-6vMm1Jk6.js +763 -0
- package/pbr-metallic-roughness-block-full-6vMm1Jk6.js.map +1 -0
- package/pbr-metallic-roughness-block-h_KAOZrW.js +104 -0
- package/pbr-metallic-roughness-block-h_KAOZrW.js.map +1 -0
- package/pbr-mr-helper-core-CIwm-T1G.js +237 -0
- package/pbr-mr-helper-core-CIwm-T1G.js.map +1 -0
- package/pbr-refraction-DGmMSa2v.js +17 -0
- package/pbr-refraction-DGmMSa2v.js.map +1 -0
- package/pbr-renderable-BJxUtPBb.js +961 -0
- package/pbr-renderable-BJxUtPBb.js.map +1 -0
- package/pbr-shadow-fragment-LO9SlbJj.js +14 -0
- package/pbr-shadow-fragment-LO9SlbJj.js.map +1 -0
- package/pbr-template-ext-8q7BcTDf.js +88 -0
- package/pbr-template-ext-8q7BcTDf.js.map +1 -0
- package/pbr-tracking-B3alzn91.js +31 -0
- package/pbr-tracking-B3alzn91.js.map +1 -0
- package/pbr-transmission-ext-BxW4CEGu.js +581 -0
- package/pbr-transmission-ext-BxW4CEGu.js.map +1 -0
- package/perturb-normal-0Q8EM9ig.js +39 -0
- package/perturb-normal-0Q8EM9ig.js.map +1 -0
- package/posterize-block-DfdKsbEf.js +28 -0
- package/posterize-block-DfdKsbEf.js.map +1 -0
- package/pow-block-DI5ICzhc.js +13 -0
- package/pow-block-DI5ICzhc.js.map +1 -0
- package/random-number-block-2OyRYljF.js +15 -0
- package/random-number-block-2OyRYljF.js.map +1 -0
- package/reciprocal-block-Ck3CW-j-.js +14 -0
- package/reciprocal-block-Ck3CW-j-.js.map +1 -0
- package/reflect-block-CizpzrX4.js +12 -0
- package/reflect-block-CizpzrX4.js.map +1 -0
- package/reflectance-fragment-BCrgPmrt.js +143 -0
- package/reflectance-fragment-BCrgPmrt.js.map +1 -0
- package/reflection-block-DqcwyYqr.js +12 -0
- package/reflection-block-DqcwyYqr.js.map +1 -0
- package/reflection-texture-base-block-1xmJ0HDj.js +10 -0
- package/reflection-texture-base-block-1xmJ0HDj.js.map +1 -0
- package/reflection-texture-block-C3QtzoV8.js +60 -0
- package/reflection-texture-block-C3QtzoV8.js.map +1 -0
- package/refract-block-HHiAk-7U.js +13 -0
- package/refract-block-HHiAk-7U.js.map +1 -0
- package/refraction-block-U8y6XiXs.js +11 -0
- package/refraction-block-U8y6XiXs.js.map +1 -0
- package/refraction-dispersion-wgsl-DdQCyyO1.js +16 -0
- package/refraction-dispersion-wgsl-DdQCyyO1.js.map +1 -0
- package/remap-block-DxK1W1vp.js +27 -0
- package/remap-block-DxK1W1vp.js.map +1 -0
- package/replace-color-block-1m--hiru.js +17 -0
- package/replace-color-block-1m--hiru.js.map +1 -0
- package/rgbd-decode-DCvzUYeI.js +110 -0
- package/rgbd-decode-DCvzUYeI.js.map +1 -0
- package/rotate2d-block-nEe1N2MJ.js +15 -0
- package/rotate2d-block-nEe1N2MJ.js.map +1 -0
- package/scale-block-C5Z8159G.js +13 -0
- package/scale-block-C5Z8159G.js.map +1 -0
- package/scene-material-swap-C2ykv55W.js +34 -0
- package/scene-material-swap-C2ykv55W.js.map +1 -0
- package/screen-size-block-BVNnOvE8.js +21 -0
- package/screen-size-block-BVNnOvE8.js.map +1 -0
- package/screen-space-block-CwaxdfSe.js +28 -0
- package/screen-space-block-CwaxdfSe.js.map +1 -0
- package/shader-renderable-D-6796KR.js +531 -0
- package/shader-renderable-D-6796KR.js.map +1 -0
- package/shadow-fragment-core-DHN2G6FI.js +110 -0
- package/shadow-fragment-core-DHN2G6FI.js.map +1 -0
- package/shadow-map-CQNQC-Fw.js +13 -0
- package/shadow-map-CQNQC-Fw.js.map +1 -0
- package/sheen-block-BugfJqK3.js +12 -0
- package/sheen-block-BugfJqK3.js.map +1 -0
- package/sheen-fragment-Dze2f7XJ.js +215 -0
- package/sheen-fragment-Dze2f7XJ.js.map +1 -0
- package/simplex-perlin-3d-block-CcMtofzV.js +58 -0
- package/simplex-perlin-3d-block-CcMtofzV.js.map +1 -0
- package/singlelight-directional-wgsl-CmUDZxwz.js +39 -0
- package/singlelight-directional-wgsl-CmUDZxwz.js.map +1 -0
- package/singlelight-hemispheric-wgsl-t-83IP_s.js +40 -0
- package/singlelight-hemispheric-wgsl-t-83IP_s.js.map +1 -0
- package/singlelight-point-wgsl-CLzULIYV.js +45 -0
- package/singlelight-point-wgsl-CLzULIYV.js.map +1 -0
- package/singlelight-spot-wgsl-DEEUrfVM.js +47 -0
- package/singlelight-spot-wgsl-DEEUrfVM.js.map +1 -0
- package/skeleton-fragment-B_XlFbtx.js +71 -0
- package/skeleton-fragment-B_XlFbtx.js.map +1 -0
- package/skybox-renderable-DDwzu-PT.js +92 -0
- package/skybox-renderable-DDwzu-PT.js.map +1 -0
- package/skybox.vertex-DJgi072W.js +5 -0
- package/skybox.vertex-DJgi072W.js.map +1 -0
- package/smoothstep-block-Di4t37x-.js +15 -0
- package/smoothstep-block-Di4t37x-.js.map +1 -0
- package/splat-ply-compressed-BahdBG1r.js +394 -0
- package/splat-ply-compressed-BahdBG1r.js.map +1 -0
- package/standard-renderable-GjxL9xSf.js +636 -0
- package/standard-renderable-GjxL9xSf.js.map +1 -0
- package/std-ambient-fragment-BoUsD06w.js +37 -0
- package/std-ambient-fragment-BoUsD06w.js.map +1 -0
- package/std-cube-reflection-fragment-ulqc3bsP.js +31 -0
- package/std-cube-reflection-fragment-ulqc3bsP.js.map +1 -0
- package/std-emissive-fragment-DNGj1HdQ.js +40 -0
- package/std-emissive-fragment-DNGj1HdQ.js.map +1 -0
- package/std-lightmap-fragment-Bqj89aIe.js +37 -0
- package/std-lightmap-fragment-Bqj89aIe.js.map +1 -0
- package/std-opacity-fragment-KuPh5N2Z.js +37 -0
- package/std-opacity-fragment-KuPh5N2Z.js.map +1 -0
- package/std-reflection-fragment-BA5Ghn_M.js +57 -0
- package/std-reflection-fragment-BA5Ghn_M.js.map +1 -0
- package/std-shadow-fragment-FNQfrJuC.js +8 -0
- package/std-shadow-fragment-FNQfrJuC.js.map +1 -0
- package/std-specular-fragment-CE-6scqd.js +37 -0
- package/std-specular-fragment-CE-6scqd.js.map +1 -0
- package/std-tracking-CNKZ-hJN.js +15 -0
- package/std-tracking-CNKZ-hJN.js.map +1 -0
- package/step-block-BkywzTYm.js +13 -0
- package/step-block-BkywzTYm.js.map +1 -0
- package/storage-read-block-BdzhJfln.js +25 -0
- package/storage-read-block-BdzhJfln.js.map +1 -0
- package/storage-write-block-DjLKZ0Ro.js +11 -0
- package/storage-write-block-DjLKZ0Ro.js.map +1 -0
- package/subsurface-block-CBhxT9ui.js +12 -0
- package/subsurface-block-CBhxT9ui.js.map +1 -0
- package/subsurface-fragment-liM3y2-P.js +158 -0
- package/subsurface-fragment-liM3y2-P.js.map +1 -0
- package/subtract-block-NPfKvzQP.js +6 -0
- package/subtract-block-NPfKvzQP.js.map +1 -0
- package/swapchain-overlay-DcCSFDp7.js +35 -0
- package/swapchain-overlay-DcCSFDp7.js.map +1 -0
- package/tbn-block-ByOI6Y43.js +43 -0
- package/tbn-block-ByOI6Y43.js.map +1 -0
- package/teleport-in-block-BMa17cqq.js +10 -0
- package/teleport-in-block-BMa17cqq.js.map +1 -0
- package/teleport-out-block-5AkB25H6.js +19 -0
- package/teleport-out-block-5AkB25H6.js.map +1 -0
- package/texture-block-rr21KIL_.js +70 -0
- package/texture-block-rr21KIL_.js.map +1 -0
- package/thin-instance-fragment-hsv-RyDs.js +69 -0
- package/thin-instance-fragment-hsv-RyDs.js.map +1 -0
- package/thin-instance-gpu-C9Gv_Z1w.js +62 -0
- package/thin-instance-gpu-C9Gv_Z1w.js.map +1 -0
- package/tracking-primitives-wgdBY85t.js +82 -0
- package/tracking-primitives-wgdBY85t.js.map +1 -0
- package/transform-block-DbRph9JI.js +32 -0
- package/transform-block-DbRph9JI.js.map +1 -0
- package/trigonometry-block-BYQcTHiD.js +36 -0
- package/trigonometry-block-BYQcTHiD.js.map +1 -0
- package/triplanar-block-BZHkD9hX.js +148 -0
- package/triplanar-block-BZHkD9hX.js.map +1 -0
- package/twirl-block-78WtdiBd.js +39 -0
- package/twirl-block-78WtdiBd.js.map +1 -0
- package/unlit-fragment-BIlhJpz6.js +43 -0
- package/unlit-fragment-BIlhJpz6.js.map +1 -0
- package/uv-transform-fragment-hYujGpZg.js +47 -0
- package/uv-transform-fragment-hYujGpZg.js.map +1 -0
- package/vector-merger-CrW-ONB0.js +43 -0
- package/vector-merger-CrW-ONB0.js.map +1 -0
- package/vector-splitter-BoJuHrAU.js +34 -0
- package/vector-splitter-BoJuHrAU.js.map +1 -0
- package/vertex-output-Cvft64y0.js +14 -0
- package/vertex-output-Cvft64y0.js.map +1 -0
- package/view-direction-CWVucfnT.js +12 -0
- package/view-direction-CWVucfnT.js.map +1 -0
- package/voronoi-noise-block-iNQxa_Ls.js +43 -0
- package/voronoi-noise-block-iNQxa_Ls.js.map +1 -0
- package/wave-block-CY_mk1ec.js +41 -0
- package/wave-block-CY_mk1ec.js.map +1 -0
- package/wgsl-helpers-DyzNzCeE.js +48 -0
- package/wgsl-helpers-DyzNzCeE.js.map +1 -0
- package/worley-noise-3d-block-CyR2-k4s.js +58 -0
- package/worley-noise-3d-block-CyR2-k4s.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gltf-ext-dielectric-qHzlnvdl.js","sources":["../src/loader-gltf/gltf-ext-dielectric.ts"],"sourcesContent":["/** Combined loader for the glTF extensions commonly used together for\n * dielectric / glass-like materials — KHR_materials_ior, _specular,\n * _transmission, _volume, and _dispersion.\n *\n * All four are consolidated into a single ext so:\n * - the three that populate `subsurface` (ior + volume + transmission)\n * don't need a deep-merge in `runMatExts` (each would otherwise overwrite\n * the others' subsurface contributions);\n * - load-gltf.ts pays only one registration-table entry for the whole set.\n *\n * Loaded when ANY of the four extensions is declared in extensionsUsed.\n * Only fields actually declared on each material are populated.\n *\n * KHR_materials_ior:\n * ior → subsurface.refraction.indexOfRefraction\n * + base-layer F0 remap (F0 = ((ior-1)/(ior+1))^2).\n *\n * KHR_materials_specular:\n * specularFactor → metallicF0Factor (scalar F0 multiplier)\n * specularColorFactor → metallicReflectanceColor (dielectric tint)\n * specularTexture → metallicReflectanceTexture (A=F0 scalar)\n * (useOnlyMetallicFromMetallicReflectanceTexture=true)\n * specularColorTexture → reflectanceTexture (RGB=dielectric tint)\n *\n * KHR_materials_volume:\n * thicknessFactor/Texture → subsurface.thickness (G-channel per spec)\n * attenuationColor/Distance → subsurface.tint\n *\n * KHR_materials_transmission:\n * transmissionFactor/Texture → subsurface.refraction.intensity/texture\n *\n * PR 1 wires the data only — the PBR refraction shader path lands in PR 2.\n * Until then, transmissive materials render as opaque. */\nimport type { GltfFeature } from \"./gltf-feature.js\";\nimport type { PbrMaterialProps, RefractionProps } from \"../material/pbr/pbr-material.js\";\n\nconst ext: GltfFeature = {\n id: \"KHR_materials_dielectric\",\n async applyMaterial(mat, ctx) {\n const exts = mat._rawMatDef?.extensions;\n if (!exts) {\n return null;\n }\n const eIor = exts.KHR_materials_ior;\n const eSp = exts.KHR_materials_specular;\n const eVol = exts.KHR_materials_volume;\n const eTx = exts.KHR_materials_transmission;\n const eDisp = exts.KHR_materials_dispersion;\n if (!eIor && !eSp && !eVol && !eTx && !eDisp) {\n return null;\n }\n\n const [specTex, specColTex, thickTex, transTex] = await Promise.all([\n ctx._texture(eSp?.specularTexture, false),\n ctx._texture(eSp?.specularColorTexture, true),\n ctx._texture(eVol?.thicknessTexture, false),\n ctx._texture(eTx?.transmissionTexture, false),\n ]);\n\n const out: Partial<PbrMaterialProps> = {};\n const subsurface: NonNullable<PbrMaterialProps[\"subsurface\"]> = {};\n\n if (eIor) {\n const ior: number = typeof eIor.ior === \"number\" ? eIor.ior : 1.5;\n // Skip writing metallicF0Factor at default IOR 1.5 (F0=0.04 → factor=1).\n // JS floats compute ((0.5/2.5)^2)/0.04 as 1.0000000000000002, which\n // would trigger the reflectance-factor code path and pull in the\n // reflectance fragment for every KHR_materials_ior scene with\n // default IOR. Only write when the factor meaningfully differs.\n if (ior !== 1.5) {\n out.metallicF0Factor = ((ior - 1) / (ior + 1)) ** 2 / 0.04;\n out.specularWeight = 1.0;\n (out as { _hasReflExt?: boolean })._hasReflExt = true;\n }\n subsurface.refraction = { indexOfRefraction: ior };\n }\n\n if (eSp) {\n // specularFactor replaces the base dielectric F0 scalar. When ior was\n // also specified, this overrides it (spec says specular wins).\n if (typeof eSp.specularFactor === \"number\") {\n if (Math.abs(eSp.specularFactor - 1) > 1e-6) {\n out.metallicF0Factor = eSp.specularFactor;\n out.specularWeight = eSp.specularFactor;\n (out as { _hasReflExt?: boolean })._hasReflExt = true;\n } else {\n delete out.metallicF0Factor;\n delete out.specularWeight;\n }\n }\n if (Array.isArray(eSp.specularColorFactor) && eSp.specularColorFactor.length === 3) {\n if (eSp.specularColorFactor[0] !== 1 || eSp.specularColorFactor[1] !== 1 || eSp.specularColorFactor[2] !== 1) {\n out.metallicReflectanceColor = [eSp.specularColorFactor[0], eSp.specularColorFactor[1], eSp.specularColorFactor[2]];\n (out as { _hasReflExt?: boolean })._hasReflExt = true;\n }\n }\n if (specTex) {\n out.metallicReflectanceTexture = specTex;\n out.useOnlyMetallicFromMetallicReflectanceTexture = true;\n }\n if (specColTex) {\n out.reflectanceTexture = specColTex;\n }\n }\n\n if (eVol) {\n const thicknessFactor: number = typeof eVol.thicknessFactor === \"number\" ? eVol.thicknessFactor : 0;\n if (thicknessFactor > 0 || thickTex) {\n subsurface.thickness = {\n min: 0,\n max: thicknessFactor || 1,\n useGlTFChannel: true,\n ...(thickTex ? { texture: thickTex } : undefined),\n };\n }\n const color = Array.isArray(eVol.attenuationColor) && eVol.attenuationColor.length === 3 ? (eVol.attenuationColor as [number, number, number]) : undefined;\n const atDistance: number | undefined = typeof eVol.attenuationDistance === \"number\" ? eVol.attenuationDistance : undefined;\n if (color || atDistance !== undefined) {\n subsurface.tint = {\n ...(color ? { color } : undefined),\n ...(atDistance !== undefined ? { atDistance } : undefined),\n };\n } else if (subsurface.thickness) {\n // KHR_materials_volume without attenuation: spec defaults to white at\n // infinite distance (no absorption), but the thickness is a real local\n // depth that must engage the volume path so it is world-scaled (else it\n // overshoots on non-unit-scaled models, e.g. MosquitoInAmber). White tint\n // gives volumeParams = log(1)/dist = 0 → ab = exp(0) = 1 (no tint).\n subsurface.tint = { color: [1, 1, 1], atDistance: 1 };\n }\n }\n\n if (eTx) {\n const intensity: number = typeof eTx.transmissionFactor === \"number\" ? eTx.transmissionFactor : 0;\n if (intensity > 0 || transTex) {\n out.transmissive = true;\n const refraction: RefractionProps = {\n ...(subsurface.refraction ?? {}),\n intensity,\n useThicknessAsDepth: !!subsurface.thickness,\n ...(transTex ? { texture: transTex } : undefined),\n };\n subsurface.refraction = refraction;\n }\n }\n\n // KHR_materials_dispersion: per-channel chromatic refraction. Only meaningful on\n // a volumetric transmissive material (the extension requires KHR_materials_volume).\n // The shader spread uses Babylon's empirical dispersion strength with a fixed Abbe\n // number of 20, so the glTF dispersion value maps to strength = 20 / dispersion\n // (larger glTF dispersion ⇒ larger Abbe ⇒ weaker chromatic spread).\n if (eDisp && typeof eDisp.dispersion === \"number\" && eDisp.dispersion > 0 && subsurface.refraction && subsurface.thickness) {\n subsurface.refraction = { ...subsurface.refraction, dispersion: 20.0 / eDisp.dispersion };\n }\n\n if (Object.keys(subsurface).length > 0) {\n out.subsurface = subsurface;\n }\n return Object.keys(out).length > 0 ? out : null;\n },\n};\nexport default ext;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const ext = {
|
|
2
|
+
id: "KHR_materials_emissive_strength",
|
|
3
|
+
async applyMaterial(mat) {
|
|
4
|
+
var _a, _b;
|
|
5
|
+
const e = (_b = (_a = mat._rawMatDef) == null ? void 0 : _a.extensions) == null ? void 0 : _b.KHR_materials_emissive_strength;
|
|
6
|
+
if (!e) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
const s = e.emissiveStrength ?? 1;
|
|
10
|
+
const f = mat._emissiveFactor;
|
|
11
|
+
return {
|
|
12
|
+
emissiveColor: [f[0] * s, f[1] * s, f[2] * s]
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export {
|
|
17
|
+
ext as default
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=gltf-ext-emissive-strength-nzGZXZVK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gltf-ext-emissive-strength-nzGZXZVK.js","sources":["../src/loader-gltf/gltf-ext-emissive-strength.ts"],"sourcesContent":["/** glTF KHR_materials_emissive_strength extension.\n * Multiplies the material's emissiveFactor by `emissiveStrength` and pushes the\n * result into `emissiveColor` (HDR — may exceed 1.0). The core PBR shader then\n * samples the emissive texture, multiplies by this factor, and lets tonemap +\n * exposure compress the result back into display range.\n *\n * Registering this ext also activates the emissive-color fragment (via\n * PBR_HAS_EMISSIVE_COLOR in mesh-features.ts → `!!mat.emissiveColor`), so\n * scenes without the extension pay zero bytes. */\nimport type { GltfFeature } from \"./gltf-feature.js\";\n\nconst ext: GltfFeature = {\n id: \"KHR_materials_emissive_strength\",\n async applyMaterial(mat) {\n const e = mat._rawMatDef?.extensions?.KHR_materials_emissive_strength;\n if (!e) {\n return null;\n }\n const s = e.emissiveStrength ?? 1.0;\n const f = mat._emissiveFactor;\n return {\n emissiveColor: [f[0] * s, f[1] * s, f[2] * s],\n };\n },\n};\nexport default ext;\n"],"names":[],"mappings":"AAWA,MAAM,MAAmB;AAAA,EACrB,IAAI;AAAA,EACJ,MAAM,cAAc,KAAK;AAF7B;AAGQ,UAAM,KAAI,eAAI,eAAJ,mBAAgB,eAAhB,mBAA4B;AACtC,QAAI,CAAC,GAAG;AACJ,aAAO;AAAA,IACX;AACA,UAAM,IAAI,EAAE,oBAAoB;AAChC,UAAM,IAAI,IAAI;AACd,WAAO;AAAA,MACH,eAAe,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;AAAA,IAAA;AAAA,EAEpD;AACJ;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const ext = {
|
|
2
|
+
id: "KHR_materials_iridescence",
|
|
3
|
+
async applyMaterial(mat, ctx) {
|
|
4
|
+
var _a, _b;
|
|
5
|
+
const iri = (_b = (_a = mat._rawMatDef) == null ? void 0 : _a.extensions) == null ? void 0 : _b.KHR_materials_iridescence;
|
|
6
|
+
if (!iri) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
const [tex, thicknessTex] = await Promise.all([ctx._texture(iri.iridescenceTexture, true), ctx._texture(iri.iridescenceThicknessTexture, true)]);
|
|
10
|
+
return {
|
|
11
|
+
iridescence: {
|
|
12
|
+
isEnabled: true,
|
|
13
|
+
intensity: iri.iridescenceFactor ?? 0,
|
|
14
|
+
indexOfRefraction: iri.iridescenceIor ?? 1.3,
|
|
15
|
+
minimumThickness: iri.iridescenceThicknessMinimum ?? 100,
|
|
16
|
+
maximumThickness: iri.iridescenceThicknessMaximum ?? 400,
|
|
17
|
+
texture: tex,
|
|
18
|
+
thicknessTexture: thicknessTex
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export {
|
|
24
|
+
ext as default
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=gltf-ext-iridescence-C6bq7jiM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gltf-ext-iridescence-C6bq7jiM.js","sources":["../src/loader-gltf/gltf-ext-iridescence.ts"],"sourcesContent":["/** glTF KHR_materials_iridescence extension. */\nimport type { GltfFeature } from \"./gltf-feature.js\";\n\nconst ext: GltfFeature = {\n id: \"KHR_materials_iridescence\",\n async applyMaterial(mat, ctx) {\n const iri = mat._rawMatDef?.extensions?.KHR_materials_iridescence;\n if (!iri) {\n return null;\n }\n // Babylon.js' KHR_materials_iridescence loader samples these extension textures through the gamma-space path.\n // Use sRGB uploads for parity, even though the glTF channels are scalar data.\n const [tex, thicknessTex] = await Promise.all([ctx._texture(iri.iridescenceTexture, true), ctx._texture(iri.iridescenceThicknessTexture, true)]);\n return {\n iridescence: {\n isEnabled: true,\n intensity: iri.iridescenceFactor ?? 0,\n indexOfRefraction: iri.iridescenceIor ?? 1.3,\n minimumThickness: iri.iridescenceThicknessMinimum ?? 100,\n maximumThickness: iri.iridescenceThicknessMaximum ?? 400,\n texture: tex,\n thicknessTexture: thicknessTex,\n },\n } as Partial<import(\"../material/pbr/pbr-material.js\").PbrMaterialProps>;\n },\n};\nexport default ext;\n"],"names":[],"mappings":"AAGA,MAAM,MAAmB;AAAA,EACrB,IAAI;AAAA,EACJ,MAAM,cAAc,KAAK,KAAK;AAFlC;AAGQ,UAAM,OAAM,eAAI,eAAJ,mBAAgB,eAAhB,mBAA4B;AACxC,QAAI,CAAC,KAAK;AACN,aAAO;AAAA,IACX;AAGA,UAAM,CAAC,KAAK,YAAY,IAAI,MAAM,QAAQ,IAAI,CAAC,IAAI,SAAS,IAAI,oBAAoB,IAAI,GAAG,IAAI,SAAS,IAAI,6BAA6B,IAAI,CAAC,CAAC;AAC/I,WAAO;AAAA,MACH,aAAa;AAAA,QACT,WAAW;AAAA,QACX,WAAW,IAAI,qBAAqB;AAAA,QACpC,mBAAmB,IAAI,kBAAkB;AAAA,QACzC,kBAAkB,IAAI,+BAA+B;AAAA,QACrD,kBAAkB,IAAI,+BAA+B;AAAA,QACrD,SAAS;AAAA,QACT,kBAAkB;AAAA,MAAA;AAAA,IACtB;AAAA,EAER;AACJ;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { h as setSubtreeVisible } from "./index-C8HOR2sB.js";
|
|
2
|
+
function applyVisibility(json, nodeMap) {
|
|
3
|
+
var _a, _b, _c;
|
|
4
|
+
const nodes = json.nodes ?? [];
|
|
5
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
6
|
+
const vis = (_c = (_b = (_a = nodes[i]) == null ? void 0 : _a.extensions) == null ? void 0 : _b.KHR_node_visibility) == null ? void 0 : _c.visible;
|
|
7
|
+
const sn = nodeMap[i];
|
|
8
|
+
if (vis === false && sn) {
|
|
9
|
+
setSubtreeVisible(sn, false);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const ext = {
|
|
14
|
+
id: "KHR_node_visibility",
|
|
15
|
+
async applyAsset(_meshes, _root, ctx) {
|
|
16
|
+
if (ctx._nodeMap) {
|
|
17
|
+
applyVisibility(ctx._json, ctx._nodeMap);
|
|
18
|
+
}
|
|
19
|
+
return {};
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
export {
|
|
23
|
+
ext as default
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=gltf-ext-node-visibility-MafA9ot2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gltf-ext-node-visibility-MafA9ot2.js","sources":["../src/loader-gltf/gltf-ext-node-visibility.ts"],"sourcesContent":["/** glTF KHR_node_visibility extension.\n *\n * Sets `node.visible = false` on SceneNodes whose glTF node has\n * `extensions.KHR_node_visibility.visible === false`, and cascades\n * through the subtree via `setSubtreeVisible` so that descendants\n * inherit the invisibility per the extension spec. The render path\n * and camera-AABB filter then skip them. Combined with\n * KHR_animation_pointer, the visible flag can also be toggled at runtime.\n *\n * Dynamically imported by load-gltf only when the asset declares the\n * extension in `extensionsUsed`, so bundles pay zero bytes otherwise. */\n\nimport type { GltfFeature } from \"./gltf-feature.js\";\nimport type { SceneNode } from \"../scene/scene-node.js\";\nimport { setSubtreeVisible } from \"../scene/visibility.js\";\n\nfunction applyVisibility(json: any, nodeMap: readonly (SceneNode | undefined)[]): void {\n const nodes = json.nodes ?? [];\n for (let i = 0; i < nodes.length; i++) {\n const vis = nodes[i]?.extensions?.KHR_node_visibility?.visible;\n const sn = nodeMap[i];\n if (vis === false && sn) {\n setSubtreeVisible(sn, false);\n }\n }\n}\n\nconst ext: GltfFeature = {\n id: \"KHR_node_visibility\",\n async applyAsset(_meshes, _root, ctx) {\n if (ctx._nodeMap) {\n applyVisibility(ctx._json, ctx._nodeMap);\n }\n return {};\n },\n};\nexport default ext;\n"],"names":[],"mappings":";AAgBA,SAAS,gBAAgB,MAAW,SAAmD;;AACnF,QAAM,QAAQ,KAAK,SAAS,CAAA;AAC5B,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,UAAM,OAAM,uBAAM,CAAC,MAAP,mBAAU,eAAV,mBAAsB,wBAAtB,mBAA2C;AACvD,UAAM,KAAK,QAAQ,CAAC;AACpB,QAAI,QAAQ,SAAS,IAAI;AACrB,wBAAkB,IAAI,KAAK;AAAA,IAC/B;AAAA,EACJ;AACJ;AAEA,MAAM,MAAmB;AAAA,EACrB,IAAI;AAAA,EACJ,MAAM,WAAW,SAAS,OAAO,KAAK;AAClC,QAAI,IAAI,UAAU;AACd,sBAAgB,IAAI,OAAO,IAAI,QAAQ;AAAA,IAC3C;AACA,WAAO,CAAA;AAAA,EACX;AACJ;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
async function compositeOrm(mr, occ) {
|
|
2
|
+
const w = mr.width;
|
|
3
|
+
const h = mr.height;
|
|
4
|
+
const c1 = new OffscreenCanvas(w, h);
|
|
5
|
+
const x1 = c1.getContext("2d");
|
|
6
|
+
x1.drawImage(mr, 0, 0, w, h);
|
|
7
|
+
const d1 = x1.getImageData(0, 0, w, h);
|
|
8
|
+
const c2 = new OffscreenCanvas(w, h);
|
|
9
|
+
const x2 = c2.getContext("2d");
|
|
10
|
+
x2.drawImage(occ, 0, 0, w, h);
|
|
11
|
+
const d2 = x2.getImageData(0, 0, w, h);
|
|
12
|
+
for (let j = 0; j < d1.data.length; j += 4) {
|
|
13
|
+
d1.data[j] = d2.data[j];
|
|
14
|
+
}
|
|
15
|
+
x1.putImageData(d1, 0, 0);
|
|
16
|
+
return createImageBitmap(c1);
|
|
17
|
+
}
|
|
18
|
+
const ext = {
|
|
19
|
+
id: "_orm-composite",
|
|
20
|
+
async applyMaterial(mat, ctx) {
|
|
21
|
+
const mr = mat._metallicRoughnessImage;
|
|
22
|
+
const occ = mat._occlusionImage;
|
|
23
|
+
if (!mr || !occ || mr === occ) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const bmp = await compositeOrm(mr, occ);
|
|
27
|
+
return { ormTexture: ctx._uploadImage(bmp, false) };
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
export {
|
|
31
|
+
ext as default
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=gltf-ext-orm-CT18G_vQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gltf-ext-orm-CT18G_vQ.js","sources":["../src/loader-gltf/gltf-ext-orm.ts"],"sourcesContent":["/** ORM compositing — packs separate metallic-roughness + occlusion bitmaps\n * into a single ORM texture (R=occlusion, G=roughness, B=metallic).\n *\n * Loaded only when the asset has at least one material with both a\n * metallicRoughnessTexture and a separate occlusionTexture — see the\n * `needs()` gate in load-gltf.ts. Materials that already ship packed ORM (or\n * no occlusion at all) take the core's default ORM upload path and never hit\n * this module. */\nimport type { GltfFeature } from \"./gltf-feature.js\";\n\nasync function compositeOrm(mr: ImageBitmap, occ: ImageBitmap): Promise<ImageBitmap> {\n const w = mr.width;\n const h = mr.height;\n const c1 = new OffscreenCanvas(w, h);\n const x1 = c1.getContext(\"2d\")!;\n x1.drawImage(mr, 0, 0, w, h);\n const d1 = x1.getImageData(0, 0, w, h);\n const c2 = new OffscreenCanvas(w, h);\n const x2 = c2.getContext(\"2d\")!;\n x2.drawImage(occ, 0, 0, w, h);\n const d2 = x2.getImageData(0, 0, w, h);\n for (let j = 0; j < d1.data.length; j += 4) {\n d1.data[j] = d2.data[j]!;\n }\n x1.putImageData(d1, 0, 0);\n return createImageBitmap(c1);\n}\n\nconst ext: GltfFeature = {\n id: \"_orm-composite\",\n async applyMaterial(mat, ctx) {\n const mr = mat._metallicRoughnessImage;\n const occ = mat._occlusionImage;\n if (!mr || !occ || mr === occ) {\n return null;\n }\n const bmp = await compositeOrm(mr, occ);\n return { ormTexture: ctx._uploadImage(bmp, false) };\n },\n};\nexport default ext;\n"],"names":[],"mappings":"AAUA,eAAe,aAAa,IAAiB,KAAwC;AACjF,QAAM,IAAI,GAAG;AACb,QAAM,IAAI,GAAG;AACb,QAAM,KAAK,IAAI,gBAAgB,GAAG,CAAC;AACnC,QAAM,KAAK,GAAG,WAAW,IAAI;AAC7B,KAAG,UAAU,IAAI,GAAG,GAAG,GAAG,CAAC;AAC3B,QAAM,KAAK,GAAG,aAAa,GAAG,GAAG,GAAG,CAAC;AACrC,QAAM,KAAK,IAAI,gBAAgB,GAAG,CAAC;AACnC,QAAM,KAAK,GAAG,WAAW,IAAI;AAC7B,KAAG,UAAU,KAAK,GAAG,GAAG,GAAG,CAAC;AAC5B,QAAM,KAAK,GAAG,aAAa,GAAG,GAAG,GAAG,CAAC;AACrC,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK,QAAQ,KAAK,GAAG;AACxC,OAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;AAAA,EAC1B;AACA,KAAG,aAAa,IAAI,GAAG,CAAC;AACxB,SAAO,kBAAkB,EAAE;AAC/B;AAEA,MAAM,MAAmB;AAAA,EACrB,IAAI;AAAA,EACJ,MAAM,cAAc,KAAK,KAAK;AAC1B,UAAM,KAAK,IAAI;AACf,UAAM,MAAM,IAAI;AAChB,QAAI,CAAC,MAAM,CAAC,OAAO,OAAO,KAAK;AAC3B,aAAO;AAAA,IACX;AACA,UAAM,MAAM,MAAM,aAAa,IAAI,GAAG;AACtC,WAAO,EAAE,YAAY,IAAI,aAAa,KAAK,KAAK,EAAA;AAAA,EACpD;AACJ;"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
const BYTE = 5120;
|
|
2
|
+
const UNSIGNED_BYTE = 5121;
|
|
3
|
+
const SHORT = 5122;
|
|
4
|
+
const UNSIGNED_SHORT = 5123;
|
|
5
|
+
const FLOAT = 5126;
|
|
6
|
+
const TYPE_COMPONENTS = { SCALAR: 1, VEC2: 2, VEC3: 3, VEC4: 4, MAT2: 4, MAT3: 9, MAT4: 16 };
|
|
7
|
+
const COMPONENT_BYTES = { 5120: 1, 5121: 1, 5122: 2, 5123: 2, 5125: 4, 5126: 4 };
|
|
8
|
+
function align4(n) {
|
|
9
|
+
return n + 3 & -4;
|
|
10
|
+
}
|
|
11
|
+
function readComponent(view, offset, componentType, normalized) {
|
|
12
|
+
switch (componentType) {
|
|
13
|
+
case BYTE: {
|
|
14
|
+
const c = view.getInt8(offset);
|
|
15
|
+
return normalized ? Math.max(c / 127, -1) : c;
|
|
16
|
+
}
|
|
17
|
+
case UNSIGNED_BYTE: {
|
|
18
|
+
const c = view.getUint8(offset);
|
|
19
|
+
return normalized ? c / 255 : c;
|
|
20
|
+
}
|
|
21
|
+
case SHORT: {
|
|
22
|
+
const c = view.getInt16(offset, true);
|
|
23
|
+
return normalized ? Math.max(c / 32767, -1) : c;
|
|
24
|
+
}
|
|
25
|
+
case UNSIGNED_SHORT: {
|
|
26
|
+
const c = view.getUint16(offset, true);
|
|
27
|
+
return normalized ? c / 65535 : c;
|
|
28
|
+
}
|
|
29
|
+
case FLOAT:
|
|
30
|
+
return view.getFloat32(offset, true);
|
|
31
|
+
default:
|
|
32
|
+
throw new Error(`KHR_mesh_quantization: unsupported componentType ${componentType}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const feature = {
|
|
36
|
+
id: "KHR_mesh_quantization",
|
|
37
|
+
async preParse(json, binChunk) {
|
|
38
|
+
var _a;
|
|
39
|
+
const accessors = json.accessors ?? [];
|
|
40
|
+
const bufferViews = json.bufferViews ?? [];
|
|
41
|
+
const convert = [];
|
|
42
|
+
let appended = 0;
|
|
43
|
+
for (let i = 0; i < accessors.length; i++) {
|
|
44
|
+
const a = accessors[i];
|
|
45
|
+
if (a.bufferView === void 0) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const componentCount = TYPE_COMPONENTS[a.type] ?? 1;
|
|
49
|
+
const stride = (_a = bufferViews[a.bufferView]) == null ? void 0 : _a.byteStride;
|
|
50
|
+
const signed = a.componentType === BYTE || a.componentType === SHORT;
|
|
51
|
+
const stridedFloat = a.componentType === FLOAT && stride !== void 0 && stride !== componentCount * 4;
|
|
52
|
+
if (signed || a.normalized === true || stridedFloat) {
|
|
53
|
+
convert.push(i);
|
|
54
|
+
appended = align4(appended + a.count * componentCount * 4);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (convert.length === 0) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const baseLen = align4(binChunk.byteLength);
|
|
61
|
+
const out = new ArrayBuffer(baseLen + appended);
|
|
62
|
+
new Uint8Array(out).set(new Uint8Array(binChunk.buffer, binChunk.byteOffset, binChunk.byteLength));
|
|
63
|
+
const outView = new DataView(out);
|
|
64
|
+
let cursor = baseLen;
|
|
65
|
+
for (const i of convert) {
|
|
66
|
+
const a = accessors[i];
|
|
67
|
+
const bv = bufferViews[a.bufferView];
|
|
68
|
+
const componentCount = TYPE_COMPONENTS[a.type] ?? 1;
|
|
69
|
+
const compBytes = COMPONENT_BYTES[a.componentType];
|
|
70
|
+
const stride = bv.byteStride ?? componentCount * compBytes;
|
|
71
|
+
const srcBase = (bv.byteOffset ?? 0) + (a.byteOffset ?? 0);
|
|
72
|
+
const dstOffset = cursor;
|
|
73
|
+
for (let v = 0; v < a.count; v++) {
|
|
74
|
+
for (let c = 0; c < componentCount; c++) {
|
|
75
|
+
const value = readComponent(binChunk, srcBase + v * stride + c * compBytes, a.componentType, !!a.normalized);
|
|
76
|
+
outView.setFloat32(dstOffset + (v * componentCount + c) * 4, value, true);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const byteLength = a.count * componentCount * 4;
|
|
80
|
+
const newBvIndex = bufferViews.length;
|
|
81
|
+
bufferViews.push({ buffer: 0, byteOffset: dstOffset, byteLength });
|
|
82
|
+
a.bufferView = newBvIndex;
|
|
83
|
+
a.byteOffset = 0;
|
|
84
|
+
a.componentType = FLOAT;
|
|
85
|
+
a.normalized = false;
|
|
86
|
+
cursor = align4(cursor + byteLength);
|
|
87
|
+
}
|
|
88
|
+
return outView;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
export {
|
|
92
|
+
feature as default
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=gltf-ext-quantization-CpZyLDIz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gltf-ext-quantization-CpZyLDIz.js","sources":["../src/loader-gltf/gltf-ext-quantization.ts"],"sourcesContent":["/**\n * KHR_mesh_quantization (+ post-meshopt) dequantization feature.\n *\n * Runs as a `preParse` hook, after EXT_meshopt_compression. The core accessor\n * reader (`resolveAccessor`) only understands tightly-packed FLOAT / UBYTE /\n * USHORT / UINT data and ignores `byteStride`; quantized assets store vertex\n * attributes (and meshopt-filtered animation outputs) as normalized or signed\n * integers, sometimes padded by a `byteStride`. This feature rewrites every such\n * accessor into a freshly-appended, tightly-packed FLOAT bufferView so the rest\n * of the loader stays completely unaware of quantization. It is dynamic-imported\n * only when `extensionsUsed` lists KHR_mesh_quantization, so non-quantized scenes\n * pay nothing.\n *\n * Conversion rule (role-agnostic, derived from the accessor alone):\n * - signed component types (BYTE/SHORT) → FLOAT (core would otherwise throw)\n * - `normalized` accessors → FLOAT (core would otherwise read raw ints)\n * - strided FLOAT accessors → tightly-packed FLOAT (core ignores byteStride)\n * Unsigned non-normalized integer accessors (JOINTS_0, indices) are left intact:\n * they are already tight and the skeleton / index paths expect integers.\n */\n\nimport type { GltfFeature } from \"./gltf-feature.js\";\n\nconst BYTE = 5120;\nconst UNSIGNED_BYTE = 5121;\nconst SHORT = 5122;\nconst UNSIGNED_SHORT = 5123;\nconst FLOAT = 5126;\n\nconst TYPE_COMPONENTS: Record<string, number> = { SCALAR: 1, VEC2: 2, VEC3: 3, VEC4: 4, MAT2: 4, MAT3: 9, MAT4: 16 };\nconst COMPONENT_BYTES: Record<number, number> = { 5120: 1, 5121: 1, 5122: 2, 5123: 2, 5125: 4, 5126: 4 };\n\ninterface Accessor {\n bufferView?: number;\n byteOffset?: number;\n componentType: number;\n normalized?: boolean;\n count: number;\n type: string;\n}\n\ninterface BufferView {\n buffer?: number;\n byteOffset?: number;\n byteLength: number;\n byteStride?: number;\n}\n\nfunction align4(n: number): number {\n return (n + 3) & ~3;\n}\n\n/** Read one component as a float, applying glTF normalization when requested. */\nfunction readComponent(view: DataView, offset: number, componentType: number, normalized: boolean): number {\n switch (componentType) {\n case BYTE: {\n const c = view.getInt8(offset);\n return normalized ? Math.max(c / 127, -1) : c;\n }\n case UNSIGNED_BYTE: {\n const c = view.getUint8(offset);\n return normalized ? c / 255 : c;\n }\n case SHORT: {\n const c = view.getInt16(offset, true);\n return normalized ? Math.max(c / 32767, -1) : c;\n }\n case UNSIGNED_SHORT: {\n const c = view.getUint16(offset, true);\n return normalized ? c / 65535 : c;\n }\n case FLOAT:\n return view.getFloat32(offset, true);\n default:\n throw new Error(`KHR_mesh_quantization: unsupported componentType ${componentType}`);\n }\n}\n\nconst feature: GltfFeature = {\n id: \"KHR_mesh_quantization\",\n async preParse(json, binChunk) {\n const accessors: Accessor[] = json.accessors ?? [];\n const bufferViews: BufferView[] = json.bufferViews ?? [];\n\n // Decide which accessors need rewriting and how many float bytes to append.\n const convert: number[] = [];\n let appended = 0;\n for (let i = 0; i < accessors.length; i++) {\n const a = accessors[i]!;\n if (a.bufferView === undefined) {\n continue;\n }\n const componentCount = TYPE_COMPONENTS[a.type] ?? 1;\n const stride = bufferViews[a.bufferView]?.byteStride;\n const signed = a.componentType === BYTE || a.componentType === SHORT;\n const stridedFloat = a.componentType === FLOAT && stride !== undefined && stride !== componentCount * 4;\n if (signed || a.normalized === true || stridedFloat) {\n convert.push(i);\n appended = align4(appended + a.count * componentCount * 4);\n }\n }\n\n if (convert.length === 0) {\n return;\n }\n\n // Build a new buffer: existing data (normalized to offset 0) + appended floats.\n const baseLen = align4(binChunk.byteLength);\n const out = new ArrayBuffer(baseLen + appended);\n new Uint8Array(out).set(new Uint8Array(binChunk.buffer, binChunk.byteOffset, binChunk.byteLength));\n const outView = new DataView(out);\n\n let cursor = baseLen;\n for (const i of convert) {\n const a = accessors[i]!;\n const bv = bufferViews[a.bufferView!]!;\n const componentCount = TYPE_COMPONENTS[a.type] ?? 1;\n const compBytes = COMPONENT_BYTES[a.componentType]!;\n const stride = bv.byteStride ?? componentCount * compBytes;\n // bufferView/accessor byteOffsets are relative to the DataView's own\n // byteOffset (DataView getters add it back), matching resolveAccessor.\n const srcBase = (bv.byteOffset ?? 0) + (a.byteOffset ?? 0);\n\n const dstOffset = cursor;\n for (let v = 0; v < a.count; v++) {\n for (let c = 0; c < componentCount; c++) {\n const value = readComponent(binChunk, srcBase + v * stride + c * compBytes, a.componentType, !!a.normalized);\n outView.setFloat32(dstOffset + (v * componentCount + c) * 4, value, true);\n }\n }\n\n const byteLength = a.count * componentCount * 4;\n const newBvIndex = bufferViews.length;\n bufferViews.push({ buffer: 0, byteOffset: dstOffset, byteLength });\n a.bufferView = newBvIndex;\n a.byteOffset = 0;\n a.componentType = FLOAT;\n a.normalized = false;\n cursor = align4(cursor + byteLength);\n }\n\n return outView;\n },\n};\n\nexport default feature;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const ext = {
|
|
2
|
+
id: "KHR_materials_sheen",
|
|
3
|
+
async applyMaterial(mat, ctx) {
|
|
4
|
+
var _a, _b;
|
|
5
|
+
const s = (_b = (_a = mat._rawMatDef) == null ? void 0 : _a.extensions) == null ? void 0 : _b.KHR_materials_sheen;
|
|
6
|
+
if (!s) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
const tex = await ctx._texture(s.sheenColorTexture, true);
|
|
10
|
+
return {
|
|
11
|
+
sheen: {
|
|
12
|
+
isEnabled: true,
|
|
13
|
+
color: s.sheenColorFactor ?? [0, 0, 0],
|
|
14
|
+
roughness: s.sheenRoughnessFactor ?? 0,
|
|
15
|
+
intensity: 1,
|
|
16
|
+
texture: tex,
|
|
17
|
+
albedoScaling: true
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
export {
|
|
23
|
+
ext as default
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=gltf-ext-sheen-BgIxUzyZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gltf-ext-sheen-BgIxUzyZ.js","sources":["../src/loader-gltf/gltf-ext-sheen.ts"],"sourcesContent":["/** glTF KHR_materials_sheen extension.\n * Only the color texture is fetched (sRGB); when the asset packs roughness in\n * the alpha channel of the same image, the runtime sheen path samples both\n * from `texture` directly. Distinct sheenRoughnessTexture images are not\n * currently supported. */\nimport type { GltfFeature } from \"./gltf-feature.js\";\n\nconst ext: GltfFeature = {\n id: \"KHR_materials_sheen\",\n async applyMaterial(mat, ctx) {\n const s = mat._rawMatDef?.extensions?.KHR_materials_sheen;\n if (!s) {\n return null;\n }\n const tex = await ctx._texture(s.sheenColorTexture, true);\n return {\n sheen: {\n isEnabled: true,\n color: s.sheenColorFactor ?? [0, 0, 0],\n roughness: s.sheenRoughnessFactor ?? 0,\n intensity: 1,\n texture: tex,\n albedoScaling: true,\n },\n };\n },\n};\nexport default ext;\n"],"names":[],"mappings":"AAOA,MAAM,MAAmB;AAAA,EACrB,IAAI;AAAA,EACJ,MAAM,cAAc,KAAK,KAAK;AAFlC;AAGQ,UAAM,KAAI,eAAI,eAAJ,mBAAgB,eAAhB,mBAA4B;AACtC,QAAI,CAAC,GAAG;AACJ,aAAO;AAAA,IACX;AACA,UAAM,MAAM,MAAM,IAAI,SAAS,EAAE,mBAAmB,IAAI;AACxD,WAAO;AAAA,MACH,OAAO;AAAA,QACH,WAAW;AAAA,QACX,OAAO,EAAE,oBAAoB,CAAC,GAAG,GAAG,CAAC;AAAA,QACrC,WAAW,EAAE,wBAAwB;AAAA,QACrC,WAAW;AAAA,QACX,SAAS;AAAA,QACT,eAAe;AAAA,MAAA;AAAA,IACnB;AAAA,EAER;AACJ;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const ext = {
|
|
2
|
+
id: "KHR_materials_pbrSpecularGlossiness",
|
|
3
|
+
async applyMaterial(mat, ctx) {
|
|
4
|
+
var _a, _b;
|
|
5
|
+
const sg = (_b = (_a = mat._rawMatDef) == null ? void 0 : _a.extensions) == null ? void 0 : _b.KHR_materials_pbrSpecularGlossiness;
|
|
6
|
+
if (!sg) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
const [diffuse, specGloss] = await Promise.all([ctx._texture(sg.diffuseTexture, true), ctx._texture(sg.specularGlossinessTexture, true)]);
|
|
10
|
+
const sf = sg.specularFactor;
|
|
11
|
+
const out = { metallicFactor: 0, roughnessFactor: 1 - (sg.glossinessFactor ?? 1), reflectance: sf ? Math.max(sf[0], sf[1], sf[2]) : 1 };
|
|
12
|
+
if (diffuse) {
|
|
13
|
+
out.baseColorTexture = diffuse;
|
|
14
|
+
}
|
|
15
|
+
if (specGloss) {
|
|
16
|
+
out.specGlossTexture = specGloss;
|
|
17
|
+
}
|
|
18
|
+
return out;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
export {
|
|
22
|
+
ext as default
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=gltf-ext-spec-gloss-D0LJLBUM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gltf-ext-spec-gloss-D0LJLBUM.js","sources":["../src/loader-gltf/gltf-ext-spec-gloss.ts"],"sourcesContent":["/** glTF KHR_materials_pbrSpecularGlossiness extension.\n *\n * Replaces the metallic-roughness workflow:\n * - diffuseTexture → baseColorTexture\n * - specularGlossinessTexture → specGlossTexture (RGB=specular, A=glossiness)\n *\n * Returned values override the core base-material fields via Object.assign\n * merge order in the loader.\n *\n * Note: spec-gloss `diffuseFactor` is currently propagated via the core\n * `GltfMaterialData.baseColorFactor` (which defaults to [1,1,1,1] for assets\n * that omit pbrMetallicRoughness). Spec-gloss models in our test corpus all\n * carry a diffuseTexture, so the factor path is exercised through the\n * texture itself. Add explicit factor handling here only if a regression\n * appears.\n */\nimport type { GltfFeature } from \"./gltf-feature.js\";\nimport type { PbrMaterialProps } from \"../material/pbr/pbr-material.js\";\n\nconst ext: GltfFeature = {\n id: \"KHR_materials_pbrSpecularGlossiness\",\n async applyMaterial(mat, ctx) {\n const sg = mat._rawMatDef?.extensions?.KHR_materials_pbrSpecularGlossiness;\n if (!sg) {\n return null;\n }\n const [diffuse, specGloss] = await Promise.all([ctx._texture(sg.diffuseTexture, true), ctx._texture(sg.specularGlossinessTexture, true)]);\n const sf = sg.specularFactor;\n const out: Partial<PbrMaterialProps> = { metallicFactor: 0, roughnessFactor: 1 - (sg.glossinessFactor ?? 1), reflectance: sf ? Math.max(sf[0], sf[1], sf[2]) : 1 };\n if (diffuse) {\n out.baseColorTexture = diffuse;\n }\n if (specGloss) {\n out.specGlossTexture = specGloss;\n }\n return out;\n },\n};\nexport default ext;\n"],"names":[],"mappings":"AAmBA,MAAM,MAAmB;AAAA,EACrB,IAAI;AAAA,EACJ,MAAM,cAAc,KAAK,KAAK;AAFlC;AAGQ,UAAM,MAAK,eAAI,eAAJ,mBAAgB,eAAhB,mBAA4B;AACvC,QAAI,CAAC,IAAI;AACL,aAAO;AAAA,IACX;AACA,UAAM,CAAC,SAAS,SAAS,IAAI,MAAM,QAAQ,IAAI,CAAC,IAAI,SAAS,GAAG,gBAAgB,IAAI,GAAG,IAAI,SAAS,GAAG,2BAA2B,IAAI,CAAC,CAAC;AACxI,UAAM,KAAK,GAAG;AACd,UAAM,MAAiC,EAAE,gBAAgB,GAAG,iBAAiB,KAAK,GAAG,oBAAoB,IAAI,aAAa,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAA;AAC/J,QAAI,SAAS;AACT,UAAI,mBAAmB;AAAA,IAC3B;AACA,QAAI,WAAW;AACX,UAAI,mBAAmB;AAAA,IAC3B;AACA,WAAO;AAAA,EACX;AACJ;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const ext = {
|
|
2
|
+
id: "KHR_materials_unlit",
|
|
3
|
+
async applyMaterial(mat) {
|
|
4
|
+
var _a, _b;
|
|
5
|
+
if (!((_b = (_a = mat._rawMatDef) == null ? void 0 : _a.extensions) == null ? void 0 : _b.KHR_materials_unlit)) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
const f = mat._baseColorFactor;
|
|
9
|
+
const tint = mat._baseColorImage ? [f[0], f[1], f[2]] : void 0;
|
|
10
|
+
return tint ? { unlit: true, unlitColor: tint } : { unlit: true };
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
ext as default
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=gltf-ext-unlit-D2ANui0V.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gltf-ext-unlit-D2ANui0V.js","sources":["../src/loader-gltf/gltf-ext-unlit.ts"],"sourcesContent":["/** glTF KHR_materials_unlit extension.\n * Flags the material as unlit — the runtime PBR shader outputs the base\n * color directly without any lighting or tonemap. */\nimport type { GltfFeature } from \"./gltf-feature.js\";\n\nconst ext: GltfFeature = {\n id: \"KHR_materials_unlit\",\n async applyMaterial(mat) {\n if (!mat._rawMatDef?.extensions?.KHR_materials_unlit) {\n return null;\n }\n const f = mat._baseColorFactor;\n // When a real baseColorTexture is present, its GPU sample contributes\n // the linear texel and `unlitColor` tints by `baseColorFactor`. When\n // there is no texture, the 1×1 fallback already bakes the factor into\n // its byte value, so leave `unlitColor` at its default [1,1,1].\n const tint: [number, number, number] | undefined = mat._baseColorImage ? [f[0], f[1], f[2]] : undefined;\n return tint ? { unlit: true, unlitColor: tint } : { unlit: true };\n },\n};\nexport default ext;\n"],"names":[],"mappings":"AAKA,MAAM,MAAmB;AAAA,EACrB,IAAI;AAAA,EACJ,MAAM,cAAc,KAAK;AAF7B;AAGQ,QAAI,GAAC,eAAI,eAAJ,mBAAgB,eAAhB,mBAA4B,sBAAqB;AAClD,aAAO;AAAA,IACX;AACA,UAAM,IAAI,IAAI;AAKd,UAAM,OAA6C,IAAI,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI;AAC9F,WAAO,OAAO,EAAE,OAAO,MAAM,YAAY,KAAA,IAAS,EAAE,OAAO,KAAA;AAAA,EAC/D;AACJ;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { f as cloneTexture2D } from "./index-C8HOR2sB.js";
|
|
2
|
+
const ext = {
|
|
3
|
+
id: "KHR_texture_transform",
|
|
4
|
+
wrapTexture(tex, texInfo) {
|
|
5
|
+
var _a;
|
|
6
|
+
const info = texInfo;
|
|
7
|
+
if (!info) {
|
|
8
|
+
return tex;
|
|
9
|
+
}
|
|
10
|
+
const kt = (_a = info.extensions) == null ? void 0 : _a.KHR_texture_transform;
|
|
11
|
+
const patch = {};
|
|
12
|
+
if (kt) {
|
|
13
|
+
if (kt.scale) {
|
|
14
|
+
patch.uScale = kt.scale[0];
|
|
15
|
+
patch.vScale = kt.scale[1];
|
|
16
|
+
}
|
|
17
|
+
if (kt.offset) {
|
|
18
|
+
patch.uOffset = kt.offset[0];
|
|
19
|
+
patch.vOffset = kt.offset[1];
|
|
20
|
+
}
|
|
21
|
+
if (kt.rotation) {
|
|
22
|
+
patch.uAng = kt.rotation;
|
|
23
|
+
}
|
|
24
|
+
if (Object.keys(patch).length) {
|
|
25
|
+
patch._hasTx = true;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const tc = (kt == null ? void 0 : kt.texCoord) ?? info.texCoord;
|
|
29
|
+
if (tc === 1) {
|
|
30
|
+
patch._texCoord = 1;
|
|
31
|
+
}
|
|
32
|
+
return Object.keys(patch).length ? cloneTexture2D(tex, patch) : tex;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
export {
|
|
36
|
+
ext as default
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=gltf-ext-uv-transform-CE_-T1Tr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gltf-ext-uv-transform-CE_-T1Tr.js","sources":["../src/loader-gltf/gltf-ext-uv-transform.ts"],"sourcesContent":["/** Per-textureInfo UV customization: KHR_texture_transform and/or texCoord=1.\n *\n * - Attaches `uScale/vScale/uOffset/vOffset/uAng` + `_hasTx=true` when the\n * textureInfo carries a KHR_texture_transform.\n * - Attaches `_texCoord=1` when the textureInfo (or its transform extension)\n * selects UV set 1. Spec: KHR_texture_transform.texCoord overrides\n * textureInfo.texCoord.\n *\n * Downstream the PBR material detects these fields and compiles a shader\n * with per-texture `txfUV` wrapping and per-texture UV selection. Identity\n * (no transform, texCoord=0) returns the base texture unchanged so the\n * cache reuses the same wrapper.\n *\n * Lazy-loaded: pulled into bundles whose glTF declares KHR_texture_transform\n * in `extensionsUsed` OR uses `texCoord:1` on any textureInfo. */\nimport type { Texture2D } from \"../texture/texture-2d.js\";\nimport { cloneTexture2D } from \"../texture/texture-2d.js\";\nimport type { GltfFeature } from \"./gltf-feature.js\";\n\ninterface KtInfo {\n texCoord?: number;\n extensions?: {\n KHR_texture_transform?: {\n scale?: [number, number];\n offset?: [number, number];\n rotation?: number;\n texCoord?: number;\n };\n };\n}\n\nconst ext: GltfFeature = {\n id: \"KHR_texture_transform\",\n wrapTexture(tex: Texture2D, texInfo: unknown): Texture2D {\n const info = texInfo as KtInfo | null | undefined;\n if (!info) {\n return tex;\n }\n const kt = info.extensions?.KHR_texture_transform;\n const patch: { uScale?: number; vScale?: number; uOffset?: number; vOffset?: number; uAng?: number; _hasTx?: true; _texCoord?: 0 | 1 } = {};\n if (kt) {\n if (kt.scale) {\n patch.uScale = kt.scale[0];\n patch.vScale = kt.scale[1];\n }\n if (kt.offset) {\n patch.uOffset = kt.offset[0];\n patch.vOffset = kt.offset[1];\n }\n if (kt.rotation) {\n patch.uAng = kt.rotation;\n }\n if (Object.keys(patch).length) {\n patch._hasTx = true;\n }\n }\n // Spec: KHR_texture_transform.texCoord overrides textureInfo.texCoord.\n const tc = kt?.texCoord ?? info.texCoord;\n if (tc === 1) {\n patch._texCoord = 1;\n }\n return Object.keys(patch).length ? cloneTexture2D(tex, patch) : tex;\n },\n};\nexport default ext;\n"],"names":[],"mappings":";AA+BA,MAAM,MAAmB;AAAA,EACrB,IAAI;AAAA,EACJ,YAAY,KAAgB,SAA6B;;AACrD,UAAM,OAAO;AACb,QAAI,CAAC,MAAM;AACP,aAAO;AAAA,IACX;AACA,UAAM,MAAK,UAAK,eAAL,mBAAiB;AAC5B,UAAM,QAAmI,CAAA;AACzI,QAAI,IAAI;AACJ,UAAI,GAAG,OAAO;AACV,cAAM,SAAS,GAAG,MAAM,CAAC;AACzB,cAAM,SAAS,GAAG,MAAM,CAAC;AAAA,MAC7B;AACA,UAAI,GAAG,QAAQ;AACX,cAAM,UAAU,GAAG,OAAO,CAAC;AAC3B,cAAM,UAAU,GAAG,OAAO,CAAC;AAAA,MAC/B;AACA,UAAI,GAAG,UAAU;AACb,cAAM,OAAO,GAAG;AAAA,MACpB;AACA,UAAI,OAAO,KAAK,KAAK,EAAE,QAAQ;AAC3B,cAAM,SAAS;AAAA,MACnB;AAAA,IACJ;AAEA,UAAM,MAAK,yBAAI,aAAY,KAAK;AAChC,QAAI,OAAO,GAAG;AACV,YAAM,YAAY;AAAA,IACtB;AACA,WAAO,OAAO,KAAK,KAAK,EAAE,SAAS,eAAe,KAAK,KAAK,IAAI;AAAA,EACpE;AACJ;"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { h as setSubtreeVisible, aX as PATH_POINTER } from "./index-C8HOR2sB.js";
|
|
2
|
+
import { _installPointerHandlers } from "./gltf-animation-D7uyTyO3.js";
|
|
3
|
+
const _registry = [
|
|
4
|
+
// /nodes/{n}/extensions/KHR_node_visibility/visible — scalar (0 = hidden).
|
|
5
|
+
// The setter cascade handles descendants per the KHR_node_visibility spec
|
|
6
|
+
// and bumps the module-scoped visibility epoch so the engine invalidates
|
|
7
|
+
// its cached render bundle.
|
|
8
|
+
[
|
|
9
|
+
/^\/nodes\/(\d+)\/extensions\/KHR_node_visibility\/visible$/,
|
|
10
|
+
(m, ctx) => {
|
|
11
|
+
const n = ctx.nodes[+m[1]];
|
|
12
|
+
if (!n) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
arity: 1,
|
|
17
|
+
writer: (out, off) => {
|
|
18
|
+
setSubtreeVisible(n, out[off] !== 0);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
];
|
|
24
|
+
const _warned = /* @__PURE__ */ new Set();
|
|
25
|
+
function resolveAnimationPointer(pointer, ctx) {
|
|
26
|
+
for (const [rx, make] of _registry) {
|
|
27
|
+
const m = rx.exec(pointer);
|
|
28
|
+
if (m) {
|
|
29
|
+
return make(m, ctx);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (!_warned.has(pointer)) {
|
|
33
|
+
_warned.add(pointer);
|
|
34
|
+
console.warn(`[babylon-lite] KHR_animation_pointer: no handler for "${pointer}"`);
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
_installPointerHandlers(
|
|
39
|
+
(ptr, c, nodeMap) => {
|
|
40
|
+
if (!nodeMap) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const resolved = resolveAnimationPointer(ptr, { nodes: nodeMap });
|
|
44
|
+
if (!resolved) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
const ch = {
|
|
48
|
+
samplerIdx: c.sampler,
|
|
49
|
+
nodeIdx: -1,
|
|
50
|
+
path: PATH_POINTER,
|
|
51
|
+
pointerWriter: resolved.writer,
|
|
52
|
+
pointerArity: resolved.arity
|
|
53
|
+
};
|
|
54
|
+
return ch;
|
|
55
|
+
},
|
|
56
|
+
(src, length, normalized) => {
|
|
57
|
+
const out = new Float32Array(length);
|
|
58
|
+
if (src instanceof Float32Array) {
|
|
59
|
+
for (let i = 0; i < length; i++) {
|
|
60
|
+
out[i] = src[i];
|
|
61
|
+
}
|
|
62
|
+
} else if (src instanceof Uint8Array) {
|
|
63
|
+
const k = normalized ? 1 / 255 : 1;
|
|
64
|
+
for (let i = 0; i < length; i++) {
|
|
65
|
+
out[i] = src[i] * k;
|
|
66
|
+
}
|
|
67
|
+
} else if (src instanceof Uint16Array) {
|
|
68
|
+
const k = normalized ? 1 / 65535 : 1;
|
|
69
|
+
for (let i = 0; i < length; i++) {
|
|
70
|
+
out[i] = src[i] * k;
|
|
71
|
+
}
|
|
72
|
+
} else if (src instanceof Int8Array) {
|
|
73
|
+
for (let i = 0; i < length; i++) {
|
|
74
|
+
out[i] = normalized ? Math.max(src[i] / 127, -1) : src[i];
|
|
75
|
+
}
|
|
76
|
+
} else if (src instanceof Int16Array) {
|
|
77
|
+
for (let i = 0; i < length; i++) {
|
|
78
|
+
out[i] = normalized ? Math.max(src[i] / 32767, -1) : src[i];
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
83
|
+
);
|
|
84
|
+
const feature = { id: "KHR_animation_pointer" };
|
|
85
|
+
export {
|
|
86
|
+
feature as default
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=gltf-feature-animation-pointer-BjpwOOqo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gltf-feature-animation-pointer-BjpwOOqo.js","sources":["../src/loader-gltf/animation-pointer.ts","../src/loader-gltf/gltf-feature-animation-pointer.ts"],"sourcesContent":["/** KHR_animation_pointer — JSON-pointer resolver registry.\n * Handlers are registered incrementally (one per parity scene). Unknown\n * pointers return null and warn once. */\nimport type { SceneNode } from \"../scene/scene-node.js\";\nimport { setSubtreeVisible } from \"../scene/visibility.js\";\n\nexport interface ResolvedPointer {\n writer: (output: Float32Array, offset: number) => void;\n arity: number;\n}\n\nexport interface PointerContext {\n nodes: readonly (SceneNode | undefined)[];\n}\n\ntype PointerFactory = (match: RegExpExecArray, ctx: PointerContext) => ResolvedPointer | null;\n\nconst _registry: [RegExp, PointerFactory][] = [\n // /nodes/{n}/extensions/KHR_node_visibility/visible — scalar (0 = hidden).\n // The setter cascade handles descendants per the KHR_node_visibility spec\n // and bumps the module-scoped visibility epoch so the engine invalidates\n // its cached render bundle.\n [\n /^\\/nodes\\/(\\d+)\\/extensions\\/KHR_node_visibility\\/visible$/,\n (m, ctx) => {\n const n = ctx.nodes[+m[1]!];\n if (!n) {\n return null;\n }\n return {\n arity: 1,\n writer: (out, off) => {\n setSubtreeVisible(n, out[off]! !== 0);\n },\n };\n },\n ],\n];\n\nconst _warned = new Set<string>();\n\nexport function resolveAnimationPointer(pointer: string, ctx: PointerContext): ResolvedPointer | null {\n for (const [rx, make] of _registry) {\n const m = rx.exec(pointer);\n if (m) {\n return make(m, ctx);\n }\n }\n if (!_warned.has(pointer)) {\n _warned.add(pointer);\n\n console.warn(`[babylon-lite] KHR_animation_pointer: no handler for \"${pointer}\"`);\n }\n return null;\n}\n","/** KHR_animation_pointer glTF feature.\n *\n * Registered in load-gltf.ts's feature table gated on\n * `extensionsUsed.includes(\"KHR_animation_pointer\")`, so any scene that\n * doesn't declare the extension pays zero bytes for pointer resolution, the\n * non-Float32 sampler converter, or the visibility cascade helper.\n *\n * On side-effect import this module installs two callbacks into gltf-animation:\n * 1. A pointer-channel parser (resolves the JSON pointer to a writer fn).\n * 2. A sampler converter that handles the non-Float32/misaligned accessor\n * cases the fast path in gltf-animation can't express (e.g. the 11-byte\n * UNSIGNED_BYTE visibility accessor in CubeVisibility.glb). */\n\nimport type { GltfFeature } from \"./gltf-feature.js\";\nimport type { AnimationChannel } from \"../animation/types.js\";\nimport { PATH_POINTER } from \"../animation/types.js\";\nimport { resolveAnimationPointer } from \"./animation-pointer.js\";\nimport { _installPointerHandlers } from \"./gltf-animation.js\";\n\n_installPointerHandlers(\n (ptr, c, nodeMap) => {\n if (!nodeMap) {\n return null;\n }\n const resolved = resolveAnimationPointer(ptr, { nodes: nodeMap });\n if (!resolved) {\n return null;\n }\n const ch: AnimationChannel = {\n samplerIdx: c.sampler,\n nodeIdx: -1,\n path: PATH_POINTER,\n pointerWriter: resolved.writer,\n pointerArity: resolved.arity,\n };\n return ch;\n },\n (src, length, normalized) => {\n // Convert any animation-sampler payload to a standalone Float32Array.\n // Handles the cases the aligned-Float32 fast path can't express.\n const out = new Float32Array(length);\n if (src instanceof Float32Array) {\n for (let i = 0; i < length; i++) {\n out[i] = src[i]!;\n }\n } else if (src instanceof Uint8Array) {\n const k = normalized ? 1 / 255 : 1;\n for (let i = 0; i < length; i++) {\n out[i] = src[i]! * k;\n }\n } else if (src instanceof Uint16Array) {\n const k = normalized ? 1 / 65535 : 1;\n for (let i = 0; i < length; i++) {\n out[i] = src[i]! * k;\n }\n } else if (src instanceof Int8Array) {\n for (let i = 0; i < length; i++) {\n out[i] = normalized ? Math.max(src[i]! / 127, -1) : src[i]!;\n }\n } else if (src instanceof Int16Array) {\n for (let i = 0; i < length; i++) {\n out[i] = normalized ? Math.max(src[i]! / 32767, -1) : src[i]!;\n }\n }\n return out;\n }\n);\n\n// No per-asset hook — this feature only installs the seam at import time.\nconst feature: GltfFeature = { id: \"KHR_animation_pointer\" };\nexport default feature;\n"],"names":[],"mappings":";;AAiBA,MAAM,YAAwC;AAAA;AAAA;AAAA;AAAA;AAAA,EAK1C;AAAA,IACI;AAAA,IACA,CAAC,GAAG,QAAQ;AACR,YAAM,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,CAAE;AAC1B,UAAI,CAAC,GAAG;AACJ,eAAO;AAAA,MACX;AACA,aAAO;AAAA,QACH,OAAO;AAAA,QACP,QAAQ,CAAC,KAAK,QAAQ;AAClB,4BAAkB,GAAG,IAAI,GAAG,MAAO,CAAC;AAAA,QACxC;AAAA,MAAA;AAAA,IAER;AAAA,EAAA;AAER;AAEA,MAAM,8BAAc,IAAA;AAEb,SAAS,wBAAwB,SAAiB,KAA6C;AAClG,aAAW,CAAC,IAAI,IAAI,KAAK,WAAW;AAChC,UAAM,IAAI,GAAG,KAAK,OAAO;AACzB,QAAI,GAAG;AACH,aAAO,KAAK,GAAG,GAAG;AAAA,IACtB;AAAA,EACJ;AACA,MAAI,CAAC,QAAQ,IAAI,OAAO,GAAG;AACvB,YAAQ,IAAI,OAAO;AAEnB,YAAQ,KAAK,yDAAyD,OAAO,GAAG;AAAA,EACpF;AACA,SAAO;AACX;ACnCA;AAAA,EACI,CAAC,KAAK,GAAG,YAAY;AACjB,QAAI,CAAC,SAAS;AACV,aAAO;AAAA,IACX;AACA,UAAM,WAAW,wBAAwB,KAAK,EAAE,OAAO,SAAS;AAChE,QAAI,CAAC,UAAU;AACX,aAAO;AAAA,IACX;AACA,UAAM,KAAuB;AAAA,MACzB,YAAY,EAAE;AAAA,MACd,SAAS;AAAA,MACT,MAAM;AAAA,MACN,eAAe,SAAS;AAAA,MACxB,cAAc,SAAS;AAAA,IAAA;AAE3B,WAAO;AAAA,EACX;AAAA,EACA,CAAC,KAAK,QAAQ,eAAe;AAGzB,UAAM,MAAM,IAAI,aAAa,MAAM;AACnC,QAAI,eAAe,cAAc;AAC7B,eAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,YAAI,CAAC,IAAI,IAAI,CAAC;AAAA,MAClB;AAAA,IACJ,WAAW,eAAe,YAAY;AAClC,YAAM,IAAI,aAAa,IAAI,MAAM;AACjC,eAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,YAAI,CAAC,IAAI,IAAI,CAAC,IAAK;AAAA,MACvB;AAAA,IACJ,WAAW,eAAe,aAAa;AACnC,YAAM,IAAI,aAAa,IAAI,QAAQ;AACnC,eAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,YAAI,CAAC,IAAI,IAAI,CAAC,IAAK;AAAA,MACvB;AAAA,IACJ,WAAW,eAAe,WAAW;AACjC,eAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,YAAI,CAAC,IAAI,aAAa,KAAK,IAAI,IAAI,CAAC,IAAK,KAAK,EAAE,IAAI,IAAI,CAAC;AAAA,MAC7D;AAAA,IACJ,WAAW,eAAe,YAAY;AAClC,eAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,YAAI,CAAC,IAAI,aAAa,KAAK,IAAI,IAAI,CAAC,IAAK,OAAO,EAAE,IAAI,IAAI,CAAC;AAAA,MAC/D;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACJ;AAGA,MAAM,UAAuB,EAAE,IAAI,wBAAA;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const feature = {
|
|
2
|
+
id: "_animations",
|
|
3
|
+
async applyAsset(meshes, _root, ctx) {
|
|
4
|
+
const [{ parseAnimationData }, { createAnimationGroups }] = await Promise.all([import("./gltf-animation-D7uyTyO3.js"), import("./index-C8HOR2sB.js").then((n) => n.gh)]);
|
|
5
|
+
const animData = parseAnimationData(ctx._json, ctx._binChunk, meshes, ctx._parentMap, ctx._worldMatrixCache, ctx._nodeMap);
|
|
6
|
+
if (!animData) {
|
|
7
|
+
return {};
|
|
8
|
+
}
|
|
9
|
+
return { animationGroups: createAnimationGroups(animData) };
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
export {
|
|
13
|
+
feature as default
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=gltf-feature-animations-CCizegp8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gltf-feature-animations-CCizegp8.js","sources":["../src/loader-gltf/gltf-feature-animations.ts"],"sourcesContent":["/** glTF animation feature.\n * Triggered when the asset has any animations. Per-asset hook parses clips,\n * binds them to the uploaded meshes, and returns AnimationGroups. */\n\nimport type { GltfFeature } from \"./gltf-feature.js\";\n\nconst feature: GltfFeature = {\n id: \"_animations\",\n async applyAsset(meshes, _root, ctx) {\n const [{ parseAnimationData }, { createAnimationGroups }] = await Promise.all([import(\"./gltf-animation.js\"), import(\"../animation/animation-group.js\")]);\n const animData = parseAnimationData(ctx._json, ctx._binChunk, meshes, ctx._parentMap, ctx._worldMatrixCache, ctx._nodeMap);\n if (!animData) {\n return {};\n }\n return { animationGroups: createAnimationGroups(animData) };\n },\n};\nexport default feature;\n"],"names":[],"mappings":"AAMA,MAAM,UAAuB;AAAA,EACzB,IAAI;AAAA,EACJ,MAAM,WAAW,QAAQ,OAAO,KAAK;AACjC,UAAM,CAAC,EAAE,mBAAA,GAAsB,EAAE,sBAAA,CAAuB,IAAI,MAAM,QAAQ,IAAI,CAAC,OAAO,8BAAqB,GAAG,OAAO,qBAAiC,EAAA,KAAA,OAAA,EAAA,EAAA,CAAC,CAAC;AACxJ,UAAM,WAAW,mBAAmB,IAAI,OAAO,IAAI,WAAW,QAAQ,IAAI,YAAY,IAAI,mBAAmB,IAAI,QAAQ;AACzH,QAAI,CAAC,UAAU;AACX,aAAO,CAAA;AAAA,IACX;AACA,WAAO,EAAE,iBAAiB,sBAAsB,QAAQ,EAAA;AAAA,EAC5D;AACJ;"}
|