@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":"cloud-block-BeVrangc.js","sources":["../src/material/node/blocks/cloud-block.ts"],"sourcesContent":["import type { BlockEmitter, NodeBlock, NodeBuildState, NodeEmitContext, NodeExpr, Stage } from \"../node-types.js\";\n\nfunction optional(block: NodeBlock, inputName: string, stage: Stage, state: NodeBuildState, ctx: NodeEmitContext): NodeExpr | null {\n const input = block.inputs.get(inputName);\n return input?.source ? ctx.resolve(block, inputName, stage, state) : null;\n}\n\nfunction scalarOffset(block: NodeBlock, inputName: string, stage: Stage, state: NodeBuildState, ctx: NodeEmitContext): string | null {\n const value = optional(block, inputName, stage, state, ctx);\n return value ? ctx.cast(value, \"f32\").expr : null;\n}\n\nexport const emitter: BlockEmitter = {\n className: \"CloudBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const seed = ctx.resolve(block, \"seed\", stage, state);\n if (seed.type !== \"vec2f\" && seed.type !== \"vec3f\") {\n throw new Error(`NodeMaterial: CloudBlock requires vec2 or vec3 seed; got ${seed.type}`);\n }\n\n state[stage].helpers.set(\n \"nme_cloudNoise\",\n `fn nme_cloudRandom(p: f32) -> f32 {\nvar temp = fract(p * 0.011);\ntemp *= temp + 7.5;\ntemp *= temp + temp;\nreturn fract(temp);\n}\nfn nme_cloudNoise2(x: vec2<f32>, chaos: vec2<f32>) -> f32 {\nlet stepv = chaos * vec2<f32>(75.0, 120.0) + vec2<f32>(75.0, 120.0);\nlet i = floor(x);\nlet f = fract(x);\nlet n = dot(i, stepv);\nlet u = f * f * (vec2<f32>(3.0) - 2.0 * f);\nreturn mix(mix(nme_cloudRandom(n + dot(stepv, vec2<f32>(0.0, 0.0))), nme_cloudRandom(n + dot(stepv, vec2<f32>(1.0, 0.0))), u.x), mix(nme_cloudRandom(n + dot(stepv, vec2<f32>(0.0, 1.0))), nme_cloudRandom(n + dot(stepv, vec2<f32>(1.0, 1.0))), u.x), u.y);\n}\nfn nme_cloudNoise3(x: vec3<f32>, chaos: vec3<f32>) -> f32 {\nlet stepv = chaos * vec3<f32>(60.0, 120.0, 75.0) + vec3<f32>(60.0, 120.0, 75.0);\nlet i = floor(x);\nlet f = fract(x);\nlet n = dot(i, stepv);\nlet u = f * f * (vec3<f32>(3.0) - 2.0 * f);\nreturn mix(mix(mix(nme_cloudRandom(n + dot(stepv, vec3<f32>(0.0, 0.0, 0.0))), nme_cloudRandom(n + dot(stepv, vec3<f32>(1.0, 0.0, 0.0))), u.x), mix(nme_cloudRandom(n + dot(stepv, vec3<f32>(0.0, 1.0, 0.0))), nme_cloudRandom(n + dot(stepv, vec3<f32>(1.0, 1.0, 0.0))), u.x), u.y), mix(mix(nme_cloudRandom(n + dot(stepv, vec3<f32>(0.0, 0.0, 1.0))), nme_cloudRandom(n + dot(stepv, vec3<f32>(1.0, 0.0, 1.0))), u.x), mix(nme_cloudRandom(n + dot(stepv, vec3<f32>(0.0, 1.0, 1.0))), nme_cloudRandom(n + dot(stepv, vec3<f32>(1.0, 1.0, 1.0))), u.x), u.y), u.z);\n}`\n );\n\n const octaves = Math.max(0, Math.trunc(typeof block.serialized.octaves === \"number\" ? block.serialized.octaves : 6));\n const helperKey = `nme_cloudFbm_${octaves}`;\n state[stage].helpers.set(\n helperKey,\n `fn nme_cloudFbm2_${octaves}(st: vec2<f32>, chaos: vec2<f32>) -> f32 {\nvar value = 0.0;\nvar amplitude = 0.5;\nvar tempST = st;\nfor (var i = 0; i < ${octaves}; i = i + 1) {\nvalue += amplitude * nme_cloudNoise2(tempST, chaos);\ntempST *= 2.0;\namplitude *= 0.5;\n}\nreturn value;\n}\nfn nme_cloudFbm3_${octaves}(x: vec3<f32>, chaos: vec3<f32>) -> f32 {\nvar value = 0.0;\nvar amplitude = 0.5;\nvar tempX = x;\nfor (var i = 0; i < ${octaves}; i = i + 1) {\nvalue += amplitude * nme_cloudNoise3(tempX, chaos);\ntempX *= 2.0;\namplitude *= 0.5;\n}\nreturn value;\n}`\n );\n\n const st = ctx.temp(state, \"cloudSeed\");\n state[stage].body.push(`var ${st}: ${seed.type === \"vec2f\" ? \"vec2<f32>\" : \"vec3<f32>\"} = ${seed.expr};`);\n const offsetX = scalarOffset(block, \"offsetX\", stage, state, ctx);\n const offsetY = scalarOffset(block, \"offsetY\", stage, state, ctx);\n const offsetZ = scalarOffset(block, \"offsetZ\", stage, state, ctx);\n if (offsetX) {\n state[stage].body.push(`${st}.x += 0.1 * ${offsetX};`);\n }\n if (offsetY) {\n state[stage].body.push(`${st}.y += 0.1 * ${offsetY};`);\n }\n if (offsetZ && seed.type === \"vec3f\") {\n state[stage].body.push(`${st}.z += 0.1 * ${offsetZ};`);\n }\n\n const chaos = optional(block, \"chaos\", stage, state, ctx);\n const chaosExpr = chaos ? ctx.cast(chaos, seed.type).expr : seed.type === \"vec2f\" ? \"vec2<f32>(0.0, 0.0)\" : \"vec3<f32>(0.0, 0.0, 0.0)\";\n return { expr: seed.type === \"vec2f\" ? `nme_cloudFbm2_${octaves}(${st}, ${chaosExpr})` : `nme_cloudFbm3_${octaves}(${st}, ${chaosExpr})`, type: \"f32\" };\n },\n};\n"],"names":[],"mappings":"AAEA,SAAS,SAAS,OAAkB,WAAmB,OAAc,OAAuB,KAAuC;AAC/H,QAAM,QAAQ,MAAM,OAAO,IAAI,SAAS;AACxC,UAAO,+BAAO,UAAS,IAAI,QAAQ,OAAO,WAAW,OAAO,KAAK,IAAI;AACzE;AAEA,SAAS,aAAa,OAAkB,WAAmB,OAAc,OAAuB,KAAqC;AACjI,QAAM,QAAQ,SAAS,OAAO,WAAW,OAAO,OAAO,GAAG;AAC1D,SAAO,QAAQ,IAAI,KAAK,OAAO,KAAK,EAAE,OAAO;AACjD;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,OAAO,IAAI,QAAQ,OAAO,QAAQ,OAAO,KAAK;AACpD,QAAI,KAAK,SAAS,WAAW,KAAK,SAAS,SAAS;AAChD,YAAM,IAAI,MAAM,4DAA4D,KAAK,IAAI,EAAE;AAAA,IAC3F;AAEA,UAAM,KAAK,EAAE,QAAQ;AAAA,MACjB;AAAA,MACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA;AAwBJ,UAAM,UAAU,KAAK,IAAI,GAAG,KAAK,MAAM,OAAO,MAAM,WAAW,YAAY,WAAW,MAAM,WAAW,UAAU,CAAC,CAAC;AACnH,UAAM,YAAY,gBAAgB,OAAO;AACzC,UAAM,KAAK,EAAE,QAAQ;AAAA,MACjB;AAAA,MACA,oBAAoB,OAAO;AAAA;AAAA;AAAA;AAAA,sBAIjB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAOV,OAAO;AAAA;AAAA;AAAA;AAAA,sBAIJ,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA;AASrB,UAAM,KAAK,IAAI,KAAK,OAAO,WAAW;AACtC,UAAM,KAAK,EAAE,KAAK,KAAK,OAAO,EAAE,KAAK,KAAK,SAAS,UAAU,cAAc,WAAW,MAAM,KAAK,IAAI,GAAG;AACxG,UAAM,UAAU,aAAa,OAAO,WAAW,OAAO,OAAO,GAAG;AAChE,UAAM,UAAU,aAAa,OAAO,WAAW,OAAO,OAAO,GAAG;AAChE,UAAM,UAAU,aAAa,OAAO,WAAW,OAAO,OAAO,GAAG;AAChE,QAAI,SAAS;AACT,YAAM,KAAK,EAAE,KAAK,KAAK,GAAG,EAAE,eAAe,OAAO,GAAG;AAAA,IACzD;AACA,QAAI,SAAS;AACT,YAAM,KAAK,EAAE,KAAK,KAAK,GAAG,EAAE,eAAe,OAAO,GAAG;AAAA,IACzD;AACA,QAAI,WAAW,KAAK,SAAS,SAAS;AAClC,YAAM,KAAK,EAAE,KAAK,KAAK,GAAG,EAAE,eAAe,OAAO,GAAG;AAAA,IACzD;AAEA,UAAM,QAAQ,SAAS,OAAO,SAAS,OAAO,OAAO,GAAG;AACxD,UAAM,YAAY,QAAQ,IAAI,KAAK,OAAO,KAAK,IAAI,EAAE,OAAO,KAAK,SAAS,UAAU,wBAAwB;AAC5G,WAAO,EAAE,MAAM,KAAK,SAAS,UAAU,iBAAiB,OAAO,IAAI,EAAE,KAAK,SAAS,MAAM,iBAAiB,OAAO,IAAI,EAAE,KAAK,SAAS,KAAK,MAAM,MAAA;AAAA,EACpJ;AACJ;"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
function tryResolve(block, inputName, stage, state, ctx) {
|
|
2
|
+
const input = block.inputs.get(inputName);
|
|
3
|
+
if (!(input == null ? void 0 : input.source)) {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
return ctx.resolve(block, inputName, stage, state);
|
|
7
|
+
}
|
|
8
|
+
function ensureRgb2HslHelper(state, stage) {
|
|
9
|
+
state[stage].helpers.set(
|
|
10
|
+
"nme_rgb2hsl",
|
|
11
|
+
`fn nme_rgb2hsl(color: vec3<f32>) -> vec3<f32> {
|
|
12
|
+
let r = color.x;
|
|
13
|
+
let g = color.y;
|
|
14
|
+
let b = color.z;
|
|
15
|
+
let maxc = max(r, max(g, b));
|
|
16
|
+
let minc = min(r, min(g, b));
|
|
17
|
+
var h = 0.0;
|
|
18
|
+
var s = 0.0;
|
|
19
|
+
let l = (maxc + minc) / 2.0;
|
|
20
|
+
if (maxc != minc) {
|
|
21
|
+
let d = maxc - minc;
|
|
22
|
+
if (l > 0.5) {
|
|
23
|
+
s = d / (2.0 - maxc - minc);
|
|
24
|
+
} else {
|
|
25
|
+
s = d / (maxc + minc);
|
|
26
|
+
}
|
|
27
|
+
if (maxc == r) {
|
|
28
|
+
var add = 0.0;
|
|
29
|
+
if (g < b) {
|
|
30
|
+
add = 6.0;
|
|
31
|
+
}
|
|
32
|
+
h = (g - b) / d + add;
|
|
33
|
+
} else if (maxc == g) {
|
|
34
|
+
h = (b - r) / d + 2.0;
|
|
35
|
+
} else if (maxc == b) {
|
|
36
|
+
h = (r - g) / d + 4.0;
|
|
37
|
+
}
|
|
38
|
+
h = h / 6.0;
|
|
39
|
+
}
|
|
40
|
+
return vec3<f32>(h, s, l);
|
|
41
|
+
}`
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
function ensureHsl2RgbHelper(state, stage) {
|
|
45
|
+
state[stage].helpers.set(
|
|
46
|
+
"nme_hue2rgb",
|
|
47
|
+
`fn nme_hue2rgb(p: f32, q: f32, tt: f32) -> f32 {
|
|
48
|
+
var t = tt;
|
|
49
|
+
if (t < 0.0) {
|
|
50
|
+
t = t + 1.0;
|
|
51
|
+
}
|
|
52
|
+
if (t > 1.0) {
|
|
53
|
+
t = t - 1.0;
|
|
54
|
+
}
|
|
55
|
+
if (t < 1.0 / 6.0) {
|
|
56
|
+
return p + (q - p) * 6.0 * t;
|
|
57
|
+
}
|
|
58
|
+
if (t < 1.0 / 2.0) {
|
|
59
|
+
return q;
|
|
60
|
+
}
|
|
61
|
+
if (t < 2.0 / 3.0) {
|
|
62
|
+
return p + (q - p) * (2.0 / 3.0 - t) * 6.0;
|
|
63
|
+
}
|
|
64
|
+
return p;
|
|
65
|
+
}`
|
|
66
|
+
);
|
|
67
|
+
state[stage].helpers.set(
|
|
68
|
+
"nme_hsl2rgb",
|
|
69
|
+
`fn nme_hsl2rgb(hsl: vec3<f32>) -> vec3<f32> {
|
|
70
|
+
let h = hsl.x;
|
|
71
|
+
let s = hsl.y;
|
|
72
|
+
let l = hsl.z;
|
|
73
|
+
var r: f32;
|
|
74
|
+
var g: f32;
|
|
75
|
+
var b: f32;
|
|
76
|
+
if (s == 0.0) {
|
|
77
|
+
r = l;
|
|
78
|
+
g = l;
|
|
79
|
+
b = l;
|
|
80
|
+
} else {
|
|
81
|
+
var q: f32;
|
|
82
|
+
if (l < 0.5) {
|
|
83
|
+
q = l * (1.0 + s);
|
|
84
|
+
} else {
|
|
85
|
+
q = l + s - l * s;
|
|
86
|
+
}
|
|
87
|
+
let p = 2.0 * l - q;
|
|
88
|
+
r = nme_hue2rgb(p, q, h + 1.0 / 3.0);
|
|
89
|
+
g = nme_hue2rgb(p, q, h);
|
|
90
|
+
b = nme_hue2rgb(p, q, h - 1.0 / 3.0);
|
|
91
|
+
}
|
|
92
|
+
return vec3<f32>(r, g, b);
|
|
93
|
+
}`
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
const emitter = {
|
|
97
|
+
className: "ColorConverterBlock",
|
|
98
|
+
emit(block, outputName, stage, state, ctx) {
|
|
99
|
+
const rgb = tryResolve(block, "rgb", stage, state, ctx);
|
|
100
|
+
if (rgb) {
|
|
101
|
+
const rgbExpr = ctx.cast(rgb, "vec3f").expr;
|
|
102
|
+
if (outputName === "hsl") {
|
|
103
|
+
ensureRgb2HslHelper(state, stage);
|
|
104
|
+
return { expr: `nme_rgb2hsl(${rgbExpr})`, type: "vec3f" };
|
|
105
|
+
}
|
|
106
|
+
return { expr: rgbExpr, type: "vec3f" };
|
|
107
|
+
}
|
|
108
|
+
const hsl = tryResolve(block, "hsl", stage, state, ctx);
|
|
109
|
+
if (hsl) {
|
|
110
|
+
const hslExpr = ctx.cast(hsl, "vec3f").expr;
|
|
111
|
+
if (outputName === "rgb") {
|
|
112
|
+
ensureHsl2RgbHelper(state, stage);
|
|
113
|
+
return { expr: `nme_hsl2rgb(${hslExpr})`, type: "vec3f" };
|
|
114
|
+
}
|
|
115
|
+
return { expr: hslExpr, type: "vec3f" };
|
|
116
|
+
}
|
|
117
|
+
return { expr: "vec3<f32>(0.0, 0.0, 0.0)", type: "vec3f" };
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
export {
|
|
121
|
+
emitter
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=color-converter-block-CvwKiW4k.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-converter-block-CvwKiW4k.js","sources":["../src/material/node/blocks/color-converter-block.ts"],"sourcesContent":["import type { BlockEmitter, NodeBlock, NodeBuildState, NodeEmitContext, NodeExpr, Stage } from \"../node-types.js\";\n\nfunction tryResolve(block: NodeBlock, inputName: string, stage: Stage, state: NodeBuildState, ctx: NodeEmitContext): NodeExpr | null {\n const input = block.inputs.get(inputName);\n if (!input?.source) {\n return null;\n }\n return ctx.resolve(block, inputName, stage, state);\n}\n\nfunction ensureRgb2HslHelper(state: NodeBuildState, stage: Stage): void {\n state[stage].helpers.set(\n \"nme_rgb2hsl\",\n `fn nme_rgb2hsl(color: vec3<f32>) -> vec3<f32> {\n let r = color.x;\n let g = color.y;\n let b = color.z;\n let maxc = max(r, max(g, b));\n let minc = min(r, min(g, b));\n var h = 0.0;\n var s = 0.0;\n let l = (maxc + minc) / 2.0;\n if (maxc != minc) {\n let d = maxc - minc;\n if (l > 0.5) {\n s = d / (2.0 - maxc - minc);\n } else {\n s = d / (maxc + minc);\n }\n if (maxc == r) {\n var add = 0.0;\n if (g < b) {\n add = 6.0;\n }\n h = (g - b) / d + add;\n } else if (maxc == g) {\n h = (b - r) / d + 2.0;\n } else if (maxc == b) {\n h = (r - g) / d + 4.0;\n }\n h = h / 6.0;\n }\n return vec3<f32>(h, s, l);\n}`\n );\n}\n\nfunction ensureHsl2RgbHelper(state: NodeBuildState, stage: Stage): void {\n state[stage].helpers.set(\n \"nme_hue2rgb\",\n `fn nme_hue2rgb(p: f32, q: f32, tt: f32) -> f32 {\n var t = tt;\n if (t < 0.0) {\n t = t + 1.0;\n }\n if (t > 1.0) {\n t = t - 1.0;\n }\n if (t < 1.0 / 6.0) {\n return p + (q - p) * 6.0 * t;\n }\n if (t < 1.0 / 2.0) {\n return q;\n }\n if (t < 2.0 / 3.0) {\n return p + (q - p) * (2.0 / 3.0 - t) * 6.0;\n }\n return p;\n}`\n );\n state[stage].helpers.set(\n \"nme_hsl2rgb\",\n `fn nme_hsl2rgb(hsl: vec3<f32>) -> vec3<f32> {\n let h = hsl.x;\n let s = hsl.y;\n let l = hsl.z;\n var r: f32;\n var g: f32;\n var b: f32;\n if (s == 0.0) {\n r = l;\n g = l;\n b = l;\n } else {\n var q: f32;\n if (l < 0.5) {\n q = l * (1.0 + s);\n } else {\n q = l + s - l * s;\n }\n let p = 2.0 * l - q;\n r = nme_hue2rgb(p, q, h + 1.0 / 3.0);\n g = nme_hue2rgb(p, q, h);\n b = nme_hue2rgb(p, q, h - 1.0 / 3.0);\n }\n return vec3<f32>(r, g, b);\n}`\n );\n}\n\nexport const emitter: BlockEmitter = {\n className: \"ColorConverterBlock\",\n emit(block, outputName, stage, state, ctx) {\n const rgb = tryResolve(block, \"rgb\", stage, state, ctx);\n if (rgb) {\n const rgbExpr = ctx.cast(rgb, \"vec3f\").expr;\n if (outputName === \"hsl\") {\n ensureRgb2HslHelper(state, stage);\n return { expr: `nme_rgb2hsl(${rgbExpr})`, type: \"vec3f\" };\n }\n return { expr: rgbExpr, type: \"vec3f\" };\n }\n\n const hsl = tryResolve(block, \"hsl\", stage, state, ctx);\n if (hsl) {\n const hslExpr = ctx.cast(hsl, \"vec3f\").expr;\n if (outputName === \"rgb\") {\n ensureHsl2RgbHelper(state, stage);\n return { expr: `nme_hsl2rgb(${hslExpr})`, type: \"vec3f\" };\n }\n return { expr: hslExpr, type: \"vec3f\" };\n }\n\n return { expr: \"vec3<f32>(0.0, 0.0, 0.0)\", type: \"vec3f\" };\n },\n};\n"],"names":[],"mappings":"AAEA,SAAS,WAAW,OAAkB,WAAmB,OAAc,OAAuB,KAAuC;AACjI,QAAM,QAAQ,MAAM,OAAO,IAAI,SAAS;AACxC,MAAI,EAAC,+BAAO,SAAQ;AAChB,WAAO;AAAA,EACX;AACA,SAAO,IAAI,QAAQ,OAAO,WAAW,OAAO,KAAK;AACrD;AAEA,SAAS,oBAAoB,OAAuB,OAAoB;AACpE,QAAM,KAAK,EAAE,QAAQ;AAAA,IACjB;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAgCR;AAEA,SAAS,oBAAoB,OAAuB,OAAoB;AACpE,QAAM,KAAK,EAAE,QAAQ;AAAA,IACjB;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAoBJ,QAAM,KAAK,EAAE,QAAQ;AAAA,IACjB;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AA0BR;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,YAAY,OAAO,OAAO,KAAK;AACvC,UAAM,MAAM,WAAW,OAAO,OAAO,OAAO,OAAO,GAAG;AACtD,QAAI,KAAK;AACL,YAAM,UAAU,IAAI,KAAK,KAAK,OAAO,EAAE;AACvC,UAAI,eAAe,OAAO;AACtB,4BAAoB,OAAO,KAAK;AAChC,eAAO,EAAE,MAAM,eAAe,OAAO,KAAK,MAAM,QAAA;AAAA,MACpD;AACA,aAAO,EAAE,MAAM,SAAS,MAAM,QAAA;AAAA,IAClC;AAEA,UAAM,MAAM,WAAW,OAAO,OAAO,OAAO,OAAO,GAAG;AACtD,QAAI,KAAK;AACL,YAAM,UAAU,IAAI,KAAK,KAAK,OAAO,EAAE;AACvC,UAAI,eAAe,OAAO;AACtB,4BAAoB,OAAO,KAAK;AAChC,eAAO,EAAE,MAAM,eAAe,OAAO,KAAK,MAAM,QAAA;AAAA,MACpD;AACA,aAAO,EAAE,MAAM,SAAS,MAAM,QAAA;AAAA,IAClC;AAEA,WAAO,EAAE,MAAM,4BAA4B,MAAM,QAAA;AAAA,EACrD;AACJ;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
function tryResolve(block, inputName, stage, state, ctx) {
|
|
2
|
+
const input = block.inputs.get(inputName);
|
|
3
|
+
if (!(input == null ? void 0 : input.source)) {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
return ctx.resolve(block, inputName, stage, state);
|
|
7
|
+
}
|
|
8
|
+
function swizzleChar(raw, fallback) {
|
|
9
|
+
const s = typeof raw === "string" && raw.length > 0 ? raw[0] : fallback;
|
|
10
|
+
if (s === "r" || s === "x") {
|
|
11
|
+
return "x";
|
|
12
|
+
}
|
|
13
|
+
if (s === "g" || s === "y") {
|
|
14
|
+
return "y";
|
|
15
|
+
}
|
|
16
|
+
if (s === "b" || s === "z") {
|
|
17
|
+
return "z";
|
|
18
|
+
}
|
|
19
|
+
if (s === "a" || s === "w") {
|
|
20
|
+
return "w";
|
|
21
|
+
}
|
|
22
|
+
return fallback;
|
|
23
|
+
}
|
|
24
|
+
function swizzle(block, len) {
|
|
25
|
+
const s = swizzleChar(block.serialized.rSwizzle, "x") + swizzleChar(block.serialized.gSwizzle, "y") + swizzleChar(block.serialized.bSwizzle, "z") + swizzleChar(block.serialized.aSwizzle, "w");
|
|
26
|
+
return `.${s.slice(0, len)}`;
|
|
27
|
+
}
|
|
28
|
+
const emitter = {
|
|
29
|
+
className: "ColorMergerBlock",
|
|
30
|
+
emit(block, outputName, stage, state, ctx) {
|
|
31
|
+
const rgb = tryResolve(block, "rgb", stage, state, ctx);
|
|
32
|
+
const a = tryResolve(block, "a", stage, state, ctx);
|
|
33
|
+
if (rgb) {
|
|
34
|
+
const rgbExpr = ctx.cast(rgb, "vec3f").expr;
|
|
35
|
+
const aExpr2 = a ? ctx.cast(a, "f32").expr : "0.0";
|
|
36
|
+
if (outputName === "rgba") {
|
|
37
|
+
return { expr: `(vec4<f32>(${rgbExpr}, ${aExpr2})${swizzle(block, 4)})`, type: "vec4f" };
|
|
38
|
+
}
|
|
39
|
+
return { expr: `((${rgbExpr})${swizzle(block, 3)})`, type: "vec3f" };
|
|
40
|
+
}
|
|
41
|
+
const r = tryResolve(block, "r", stage, state, ctx);
|
|
42
|
+
const g = tryResolve(block, "g", stage, state, ctx);
|
|
43
|
+
const b = tryResolve(block, "b", stage, state, ctx);
|
|
44
|
+
const rExpr = r ? ctx.cast(r, "f32").expr : "0.0";
|
|
45
|
+
const gExpr = g ? ctx.cast(g, "f32").expr : "0.0";
|
|
46
|
+
const bExpr = b ? ctx.cast(b, "f32").expr : "0.0";
|
|
47
|
+
const aExpr = a ? ctx.cast(a, "f32").expr : "0.0";
|
|
48
|
+
if (outputName === "rgba") {
|
|
49
|
+
return { expr: `(vec4<f32>(${rExpr}, ${gExpr}, ${bExpr}, ${aExpr})${swizzle(block, 4)})`, type: "vec4f" };
|
|
50
|
+
}
|
|
51
|
+
return { expr: `(vec3<f32>(${rExpr}, ${gExpr}, ${bExpr})${swizzle(block, 3)})`, type: "vec3f" };
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
export {
|
|
55
|
+
emitter
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=color-merger-CCu21ZII.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-merger-CCu21ZII.js","sources":["../src/material/node/blocks/color-merger.ts"],"sourcesContent":["/** ColorMergerBlock emitter.\n *\n * BJS inputs: `rgb `, `r`, `g`, `b`, `a`. Outputs: `rgba`, `rgb`.\n * The serialized swizzle fields (`rSwizzle`, `gSwizzle`, `bSwizzle`,\n * `aSwizzle`) remap components after construction.\n */\n\nimport type { BlockEmitter, NodeBlock, NodeBuildState, NodeEmitContext, NodeExpr, Stage } from \"../node-types.js\";\n\nfunction tryResolve(block: NodeBlock, inputName: string, stage: Stage, state: NodeBuildState, ctx: NodeEmitContext): NodeExpr | null {\n const input = block.inputs.get(inputName);\n if (!input?.source) {\n return null;\n }\n return ctx.resolve(block, inputName, stage, state);\n}\n\nfunction swizzleChar(raw: unknown, fallback: string): string {\n const s = typeof raw === \"string\" && raw.length > 0 ? raw[0]! : fallback;\n if (s === \"r\" || s === \"x\") {\n return \"x\";\n }\n if (s === \"g\" || s === \"y\") {\n return \"y\";\n }\n if (s === \"b\" || s === \"z\") {\n return \"z\";\n }\n if (s === \"a\" || s === \"w\") {\n return \"w\";\n }\n return fallback;\n}\n\nfunction swizzle(block: NodeBlock, len: 3 | 4): string {\n const s =\n swizzleChar(block.serialized.rSwizzle, \"x\") +\n swizzleChar(block.serialized.gSwizzle, \"y\") +\n swizzleChar(block.serialized.bSwizzle, \"z\") +\n swizzleChar(block.serialized.aSwizzle, \"w\");\n return `.${s.slice(0, len)}`;\n}\n\nexport const emitter: BlockEmitter = {\n className: \"ColorMergerBlock\",\n emit(block, outputName, stage, state, ctx) {\n const rgb = tryResolve(block, \"rgb\", stage, state, ctx);\n const a = tryResolve(block, \"a\", stage, state, ctx);\n\n if (rgb) {\n const rgbExpr = ctx.cast(rgb, \"vec3f\").expr;\n const aExpr = a ? ctx.cast(a, \"f32\").expr : \"0.0\";\n if (outputName === \"rgba\") {\n return { expr: `(vec4<f32>(${rgbExpr}, ${aExpr})${swizzle(block, 4)})`, type: \"vec4f\" };\n }\n return { expr: `((${rgbExpr})${swizzle(block, 3)})`, type: \"vec3f\" };\n }\n\n const r = tryResolve(block, \"r\", stage, state, ctx);\n const g = tryResolve(block, \"g\", stage, state, ctx);\n const b = tryResolve(block, \"b\", stage, state, ctx);\n const rExpr = r ? ctx.cast(r, \"f32\").expr : \"0.0\";\n const gExpr = g ? ctx.cast(g, \"f32\").expr : \"0.0\";\n const bExpr = b ? ctx.cast(b, \"f32\").expr : \"0.0\";\n const aExpr = a ? ctx.cast(a, \"f32\").expr : \"0.0\";\n if (outputName === \"rgba\") {\n return { expr: `(vec4<f32>(${rExpr}, ${gExpr}, ${bExpr}, ${aExpr})${swizzle(block, 4)})`, type: \"vec4f\" };\n }\n return { expr: `(vec3<f32>(${rExpr}, ${gExpr}, ${bExpr})${swizzle(block, 3)})`, type: \"vec3f\" };\n },\n};\n"],"names":["aExpr"],"mappings":"AASA,SAAS,WAAW,OAAkB,WAAmB,OAAc,OAAuB,KAAuC;AACjI,QAAM,QAAQ,MAAM,OAAO,IAAI,SAAS;AACxC,MAAI,EAAC,+BAAO,SAAQ;AAChB,WAAO;AAAA,EACX;AACA,SAAO,IAAI,QAAQ,OAAO,WAAW,OAAO,KAAK;AACrD;AAEA,SAAS,YAAY,KAAc,UAA0B;AACzD,QAAM,IAAI,OAAO,QAAQ,YAAY,IAAI,SAAS,IAAI,IAAI,CAAC,IAAK;AAChE,MAAI,MAAM,OAAO,MAAM,KAAK;AACxB,WAAO;AAAA,EACX;AACA,MAAI,MAAM,OAAO,MAAM,KAAK;AACxB,WAAO;AAAA,EACX;AACA,MAAI,MAAM,OAAO,MAAM,KAAK;AACxB,WAAO;AAAA,EACX;AACA,MAAI,MAAM,OAAO,MAAM,KAAK;AACxB,WAAO;AAAA,EACX;AACA,SAAO;AACX;AAEA,SAAS,QAAQ,OAAkB,KAAoB;AACnD,QAAM,IACF,YAAY,MAAM,WAAW,UAAU,GAAG,IAC1C,YAAY,MAAM,WAAW,UAAU,GAAG,IAC1C,YAAY,MAAM,WAAW,UAAU,GAAG,IAC1C,YAAY,MAAM,WAAW,UAAU,GAAG;AAC9C,SAAO,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;AAC9B;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,YAAY,OAAO,OAAO,KAAK;AACvC,UAAM,MAAM,WAAW,OAAO,OAAO,OAAO,OAAO,GAAG;AACtD,UAAM,IAAI,WAAW,OAAO,KAAK,OAAO,OAAO,GAAG;AAElD,QAAI,KAAK;AACL,YAAM,UAAU,IAAI,KAAK,KAAK,OAAO,EAAE;AACvC,YAAMA,SAAQ,IAAI,IAAI,KAAK,GAAG,KAAK,EAAE,OAAO;AAC5C,UAAI,eAAe,QAAQ;AACvB,eAAO,EAAE,MAAM,cAAc,OAAO,KAAKA,MAAK,IAAI,QAAQ,OAAO,CAAC,CAAC,KAAK,MAAM,QAAA;AAAA,MAClF;AACA,aAAO,EAAE,MAAM,KAAK,OAAO,IAAI,QAAQ,OAAO,CAAC,CAAC,KAAK,MAAM,QAAA;AAAA,IAC/D;AAEA,UAAM,IAAI,WAAW,OAAO,KAAK,OAAO,OAAO,GAAG;AAClD,UAAM,IAAI,WAAW,OAAO,KAAK,OAAO,OAAO,GAAG;AAClD,UAAM,IAAI,WAAW,OAAO,KAAK,OAAO,OAAO,GAAG;AAClD,UAAM,QAAQ,IAAI,IAAI,KAAK,GAAG,KAAK,EAAE,OAAO;AAC5C,UAAM,QAAQ,IAAI,IAAI,KAAK,GAAG,KAAK,EAAE,OAAO;AAC5C,UAAM,QAAQ,IAAI,IAAI,KAAK,GAAG,KAAK,EAAE,OAAO;AAC5C,UAAM,QAAQ,IAAI,IAAI,KAAK,GAAG,KAAK,EAAE,OAAO;AAC5C,QAAI,eAAe,QAAQ;AACvB,aAAO,EAAE,MAAM,cAAc,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,QAAQ,OAAO,CAAC,CAAC,KAAK,MAAM,QAAA;AAAA,IACpG;AACA,WAAO,EAAE,MAAM,cAAc,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,QAAQ,OAAO,CAAC,CAAC,KAAK,MAAM,QAAA;AAAA,EAC1F;AACJ;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const COMPONENT = {
|
|
2
|
+
rgba: { swizzle: "", type: "vec4f" },
|
|
3
|
+
rgb: { swizzle: ".xyz", type: "vec3f" },
|
|
4
|
+
r: { swizzle: ".x", type: "f32" },
|
|
5
|
+
g: { swizzle: ".y", type: "f32" },
|
|
6
|
+
b: { swizzle: ".z", type: "f32" },
|
|
7
|
+
a: { swizzle: ".w", type: "f32" }
|
|
8
|
+
};
|
|
9
|
+
const emitter = {
|
|
10
|
+
className: "ColorSplitterBlock",
|
|
11
|
+
emit(block, outputName, stage, state, ctx) {
|
|
12
|
+
var _a;
|
|
13
|
+
let source = null;
|
|
14
|
+
for (const key of ["rgba", "rgb"]) {
|
|
15
|
+
if ((_a = block.inputs.get(key)) == null ? void 0 : _a.source) {
|
|
16
|
+
source = ctx.resolve(block, key, stage, state);
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (!source) {
|
|
21
|
+
throw new Error(`NodeMaterial: ColorSplitterBlock (id=${block.id}) has no connected input`);
|
|
22
|
+
}
|
|
23
|
+
const c = COMPONENT[outputName];
|
|
24
|
+
if (!c) {
|
|
25
|
+
throw new Error(`NodeMaterial: ColorSplitterBlock has no output "${outputName}"`);
|
|
26
|
+
}
|
|
27
|
+
return { expr: `(${source.expr})${c.swizzle}`, type: c.type };
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
export {
|
|
31
|
+
emitter
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=color-splitter-CGn1G4ow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-splitter-CGn1G4ow.js","sources":["../src/material/node/blocks/color-splitter.ts"],"sourcesContent":["/** ColorSplitterBlock — identical to VectorSplitter but with r/g/b/a naming. */\n\nimport type { BlockEmitter, NodeExpr, NodeValueType } from \"../node-types.js\";\n\nconst COMPONENT: Record<string, { swizzle: string; type: NodeValueType }> = {\n rgba: { swizzle: \"\", type: \"vec4f\" },\n rgb: { swizzle: \".xyz\", type: \"vec3f\" },\n r: { swizzle: \".x\", type: \"f32\" },\n g: { swizzle: \".y\", type: \"f32\" },\n b: { swizzle: \".z\", type: \"f32\" },\n a: { swizzle: \".w\", type: \"f32\" },\n};\n\nexport const emitter: BlockEmitter = {\n className: \"ColorSplitterBlock\",\n emit(block, outputName, stage, state, ctx) {\n let source: NodeExpr | null = null;\n for (const key of [\"rgba\", \"rgb\"] as const) {\n if (block.inputs.get(key)?.source) {\n source = ctx.resolve(block, key, stage, state);\n break;\n }\n }\n if (!source) {\n throw new Error(`NodeMaterial: ColorSplitterBlock (id=${block.id}) has no connected input`);\n }\n const c = COMPONENT[outputName];\n if (!c) {\n throw new Error(`NodeMaterial: ColorSplitterBlock has no output \"${outputName}\"`);\n }\n return { expr: `(${source.expr})${c.swizzle}`, type: c.type };\n },\n};\n"],"names":[],"mappings":"AAIA,MAAM,YAAsE;AAAA,EACxE,MAAM,EAAE,SAAS,IAAI,MAAM,QAAA;AAAA,EAC3B,KAAK,EAAE,SAAS,QAAQ,MAAM,QAAA;AAAA,EAC9B,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAAA,EAC1B,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAAA,EAC1B,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAAA,EAC1B,GAAG,EAAE,SAAS,MAAM,MAAM,MAAA;AAC9B;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,YAAY,OAAO,OAAO,KAAK;AAX/C;AAYQ,QAAI,SAA0B;AAC9B,eAAW,OAAO,CAAC,QAAQ,KAAK,GAAY;AACxC,WAAI,WAAM,OAAO,IAAI,GAAG,MAApB,mBAAuB,QAAQ;AAC/B,iBAAS,IAAI,QAAQ,OAAO,KAAK,OAAO,KAAK;AAC7C;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,CAAC,QAAQ;AACT,YAAM,IAAI,MAAM,wCAAwC,MAAM,EAAE,0BAA0B;AAAA,IAC9F;AACA,UAAM,IAAI,UAAU,UAAU;AAC9B,QAAI,CAAC,GAAG;AACJ,YAAM,IAAI,MAAM,mDAAmD,UAAU,GAAG;AAAA,IACpF;AACA,WAAO,EAAE,MAAM,IAAI,OAAO,IAAI,IAAI,EAAE,OAAO,IAAI,MAAM,EAAE,KAAA;AAAA,EAC3D;AACJ;"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { w as widerType } from "./_math-factory-C-QqW-Wi.js";
|
|
2
|
+
function connectedOrDefault(block, inputName, fallback, type, stage, state, ctx) {
|
|
3
|
+
const input = block.inputs.get(inputName);
|
|
4
|
+
if (input == null ? void 0 : input.source) {
|
|
5
|
+
return ctx.resolve(block, inputName, stage, state);
|
|
6
|
+
}
|
|
7
|
+
return { expr: fallback, type };
|
|
8
|
+
}
|
|
9
|
+
function conditionExpr(condition, a, b) {
|
|
10
|
+
switch (condition) {
|
|
11
|
+
case 0:
|
|
12
|
+
return `${a} == ${b}`;
|
|
13
|
+
case 1:
|
|
14
|
+
return `${a} != ${b}`;
|
|
15
|
+
case 2:
|
|
16
|
+
return `${a} < ${b}`;
|
|
17
|
+
case 3:
|
|
18
|
+
return `${a} > ${b}`;
|
|
19
|
+
case 4:
|
|
20
|
+
return `${a} <= ${b}`;
|
|
21
|
+
case 5:
|
|
22
|
+
return `${a} >= ${b}`;
|
|
23
|
+
case 6:
|
|
24
|
+
return `(((${a} + ${b}) - 2.0 * floor((${a} + ${b}) / 2.0)) > 0.0)`;
|
|
25
|
+
case 7:
|
|
26
|
+
return `(min(${a} + ${b}, 1.0) > 0.0)`;
|
|
27
|
+
case 8:
|
|
28
|
+
return `(${a} * ${b} > 0.0)`;
|
|
29
|
+
default:
|
|
30
|
+
throw new Error(`NodeMaterial: unknown ConditionalBlock condition ${condition}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const emitter = {
|
|
34
|
+
className: "ConditionalBlock",
|
|
35
|
+
emit(block, _outputName, stage, state, ctx) {
|
|
36
|
+
const a = ctx.cast(ctx.resolve(block, "a", stage, state), "f32").expr;
|
|
37
|
+
const b = ctx.cast(ctx.resolve(block, "b", stage, state), "f32").expr;
|
|
38
|
+
const trueValue = connectedOrDefault(block, "true", "1.0", "f32", stage, state, ctx);
|
|
39
|
+
const falseValue = connectedOrDefault(block, "false", "0.0", "f32", stage, state, ctx);
|
|
40
|
+
const outputType = widerType(trueValue.type, falseValue.type);
|
|
41
|
+
const t = ctx.cast(trueValue, outputType).expr;
|
|
42
|
+
const f = ctx.cast(falseValue, outputType).expr;
|
|
43
|
+
const rawCondition = block.serialized.condition;
|
|
44
|
+
const condition = typeof rawCondition === "number" ? rawCondition : 2;
|
|
45
|
+
return { expr: `select(${f}, ${t}, ${conditionExpr(condition, a, b)})`, type: outputType };
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
export {
|
|
49
|
+
emitter
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=conditional-block-Cd2pbejI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional-block-Cd2pbejI.js","sources":["../src/material/node/blocks/conditional-block.ts"],"sourcesContent":["import type { BlockEmitter, NodeExpr, NodeValueType } from \"../node-types.js\";\nimport { widerType } from \"./_math-factory.js\";\n\nfunction connectedOrDefault(\n block: Parameters<BlockEmitter[\"emit\"]>[0],\n inputName: string,\n fallback: string,\n type: NodeValueType,\n stage: Parameters<BlockEmitter[\"emit\"]>[2],\n state: Parameters<BlockEmitter[\"emit\"]>[3],\n ctx: Parameters<BlockEmitter[\"emit\"]>[4]\n): NodeExpr {\n const input = block.inputs.get(inputName);\n if (input?.source) {\n return ctx.resolve(block, inputName, stage, state);\n }\n return { expr: fallback, type };\n}\n\nfunction conditionExpr(condition: number, a: string, b: string): string {\n switch (condition) {\n case 0:\n return `${a} == ${b}`;\n case 1:\n return `${a} != ${b}`;\n case 2:\n return `${a} < ${b}`;\n case 3:\n return `${a} > ${b}`;\n case 4:\n return `${a} <= ${b}`;\n case 5:\n return `${a} >= ${b}`;\n case 6:\n return `(((${a} + ${b}) - 2.0 * floor((${a} + ${b}) / 2.0)) > 0.0)`;\n case 7:\n return `(min(${a} + ${b}, 1.0) > 0.0)`;\n case 8:\n return `(${a} * ${b} > 0.0)`;\n default:\n throw new Error(`NodeMaterial: unknown ConditionalBlock condition ${condition}`);\n }\n}\n\nexport const emitter: BlockEmitter = {\n className: \"ConditionalBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const a = ctx.cast(ctx.resolve(block, \"a\", stage, state), \"f32\").expr;\n const b = ctx.cast(ctx.resolve(block, \"b\", stage, state), \"f32\").expr;\n const trueValue = connectedOrDefault(block, \"true\", \"1.0\", \"f32\", stage, state, ctx);\n const falseValue = connectedOrDefault(block, \"false\", \"0.0\", \"f32\", stage, state, ctx);\n const outputType = widerType(trueValue.type, falseValue.type);\n const t = ctx.cast(trueValue, outputType).expr;\n const f = ctx.cast(falseValue, outputType).expr;\n const rawCondition = block.serialized.condition;\n const condition = typeof rawCondition === \"number\" ? rawCondition : 2;\n return { expr: `select(${f}, ${t}, ${conditionExpr(condition, a, b)})`, type: outputType };\n },\n};\n"],"names":[],"mappings":";AAGA,SAAS,mBACL,OACA,WACA,UACA,MACA,OACA,OACA,KACQ;AACR,QAAM,QAAQ,MAAM,OAAO,IAAI,SAAS;AACxC,MAAI,+BAAO,QAAQ;AACf,WAAO,IAAI,QAAQ,OAAO,WAAW,OAAO,KAAK;AAAA,EACrD;AACA,SAAO,EAAE,MAAM,UAAU,KAAA;AAC7B;AAEA,SAAS,cAAc,WAAmB,GAAW,GAAmB;AACpE,UAAQ,WAAA;AAAA,IACJ,KAAK;AACD,aAAO,GAAG,CAAC,OAAO,CAAC;AAAA,IACvB,KAAK;AACD,aAAO,GAAG,CAAC,OAAO,CAAC;AAAA,IACvB,KAAK;AACD,aAAO,GAAG,CAAC,MAAM,CAAC;AAAA,IACtB,KAAK;AACD,aAAO,GAAG,CAAC,MAAM,CAAC;AAAA,IACtB,KAAK;AACD,aAAO,GAAG,CAAC,OAAO,CAAC;AAAA,IACvB,KAAK;AACD,aAAO,GAAG,CAAC,OAAO,CAAC;AAAA,IACvB,KAAK;AACD,aAAO,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAAA,IACrD,KAAK;AACD,aAAO,QAAQ,CAAC,MAAM,CAAC;AAAA,IAC3B,KAAK;AACD,aAAO,IAAI,CAAC,MAAM,CAAC;AAAA,IACvB;AACI,YAAM,IAAI,MAAM,oDAAoD,SAAS,EAAE;AAAA,EAAA;AAE3F;AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,IAAI,IAAI,KAAK,IAAI,QAAQ,OAAO,KAAK,OAAO,KAAK,GAAG,KAAK,EAAE;AACjE,UAAM,IAAI,IAAI,KAAK,IAAI,QAAQ,OAAO,KAAK,OAAO,KAAK,GAAG,KAAK,EAAE;AACjE,UAAM,YAAY,mBAAmB,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO,GAAG;AACnF,UAAM,aAAa,mBAAmB,OAAO,SAAS,OAAO,OAAO,OAAO,OAAO,GAAG;AACrF,UAAM,aAAa,UAAU,UAAU,MAAM,WAAW,IAAI;AAC5D,UAAM,IAAI,IAAI,KAAK,WAAW,UAAU,EAAE;AAC1C,UAAM,IAAI,IAAI,KAAK,YAAY,UAAU,EAAE;AAC3C,UAAM,eAAe,MAAM,WAAW;AACtC,UAAM,YAAY,OAAO,iBAAiB,WAAW,eAAe;AACpE,WAAO,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,cAAc,WAAW,GAAG,CAAC,CAAC,KAAK,MAAM,WAAA;AAAA,EAClF;AACJ;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { e as createMappedBuffer } from "./index-C8HOR2sB.js";
|
|
2
|
+
function createSkeleton(engine, joints, weights, boneCount, boneData, joints1, weights1) {
|
|
3
|
+
const device = engine._device;
|
|
4
|
+
const texWidth = boneCount * 4;
|
|
5
|
+
const boneTexture = device.createTexture({
|
|
6
|
+
size: [texWidth, 1],
|
|
7
|
+
format: "rgba32float",
|
|
8
|
+
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST
|
|
9
|
+
});
|
|
10
|
+
device.queue.writeTexture({ texture: boneTexture }, boneData.buffer, { bytesPerRow: texWidth * 16 }, { width: texWidth, height: 1 });
|
|
11
|
+
const joints32 = new Uint32Array(joints.length);
|
|
12
|
+
for (let i = 0; i < joints.length; i++) {
|
|
13
|
+
joints32[i] = joints[i];
|
|
14
|
+
}
|
|
15
|
+
const jointsBuffer = createMappedBuffer(engine, joints32, GPUBufferUsage.VERTEX);
|
|
16
|
+
const weightsBuffer = createMappedBuffer(engine, weights, GPUBufferUsage.VERTEX);
|
|
17
|
+
let joints1Buffer = null;
|
|
18
|
+
let weights1Buffer = null;
|
|
19
|
+
if (joints1 && weights1) {
|
|
20
|
+
const joints132 = new Uint32Array(joints1.length);
|
|
21
|
+
for (let i = 0; i < joints1.length; i++) {
|
|
22
|
+
joints132[i] = joints1[i];
|
|
23
|
+
}
|
|
24
|
+
joints1Buffer = createMappedBuffer(engine, joints132, GPUBufferUsage.VERTEX);
|
|
25
|
+
weights1Buffer = createMappedBuffer(engine, weights1, GPUBufferUsage.VERTEX);
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
boneTexture,
|
|
29
|
+
boneCount,
|
|
30
|
+
jointsBuffer,
|
|
31
|
+
weightsBuffer,
|
|
32
|
+
joints,
|
|
33
|
+
weights,
|
|
34
|
+
boneMatrices: boneData,
|
|
35
|
+
joints1Buffer,
|
|
36
|
+
weights1Buffer,
|
|
37
|
+
joints1: joints1 ?? null,
|
|
38
|
+
weights1: weights1 ?? null
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
createSkeleton
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=create-skeleton-C9JdIJnb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-skeleton-C9JdIJnb.js","sources":["../src/skeleton/create-skeleton.ts"],"sourcesContent":["/** Skeleton GPU resource factory.\n *\n * Dynamically imported by load-gltf.ts when a mesh has skeletal data.\n * Scenes without skeletons never import this module.\n * Skinning WGSL is now provided by the skeleton ShaderFragment\n * (shader/fragments/skeleton-fragment.ts) and composed at pipeline\n * creation time — no global registration needed. */\n\nimport type { EngineContext } from \"../engine/engine.js\";\nimport type { SkeletonData } from \"../animation/types.js\";\nimport { createMappedBuffer } from \"../resource/gpu-buffers.js\";\n\n/** Create skeleton GPU data from parsed glTF skin.\n * @param engine - Engine context (provides GPUDevice)\n * @param joints - Joint indices (4 per vertex, u8 or u16)\n * @param weights - Blend weights (4 per vertex, f32)\n * @param boneCount - Number of bones (joints) in the skeleton\n * @param boneData - Initial bone matrices (Float32Array, 16 floats per bone)\n * @param joints1 - Extra joint indices for 8-bone skinning (JOINTS_1)\n * @param weights1 - Extra blend weights for 8-bone skinning (WEIGHTS_1)\n */\nexport function createSkeleton(\n engine: EngineContext,\n joints: Uint16Array | Uint8Array,\n weights: Float32Array,\n boneCount: number,\n boneData: Float32Array,\n joints1?: Uint16Array | Uint8Array | null,\n weights1?: Float32Array | null\n): SkeletonData {\n const device = engine._device;\n // Bone texture: rgba32float, 4 texels per bone (one mat4 column each)\n const texWidth = boneCount * 4;\n const boneTexture = device.createTexture({\n size: [texWidth, 1],\n format: \"rgba32float\",\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST,\n });\n device.queue.writeTexture({ texture: boneTexture }, boneData.buffer, { bytesPerRow: texWidth * 16 }, { width: texWidth, height: 1 });\n\n // Expand joints to Uint32Array — pipeline reads uint32x4 vertex format\n const joints32 = new Uint32Array(joints.length);\n for (let i = 0; i < joints.length; i++) {\n joints32[i] = joints[i]!;\n }\n\n const jointsBuffer = createMappedBuffer(engine, joints32, GPUBufferUsage.VERTEX);\n const weightsBuffer = createMappedBuffer(engine, weights, GPUBufferUsage.VERTEX);\n\n let joints1Buffer: GPUBuffer | null = null;\n let weights1Buffer: GPUBuffer | null = null;\n if (joints1 && weights1) {\n const joints132 = new Uint32Array(joints1.length);\n for (let i = 0; i < joints1.length; i++) {\n joints132[i] = joints1[i]!;\n }\n joints1Buffer = createMappedBuffer(engine, joints132, GPUBufferUsage.VERTEX);\n weights1Buffer = createMappedBuffer(engine, weights1, GPUBufferUsage.VERTEX);\n }\n\n return {\n boneTexture,\n boneCount,\n jointsBuffer,\n weightsBuffer,\n joints,\n weights,\n boneMatrices: boneData,\n joints1Buffer,\n weights1Buffer,\n joints1: joints1 ?? null,\n weights1: weights1 ?? null,\n };\n}\n"],"names":[],"mappings":";AAqBO,SAAS,eACZ,QACA,QACA,SACA,WACA,UACA,SACA,UACY;AACZ,QAAM,SAAS,OAAO;AAEtB,QAAM,WAAW,YAAY;AAC7B,QAAM,cAAc,OAAO,cAAc;AAAA,IACrC,MAAM,CAAC,UAAU,CAAC;AAAA,IAClB,QAAQ;AAAA,IACR,OAAO,gBAAgB,kBAAkB,gBAAgB;AAAA,EAAA,CAC5D;AACD,SAAO,MAAM,aAAa,EAAE,SAAS,YAAA,GAAe,SAAS,QAAQ,EAAE,aAAa,WAAW,MAAM,EAAE,OAAO,UAAU,QAAQ,GAAG;AAGnI,QAAM,WAAW,IAAI,YAAY,OAAO,MAAM;AAC9C,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACpC,aAAS,CAAC,IAAI,OAAO,CAAC;AAAA,EAC1B;AAEA,QAAM,eAAe,mBAAmB,QAAQ,UAAU,eAAe,MAAM;AAC/E,QAAM,gBAAgB,mBAAmB,QAAQ,SAAS,eAAe,MAAM;AAE/E,MAAI,gBAAkC;AACtC,MAAI,iBAAmC;AACvC,MAAI,WAAW,UAAU;AACrB,UAAM,YAAY,IAAI,YAAY,QAAQ,MAAM;AAChD,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,gBAAU,CAAC,IAAI,QAAQ,CAAC;AAAA,IAC5B;AACA,oBAAgB,mBAAmB,QAAQ,WAAW,eAAe,MAAM;AAC3E,qBAAiB,mBAAmB,QAAQ,UAAU,eAAe,MAAM;AAAA,EAC/E;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA,SAAS,WAAW;AAAA,IACpB,UAAU,YAAY;AAAA,EAAA;AAE9B;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const emitter = {
|
|
2
|
+
className: "CrossBlock",
|
|
3
|
+
emit(block, _outputName, stage, state, ctx) {
|
|
4
|
+
const left = ctx.cast(ctx.resolve(block, "left", stage, state), "vec3f").expr;
|
|
5
|
+
const right = ctx.cast(ctx.resolve(block, "right", stage, state), "vec3f").expr;
|
|
6
|
+
return { expr: `cross(${left}, ${right})`, type: "vec3f" };
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
export {
|
|
10
|
+
emitter
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=cross-block-DCrLwCpt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cross-block-DCrLwCpt.js","sources":["../src/material/node/blocks/cross-block.ts"],"sourcesContent":["import type { BlockEmitter } from \"../node-types.js\";\n\nexport const emitter: BlockEmitter = {\n className: \"CrossBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const left = ctx.cast(ctx.resolve(block, \"left\", stage, state), \"vec3f\").expr;\n const right = ctx.cast(ctx.resolve(block, \"right\", stage, state), \"vec3f\").expr;\n return { expr: `cross(${left}, ${right})`, type: \"vec3f\" };\n },\n};\n"],"names":[],"mappings":"AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,OAAO,IAAI,KAAK,IAAI,QAAQ,OAAO,QAAQ,OAAO,KAAK,GAAG,OAAO,EAAE;AACzE,UAAM,QAAQ,IAAI,KAAK,IAAI,QAAQ,OAAO,SAAS,OAAO,KAAK,GAAG,OAAO,EAAE;AAC3E,WAAO,EAAE,MAAM,SAAS,IAAI,KAAK,KAAK,KAAK,MAAM,QAAA;AAAA,EACrD;AACJ;"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { D as targetSignatureKey, E as createDefaultPipelineDescriptor, F as getSceneBindGroupLayout } from "./index-C8HOR2sB.js";
|
|
2
|
+
const SKYBOX_POS_BUFFER = [{ arrayStride: 12, attributes: [{ shaderLocation: 0, offset: 0, format: "float32x3" }] }];
|
|
3
|
+
const _cmPipelines = /* @__PURE__ */ new Map();
|
|
4
|
+
const _cmLayouts = /* @__PURE__ */ new Map();
|
|
5
|
+
let _cmCachedDevice = null;
|
|
6
|
+
function createCubemapSkyboxMaterial(label, vertCode, fragCode) {
|
|
7
|
+
function getLayout(engine) {
|
|
8
|
+
const device = engine._device;
|
|
9
|
+
if (_cmCachedDevice !== device) {
|
|
10
|
+
_cmPipelines.clear();
|
|
11
|
+
_cmLayouts.clear();
|
|
12
|
+
_cmCachedDevice = device;
|
|
13
|
+
}
|
|
14
|
+
const cached = _cmLayouts.get(label);
|
|
15
|
+
if (cached) {
|
|
16
|
+
return cached;
|
|
17
|
+
}
|
|
18
|
+
const layout = device.createBindGroupLayout({
|
|
19
|
+
label: `${label}-material`,
|
|
20
|
+
entries: [
|
|
21
|
+
{ binding: 0, visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT, buffer: { type: "uniform" } },
|
|
22
|
+
{ binding: 1, visibility: GPUShaderStage.FRAGMENT, texture: { sampleType: "float", viewDimension: "cube" } },
|
|
23
|
+
{ binding: 2, visibility: GPUShaderStage.FRAGMENT, sampler: { type: "filtering" } }
|
|
24
|
+
]
|
|
25
|
+
});
|
|
26
|
+
_cmLayouts.set(label, layout);
|
|
27
|
+
return layout;
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
getPipeline(_engine, sig) {
|
|
31
|
+
const device = _engine._device;
|
|
32
|
+
if (_cmCachedDevice !== device) {
|
|
33
|
+
_cmPipelines.clear();
|
|
34
|
+
_cmLayouts.clear();
|
|
35
|
+
_cmCachedDevice = device;
|
|
36
|
+
}
|
|
37
|
+
const key = `${label}|${targetSignatureKey(sig)}`;
|
|
38
|
+
const cached = _cmPipelines.get(key);
|
|
39
|
+
if (cached) {
|
|
40
|
+
return cached;
|
|
41
|
+
}
|
|
42
|
+
const _vertModule = device.createShaderModule({ code: vertCode, label: `${label}-vert` });
|
|
43
|
+
const _fragModule = device.createShaderModule({ code: fragCode, label: `${label}-frag` });
|
|
44
|
+
const pipeline = device.createRenderPipeline(
|
|
45
|
+
createDefaultPipelineDescriptor({
|
|
46
|
+
_label: `${label}-pipeline`,
|
|
47
|
+
_engine,
|
|
48
|
+
_bgls: [getSceneBindGroupLayout(_engine), getLayout(_engine)],
|
|
49
|
+
_vertModule,
|
|
50
|
+
_fragModule,
|
|
51
|
+
_vertexBuffers: SKYBOX_POS_BUFFER,
|
|
52
|
+
_format: sig._colorFormat,
|
|
53
|
+
_depthStencilFormat: sig._depthStencilFormat,
|
|
54
|
+
_depthCompare: sig._depthCompare,
|
|
55
|
+
_msaaSamples: sig._sampleCount,
|
|
56
|
+
_depthWriteEnabled: false,
|
|
57
|
+
_flipY: sig._flipY
|
|
58
|
+
})
|
|
59
|
+
);
|
|
60
|
+
_cmPipelines.set(key, pipeline);
|
|
61
|
+
return pipeline;
|
|
62
|
+
},
|
|
63
|
+
createBindGroup(engine, meshUBO, cubeView, cubeSampler) {
|
|
64
|
+
const device = engine._device;
|
|
65
|
+
return device.createBindGroup({
|
|
66
|
+
layout: getLayout(engine),
|
|
67
|
+
entries: [
|
|
68
|
+
{ binding: 0, resource: { buffer: meshUBO } },
|
|
69
|
+
{ binding: 1, resource: cubeView },
|
|
70
|
+
{ binding: 2, resource: cubeSampler }
|
|
71
|
+
]
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export {
|
|
77
|
+
createCubemapSkyboxMaterial as c
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=cubemap-skybox-material-DvXMVc4k.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cubemap-skybox-material-DvXMVc4k.js","sources":["../src/material/pbr/cubemap-skybox-material.ts"],"sourcesContent":["/** Shared cubemap skybox material factory — used by DDS and HDR skyboxes.\n * BGL: binding 0 = uniform buffer, binding 1 = cube texture, binding 2 = sampler. */\n\nimport type { EngineContext } from \"../../engine/engine.js\";\nimport type { RenderTargetSignature } from \"../../engine/render-target.js\";\nimport { createDefaultPipelineDescriptor, getSceneBindGroupLayout } from \"../../render/scene-helpers.js\";\nimport { targetSignatureKey } from \"../../engine/render-target.js\";\n\nconst SKYBOX_POS_BUFFER: GPUVertexBufferLayout[] = [{ arrayStride: 12, attributes: [{ shaderLocation: 0, offset: 0, format: \"float32x3\" as GPUVertexFormat }] }];\n\nexport interface CubemapSkyboxMaterial {\n getPipeline(engine: EngineContext, sig: RenderTargetSignature): GPURenderPipeline;\n createBindGroup(engine: EngineContext, meshUBO: GPUBuffer, cubeView: GPUTextureView, cubeSampler: GPUSampler): GPUBindGroup;\n}\n\n/** Module-global pipeline + layout caches shared across all cubemap-skybox instances.\n * Keyed by `${label}|${sigKey}` so HDR and DDS variants don't collide. */\nconst _cmPipelines = new Map<string, GPURenderPipeline>();\nconst _cmLayouts = new Map<string, GPUBindGroupLayout>();\nlet _cmCachedDevice: GPUDevice | null = null;\n\nexport function createCubemapSkyboxMaterial(label: string, vertCode: string, fragCode: string): CubemapSkyboxMaterial {\n function getLayout(engine: EngineContext): GPUBindGroupLayout {\n const device = engine._device;\n if (_cmCachedDevice !== device) {\n _cmPipelines.clear();\n _cmLayouts.clear();\n _cmCachedDevice = device;\n }\n const cached = _cmLayouts.get(label);\n if (cached) {\n return cached;\n }\n const layout = device.createBindGroupLayout({\n label: `${label}-material`,\n entries: [\n { binding: 0, visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT, buffer: { type: \"uniform\" } },\n { binding: 1, visibility: GPUShaderStage.FRAGMENT, texture: { sampleType: \"float\", viewDimension: \"cube\" } },\n { binding: 2, visibility: GPUShaderStage.FRAGMENT, sampler: { type: \"filtering\" } },\n ],\n });\n _cmLayouts.set(label, layout);\n return layout;\n }\n\n return {\n getPipeline(_engine, sig) {\n const device = _engine._device;\n if (_cmCachedDevice !== device) {\n _cmPipelines.clear();\n _cmLayouts.clear();\n _cmCachedDevice = device;\n }\n const key = `${label}|${targetSignatureKey(sig)}`;\n const cached = _cmPipelines.get(key);\n if (cached) {\n return cached;\n }\n const _vertModule = device.createShaderModule({ code: vertCode, label: `${label}-vert` });\n const _fragModule = device.createShaderModule({ code: fragCode, label: `${label}-frag` });\n\n const pipeline = device.createRenderPipeline(\n createDefaultPipelineDescriptor({\n _label: `${label}-pipeline`,\n _engine,\n _bgls: [getSceneBindGroupLayout(_engine), getLayout(_engine)],\n _vertModule,\n _fragModule,\n _vertexBuffers: SKYBOX_POS_BUFFER,\n _format: sig._colorFormat!,\n _depthStencilFormat: sig._depthStencilFormat,\n _depthCompare: sig._depthCompare,\n _msaaSamples: sig._sampleCount,\n _depthWriteEnabled: false,\n _flipY: sig._flipY,\n })\n );\n _cmPipelines.set(key, pipeline);\n return pipeline;\n },\n\n createBindGroup(engine, meshUBO, cubeView, cubeSampler) {\n const device = engine._device;\n return device.createBindGroup({\n layout: getLayout(engine),\n entries: [\n { binding: 0, resource: { buffer: meshUBO } },\n { binding: 1, resource: cubeView },\n { binding: 2, resource: cubeSampler },\n ],\n });\n },\n };\n}\n"],"names":[],"mappings":";AAQA,MAAM,oBAA6C,CAAC,EAAE,aAAa,IAAI,YAAY,CAAC,EAAE,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,YAAA,CAAgC,GAAG;AAS/J,MAAM,mCAAmB,IAAA;AACzB,MAAM,iCAAiB,IAAA;AACvB,IAAI,kBAAoC;AAEjC,SAAS,4BAA4B,OAAe,UAAkB,UAAyC;AAClH,WAAS,UAAU,QAA2C;AAC1D,UAAM,SAAS,OAAO;AACtB,QAAI,oBAAoB,QAAQ;AAC5B,mBAAa,MAAA;AACb,iBAAW,MAAA;AACX,wBAAkB;AAAA,IACtB;AACA,UAAM,SAAS,WAAW,IAAI,KAAK;AACnC,QAAI,QAAQ;AACR,aAAO;AAAA,IACX;AACA,UAAM,SAAS,OAAO,sBAAsB;AAAA,MACxC,OAAO,GAAG,KAAK;AAAA,MACf,SAAS;AAAA,QACL,EAAE,SAAS,GAAG,YAAY,eAAe,SAAS,eAAe,UAAU,QAAQ,EAAE,MAAM,UAAA,EAAU;AAAA,QACrG,EAAE,SAAS,GAAG,YAAY,eAAe,UAAU,SAAS,EAAE,YAAY,SAAS,eAAe,OAAA,EAAO;AAAA,QACzG,EAAE,SAAS,GAAG,YAAY,eAAe,UAAU,SAAS,EAAE,MAAM,YAAA,EAAY;AAAA,MAAE;AAAA,IACtF,CACH;AACD,eAAW,IAAI,OAAO,MAAM;AAC5B,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IACH,YAAY,SAAS,KAAK;AACtB,YAAM,SAAS,QAAQ;AACvB,UAAI,oBAAoB,QAAQ;AAC5B,qBAAa,MAAA;AACb,mBAAW,MAAA;AACX,0BAAkB;AAAA,MACtB;AACA,YAAM,MAAM,GAAG,KAAK,IAAI,mBAAmB,GAAG,CAAC;AAC/C,YAAM,SAAS,aAAa,IAAI,GAAG;AACnC,UAAI,QAAQ;AACR,eAAO;AAAA,MACX;AACA,YAAM,cAAc,OAAO,mBAAmB,EAAE,MAAM,UAAU,OAAO,GAAG,KAAK,QAAA,CAAS;AACxF,YAAM,cAAc,OAAO,mBAAmB,EAAE,MAAM,UAAU,OAAO,GAAG,KAAK,QAAA,CAAS;AAExF,YAAM,WAAW,OAAO;AAAA,QACpB,gCAAgC;AAAA,UAC5B,QAAQ,GAAG,KAAK;AAAA,UAChB;AAAA,UACA,OAAO,CAAC,wBAAwB,OAAO,GAAG,UAAU,OAAO,CAAC;AAAA,UAC5D;AAAA,UACA;AAAA,UACA,gBAAgB;AAAA,UAChB,SAAS,IAAI;AAAA,UACb,qBAAqB,IAAI;AAAA,UACzB,eAAe,IAAI;AAAA,UACnB,cAAc,IAAI;AAAA,UAClB,oBAAoB;AAAA,UACpB,QAAQ,IAAI;AAAA,QAAA,CACf;AAAA,MAAA;AAEL,mBAAa,IAAI,KAAK,QAAQ;AAC9B,aAAO;AAAA,IACX;AAAA,IAEA,gBAAgB,QAAQ,SAAS,UAAU,aAAa;AACpD,YAAM,SAAS,OAAO;AACtB,aAAO,OAAO,gBAAgB;AAAA,QAC1B,QAAQ,UAAU,MAAM;AAAA,QACxB,SAAS;AAAA,UACL,EAAE,SAAS,GAAG,UAAU,EAAE,QAAQ,UAAQ;AAAA,UAC1C,EAAE,SAAS,GAAG,UAAU,SAAA;AAAA,UACxB,EAAE,SAAS,GAAG,UAAU,YAAA;AAAA,QAAY;AAAA,MACxC,CACH;AAAA,IACL;AAAA,EAAA;AAER;"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { aS as WGSL } from "./index-C8HOR2sB.js";
|
|
2
|
+
function curveScalar(type, v) {
|
|
3
|
+
switch (type) {
|
|
4
|
+
case 0:
|
|
5
|
+
return `(1.0 - cos((${v} * 3.1415) / 2.0))`;
|
|
6
|
+
case 1:
|
|
7
|
+
return `sin((${v} * 3.1415) / 2.0)`;
|
|
8
|
+
case 2:
|
|
9
|
+
return `(-((cos(${v} * 3.1415) - 1.0)) / 2.0)`;
|
|
10
|
+
case 3:
|
|
11
|
+
return `(${v} * ${v})`;
|
|
12
|
+
case 4:
|
|
13
|
+
return `((1.0 - ${v}) * (1.0 - ${v}))`;
|
|
14
|
+
case 5:
|
|
15
|
+
return `select(1.0 - pow(-2.0 * ${v} + 2.0, 2.0) / 2.0, 2.0 * ${v} * ${v}, ${v} < 0.5)`;
|
|
16
|
+
case 6:
|
|
17
|
+
return `(${v} * ${v} * ${v})`;
|
|
18
|
+
case 7:
|
|
19
|
+
return `(1.0 - pow(1.0 - ${v}, 3.0))`;
|
|
20
|
+
case 8:
|
|
21
|
+
return `select(1.0 - pow(-2.0 * ${v} + 2.0, 3.0) / 2.0, 4.0 * ${v} * ${v} * ${v}, ${v} < 0.5)`;
|
|
22
|
+
case 9:
|
|
23
|
+
return `(${v} * ${v} * ${v} * ${v})`;
|
|
24
|
+
case 10:
|
|
25
|
+
return `(1.0 - pow(1.0 - ${v}, 4.0))`;
|
|
26
|
+
case 11:
|
|
27
|
+
return `select(1.0 - pow(-2.0 * ${v} + 2.0, 4.0) / 2.0, 8.0 * ${v} * ${v} * ${v} * ${v}, ${v} < 0.5)`;
|
|
28
|
+
case 12:
|
|
29
|
+
return `(${v} * ${v} * ${v} * ${v} * ${v})`;
|
|
30
|
+
case 13:
|
|
31
|
+
return `(1.0 - pow(1.0 - ${v}, 5.0))`;
|
|
32
|
+
case 14:
|
|
33
|
+
return `select(1.0 - pow(-2.0 * ${v} + 2.0, 5.0) / 2.0, 16.0 * ${v} * ${v} * ${v} * ${v} * ${v}, ${v} < 0.5)`;
|
|
34
|
+
case 15:
|
|
35
|
+
return `select(pow(2.0, 10.0 * ${v} - 10.0), 0.0, ${v} == 0.0)`;
|
|
36
|
+
case 16:
|
|
37
|
+
return `select(1.0 - pow(2.0, -10.0 * ${v}), 1.0, ${v} == 1.0)`;
|
|
38
|
+
case 17:
|
|
39
|
+
return `select(select(select((2.0 - pow(2.0, -20.0 * ${v} + 10.0)) / 2.0, pow(2.0, 20.0 * ${v} - 10.0) / 2.0, ${v} < 0.5), 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;
|
|
40
|
+
case 18:
|
|
41
|
+
return `(1.0 - sqrt(1.0 - pow(${v}, 2.0)))`;
|
|
42
|
+
case 19:
|
|
43
|
+
return `sqrt(1.0 - pow(${v} - 1.0, 2.0))`;
|
|
44
|
+
case 20:
|
|
45
|
+
return `select((sqrt(1.0 - pow(-2.0 * ${v} + 2.0, 2.0)) + 1.0) / 2.0, (1.0 - sqrt(1.0 - pow(2.0 * ${v}, 2.0))) / 2.0, ${v} < 0.5)`;
|
|
46
|
+
case 21:
|
|
47
|
+
return `(2.70158 * ${v} * ${v} * ${v} - 1.70158 * ${v} * ${v})`;
|
|
48
|
+
case 22:
|
|
49
|
+
return `(2.70158 * pow(${v} - 1.0, 3.0) + 1.70158 * pow(${v} - 1.0, 2.0))`;
|
|
50
|
+
case 23:
|
|
51
|
+
return `select((pow(2.0 * ${v} - 2.0, 2.0) * (3.5949095 * (${v} * 2.0 - 2.0) + 3.5949095) + 2.0) / 2.0, (pow(2.0 * ${v}, 2.0) * (3.5949095 * 2.0 * ${v} - 2.5949095)) / 2.0, ${v} < 0.5)`;
|
|
52
|
+
case 24:
|
|
53
|
+
return `select(select(-pow(2.0, 10.0 * ${v} - 10.0) * sin((${v} * 10.0 - 10.75) * ((2.0 * 3.1415) / 3.0)), 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;
|
|
54
|
+
case 25:
|
|
55
|
+
return `select(select(pow(2.0, -10.0 * ${v}) * sin((${v} * 10.0 - 0.75) * ((2.0 * 3.1415) / 3.0)) + 1.0, 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;
|
|
56
|
+
case 26:
|
|
57
|
+
return `select(select(select((pow(2.0, -20.0 * ${v} + 10.0) * sin((20.0 * ${v} - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0 + 1.0, -(pow(2.0, 20.0 * ${v} - 10.0) * sin((20.0 * ${v} - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0, ${v} < 0.5), 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;
|
|
58
|
+
default:
|
|
59
|
+
throw new Error(`NodeMaterial: unknown CurveBlock curveType ${type}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function curveExpr(type, input, inputType) {
|
|
63
|
+
if (inputType === "f32") {
|
|
64
|
+
return curveScalar(type, input);
|
|
65
|
+
}
|
|
66
|
+
if (inputType === "vec2f") {
|
|
67
|
+
return `${WGSL[inputType]}(${curveScalar(type, `(${input}).x`)}, ${curveScalar(type, `(${input}).y`)})`;
|
|
68
|
+
}
|
|
69
|
+
if (inputType === "vec3f") {
|
|
70
|
+
return `${WGSL[inputType]}(${curveScalar(type, `(${input}).x`)}, ${curveScalar(type, `(${input}).y`)}, ${curveScalar(type, `(${input}).z`)})`;
|
|
71
|
+
}
|
|
72
|
+
if (inputType === "vec4f") {
|
|
73
|
+
return `${WGSL[inputType]}(${curveScalar(type, `(${input}).x`)}, ${curveScalar(type, `(${input}).y`)}, ${curveScalar(type, `(${input}).z`)}, ${curveScalar(type, `(${input}).w`)})`;
|
|
74
|
+
}
|
|
75
|
+
throw new Error(`NodeMaterial: CurveBlock does not support ${inputType}`);
|
|
76
|
+
}
|
|
77
|
+
const emitter = {
|
|
78
|
+
className: "CurveBlock",
|
|
79
|
+
emit(block, _outputName, stage, state, ctx) {
|
|
80
|
+
const input = ctx.resolve(block, "input", stage, state);
|
|
81
|
+
const rawCurveType = block.serialized.curveType;
|
|
82
|
+
const curveType = typeof rawCurveType === "number" ? rawCurveType : 2;
|
|
83
|
+
return { expr: curveExpr(curveType, input.expr, input.type), type: input.type };
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
export {
|
|
87
|
+
emitter
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=curve-block-BlJpXVYv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curve-block-BlJpXVYv.js","sources":["../src/material/node/blocks/curve-block.ts"],"sourcesContent":["import type { BlockEmitter, NodeValueType } from \"../node-types.js\";\nimport { WGSL } from \"../node-types.js\";\n\nfunction curveScalar(type: number, v: string): string {\n switch (type) {\n case 0:\n return `(1.0 - cos((${v} * 3.1415) / 2.0))`;\n case 1:\n return `sin((${v} * 3.1415) / 2.0)`;\n case 2:\n return `(-((cos(${v} * 3.1415) - 1.0)) / 2.0)`;\n case 3:\n return `(${v} * ${v})`;\n case 4:\n return `((1.0 - ${v}) * (1.0 - ${v}))`;\n case 5:\n return `select(1.0 - pow(-2.0 * ${v} + 2.0, 2.0) / 2.0, 2.0 * ${v} * ${v}, ${v} < 0.5)`;\n case 6:\n return `(${v} * ${v} * ${v})`;\n case 7:\n return `(1.0 - pow(1.0 - ${v}, 3.0))`;\n case 8:\n return `select(1.0 - pow(-2.0 * ${v} + 2.0, 3.0) / 2.0, 4.0 * ${v} * ${v} * ${v}, ${v} < 0.5)`;\n case 9:\n return `(${v} * ${v} * ${v} * ${v})`;\n case 10:\n return `(1.0 - pow(1.0 - ${v}, 4.0))`;\n case 11:\n return `select(1.0 - pow(-2.0 * ${v} + 2.0, 4.0) / 2.0, 8.0 * ${v} * ${v} * ${v} * ${v}, ${v} < 0.5)`;\n case 12:\n return `(${v} * ${v} * ${v} * ${v} * ${v})`;\n case 13:\n return `(1.0 - pow(1.0 - ${v}, 5.0))`;\n case 14:\n return `select(1.0 - pow(-2.0 * ${v} + 2.0, 5.0) / 2.0, 16.0 * ${v} * ${v} * ${v} * ${v} * ${v}, ${v} < 0.5)`;\n case 15:\n return `select(pow(2.0, 10.0 * ${v} - 10.0), 0.0, ${v} == 0.0)`;\n case 16:\n return `select(1.0 - pow(2.0, -10.0 * ${v}), 1.0, ${v} == 1.0)`;\n case 17:\n return `select(select(select((2.0 - pow(2.0, -20.0 * ${v} + 10.0)) / 2.0, pow(2.0, 20.0 * ${v} - 10.0) / 2.0, ${v} < 0.5), 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;\n case 18:\n return `(1.0 - sqrt(1.0 - pow(${v}, 2.0)))`;\n case 19:\n return `sqrt(1.0 - pow(${v} - 1.0, 2.0))`;\n case 20:\n return `select((sqrt(1.0 - pow(-2.0 * ${v} + 2.0, 2.0)) + 1.0) / 2.0, (1.0 - sqrt(1.0 - pow(2.0 * ${v}, 2.0))) / 2.0, ${v} < 0.5)`;\n case 21:\n return `(2.70158 * ${v} * ${v} * ${v} - 1.70158 * ${v} * ${v})`;\n case 22:\n return `(2.70158 * pow(${v} - 1.0, 3.0) + 1.70158 * pow(${v} - 1.0, 2.0))`;\n case 23:\n return `select((pow(2.0 * ${v} - 2.0, 2.0) * (3.5949095 * (${v} * 2.0 - 2.0) + 3.5949095) + 2.0) / 2.0, (pow(2.0 * ${v}, 2.0) * (3.5949095 * 2.0 * ${v} - 2.5949095)) / 2.0, ${v} < 0.5)`;\n case 24:\n return `select(select(-pow(2.0, 10.0 * ${v} - 10.0) * sin((${v} * 10.0 - 10.75) * ((2.0 * 3.1415) / 3.0)), 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;\n case 25:\n return `select(select(pow(2.0, -10.0 * ${v}) * sin((${v} * 10.0 - 0.75) * ((2.0 * 3.1415) / 3.0)) + 1.0, 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;\n case 26:\n return `select(select(select((pow(2.0, -20.0 * ${v} + 10.0) * sin((20.0 * ${v} - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0 + 1.0, -(pow(2.0, 20.0 * ${v} - 10.0) * sin((20.0 * ${v} - 11.125) * ((2.0 * 3.1415) / 4.5))) / 2.0, ${v} < 0.5), 1.0, ${v} == 1.0), 0.0, ${v} == 0.0)`;\n default:\n throw new Error(`NodeMaterial: unknown CurveBlock curveType ${type}`);\n }\n}\n\nfunction curveExpr(type: number, input: string, inputType: NodeValueType): string {\n if (inputType === \"f32\") {\n return curveScalar(type, input);\n }\n if (inputType === \"vec2f\") {\n return `${WGSL[inputType]}(${curveScalar(type, `(${input}).x`)}, ${curveScalar(type, `(${input}).y`)})`;\n }\n if (inputType === \"vec3f\") {\n return `${WGSL[inputType]}(${curveScalar(type, `(${input}).x`)}, ${curveScalar(type, `(${input}).y`)}, ${curveScalar(type, `(${input}).z`)})`;\n }\n if (inputType === \"vec4f\") {\n return `${WGSL[inputType]}(${curveScalar(type, `(${input}).x`)}, ${curveScalar(type, `(${input}).y`)}, ${curveScalar(type, `(${input}).z`)}, ${curveScalar(type, `(${input}).w`)})`;\n }\n throw new Error(`NodeMaterial: CurveBlock does not support ${inputType}`);\n}\n\nexport const emitter: BlockEmitter = {\n className: \"CurveBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const input = ctx.resolve(block, \"input\", stage, state);\n const rawCurveType = block.serialized.curveType;\n const curveType = typeof rawCurveType === \"number\" ? rawCurveType : 2;\n return { expr: curveExpr(curveType, input.expr, input.type), type: input.type };\n },\n};\n"],"names":[],"mappings":";AAGA,SAAS,YAAY,MAAc,GAAmB;AAClD,UAAQ,MAAA;AAAA,IACJ,KAAK;AACD,aAAO,eAAe,CAAC;AAAA,IAC3B,KAAK;AACD,aAAO,QAAQ,CAAC;AAAA,IACpB,KAAK;AACD,aAAO,WAAW,CAAC;AAAA,IACvB,KAAK;AACD,aAAO,IAAI,CAAC,MAAM,CAAC;AAAA,IACvB,KAAK;AACD,aAAO,WAAW,CAAC,cAAc,CAAC;AAAA,IACtC,KAAK;AACD,aAAO,2BAA2B,CAAC,6BAA6B,CAAC,MAAM,CAAC,KAAK,CAAC;AAAA,IAClF,KAAK;AACD,aAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAAA,IAC9B,KAAK;AACD,aAAO,oBAAoB,CAAC;AAAA,IAChC,KAAK;AACD,aAAO,2BAA2B,CAAC,6BAA6B,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AAAA,IACzF,KAAK;AACD,aAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAAA,IACrC,KAAK;AACD,aAAO,oBAAoB,CAAC;AAAA,IAChC,KAAK;AACD,aAAO,2BAA2B,CAAC,6BAA6B,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AAAA,IAChG,KAAK;AACD,aAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAAA,IAC5C,KAAK;AACD,aAAO,oBAAoB,CAAC;AAAA,IAChC,KAAK;AACD,aAAO,2BAA2B,CAAC,8BAA8B,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AAAA,IACxG,KAAK;AACD,aAAO,0BAA0B,CAAC,kBAAkB,CAAC;AAAA,IACzD,KAAK;AACD,aAAO,iCAAiC,CAAC,WAAW,CAAC;AAAA,IACzD,KAAK;AACD,aAAO,gDAAgD,CAAC,oCAAoC,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;AAAA,IAC1J,KAAK;AACD,aAAO,yBAAyB,CAAC;AAAA,IACrC,KAAK;AACD,aAAO,kBAAkB,CAAC;AAAA,IAC9B,KAAK;AACD,aAAO,iCAAiC,CAAC,2DAA2D,CAAC,mBAAmB,CAAC;AAAA,IAC7H,KAAK;AACD,aAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAAA,IAChE,KAAK;AACD,aAAO,kBAAkB,CAAC,gCAAgC,CAAC;AAAA,IAC/D,KAAK;AACD,aAAO,qBAAqB,CAAC,gCAAgC,CAAC,uDAAuD,CAAC,+BAA+B,CAAC,yBAAyB,CAAC;AAAA,IACpL,KAAK;AACD,aAAO,kCAAkC,CAAC,mBAAmB,CAAC,oDAAoD,CAAC,kBAAkB,CAAC;AAAA,IAC1I,KAAK;AACD,aAAO,kCAAkC,CAAC,YAAY,CAAC,yDAAyD,CAAC,kBAAkB,CAAC;AAAA,IACxI,KAAK;AACD,aAAO,0CAA0C,CAAC,0BAA0B,CAAC,wEAAwE,CAAC,0BAA0B,CAAC,gDAAgD,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;AAAA,IAC3Q;AACI,YAAM,IAAI,MAAM,8CAA8C,IAAI,EAAE;AAAA,EAAA;AAEhF;AAEA,SAAS,UAAU,MAAc,OAAe,WAAkC;AAC9E,MAAI,cAAc,OAAO;AACrB,WAAO,YAAY,MAAM,KAAK;AAAA,EAClC;AACA,MAAI,cAAc,SAAS;AACvB,WAAO,GAAG,KAAK,SAAS,CAAC,IAAI,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC;AAAA,EACxG;AACA,MAAI,cAAc,SAAS;AACvB,WAAO,GAAG,KAAK,SAAS,CAAC,IAAI,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC;AAAA,EAC9I;AACA,MAAI,cAAc,SAAS;AACvB,WAAO,GAAG,KAAK,SAAS,CAAC,IAAI,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,YAAY,MAAM,IAAI,KAAK,KAAK,CAAC;AAAA,EACpL;AACA,QAAM,IAAI,MAAM,6CAA6C,SAAS,EAAE;AAC5E;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,eAAe,MAAM,WAAW;AACtC,UAAM,YAAY,OAAO,iBAAiB,WAAW,eAAe;AACpE,WAAO,EAAE,MAAM,UAAU,WAAW,MAAM,MAAM,MAAM,IAAI,GAAG,MAAM,MAAM,KAAA;AAAA,EAC7E;AACJ;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const emitter = {
|
|
2
|
+
className: "NodeMaterialDebugBlock",
|
|
3
|
+
emit(block, _outputName, stage, state, ctx) {
|
|
4
|
+
const input = block.inputs.get("debug");
|
|
5
|
+
if (!(input == null ? void 0 : input.source)) {
|
|
6
|
+
return { expr: "0.0", type: "f32" };
|
|
7
|
+
}
|
|
8
|
+
return ctx.resolve(block, "debug", stage, state);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
export {
|
|
12
|
+
emitter
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=debug-block-D2pg4Yf6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-block-D2pg4Yf6.js","sources":["../src/material/node/blocks/debug-block.ts"],"sourcesContent":["import type { BlockEmitter } from \"../node-types.js\";\n\nexport const emitter: BlockEmitter = {\n className: \"NodeMaterialDebugBlock\",\n emit(block, _outputName, stage, state, ctx) {\n const input = block.inputs.get(\"debug\");\n if (!input?.source) {\n return { expr: \"0.0\", type: \"f32\" };\n }\n return ctx.resolve(block, \"debug\", stage, state);\n },\n};\n"],"names":[],"mappings":"AAEO,MAAM,UAAwB;AAAA,EACjC,WAAW;AAAA,EACX,KAAK,OAAO,aAAa,OAAO,OAAO,KAAK;AACxC,UAAM,QAAQ,MAAM,OAAO,IAAI,OAAO;AACtC,QAAI,EAAC,+BAAO,SAAQ;AAChB,aAAO,EAAE,MAAM,OAAO,MAAM,MAAA;AAAA,IAChC;AACA,WAAO,IAAI,QAAQ,OAAO,SAAS,OAAO,KAAK;AAAA,EACnD;AACJ;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const OUTPUT_FN = {
|
|
2
|
+
dx: "dpdx",
|
|
3
|
+
dy: "dpdy"
|
|
4
|
+
};
|
|
5
|
+
const emitter = {
|
|
6
|
+
className: "DerivativeBlock",
|
|
7
|
+
stage: "fragment",
|
|
8
|
+
emit(block, outputName, stage, state, ctx) {
|
|
9
|
+
const fn = OUTPUT_FN[outputName];
|
|
10
|
+
if (!fn) {
|
|
11
|
+
throw new Error(`NodeMaterial: DerivativeBlock output "${outputName}" is not supported`);
|
|
12
|
+
}
|
|
13
|
+
const input = ctx.resolve(block, "input", stage, state);
|
|
14
|
+
return { expr: `${fn}(${input.expr})`, type: input.type };
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
export {
|
|
18
|
+
emitter
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=derivative-block-B8KjtaWs.js.map
|