@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":"refraction-dispersion-wgsl-DdQCyyO1.js","sources":["../src/material/pbr/fragments/refraction-dispersion-wgsl.ts"],"sourcesContent":["// Chromatic-dispersion refracted-environment sample (KHR_materials_dispersion).\n//\n// A pure data module: the per-RGB 3-ray WGSL is dynamically imported only by\n// scenes that actually use dispersion (see pbr-refraction.ts), so it ships in\n// no other transmission scene's bundle. The string is injected into the\n// refraction fragment factory (makeRefractionRttExt) rather than mutating any\n// shared module state, keeping shader generation scene-isolated.\n//\n// Splits the refracted ray into per-RGB index-of-refraction offsets, matching\n// BJS pbrBlockSubSurface: realIOR=1/eta, spread=0.04*dispersion*(realIOR-1),\n// iors=[1/(realIOR-spread), eta, 1/(realIOR+spread)].\n\n/** Per-RGB chromatic-dispersion refracted-environment sample WGSL, injected into\n * the refraction fragment when a scene contains a dispersive transmissive material. */\nexport const DISPERSION_SAMPLE_WGSL = `let eta=material.refractionParams.y;\nlet realIOR=1.0/eta;\nlet spread=0.04*material.volumeParams.w*(realIOR-1.0);\nlet etaR=1.0/(realIOR-spread);\nlet etaB=1.0/(realIOR+spread);\nlet cpR=scene.viewProjection*vec4<f32>(input.worldPos+refract(-V,N,etaR)*th,1.0);\nlet cpG=scene.viewProjection*vec4<f32>(input.worldPos+refract(-V,N,eta)*th,1.0);\nlet cpB=scene.viewProjection*vec4<f32>(input.worldPos+refract(-V,N,etaB)*th,1.0);\nlet uvR=(cpR.xy/cpR.w)*vec2<f32>(0.5,-0.5)+vec2<f32>(0.5,0.5);\nlet uvG=(cpG.xy/cpG.w)*vec2<f32>(0.5,-0.5)+vec2<f32>(0.5,0.5);\nlet uvB=(cpB.xy/cpB.w)*vec2<f32>(0.5,-0.5)+vec2<f32>(0.5,0.5);\nlet er=vec3<f32>(textureSampleLevel(refractionTexture,refractionSampler_,uvR,lv).r,textureSampleLevel(refractionTexture,refractionSampler_,uvG,lv).g,textureSampleLevel(refractionTexture,refractionSampler_,uvB,lv).b)*material.environmentIntensity;`;\n"],"names":[],"mappings":"AAcO,MAAM,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { f as formatFloat } from "./_math-factory-C-QqW-Wi.js";
|
|
2
|
+
function resolveOrSerialized(block, inputName, serializedKey, fallback, stage, state, ctx) {
|
|
3
|
+
const input = block.inputs.get(inputName);
|
|
4
|
+
if (input == null ? void 0 : input.source) {
|
|
5
|
+
return ctx.cast(ctx.resolve(block, inputName, stage, state), "f32").expr;
|
|
6
|
+
}
|
|
7
|
+
const raw = block.serialized[serializedKey];
|
|
8
|
+
return formatFloat(typeof raw === "number" ? raw : fallback);
|
|
9
|
+
}
|
|
10
|
+
const emitter = {
|
|
11
|
+
className: "RemapBlock",
|
|
12
|
+
emit(block, _outputName, stage, state, ctx) {
|
|
13
|
+
const input = ctx.resolve(block, "input", stage, state);
|
|
14
|
+
const sMin = resolveOrSerialized(block, "sourceMin", "sourceRange.x", -1, stage, state, ctx);
|
|
15
|
+
const sMax = resolveOrSerialized(block, "sourceMax", "sourceRange.y", 1, stage, state, ctx);
|
|
16
|
+
const tMin = resolveOrSerialized(block, "targetMin", "targetRange.x", 0, stage, state, ctx);
|
|
17
|
+
const tMax = resolveOrSerialized(block, "targetMax", "targetRange.y", 1, stage, state, ctx);
|
|
18
|
+
return {
|
|
19
|
+
expr: `(${tMin} + (${input.expr} - ${sMin}) * (${tMax} - ${tMin}) / (${sMax} - ${sMin}))`,
|
|
20
|
+
type: input.type
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export {
|
|
25
|
+
emitter
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=remap-block-DxK1W1vp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remap-block-DxK1W1vp.js","sources":["../src/material/node/blocks/remap-block.ts"],"sourcesContent":["import type { BlockEmitter } from \"../node-types.js\";\nimport { formatFloat } from \"./_math-factory.js\";\n\nfunction resolveOrSerialized(\n block: Parameters<BlockEmitter[\"emit\"]>[0],\n inputName: string,\n serializedKey: string,\n fallback: number,\n stage: Parameters<BlockEmitter[\"emit\"]>[2],\n state: Parameters<BlockEmitter[\"emit\"]>[3],\n ctx: Parameters<BlockEmitter[\"emit\"]>[4]\n): string {\n const input = block.inputs.get(inputName);\n if (input?.source) {\n return ctx.cast(ctx.resolve(block, inputName, stage, state), \"f32\").expr;\n }\n const raw = block.serialized[serializedKey];\n return formatFloat(typeof raw === \"number\" ? raw : fallback);\n}\n\nexport const emitter: BlockEmitter = {\n className: \"RemapBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const input = ctx.resolve(block, \"input\", stage, state);\n const sMin = resolveOrSerialized(block, \"sourceMin\", \"sourceRange.x\", -1, stage, state, ctx);\n const sMax = resolveOrSerialized(block, \"sourceMax\", \"sourceRange.y\", 1, stage, state, ctx);\n const tMin = resolveOrSerialized(block, \"targetMin\", \"targetRange.x\", 0, stage, state, ctx);\n const tMax = resolveOrSerialized(block, \"targetMax\", \"targetRange.y\", 1, stage, state, ctx);\n // t + (v - s0) * (t1 - t0) / (s1 - s0)\n return {\n expr: `(${tMin} + (${input.expr} - ${sMin}) * (${tMax} - ${tMin}) / (${sMax} - ${sMin}))`,\n type: input.type,\n };\n },\n};\n"],"names":[],"mappings":";AAGA,SAAS,oBACL,OACA,WACA,eACA,UACA,OACA,OACA,KACM;AACN,QAAM,QAAQ,MAAM,OAAO,IAAI,SAAS;AACxC,MAAI,+BAAO,QAAQ;AACf,WAAO,IAAI,KAAK,IAAI,QAAQ,OAAO,WAAW,OAAO,KAAK,GAAG,KAAK,EAAE;AAAA,EACxE;AACA,QAAM,MAAM,MAAM,WAAW,aAAa;AAC1C,SAAO,YAAY,OAAO,QAAQ,WAAW,MAAM,QAAQ;AAC/D;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,QAAQ,IAAI,QAAQ,OAAO,SAAS,OAAO,KAAK;AACtD,UAAM,OAAO,oBAAoB,OAAO,aAAa,iBAAiB,IAAI,OAAO,OAAO,GAAG;AAC3F,UAAM,OAAO,oBAAoB,OAAO,aAAa,iBAAiB,GAAG,OAAO,OAAO,GAAG;AAC1F,UAAM,OAAO,oBAAoB,OAAO,aAAa,iBAAiB,GAAG,OAAO,OAAO,GAAG;AAC1F,UAAM,OAAO,oBAAoB,OAAO,aAAa,iBAAiB,GAAG,OAAO,OAAO,GAAG;AAE1F,WAAO;AAAA,MACH,MAAM,IAAI,IAAI,OAAO,MAAM,IAAI,MAAM,IAAI,QAAQ,IAAI,MAAM,IAAI,QAAQ,IAAI,MAAM,IAAI;AAAA,MACrF,MAAM,MAAM;AAAA,IAAA;AAAA,EAEpB;AACJ;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const emitter = {
|
|
2
|
+
className: "ReplaceColorBlock",
|
|
3
|
+
emit(block, _outputName, stage, state, ctx) {
|
|
4
|
+
const value = ctx.resolve(block, "value", stage, state);
|
|
5
|
+
if (value.type === "f32" || value.type === "mat4f" || value.type === "texture2d" || value.type === "textureCube") {
|
|
6
|
+
throw new Error(`NodeMaterial: ReplaceColorBlock requires a vector/color value; got ${value.type}`);
|
|
7
|
+
}
|
|
8
|
+
const reference = ctx.cast(ctx.resolve(block, "reference", stage, state), value.type).expr;
|
|
9
|
+
const distance = ctx.cast(ctx.resolve(block, "distance", stage, state), "f32").expr;
|
|
10
|
+
const replacement = ctx.cast(ctx.resolve(block, "replacement", stage, state), value.type).expr;
|
|
11
|
+
return { expr: `select(${value.expr}, ${replacement}, length(${value.expr} - ${reference}) < ${distance})`, type: value.type };
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
export {
|
|
15
|
+
emitter
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=replace-color-block-1m--hiru.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replace-color-block-1m--hiru.js","sources":["../src/material/node/blocks/replace-color-block.ts"],"sourcesContent":["import type { BlockEmitter } from \"../node-types.js\";\n\nexport const emitter: BlockEmitter = {\n className: \"ReplaceColorBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const value = ctx.resolve(block, \"value\", stage, state);\n if (value.type === \"f32\" || value.type === \"mat4f\" || value.type === \"texture2d\" || value.type === \"textureCube\") {\n throw new Error(`NodeMaterial: ReplaceColorBlock requires a vector/color value; got ${value.type}`);\n }\n const reference = ctx.cast(ctx.resolve(block, \"reference\", stage, state), value.type).expr;\n const distance = ctx.cast(ctx.resolve(block, \"distance\", stage, state), \"f32\").expr;\n const replacement = ctx.cast(ctx.resolve(block, \"replacement\", stage, state), value.type).expr;\n return { expr: `select(${value.expr}, ${replacement}, length(${value.expr} - ${reference}) < ${distance})`, type: value.type };\n },\n};\n"],"names":[],"mappings":"AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,QAAQ,IAAI,QAAQ,OAAO,SAAS,OAAO,KAAK;AACtD,QAAI,MAAM,SAAS,SAAS,MAAM,SAAS,WAAW,MAAM,SAAS,eAAe,MAAM,SAAS,eAAe;AAC9G,YAAM,IAAI,MAAM,sEAAsE,MAAM,IAAI,EAAE;AAAA,IACtG;AACA,UAAM,YAAY,IAAI,KAAK,IAAI,QAAQ,OAAO,aAAa,OAAO,KAAK,GAAG,MAAM,IAAI,EAAE;AACtF,UAAM,WAAW,IAAI,KAAK,IAAI,QAAQ,OAAO,YAAY,OAAO,KAAK,GAAG,KAAK,EAAE;AAC/E,UAAM,cAAc,IAAI,KAAK,IAAI,QAAQ,OAAO,eAAe,OAAO,KAAK,GAAG,MAAM,IAAI,EAAE;AAC1F,WAAO,EAAE,MAAM,UAAU,MAAM,IAAI,KAAK,WAAW,YAAY,MAAM,IAAI,MAAM,SAAS,OAAO,QAAQ,KAAK,MAAM,MAAM,KAAA;AAAA,EAC5H;AACJ;"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
const WGSL = `override f:bool=false;@group(0)@binding(0)var t:texture_2d<f32>;@group(0)@binding(1)var o:texture_storage_2d<rgba16float,write>;@compute @workgroup_size(8,8)fn main(@builtin(global_invocation_id)g:vec3u){let d=textureDimensions(t);if(any(g.xy>=d)){return;}let c=textureLoad(t,vec2u(g.x,select(g.y,d.y-1u-g.y,f)),0);textureStore(o,g.xy,vec4f(pow(c.rgb,vec3f(2.2))/max(c.a,1.0/255.0),1));}`;
|
|
2
|
+
let _device = null;
|
|
3
|
+
let _module = null;
|
|
4
|
+
let _noFlip = null;
|
|
5
|
+
let _flip = null;
|
|
6
|
+
function getPipeline(device, flipY) {
|
|
7
|
+
if (device !== _device) {
|
|
8
|
+
_device = device;
|
|
9
|
+
_module = device.createShaderModule({ code: WGSL });
|
|
10
|
+
_noFlip = null;
|
|
11
|
+
_flip = null;
|
|
12
|
+
}
|
|
13
|
+
const slot = flipY ? _flip : _noFlip;
|
|
14
|
+
if (slot) {
|
|
15
|
+
return slot;
|
|
16
|
+
}
|
|
17
|
+
const p = device.createComputePipeline({
|
|
18
|
+
layout: "auto",
|
|
19
|
+
compute: { module: _module, entryPoint: "main", constants: { f: flipY ? 1 : 0 } }
|
|
20
|
+
});
|
|
21
|
+
if (flipY) {
|
|
22
|
+
_flip = p;
|
|
23
|
+
} else {
|
|
24
|
+
_noFlip = p;
|
|
25
|
+
}
|
|
26
|
+
return p;
|
|
27
|
+
}
|
|
28
|
+
function makeBindGroup(device, pipeline, inView, outView) {
|
|
29
|
+
return device.createBindGroup({
|
|
30
|
+
layout: pipeline.getBindGroupLayout(0),
|
|
31
|
+
entries: [
|
|
32
|
+
{ binding: 0, resource: inView },
|
|
33
|
+
{ binding: 1, resource: outView }
|
|
34
|
+
]
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function encodeDispatch(encoder, pipeline, bg, w, h) {
|
|
38
|
+
const pass = encoder.beginComputePass();
|
|
39
|
+
pass.setPipeline(pipeline);
|
|
40
|
+
pass.setBindGroup(0, bg);
|
|
41
|
+
pass.dispatchWorkgroups(Math.ceil(w / 8), Math.ceil(h / 8));
|
|
42
|
+
pass.end();
|
|
43
|
+
}
|
|
44
|
+
function decodeBrdfPng(engine, image) {
|
|
45
|
+
const device = engine._device;
|
|
46
|
+
const pipeline = getPipeline(device, false);
|
|
47
|
+
const w = image.width;
|
|
48
|
+
const h = image.height;
|
|
49
|
+
const inputTex = device.createTexture({
|
|
50
|
+
size: { width: w, height: h },
|
|
51
|
+
format: "rgba8unorm",
|
|
52
|
+
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT
|
|
53
|
+
});
|
|
54
|
+
device.queue.copyExternalImageToTexture({ source: image, flipY: false }, { texture: inputTex, premultipliedAlpha: false }, { width: w, height: h });
|
|
55
|
+
const texture = device.createTexture({
|
|
56
|
+
size: { width: w, height: h },
|
|
57
|
+
format: "rgba16float",
|
|
58
|
+
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.STORAGE_BINDING
|
|
59
|
+
});
|
|
60
|
+
const bg = makeBindGroup(device, pipeline, inputTex.createView(), texture.createView());
|
|
61
|
+
const enc = device.createCommandEncoder();
|
|
62
|
+
encodeDispatch(enc, pipeline, bg, w, h);
|
|
63
|
+
device.queue.submit([enc.finish()]);
|
|
64
|
+
inputTex.destroy();
|
|
65
|
+
return texture;
|
|
66
|
+
}
|
|
67
|
+
function uploadCubemapRGBD(engine, images, width, mipCount) {
|
|
68
|
+
const device = engine._device;
|
|
69
|
+
const pipeline = getPipeline(device, true);
|
|
70
|
+
const texture = device.createTexture({
|
|
71
|
+
size: { width, height: width, depthOrArrayLayers: 6 },
|
|
72
|
+
format: "rgba16float",
|
|
73
|
+
mipLevelCount: mipCount,
|
|
74
|
+
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT,
|
|
75
|
+
dimension: "2d"
|
|
76
|
+
});
|
|
77
|
+
for (let mip = 0; mip < mipCount; mip++) {
|
|
78
|
+
const mipSize = Math.max(1, width >> mip);
|
|
79
|
+
const inputTex = device.createTexture({
|
|
80
|
+
size: { width: mipSize, height: mipSize },
|
|
81
|
+
format: "rgba8unorm",
|
|
82
|
+
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT
|
|
83
|
+
});
|
|
84
|
+
const outputTex = device.createTexture({
|
|
85
|
+
size: { width: mipSize, height: mipSize },
|
|
86
|
+
format: "rgba16float",
|
|
87
|
+
usage: GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.COPY_SRC
|
|
88
|
+
});
|
|
89
|
+
const bindGroup = makeBindGroup(device, pipeline, inputTex.createView(), outputTex.createView());
|
|
90
|
+
for (let face = 0; face < 6; face++) {
|
|
91
|
+
const idx = mip * 6 + face;
|
|
92
|
+
if (idx >= images.length) {
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
device.queue.copyExternalImageToTexture({ source: images[idx], flipY: false }, { texture: inputTex, premultipliedAlpha: false }, { width: mipSize, height: mipSize });
|
|
96
|
+
const encoder = device.createCommandEncoder();
|
|
97
|
+
encodeDispatch(encoder, pipeline, bindGroup, mipSize, mipSize);
|
|
98
|
+
encoder.copyTextureToTexture({ texture: outputTex }, { texture, origin: { x: 0, y: 0, z: face }, mipLevel: mip }, { width: mipSize, height: mipSize });
|
|
99
|
+
device.queue.submit([encoder.finish()]);
|
|
100
|
+
}
|
|
101
|
+
inputTex.destroy();
|
|
102
|
+
outputTex.destroy();
|
|
103
|
+
}
|
|
104
|
+
return texture;
|
|
105
|
+
}
|
|
106
|
+
export {
|
|
107
|
+
decodeBrdfPng,
|
|
108
|
+
uploadCubemapRGBD
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=rgbd-decode-DCvzUYeI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rgbd-decode-DCvzUYeI.js","sources":["../src/loader-env/rgbd-decode.ts"],"sourcesContent":["/** RGBD decoder — decodes Babylon BRDF PNG and .env cubemap faces into rgba16float. */\n\nimport type { EngineContext } from \"../engine/engine.js\";\n\nconst WGSL = `override f:bool=false;@group(0)@binding(0)var t:texture_2d<f32>;@group(0)@binding(1)var o:texture_storage_2d<rgba16float,write>;@compute @workgroup_size(8,8)fn main(@builtin(global_invocation_id)g:vec3u){let d=textureDimensions(t);if(any(g.xy>=d)){return;}let c=textureLoad(t,vec2u(g.x,select(g.y,d.y-1u-g.y,f)),0);textureStore(o,g.xy,vec4f(pow(c.rgb,vec3f(2.2))/max(c.a,1.0/255.0),1));}`;\n\nlet _device: GPUDevice | null = null;\nlet _module: GPUShaderModule | null = null;\nlet _noFlip: GPUComputePipeline | null = null;\nlet _flip: GPUComputePipeline | null = null;\n\nfunction getPipeline(device: GPUDevice, flipY: boolean): GPUComputePipeline {\n if (device !== _device) {\n _device = device;\n _module = device.createShaderModule({ code: WGSL });\n _noFlip = null;\n _flip = null;\n }\n const slot = flipY ? _flip : _noFlip;\n if (slot) {\n return slot;\n }\n const p = device.createComputePipeline({\n layout: \"auto\",\n compute: { module: _module!, entryPoint: \"main\", constants: { f: flipY ? 1 : 0 } },\n });\n if (flipY) {\n _flip = p;\n } else {\n _noFlip = p;\n }\n return p;\n}\n\nfunction makeBindGroup(device: GPUDevice, pipeline: GPUComputePipeline, inView: GPUTextureView, outView: GPUTextureView): GPUBindGroup {\n return device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: inView },\n { binding: 1, resource: outView },\n ],\n });\n}\n\nfunction encodeDispatch(encoder: GPUCommandEncoder, pipeline: GPUComputePipeline, bg: GPUBindGroup, w: number, h: number): void {\n const pass = encoder.beginComputePass();\n pass.setPipeline(pipeline);\n pass.setBindGroup(0, bg);\n pass.dispatchWorkgroups(Math.ceil(w / 8), Math.ceil(h / 8));\n pass.end();\n}\n\n/** Decode a single RGBD PNG (e.g. BRDF LUT) `->` rgba16float 2D texture. No Y-flip. */\nexport function decodeBrdfPng(engine: EngineContext, image: ImageBitmap): GPUTexture {\n const device = engine._device;\n const pipeline = getPipeline(device, false);\n const w = image.width;\n const h = image.height;\n const inputTex = device.createTexture({\n size: { width: w, height: h },\n format: \"rgba8unorm\",\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\n });\n device.queue.copyExternalImageToTexture({ source: image, flipY: false }, { texture: inputTex, premultipliedAlpha: false }, { width: w, height: h });\n const texture = device.createTexture({\n size: { width: w, height: h },\n format: \"rgba16float\",\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.STORAGE_BINDING,\n });\n const bg = makeBindGroup(device, pipeline, inputTex.createView(), texture.createView());\n const enc = device.createCommandEncoder();\n encodeDispatch(enc, pipeline, bg, w, h);\n device.queue.submit([enc.finish()]);\n inputTex.destroy();\n return texture;\n}\n\n/** Decode and upload a RGBD cubemap (6 faces × N mips) → rgba16float cube texture.\n * Y-flipped on read (BJS uploads cubemap faces with invertY=true). */\nexport function uploadCubemapRGBD(engine: EngineContext, images: ImageBitmap[], width: number, mipCount: number): GPUTexture {\n const device = engine._device;\n const pipeline = getPipeline(device, true);\n\n const texture = device.createTexture({\n size: { width, height: width, depthOrArrayLayers: 6 },\n format: \"rgba16float\",\n mipLevelCount: mipCount,\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT,\n dimension: \"2d\",\n });\n\n for (let mip = 0; mip < mipCount; mip++) {\n const mipSize = Math.max(1, width >> mip);\n\n const inputTex = device.createTexture({\n size: { width: mipSize, height: mipSize },\n format: \"rgba8unorm\",\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\n });\n\n const outputTex = device.createTexture({\n size: { width: mipSize, height: mipSize },\n format: \"rgba16float\",\n usage: GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.COPY_SRC,\n });\n\n const bindGroup = makeBindGroup(device, pipeline, inputTex.createView(), outputTex.createView());\n\n for (let face = 0; face < 6; face++) {\n const idx = mip * 6 + face;\n if (idx >= images.length) {\n break;\n }\n\n device.queue.copyExternalImageToTexture({ source: images[idx]!, flipY: false }, { texture: inputTex, premultipliedAlpha: false }, { width: mipSize, height: mipSize });\n\n const encoder = device.createCommandEncoder();\n encodeDispatch(encoder, pipeline, bindGroup, mipSize, mipSize);\n encoder.copyTextureToTexture({ texture: outputTex }, { texture, origin: { x: 0, y: 0, z: face }, mipLevel: mip }, { width: mipSize, height: mipSize });\n\n // One submit per face ensures sequential hazards on the reused input/output.\n device.queue.submit([encoder.finish()]);\n }\n\n inputTex.destroy();\n outputTex.destroy();\n }\n\n return texture;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const emitter = {
|
|
2
|
+
className: "Rotate2dBlock",
|
|
3
|
+
emit(block, _outputName, stage, state, ctx) {
|
|
4
|
+
const input = ctx.cast(ctx.resolve(block, "input", stage, state), "vec2f");
|
|
5
|
+
const angle = ctx.cast(ctx.resolve(block, "angle", stage, state), "f32");
|
|
6
|
+
return {
|
|
7
|
+
expr: `vec2<f32>(cos(${angle.expr}) * (${input.expr}).x - sin(${angle.expr}) * (${input.expr}).y, sin(${angle.expr}) * (${input.expr}).x + cos(${angle.expr}) * (${input.expr}).y)`,
|
|
8
|
+
type: "vec2f"
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
export {
|
|
13
|
+
emitter
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=rotate2d-block-nEe1N2MJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rotate2d-block-nEe1N2MJ.js","sources":["../src/material/node/blocks/rotate2d-block.ts"],"sourcesContent":["/** Rotate2dBlock — rotates a vec2 by angle radians around the origin. */\n\nimport type { BlockEmitter } from \"../node-types.js\";\n\nexport const emitter: BlockEmitter = {\n className: \"Rotate2dBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const input = ctx.cast(ctx.resolve(block, \"input\", stage, state), \"vec2f\");\n const angle = ctx.cast(ctx.resolve(block, \"angle\", stage, state), \"f32\");\n return {\n expr: `vec2<f32>(cos(${angle.expr}) * (${input.expr}).x - sin(${angle.expr}) * (${input.expr}).y, sin(${angle.expr}) * (${input.expr}).x + cos(${angle.expr}) * (${input.expr}).y)`,\n type: \"vec2f\",\n };\n },\n};\n"],"names":[],"mappings":"AAIO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,QAAQ,IAAI,KAAK,IAAI,QAAQ,OAAO,SAAS,OAAO,KAAK,GAAG,OAAO;AACzE,UAAM,QAAQ,IAAI,KAAK,IAAI,QAAQ,OAAO,SAAS,OAAO,KAAK,GAAG,KAAK;AACvE,WAAO;AAAA,MACH,MAAM,iBAAiB,MAAM,IAAI,QAAQ,MAAM,IAAI,aAAa,MAAM,IAAI,QAAQ,MAAM,IAAI,YAAY,MAAM,IAAI,QAAQ,MAAM,IAAI,aAAa,MAAM,IAAI,QAAQ,MAAM,IAAI;AAAA,MAC7K,MAAM;AAAA,IAAA;AAAA,EAEd;AACJ;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const emitter = {
|
|
2
|
+
className: "ScaleBlock",
|
|
3
|
+
emit(block, _outputName, stage, state, ctx) {
|
|
4
|
+
const input = ctx.resolve(block, "input", stage, state);
|
|
5
|
+
const factor = ctx.resolve(block, "factor", stage, state);
|
|
6
|
+
const fc = ctx.cast(factor, "f32").expr;
|
|
7
|
+
return { expr: `(${input.expr} * ${fc})`, type: input.type };
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
export {
|
|
11
|
+
emitter
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=scale-block-C5Z8159G.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scale-block-C5Z8159G.js","sources":["../src/material/node/blocks/scale-block.ts"],"sourcesContent":["import type { BlockEmitter } from \"../node-types.js\";\n\nexport const emitter: BlockEmitter = {\n className: \"ScaleBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const input = ctx.resolve(block, \"input\", stage, state);\n const factor = ctx.resolve(block, \"factor\", stage, state);\n // factor is always scalar in BJS\n const fc = ctx.cast(factor, \"f32\").expr;\n return { expr: `(${input.expr} * ${fc})`, type: input.type };\n },\n};\n"],"names":[],"mappings":"AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,QAAQ,IAAI,QAAQ,OAAO,SAAS,OAAO,KAAK;AACtD,UAAM,SAAS,IAAI,QAAQ,OAAO,UAAU,OAAO,KAAK;AAExD,UAAM,KAAK,IAAI,KAAK,QAAQ,KAAK,EAAE;AACnC,WAAO,EAAE,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,KAAK,MAAM,MAAM,KAAA;AAAA,EAC1D;AACJ;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
function processMaterialSwaps(scene) {
|
|
2
|
+
const q = scene._materialSwapQueue;
|
|
3
|
+
for (const mesh of q) {
|
|
4
|
+
mesh._materialDirty = false;
|
|
5
|
+
const old = scene._meshDisposables.get(mesh);
|
|
6
|
+
if (old) {
|
|
7
|
+
for (const fn of old) {
|
|
8
|
+
fn();
|
|
9
|
+
}
|
|
10
|
+
scene._meshDisposables.delete(mesh);
|
|
11
|
+
}
|
|
12
|
+
const mat = mesh.material;
|
|
13
|
+
const builder = mat == null ? void 0 : mat._buildGroup;
|
|
14
|
+
if (!builder) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
const rebuild = builder._rebuildSingle;
|
|
18
|
+
if (!rebuild) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
const renderable = rebuild(scene, mesh);
|
|
22
|
+
let i = scene._renderables.length;
|
|
23
|
+
while (i > 0 && scene._renderables[i - 1].order > renderable.order) {
|
|
24
|
+
i--;
|
|
25
|
+
}
|
|
26
|
+
scene._renderables.splice(i, 0, renderable);
|
|
27
|
+
}
|
|
28
|
+
q.length = 0;
|
|
29
|
+
scene._renderableVersion++;
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
processMaterialSwaps
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=scene-material-swap-C2ykv55W.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-material-swap-C2ykv55W.js","sources":["../src/scene/scene-material-swap.ts"],"sourcesContent":["import type { SceneContext } from \"./scene-core.js\";\nimport type { Mesh } from \"../mesh/mesh.js\";\n\n/** @internal Drain _materialSwapQueue: dispose old resources and rebuild renderables. */\nexport function processMaterialSwaps(scene: SceneContext): void {\n const q = scene._materialSwapQueue;\n for (const mesh of q) {\n (mesh as Mesh)._materialDirty = false;\n const old = scene._meshDisposables.get(mesh);\n if (old) {\n for (const fn of old) {\n fn();\n }\n scene._meshDisposables.delete(mesh);\n }\n\n const mat = mesh.material;\n const builder = mat?._buildGroup;\n if (!builder) {\n continue;\n }\n const rebuild = builder._rebuildSingle;\n if (!rebuild) {\n continue;\n }\n const renderable = rebuild(scene, mesh);\n // Insert by `order` so the renderable list stays sorted (frame-graph\n // tasks bucket opaque/direct/transparent at bind time).\n let i = scene._renderables.length;\n while (i > 0 && scene._renderables[i - 1]!.order > renderable.order) {\n i--;\n }\n scene._renderables.splice(i, 0, renderable);\n }\n q.length = 0;\n scene._renderableVersion++;\n}\n"],"names":[],"mappings":"AAIO,SAAS,qBAAqB,OAA2B;AAC5D,QAAM,IAAI,MAAM;AAChB,aAAW,QAAQ,GAAG;AACjB,SAAc,iBAAiB;AAChC,UAAM,MAAM,MAAM,iBAAiB,IAAI,IAAI;AAC3C,QAAI,KAAK;AACL,iBAAW,MAAM,KAAK;AAClB,WAAA;AAAA,MACJ;AACA,YAAM,iBAAiB,OAAO,IAAI;AAAA,IACtC;AAEA,UAAM,MAAM,KAAK;AACjB,UAAM,UAAU,2BAAK;AACrB,QAAI,CAAC,SAAS;AACV;AAAA,IACJ;AACA,UAAM,UAAU,QAAQ;AACxB,QAAI,CAAC,SAAS;AACV;AAAA,IACJ;AACA,UAAM,aAAa,QAAQ,OAAO,IAAI;AAGtC,QAAI,IAAI,MAAM,aAAa;AAC3B,WAAO,IAAI,KAAK,MAAM,aAAa,IAAI,CAAC,EAAG,QAAQ,WAAW,OAAO;AACjE;AAAA,IACJ;AACA,UAAM,aAAa,OAAO,GAAG,GAAG,UAAU;AAAA,EAC9C;AACA,IAAE,SAAS;AACX,QAAM;AACV;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const OUTPUTS = {
|
|
2
|
+
xy: { swizzle: "", type: "vec2f" },
|
|
3
|
+
x: { swizzle: ".x", type: "f32" },
|
|
4
|
+
y: { swizzle: ".y", type: "f32" }
|
|
5
|
+
};
|
|
6
|
+
const emitter = {
|
|
7
|
+
className: "ScreenSizeBlock",
|
|
8
|
+
stage: "fragment",
|
|
9
|
+
emit(_block, outputName, _stage, state) {
|
|
10
|
+
state.usesScreenSize = true;
|
|
11
|
+
const out = OUTPUTS[outputName];
|
|
12
|
+
if (!out) {
|
|
13
|
+
throw new Error(`NodeMaterial: ScreenSizeBlock has no output "${outputName}"`);
|
|
14
|
+
}
|
|
15
|
+
return { expr: `_NME_SCREEN_SIZE_${out.swizzle}`, type: out.type };
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
emitter
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=screen-size-block-BVNnOvE8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screen-size-block-BVNnOvE8.js","sources":["../src/material/node/blocks/screen-size-block.ts"],"sourcesContent":["/** ScreenSizeBlock — exposes current render size in physical canvas pixels. */\n\nimport type { BlockEmitter, NodeValueType } from \"../node-types.js\";\n\nconst OUTPUTS: Record<string, { readonly swizzle: string; readonly type: NodeValueType }> = {\n xy: { swizzle: \"\", type: \"vec2f\" },\n x: { swizzle: \".x\", type: \"f32\" },\n y: { swizzle: \".y\", type: \"f32\" },\n};\n\nexport const emitter: BlockEmitter = {\n className: \"ScreenSizeBlock\",\n stage: \"fragment\",\n emit(_block, outputName, _stage, state) {\n state.usesScreenSize = true;\n const out = OUTPUTS[outputName];\n if (!out) {\n throw new Error(`NodeMaterial: ScreenSizeBlock has no output \"${outputName}\"`);\n }\n return { expr: `_NME_SCREEN_SIZE_${out.swizzle}`, type: out.type };\n },\n};\n"],"names":[],"mappings":"AAIA,MAAM,UAAsF;AAAA,EACxF,IAAI,EAAE,SAAS,IAAI,MAAM,QAAA;AAAA,EACzB,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAAA,EAC1B,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAC9B;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,OAAO;AAAA,EACP,KAAK,QAAQ,YAAY,QAAQ,OAAO;AACpC,UAAM,iBAAiB;AACvB,UAAM,MAAM,QAAQ,UAAU;AAC9B,QAAI,CAAC,KAAK;AACN,YAAM,IAAI,MAAM,gDAAgD,UAAU,GAAG;AAAA,IACjF;AACA,WAAO,EAAE,MAAM,oBAAoB,IAAI,OAAO,IAAI,MAAM,IAAI,KAAA;AAAA,EAChE;AACJ;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const OUTPUTS = {
|
|
2
|
+
output: { swizzle: ".xy", type: "vec2f" },
|
|
3
|
+
x: { swizzle: ".x", type: "f32" },
|
|
4
|
+
y: { swizzle: ".y", type: "f32" }
|
|
5
|
+
};
|
|
6
|
+
const emitter = {
|
|
7
|
+
className: "ScreenSpaceBlock",
|
|
8
|
+
stage: "fragment",
|
|
9
|
+
emit(block, outputName, stage, state, ctx) {
|
|
10
|
+
const vectorRaw = ctx.resolve(block, "vector", stage, state);
|
|
11
|
+
const vector = vectorRaw.type === "vec4f" ? vectorRaw : ctx.cast(vectorRaw, "vec3f");
|
|
12
|
+
const wvp = ctx.cast(ctx.resolve(block, "worldViewProjection", stage, state), "mat4f");
|
|
13
|
+
const clip = ctx.temp(state, "screenClip");
|
|
14
|
+
const uv = ctx.temp(state, "screenUv");
|
|
15
|
+
const vectorExpr = vector.type === "vec4f" ? vector.expr : `vec4<f32>(${vector.expr}, 1.0)`;
|
|
16
|
+
state.fragment.body.push(`let ${clip} = ${wvp.expr} * ${vectorExpr};`);
|
|
17
|
+
state.fragment.body.push(`let ${uv} = (${clip}.xy / ${clip}.w) * 0.5 + vec2<f32>(0.5, 0.5);`);
|
|
18
|
+
const out = OUTPUTS[outputName];
|
|
19
|
+
if (!out) {
|
|
20
|
+
throw new Error(`NodeMaterial: ScreenSpaceBlock has no output "${outputName}"`);
|
|
21
|
+
}
|
|
22
|
+
return { expr: `${uv}${out.swizzle}`, type: out.type };
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
export {
|
|
26
|
+
emitter
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=screen-space-block-CwaxdfSe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screen-space-block-CwaxdfSe.js","sources":["../src/material/node/blocks/screen-space-block.ts"],"sourcesContent":["/** ScreenSpaceBlock — transforms a vec3/vec4 by WVP and maps clip XY to 0..1 screen space. */\n\nimport type { BlockEmitter, NodeValueType } from \"../node-types.js\";\n\nconst OUTPUTS: Record<string, { readonly swizzle: string; readonly type: NodeValueType }> = {\n output: { swizzle: \".xy\", type: \"vec2f\" },\n x: { swizzle: \".x\", type: \"f32\" },\n y: { swizzle: \".y\", type: \"f32\" },\n};\n\nexport const emitter: BlockEmitter = {\n className: \"ScreenSpaceBlock\",\n stage: \"fragment\",\n emit(block, outputName, stage, state, ctx) {\n const vectorRaw = ctx.resolve(block, \"vector\", stage, state);\n const vector = vectorRaw.type === \"vec4f\" ? vectorRaw : ctx.cast(vectorRaw, \"vec3f\");\n const wvp = ctx.cast(ctx.resolve(block, \"worldViewProjection\", stage, state), \"mat4f\");\n const clip = ctx.temp(state, \"screenClip\");\n const uv = ctx.temp(state, \"screenUv\");\n const vectorExpr = vector.type === \"vec4f\" ? vector.expr : `vec4<f32>(${vector.expr}, 1.0)`;\n state.fragment.body.push(`let ${clip} = ${wvp.expr} * ${vectorExpr};`);\n state.fragment.body.push(`let ${uv} = (${clip}.xy / ${clip}.w) * 0.5 + vec2<f32>(0.5, 0.5);`);\n const out = OUTPUTS[outputName];\n if (!out) {\n throw new Error(`NodeMaterial: ScreenSpaceBlock has no output \"${outputName}\"`);\n }\n return { expr: `${uv}${out.swizzle}`, type: out.type };\n },\n};\n"],"names":[],"mappings":"AAIA,MAAM,UAAsF;AAAA,EACxF,QAAQ,EAAE,SAAS,OAAO,MAAM,QAAA;AAAA,EAChC,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAAA,EAC1B,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAC9B;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,OAAO;AAAA,EACP,KAAK,OAAO,YAAY,OAAO,OAAO,KAAK;AACvC,UAAM,YAAY,IAAI,QAAQ,OAAO,UAAU,OAAO,KAAK;AAC3D,UAAM,SAAS,UAAU,SAAS,UAAU,YAAY,IAAI,KAAK,WAAW,OAAO;AACnF,UAAM,MAAM,IAAI,KAAK,IAAI,QAAQ,OAAO,uBAAuB,OAAO,KAAK,GAAG,OAAO;AACrF,UAAM,OAAO,IAAI,KAAK,OAAO,YAAY;AACzC,UAAM,KAAK,IAAI,KAAK,OAAO,UAAU;AACrC,UAAM,aAAa,OAAO,SAAS,UAAU,OAAO,OAAO,aAAa,OAAO,IAAI;AACnF,UAAM,SAAS,KAAK,KAAK,OAAO,IAAI,MAAM,IAAI,IAAI,MAAM,UAAU,GAAG;AACrE,UAAM,SAAS,KAAK,KAAK,OAAO,EAAE,OAAO,IAAI,SAAS,IAAI,kCAAkC;AAC5F,UAAM,MAAM,QAAQ,UAAU;AAC9B,QAAI,CAAC,KAAK;AACN,YAAM,IAAI,MAAM,iDAAiD,UAAU,GAAG;AAAA,IAClF;AACA,WAAO,EAAE,MAAM,GAAG,EAAE,GAAG,IAAI,OAAO,IAAI,MAAM,IAAI,KAAA;AAAA,EACpD;AACJ;"}
|