@holoscript/core 8.0.8 → 8.0.10
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/LICENSE +21 -0
- package/bin/holoscript.cjs +5 -1
- package/dist/GLTFPipeline-L76YTXKA.js +15 -0
- package/dist/GLTFPipeline-ZWJN7GI6.cjs +36 -0
- package/dist/HoloCompositionParser-K76KTEEE.js +12 -0
- package/dist/HoloCompositionParser-UZH6Y4HO.cjs +45 -0
- package/dist/HoloScriptCodeParser-2D4ERFUZ.js +6 -0
- package/dist/HoloScriptCodeParser-UDRLDA7I.cjs +23 -0
- package/dist/HoloScriptPlusParser-FTMCGWXD.js +13 -0
- package/dist/HoloScriptPlusParser-LQR5GIKF.cjs +30 -0
- package/dist/HoloScriptRuntime-UTRLJI5L.js +12 -0
- package/dist/HoloScriptRuntime-YBYXJHJN.cjs +21 -0
- package/dist/SceneIRCompiler-63KA3M2F.js +17 -0
- package/dist/SceneIRCompiler-KWUFHZ4O.cjs +42 -0
- package/dist/{USDZExporter-AUHZODOF.cjs → USDZExporter-ML4UMIGC.cjs} +3 -3
- package/dist/{USDZExporter-GXB4AUSG.js → USDZExporter-ZFKLQ76G.js} +3 -3
- package/dist/agents/index.cjs +1 -1
- package/dist/agents/index.js +1 -1
- package/dist/audit/AuditLogger.d.ts +106 -0
- package/dist/audit/AuditQueryBuilder.d.ts +79 -0
- package/dist/audit/ComplianceReporter.d.ts +90 -0
- package/dist/audit/index.d.ts +13 -0
- package/dist/{chunk-FGMDMJM7.js → chunk-2BYAUHBO.js} +3 -3
- package/dist/{chunk-EDPYCLRC.cjs → chunk-2E6PP5UE.cjs} +83 -59
- package/dist/{chunk-GASCWJK5.js → chunk-2EGGAZT3.js} +65 -287
- package/dist/{chunk-SIEXCILW.js → chunk-2I3XAGMF.js} +3 -3
- package/dist/{chunk-OS533P33.cjs → chunk-2KKOYZYI.cjs} +1074 -1655
- package/dist/chunk-2MQKNDNH.js +51 -0
- package/dist/{chunk-7DMMMBCY.cjs → chunk-2X3IPCBK.cjs} +10 -10
- package/dist/chunk-2ZOTBO25.cjs +202 -0
- package/dist/chunk-356N4NPM.cjs +152 -0
- package/dist/{chunk-X3GJPRVK.cjs → chunk-36NPLOI4.cjs} +92 -81
- package/dist/{chunk-SLU6UPJI.cjs → chunk-37HHY7RH.cjs} +5 -5
- package/dist/{chunk-YDPEHCCI.cjs → chunk-3CDDRUER.cjs} +3 -118
- package/dist/chunk-3F7ZZWIN.js +1651 -0
- package/dist/chunk-3ILD7TKP.cjs +187 -0
- package/dist/{chunk-X27QRG4C.cjs → chunk-3IUHTGDD.cjs} +153 -41
- package/dist/{chunk-PXNZ6TME.js → chunk-4376VHNJ.js} +60 -36
- package/dist/{chunk-YKGPCZEE.cjs → chunk-4FIBOJW6.cjs} +10 -10
- package/dist/chunk-4Q7RKQQI.cjs +14195 -0
- package/dist/{chunk-YCM6QQRT.cjs → chunk-566ZB4LZ.cjs} +180 -8
- package/dist/{chunk-2Y3V22SG.js → chunk-5CURIYGT.js} +3 -3
- package/dist/{chunk-QBWNJXNR.js → chunk-5FYMCVBY.js} +5 -5
- package/dist/{chunk-ZA34AN3R.js → chunk-5LVFTGKH.js} +841 -12
- package/dist/{chunk-Z6PMDS4G.js → chunk-5OUOMBKK.js} +1090 -53
- package/dist/chunk-63AUAIL6.js +48 -0
- package/dist/chunk-655FATJU.js +110 -0
- package/dist/{chunk-TQ377OLB.cjs → chunk-65S62L4D.cjs} +28 -22
- package/dist/chunk-6NTAZN5Z.cjs +502 -0
- package/dist/chunk-6TRX6AR2.js +9376 -0
- package/dist/chunk-6ZCCLKS2.cjs +51 -0
- package/dist/{chunk-MDR235RZ.js → chunk-734OB5SK.js} +721 -8
- package/dist/{chunk-Q2Q34NF3.js → chunk-77QI552M.js} +6 -6
- package/dist/{chunk-WKX5AMOY.js → chunk-7I74JWPW.js} +3 -3
- package/dist/{chunk-5FSKKMR7.cjs → chunk-7IDJDMPU.cjs} +232 -4
- package/dist/chunk-7VBKRGIZ.cjs +847 -0
- package/dist/{chunk-KCPHASCO.js → chunk-AATYYLYK.js} +5 -5
- package/dist/{chunk-DTGBOSEM.cjs → chunk-AWXFEAQL.cjs} +12 -12
- package/dist/{chunk-THCK6ECW.js → chunk-B3CWTCK2.js} +231 -3
- package/dist/chunk-BCP4E7MD.cjs +997 -0
- package/dist/chunk-BG7RPYJP.js +91 -0
- package/dist/{chunk-VF257YKO.js → chunk-BP4KTMLY.js} +117 -5
- package/dist/{chunk-YN6IETRZ.js → chunk-BQJ3YBF3.js} +6424 -987
- package/dist/{chunk-7X5PNIQJ.js → chunk-BXSOEQI3.js} +27 -25
- package/dist/{chunk-WFKVS2K4.cjs → chunk-C65C5VED.cjs} +1101 -55
- package/dist/{chunk-KOUAQL2B.cjs → chunk-CANAL6CT.cjs} +1569 -168
- package/dist/{chunk-FDSGHPAK.js → chunk-CBSDJF3B.js} +3 -3
- package/dist/{chunk-FEWUHQNM.cjs → chunk-CFVK26P4.cjs} +4 -4
- package/dist/{chunk-M7K4LE66.cjs → chunk-CI33NINL.cjs} +4 -4
- package/dist/{chunk-2OWDB4FB.js → chunk-CKV5NYAE.js} +6 -6
- package/dist/{chunk-LPS5AMQD.cjs → chunk-CM4NHXVO.cjs} +24 -24
- package/dist/chunk-D3HSRXYB.js +115 -0
- package/dist/{chunk-FNHJRI32.js → chunk-DBH3D2MU.js} +1561 -160
- package/dist/{chunk-GW3LKD5C.js → chunk-DJNH4HFW.js} +3 -3
- package/dist/{chunk-2GCNOI2U.cjs → chunk-DN6F4DHH.cjs} +9 -3
- package/dist/chunk-DQRJ5RJG.js +432 -0
- package/dist/{chunk-C7ZBSV2Q.js → chunk-DUG3OQAS.js} +106 -43
- package/dist/chunk-ECUYJOJ2.cjs +199 -0
- package/dist/chunk-EEMTCAK7.js +182 -0
- package/dist/{chunk-3SKLAUDD.cjs → chunk-EI3J6LTW.cjs} +359 -581
- package/dist/{chunk-SSSN7VAM.js → chunk-EM2OGPYE.js} +4 -4
- package/dist/{chunk-56VOWURB.cjs → chunk-ENZCIQZC.cjs} +522 -453
- package/dist/chunk-ESBXUYOC.cjs +836 -0
- package/dist/{chunk-L5U4W6JC.js → chunk-ESSEF6U2.js} +4 -4
- package/dist/chunk-ET3AN4W3.js +824 -0
- package/dist/chunk-EXKSFGSX.cjs +14 -14
- package/dist/{chunk-I76GIKN7.cjs → chunk-F3YT6GUF.cjs} +17 -17
- package/dist/{chunk-WRWEX5ZF.js → chunk-F75DZBBI.js} +3 -3
- package/dist/{chunk-4JGRWHZJ.js → chunk-FG6PYGIZ.js} +12 -6
- package/dist/chunk-FGGJQRLZ.js +14 -14
- package/dist/{chunk-SXOSDZD6.js → chunk-FWCHPCD4.js} +128 -10
- package/dist/{chunk-XW6IXEQH.cjs → chunk-G35CAQ7I.cjs} +5 -5
- package/dist/{chunk-7VMGP2FW.js → chunk-G6KACNMO.js} +132 -188
- package/dist/{chunk-FJPADH77.cjs → chunk-GAWJJAGT.cjs} +6 -6
- package/dist/chunk-GGR7QUKK.cjs +4724 -0
- package/dist/chunk-GIBF4BHH.js +14098 -0
- package/dist/{chunk-AWB7QYY6.cjs → chunk-GILYQ5VH.cjs} +6 -6
- package/dist/{chunk-FWVYAMNW.cjs → chunk-GKFCHGCM.cjs} +4 -4
- package/dist/{chunk-Y3ZFVUUU.js → chunk-GLEJ2TLS.js} +3 -3
- package/dist/{chunk-3GWWJT7L.js → chunk-GP3OKSKT.js} +13 -13
- package/dist/chunk-GTIPOEHN.js +196 -0
- package/dist/{chunk-LMJ5EBV7.cjs → chunk-GZPUA2TL.cjs} +16 -15
- package/dist/{chunk-IELX2OKI.js → chunk-H4LJ4HEA.js} +3 -115
- package/dist/{chunk-ACVWFGBI.cjs → chunk-HCX4SMFK.cjs} +3 -3
- package/dist/{chunk-HYNTS5CP.js → chunk-HHRZ6STP.js} +24 -2
- package/dist/chunk-HIDEIEFG.js +48 -0
- package/dist/{chunk-W6RW64BB.cjs → chunk-HSWBIDZM.cjs} +228 -5
- package/dist/{chunk-GSOUNWEL.js → chunk-HVX7QQYK.js} +1035 -1616
- package/dist/{chunk-TRCGG42I.cjs → chunk-IFW5IW4L.cjs} +6502 -1019
- package/dist/{chunk-F5LKJ6F5.cjs → chunk-IJU6AS67.cjs} +32 -28
- package/dist/{chunk-TVANHNJ7.js → chunk-IK6Z2HNC.js} +173 -3
- package/dist/{chunk-QGMUTVVH.cjs → chunk-IS7NTKY5.cjs} +20 -20
- package/dist/{chunk-YFVQWSNJ.js → chunk-IXWGYWH6.js} +3 -3
- package/dist/chunk-J2DAS2PL.js +148 -0
- package/dist/chunk-JBQXZIWB.js +148 -0
- package/dist/chunk-JBYBMBMW.js +261 -0
- package/dist/{chunk-LWUOUCYL.js → chunk-JEJ7TT54.js} +5 -5
- package/dist/{chunk-DUCB6LGL.js → chunk-JOTCTHN5.js} +211 -5
- package/dist/{chunk-47RUFYKR.js → chunk-K56UVEXV.js} +3 -3
- package/dist/{chunk-XSFNHP2E.js → chunk-KB26H447.js} +3 -3
- package/dist/{chunk-3NGDZZR4.js → chunk-KEYG7HGY.js} +430 -37
- package/dist/{chunk-DY72BMU5.js → chunk-KFVNCW4Q.js} +4 -4
- package/dist/chunk-KPGC7SK2.js +192 -0
- package/dist/chunk-KROXXBK5.cjs +53 -0
- package/dist/{chunk-ZPZAVHXL.cjs → chunk-LB3ZZMKT.cjs} +137 -19
- package/dist/chunk-LDYZWNJW.cjs +1654 -0
- package/dist/{chunk-UGXHYIWT.cjs → chunk-LHNHO27U.cjs} +28 -28
- package/dist/{chunk-ULMSSHCJ.cjs → chunk-LMB555QB.cjs} +405 -38
- package/dist/{chunk-CBJY23VL.js → chunk-MD4IVS42.js} +3 -3
- package/dist/{chunk-VMLKSV26.js → chunk-MDDWEBCX.js} +226 -3
- package/dist/chunk-MUWH4QK5.cjs +94 -0
- package/dist/{chunk-T6W3Z3SH.cjs → chunk-N2ILK7BF.cjs} +4 -4
- package/dist/{chunk-6EX3I5P4.cjs → chunk-N74QRJGP.cjs} +6 -6
- package/dist/chunk-NFFHLX37.cjs +132 -0
- package/dist/chunk-NJSYWX7H.js +190 -0
- package/dist/{chunk-SH5PPVK7.cjs → chunk-NQN5LFN4.cjs} +165 -221
- package/dist/chunk-NTQRFOPP.cjs +56 -0
- package/dist/{chunk-YFWRJW4B.js → chunk-NWMJPTVL.js} +51 -55
- package/dist/{chunk-63ZGNR2T.cjs → chunk-OC6GV5QH.cjs} +42 -42
- package/dist/{chunk-7E7GCQCK.js → chunk-OG3MBHM3.js} +9 -3
- package/dist/chunk-OMNHTCS4.cjs +264 -0
- package/dist/chunk-OQXB6NNC.cjs +117 -0
- package/dist/{chunk-Y57W2CT5.cjs → chunk-OV46CCA2.cjs} +51 -55
- package/dist/{chunk-6PRZIHGL.cjs → chunk-OV6HHKLE.cjs} +21 -266
- package/dist/{chunk-C37BHB7N.cjs → chunk-P26YYPOO.cjs} +5 -5
- package/dist/{chunk-2BZHWUSR.cjs → chunk-P7JEKJTZ.cjs} +16 -16
- package/dist/{chunk-NGBXXZLL.cjs → chunk-PDXX5UI4.cjs} +45 -45
- package/dist/{chunk-FHQFPYV4.js → chunk-PJFTTSKE.js} +8 -7
- package/dist/{chunk-GVFJ6T4S.cjs → chunk-PVODJEJ7.cjs} +721 -8
- package/dist/{chunk-ZZ7RO2UQ.js → chunk-Q265VZJ4.js} +3 -3
- package/dist/{chunk-E7JP3BS3.cjs → chunk-Q47JEE2C.cjs} +4 -4
- package/dist/chunk-QBY7LRN2.js +281 -0
- package/dist/{chunk-GH6C2QGW.cjs → chunk-QEDMOGF3.cjs} +857 -16
- package/dist/{chunk-5WUNN6ZN.cjs → chunk-QHSAVOOL.cjs} +24 -2
- package/dist/chunk-QJNCDVYM.cjs +137 -0
- package/dist/chunk-QM7FJB5W.js +4717 -0
- package/dist/chunk-QQFB4RT2.cjs +448 -0
- package/dist/chunk-QSYBHQAD.cjs +196 -0
- package/dist/{chunk-2YSNA2F2.cjs → chunk-QVJMDVYZ.cjs} +5 -5
- package/dist/chunk-RAJMAX6D.js +131 -0
- package/dist/{chunk-VVKVQZI6.js → chunk-RAN3ECAS.js} +3 -3
- package/dist/chunk-RKGUZBOC.js +79 -0
- package/dist/{chunk-HLFDZ35S.cjs → chunk-RRQIAJLQ.cjs} +8 -8
- package/dist/{chunk-PABONWKI.js → chunk-RXQNRZ5F.js} +3 -3
- package/dist/{chunk-7ZHYEITD.cjs → chunk-S4O7CFHQ.cjs} +10 -11
- package/dist/chunk-SE7ANBGN.js +128 -0
- package/dist/{chunk-X2AVEAZM.cjs → chunk-SJIRCTIS.cjs} +176 -2
- package/dist/{chunk-WXQ57LAO.js → chunk-SQXAZHDG.js} +4 -4
- package/dist/chunk-SR73L5ZP.cjs +84 -0
- package/dist/{chunk-OABEO6HH.js → chunk-SZOLTWWD.js} +2349 -214
- package/dist/{chunk-5JEU52DW.js → chunk-TPZ3BN2D.js} +3 -3
- package/dist/{chunk-QFU53KRH.js → chunk-TSTFYGGX.js} +4 -5
- package/dist/{chunk-EBS32AJI.cjs → chunk-TZCFKZ6Z.cjs} +5 -5
- package/dist/chunk-UCVZXQ63.js +724 -0
- package/dist/chunk-UGQ3QNV6.js +992 -0
- package/dist/chunk-UNMVGZVW.js +142 -0
- package/dist/{chunk-TEVX443G.js → chunk-UTUD6GJI.js} +178 -6
- package/dist/chunk-UXBYA7DV.cjs +155 -0
- package/dist/chunk-V6GXFSK7.cjs +443 -0
- package/dist/chunk-VHORVGCG.cjs +761 -0
- package/dist/{chunk-B4EKV6HQ.js → chunk-VKCTYLDN.js} +500 -442
- package/dist/{chunk-O3MGZDCT.cjs → chunk-VTEXJOSD.cjs} +63 -63
- package/dist/chunk-VVAAZITA.cjs +287 -0
- package/dist/{chunk-V7AKE5VT.cjs → chunk-W2GA3EQB.cjs} +435 -42
- package/dist/chunk-W4GABFCR.js +37 -0
- package/dist/chunk-WKEK4NCA.js +490 -0
- package/dist/{chunk-5A4TCHOC.cjs → chunk-WNYXT4TE.cjs} +4 -4
- package/dist/{chunk-S762UEV5.js → chunk-WTH23ISI.js} +6 -6
- package/dist/{chunk-BTKZGHAV.js → chunk-WWNCM473.js} +10 -6
- package/dist/{chunk-4YNYPHH3.cjs → chunk-X75H75UY.cjs} +2351 -213
- package/dist/{chunk-LYJJI7ZK.cjs → chunk-XCUDDFKC.cjs} +216 -9
- package/dist/chunk-YAO4HPJL.cjs +120 -0
- package/dist/chunk-YKY2JBER.cjs +9443 -0
- package/dist/chunk-YP5CHEYU.cjs +154 -0
- package/dist/{chunk-WRNEH5MO.js → chunk-YW3I2FQL.js} +18 -7
- package/dist/{chunk-BRNUPDHJ.js → chunk-Z557DVYN.js} +386 -19
- package/dist/{chunk-VSACG2AR.js → chunk-Z6LZUYZF.js} +21 -264
- package/dist/chunk-ZHPMP447.cjs +43 -0
- package/dist/{chunk-LODTHGST.cjs → chunk-ZK7KX5CD.cjs} +133 -70
- package/dist/{chunk-CCPSNT6B.cjs → chunk-ZRPALBQB.cjs} +5 -5
- package/dist/chunk-ZVFHPMC5.js +824 -0
- package/dist/chunk-ZVQMKUGJ.js +443 -0
- package/dist/cli/holoscript-runner.cjs +86 -48
- package/dist/cli/holoscript-runner.js +54 -16
- package/dist/codebase/index.cjs +1 -1
- package/dist/codebase/index.js +1 -1
- package/dist/compiler/agent-inference.cjs +11 -11
- package/dist/compiler/agent-inference.js +9 -6
- package/dist/compiler/android-xr.cjs +13 -12
- package/dist/compiler/android-xr.js +11 -10
- package/dist/compiler/android.cjs +12 -12
- package/dist/compiler/android.js +10 -10
- package/dist/compiler/business-quest.cjs +10 -10
- package/dist/compiler/business-quest.js +2 -2
- package/dist/compiler/coco.cjs +1 -1
- package/dist/compiler/coco.js +1 -1
- package/dist/compiler/context.cjs +9 -9
- package/dist/compiler/context.js +6 -6
- package/dist/compiler/daimon-seed.cjs +36 -0
- package/dist/compiler/daimon-seed.js +12 -0
- package/dist/compiler/domain-block-utils.cjs +205 -156
- package/dist/compiler/domain-block-utils.js +8 -7
- package/dist/compiler/dtdl.cjs +10 -10
- package/dist/compiler/dtdl.js +7 -7
- package/dist/compiler/gltf-pipeline.cjs +9 -9
- package/dist/compiler/gltf-pipeline.js +2 -2
- package/dist/compiler/godot.cjs +10 -9
- package/dist/compiler/godot.js +9 -8
- package/dist/compiler/incremental.cjs +11 -11
- package/dist/compiler/incremental.js +6 -6
- package/dist/compiler/index.cjs +2585 -3273
- package/dist/compiler/index.d.ts +149 -35
- package/dist/compiler/index.js +2197 -3102
- package/dist/compiler/ios.cjs +11 -11
- package/dist/compiler/ios.js +9 -9
- package/dist/compiler/llm-provider-capabilities.cjs +9 -9
- package/dist/compiler/llm-provider-capabilities.js +6 -6
- package/dist/compiler/nodetoy.cjs +1 -1
- package/dist/compiler/nodetoy.js +1 -1
- package/dist/compiler/openxr.cjs +11 -10
- package/dist/compiler/openxr.js +10 -9
- package/dist/compiler/remotion.cjs +1 -1
- package/dist/compiler/remotion.js +1 -1
- package/dist/compiler/reproducibility.cjs +1 -1
- package/dist/compiler/reproducibility.js +1 -1
- package/dist/compiler/sdf.cjs +11 -10
- package/dist/compiler/sdf.js +9 -8
- package/dist/compiler/semantic-scene.cjs +7 -7
- package/dist/compiler/semantic-scene.js +2 -2
- package/dist/compiler/state.cjs +9 -9
- package/dist/compiler/state.js +7 -7
- package/dist/compiler/trait-composition.cjs +11 -11
- package/dist/compiler/trait-composition.js +7 -7
- package/dist/compiler/traits/ProvenanceSemiring.d.ts +167 -0
- package/dist/compiler/traits/Semiring.d.ts +26 -0
- package/dist/compiler/unity.cjs +11 -10
- package/dist/compiler/unity.js +10 -9
- package/dist/compiler/unreal.cjs +12 -11
- package/dist/compiler/unreal.js +10 -9
- package/dist/compiler/urdf.cjs +18 -17
- package/dist/compiler/urdf.js +9 -8
- package/dist/compiler/usd-physics.cjs +11 -10
- package/dist/compiler/usd-physics.js +8 -7
- package/dist/compiler/visionos.cjs +11 -10
- package/dist/compiler/visionos.js +10 -9
- package/dist/compiler/vrchat.cjs +11 -10
- package/dist/compiler/vrchat.js +9 -8
- package/dist/compiler/wasm.cjs +14 -13
- package/dist/compiler/wasm.js +9 -8
- package/dist/compiler/webgpu.cjs +10 -9
- package/dist/compiler/webgpu.js +9 -8
- package/dist/constants.cjs +398 -0
- package/dist/constants.js +9 -0
- package/dist/coordinators/index.cjs +4 -1
- package/dist/coordinators/index.js +4 -1
- package/dist/debugger.cjs +11 -9
- package/dist/debugger.js +9 -7
- package/dist/{dist-ACXG6IH5.cjs → dist-GRMOP2UL.cjs} +341 -65
- package/dist/{dist-VD4L6V7Q.js → dist-ZBUKU2JG.js} +333 -63
- package/dist/entries/interop.cjs +23 -23
- package/dist/entries/interop.js +3 -3
- package/dist/entries/scripting.cjs +12 -11
- package/dist/entries/scripting.js +8 -7
- package/dist/evolution/index.cjs +66 -0
- package/dist/evolution/index.d.ts +162 -0
- package/dist/evolution/index.js +17 -0
- package/dist/hololand/index.cjs +41 -37
- package/dist/hololand/index.js +3 -3
- package/dist/index.cjs +12394 -3224
- package/dist/index.d.ts +260 -18
- package/dist/index.js +10755 -2182
- package/dist/keyword-registry/PluginKeywordRegistry.d.ts +138 -0
- package/dist/keyword-registry/index.cjs +29 -0
- package/dist/keyword-registry/index.d.ts +1 -0
- package/dist/keyword-registry/index.js +4 -0
- package/dist/math/tropical-spmv.cjs +11 -11
- package/dist/math/tropical-spmv.d.ts +1 -0
- package/dist/math/tropical-spmv.js +2 -2
- package/dist/math/tropicalSpmv.d.ts +43 -0
- package/dist/math/vec3.cjs +1 -1
- package/dist/math/vec3.js +1 -1
- package/dist/matter/StagedMatter.d.ts +82 -0
- package/dist/matter/index.cjs +17 -0
- package/dist/matter/index.d.ts +1 -0
- package/dist/matter/index.js +4 -0
- package/dist/{ml-dsa-Z7JDKW4L.js → ml-dsa-J6VKVT4K.js} +3 -3
- package/dist/{ml-dsa-FSKBTE3W.cjs → ml-dsa-MTIK4ZUQ.cjs} +23 -23
- package/dist/paper-0c-spike/index.cjs +1 -1
- package/dist/paper-0c-spike/index.js +1 -1
- package/dist/parameter-envelope/ParameterEnvelope.d.ts +128 -0
- package/dist/parameter-envelope/index.cjs +17 -0
- package/dist/parameter-envelope/index.d.ts +2 -0
- package/dist/parameter-envelope/index.js +4 -0
- package/dist/parser/HoloCompositionTypes.d.ts +2013 -0
- package/dist/parser/PipelineParser.d.ts +162 -0
- package/dist/parser.cjs +36 -20
- package/dist/parser.js +13 -9
- package/dist/plugin-manifest/ManifestAutoLoader.d.ts +35 -0
- package/dist/plugin-manifest/PluginManifest.d.ts +156 -0
- package/dist/plugin-manifest/index.cjs +25 -0
- package/dist/plugin-manifest/index.d.ts +2 -0
- package/dist/plugin-manifest/index.js +4 -0
- package/dist/plugin-solver-contract/PluginSolverContract.d.ts +288 -0
- package/dist/plugin-solver-contract/index.cjs +41 -0
- package/dist/plugin-solver-contract/index.d.ts +1 -0
- package/dist/plugin-solver-contract/index.js +4 -0
- package/dist/policy/ContentPolicyGate.d.ts +51 -0
- package/dist/policy/PolicyPack.d.ts +120 -0
- package/dist/policy/blocklist.d.ts +32 -0
- package/dist/policy/defaults.d.ts +44 -0
- package/dist/policy/index.cjs +106 -0
- package/dist/policy/index.d.ts +17 -0
- package/dist/policy/index.js +5 -0
- package/dist/policy/jsonLogic.d.ts +31 -0
- package/dist/policy/types.d.ts +174 -0
- package/dist/proof-composition/ProofCompositionLaw.d.ts +93 -0
- package/dist/proof-composition/index.cjs +25 -0
- package/dist/proof-composition/index.d.ts +1 -0
- package/dist/proof-composition/index.js +4 -0
- package/dist/receipts/hash-policy.d.ts +85 -0
- package/dist/reconstruction/index.cjs +75 -47
- package/dist/reconstruction/index.js +5 -5
- package/dist/runtime/plugin-trait-registrar.d.ts +36 -0
- package/dist/runtime.cjs +81 -79
- package/dist/runtime.js +9 -7
- package/dist/scene-presets-EDKYZ5GW.js +4 -0
- package/dist/scene-presets-NCW2CFRS.cjs +17 -0
- package/dist/self-improvement/index.cjs +1 -1
- package/dist/self-improvement/index.js +1 -1
- package/dist/{src-PT2FERDV.cjs → src-G3D7ZATQ.cjs} +545 -21
- package/dist/{src-J6CM4AUR.js → src-UXYA7HM6.js} +539 -16
- package/dist/storage/index.cjs +10 -10
- package/dist/storage/index.js +3 -3
- package/dist/testing.cjs +1 -1
- package/dist/testing.js +1 -1
- package/dist/tools/index.cjs +3631 -0
- package/dist/tools/index.js +3581 -0
- package/dist/traitDocs/traitDocs.cjs +9 -9
- package/dist/traitDocs/traitDocs.d.ts +1 -0
- package/dist/traitDocs/traitDocs.js +3 -3
- package/dist/traits/ControlLoopTrait.d.ts +154 -0
- package/dist/traits/KinematicChainTrait.d.ts +116 -0
- package/dist/traits/SensorSamplingTrait.d.ts +154 -0
- package/dist/traits/TraitTypes.d.ts +270 -0
- package/dist/traits/TransactionTrait.d.ts +121 -0
- package/dist/traits/botanical-lotus.cjs +54 -50
- package/dist/traits/botanical-lotus.js +2 -5
- package/dist/traits/control-loop.cjs +21 -0
- package/dist/traits/control-loop.d.ts +1 -0
- package/dist/traits/control-loop.js +4 -0
- package/dist/traits/engines/cloth-verlet.d.ts +65 -0
- package/dist/traits/engines/index.cjs +19 -19
- package/dist/traits/engines/index.d.ts +15 -275
- package/dist/traits/engines/index.js +3 -3
- package/dist/traits/engines/motion-data-schema.d.ts +119 -0
- package/dist/traits/engines/motion-matching.d.ts +102 -0
- package/dist/traits/engines/noise.d.ts +25 -0
- package/dist/traits/engines/onnx-adapter.d.ts +173 -0
- package/dist/traits/engines/onnx-motion-matching.d.ts +163 -0
- package/dist/traits/engines/pfnn-network.d.ts +92 -0
- package/dist/traits/engines/synthetic-walk-cycle.d.ts +38 -0
- package/dist/traits/engines/tensor-ops.d.ts +15 -0
- package/dist/traits/index.cjs +2789 -1259
- package/dist/traits/index.d.ts +35 -0
- package/dist/traits/index.js +1692 -411
- package/dist/traits/kinematic-chain.cjs +25 -0
- package/dist/traits/kinematic-chain.d.ts +1 -0
- package/dist/traits/kinematic-chain.js +4 -0
- package/dist/traits/sensor-sampling.cjs +33 -0
- package/dist/traits/sensor-sampling.d.ts +1 -0
- package/dist/traits/sensor-sampling.js +4 -0
- package/dist/traits/simulation-solver-factory.cjs +1 -1
- package/dist/traits/simulation-solver-factory.js +1 -1
- package/dist/traits/transaction.cjs +29 -0
- package/dist/traits/transaction.d.ts +1 -0
- package/dist/traits/transaction.js +4 -0
- package/dist/traits/webcam-gaze.cjs +1 -1
- package/dist/traits/webcam-gaze.js +1 -1
- package/dist/type-checker.cjs +7 -6
- package/dist/type-checker.js +5 -4
- package/dist/types/AdvancedTypeSystem.d.ts +489 -0
- package/dist/types/HoloScriptPlus.d.ts +810 -0
- package/dist/types/base.d.ts +248 -0
- package/dist/types.d.ts +799 -0
- package/dist/world/index.cjs +3 -4
- package/dist/world/index.js +3 -4
- package/dist/world-model/index.cjs +1 -1
- package/dist/world-model/index.js +1 -1
- package/dist/wot/index.cjs +1 -1
- package/dist/wot/index.js +1 -1
- package/package.json +135 -69
- package/dist/GLTFPipeline-3EJLL3TS.cjs +0 -38
- package/dist/GLTFPipeline-3OWJV2VK.js +0 -17
- package/dist/HoloScriptPlusParser-ADWRY5OS.cjs +0 -698
- package/dist/HoloScriptPlusParser-JLJDXHSC.js +0 -693
- package/dist/HoloScriptPlusParser-QCGFPWIL.cjs +0 -27
- package/dist/HoloScriptPlusParser-WENAFEFV.js +0 -10
- package/dist/HoloScriptRuntime-GGRVEU4T.cjs +0 -19
- package/dist/HoloScriptRuntime-GJK6VJPH.js +0 -10
- package/dist/chunk-22Q5A6RV.js +0 -979
- package/dist/chunk-4C57PR42.js +0 -468
- package/dist/chunk-4W5G5QVL.cjs +0 -847
- package/dist/chunk-5ET6L4NS.js +0 -487
- package/dist/chunk-C4GSLCHE.cjs +0 -7153
- package/dist/chunk-F2G6CWFT.js +0 -7089
- package/dist/chunk-G6PNEASF.cjs +0 -814
- package/dist/chunk-GTA4Q3A3.js +0 -1491
- package/dist/chunk-HCCQLAA4.cjs +0 -74
- package/dist/chunk-HFSVMKM3.cjs +0 -72
- package/dist/chunk-KAIVDEIG.cjs +0 -4539
- package/dist/chunk-KQU64CIX.cjs +0 -1508
- package/dist/chunk-MSYSQ2AJ.js +0 -4533
- package/dist/chunk-NHJLP37F.js +0 -70
- package/dist/chunk-NHYRRAGI.cjs +0 -490
- package/dist/chunk-OIQYIIO3.cjs +0 -473
- package/dist/chunk-OL46QLBJ.js +0 -61
- package/dist/chunk-SKZPC5AG.cjs +0 -984
- package/dist/chunk-SLHLXUMO.js +0 -445
- package/dist/chunk-UOIGFQXC.cjs +0 -9750
- package/dist/chunk-UOL6Y5TD.cjs +0 -759
- package/dist/chunk-UVFI7XIR.cjs +0 -452
- package/dist/chunk-VEPGBETF.js +0 -844
- package/dist/chunk-XQ5MWMP2.js +0 -756
- package/dist/chunk-XT6JY5W5.js +0 -9684
- package/dist/chunk-YRRAUB35.js +0 -811
- package/dist/compiler/GasOptimizationAnalyzer.d.ts +0 -73
- package/dist/compiler/NFTMarketplaceCompiler.d.ts +0 -23
- package/dist/compiler/ar.cjs +0 -23
- package/dist/compiler/ar.js +0 -11
- package/dist/compiler/babylon.cjs +0 -21
- package/dist/compiler/babylon.js +0 -15
- package/dist/compiler/multi-layer.cjs +0 -24
- package/dist/compiler/multi-layer.js +0 -15
- package/dist/compiler/playcanvas.cjs +0 -19
- package/dist/compiler/playcanvas.js +0 -13
- package/dist/compiler/r3f.cjs +0 -39
- package/dist/compiler/r3f.d.ts +0 -22
- package/dist/compiler/r3f.js +0 -17
- package/dist/compiler/vrr.cjs +0 -24
- package/dist/compiler/vrr.js +0 -12
- package/dist/parser/NFTMarketplaceTypes.d.ts +0 -191
- package/dist/playwright-3AT3AKTV.cjs +0 -98673
- package/dist/playwright-VZPDVUEQ.js +0 -98660
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkVHORVGCG_cjs = require('./chunk-VHORVGCG.cjs');
|
|
4
|
+
var chunkZK7KX5CD_cjs = require('./chunk-ZK7KX5CD.cjs');
|
|
5
|
+
var chunkZHPMP447_cjs = require('./chunk-ZHPMP447.cjs');
|
|
5
6
|
|
|
6
7
|
// src/compiler/DomainBlockCompilerMixin.ts
|
|
7
8
|
function esc(value, target) {
|
|
8
|
-
return
|
|
9
|
+
return chunkZK7KX5CD_cjs.escapeStringValue(value, target);
|
|
9
10
|
}
|
|
10
11
|
function isPhysicalMaterial(mat) {
|
|
11
12
|
return PHYSICAL_MATERIAL_KEYS.some((k) => mat[k] !== void 0);
|
|
@@ -46,6 +47,662 @@ function compileMaterialBlock(block) {
|
|
|
46
47
|
traits: block.traits || []
|
|
47
48
|
};
|
|
48
49
|
}
|
|
50
|
+
function compileMaterialGraphBlock(block) {
|
|
51
|
+
const props = block.properties || {};
|
|
52
|
+
const nodes = [];
|
|
53
|
+
for (const [key, raw] of Object.entries(props)) {
|
|
54
|
+
if (key === "connections") continue;
|
|
55
|
+
const nodeObj = raw && typeof raw === "object" ? raw : {};
|
|
56
|
+
const { type: nodeType, ...params } = nodeObj;
|
|
57
|
+
nodes.push({
|
|
58
|
+
id: key,
|
|
59
|
+
nodeType: typeof nodeType === "string" ? nodeType : "constant",
|
|
60
|
+
params
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
const rawConns = Array.isArray(props.connections) ? props.connections : [];
|
|
64
|
+
const edges = [];
|
|
65
|
+
for (const c of rawConns) {
|
|
66
|
+
const from = typeof c.from === "string" ? c.from : "";
|
|
67
|
+
const to = typeof c.to === "string" ? c.to : "";
|
|
68
|
+
if (!from || !to) continue;
|
|
69
|
+
const dot = to.indexOf(".");
|
|
70
|
+
const toNode = dot >= 0 ? to.slice(0, dot) : to;
|
|
71
|
+
const toPort = dot >= 0 ? to.slice(dot + 1) : "in";
|
|
72
|
+
edges.push({ from, toNode, toPort });
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
name: block.name || "unnamed",
|
|
76
|
+
nodes,
|
|
77
|
+
edges,
|
|
78
|
+
traits: block.traits || []
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function sanitizeMgIdent(id) {
|
|
82
|
+
const s = id.replace(/[^A-Za-z0-9_]/g, "_");
|
|
83
|
+
return /^[A-Za-z_]/.test(s) ? s : `n_${s}`;
|
|
84
|
+
}
|
|
85
|
+
function mgHexToVec3(value) {
|
|
86
|
+
const hex = typeof value === "string" ? value : "";
|
|
87
|
+
const m = /^#?([0-9a-fA-F]{6})$/.exec(hex.trim());
|
|
88
|
+
if (!m) return "vec3<f32>(0.5, 0.5, 0.5)";
|
|
89
|
+
const n = parseInt(m[1], 16);
|
|
90
|
+
const r = (n >> 16 & 255) / 255;
|
|
91
|
+
const g = (n >> 8 & 255) / 255;
|
|
92
|
+
const b = (n & 255) / 255;
|
|
93
|
+
return `vec3<f32>(${r.toFixed(4)}, ${g.toFixed(4)}, ${b.toFixed(4)})`;
|
|
94
|
+
}
|
|
95
|
+
function materialGraphToWGSL(graph) {
|
|
96
|
+
const safeName = sanitizeMgIdent(graph.name);
|
|
97
|
+
const fnName = `evalMaterialGraph_${safeName}`;
|
|
98
|
+
const warnings = [];
|
|
99
|
+
const nodeById = new Map(graph.nodes.map((n) => [n.id, n]));
|
|
100
|
+
const inputs = /* @__PURE__ */ new Map();
|
|
101
|
+
for (const n of graph.nodes) inputs.set(n.id, /* @__PURE__ */ new Map());
|
|
102
|
+
for (const e of graph.edges) {
|
|
103
|
+
if (!nodeById.has(e.from)) {
|
|
104
|
+
warnings.push(`edge from unknown node "${e.from}"`);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (!inputs.has(e.toNode)) {
|
|
108
|
+
warnings.push(`edge to unknown node "${e.toNode}"`);
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
inputs.get(e.toNode).set(e.toPort, e.from);
|
|
112
|
+
}
|
|
113
|
+
const indeg = /* @__PURE__ */ new Map();
|
|
114
|
+
const adj = /* @__PURE__ */ new Map();
|
|
115
|
+
for (const n of graph.nodes) {
|
|
116
|
+
indeg.set(n.id, 0);
|
|
117
|
+
adj.set(n.id, []);
|
|
118
|
+
}
|
|
119
|
+
for (const e of graph.edges) {
|
|
120
|
+
if (!nodeById.has(e.from) || !nodeById.has(e.toNode)) continue;
|
|
121
|
+
adj.get(e.from).push(e.toNode);
|
|
122
|
+
indeg.set(e.toNode, (indeg.get(e.toNode) || 0) + 1);
|
|
123
|
+
}
|
|
124
|
+
const queue = graph.nodes.filter((n) => (indeg.get(n.id) || 0) === 0).map((n) => n.id);
|
|
125
|
+
const order = [];
|
|
126
|
+
while (queue.length) {
|
|
127
|
+
const id = queue.shift();
|
|
128
|
+
order.push(id);
|
|
129
|
+
for (const next of adj.get(id) || []) {
|
|
130
|
+
indeg.set(next, (indeg.get(next) || 0) - 1);
|
|
131
|
+
if ((indeg.get(next) || 0) === 0) queue.push(next);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (order.length < graph.nodes.length) {
|
|
135
|
+
warnings.push("material graph has a cycle; emitting nodes in declaration order");
|
|
136
|
+
for (const n of graph.nodes) if (!order.includes(n.id)) order.push(n.id);
|
|
137
|
+
}
|
|
138
|
+
const values = /* @__PURE__ */ new Map();
|
|
139
|
+
const inPort = (nodeId, port) => {
|
|
140
|
+
const from = inputs.get(nodeId)?.get(port);
|
|
141
|
+
return from ? values.get(from) : void 0;
|
|
142
|
+
};
|
|
143
|
+
const body = [];
|
|
144
|
+
let output = null;
|
|
145
|
+
for (const id of order) {
|
|
146
|
+
const node = nodeById.get(id);
|
|
147
|
+
const v = sanitizeMgIdent(id);
|
|
148
|
+
switch (node.nodeType) {
|
|
149
|
+
case "constant": {
|
|
150
|
+
if (typeof node.params.value === "number") {
|
|
151
|
+
body.push(` let mg_${v} = ${node.params.value.toFixed(4)}; // constant`);
|
|
152
|
+
values.set(id, { ref: `mg_${v}`, type: "f32" });
|
|
153
|
+
} else {
|
|
154
|
+
body.push(` let mg_${v} = ${mgHexToVec3(node.params.value)}; // constant`);
|
|
155
|
+
values.set(id, { ref: `mg_${v}`, type: "vec3" });
|
|
156
|
+
}
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
case "noise": {
|
|
160
|
+
const scale = typeof node.params.scale === "number" ? node.params.scale : 1;
|
|
161
|
+
body.push(` let mg_${v} = mgNoise(uv * ${scale.toFixed(4)}); // noise`);
|
|
162
|
+
values.set(id, { ref: `mg_${v}`, type: "f32" });
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
case "fresnel": {
|
|
166
|
+
const power = typeof node.params.power === "number" ? node.params.power : 5;
|
|
167
|
+
body.push(
|
|
168
|
+
` let mg_${v} = pow(1.0 - max(dot(N, V), 0.0), ${power.toFixed(4)}); // fresnel`
|
|
169
|
+
);
|
|
170
|
+
values.set(id, { ref: `mg_${v}`, type: "f32" });
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
case "multiply":
|
|
174
|
+
case "add": {
|
|
175
|
+
const a = inPort(id, "a");
|
|
176
|
+
const b = inPort(id, "b");
|
|
177
|
+
const op = node.nodeType === "multiply" ? "*" : "+";
|
|
178
|
+
const asVec = a?.type === "vec3" || b?.type === "vec3";
|
|
179
|
+
if (asVec) {
|
|
180
|
+
body.push(` let mg_${v} = ${mgToVec3(a)} ${op} ${mgToVec3(b)}; // ${node.nodeType}`);
|
|
181
|
+
values.set(id, { ref: `mg_${v}`, type: "vec3" });
|
|
182
|
+
} else {
|
|
183
|
+
body.push(` let mg_${v} = ${mgToF32(a)} ${op} ${mgToF32(b)}; // ${node.nodeType}`);
|
|
184
|
+
values.set(id, { ref: `mg_${v}`, type: "f32" });
|
|
185
|
+
}
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
case "lerp": {
|
|
189
|
+
const a = inPort(id, "a");
|
|
190
|
+
const b = inPort(id, "b");
|
|
191
|
+
const t = inPort(id, "t");
|
|
192
|
+
body.push(
|
|
193
|
+
` let mg_${v} = mix(${mgToVec3(a)}, ${mgToVec3(b)}, vec3<f32>(${mgToF32(t)})); // lerp`
|
|
194
|
+
);
|
|
195
|
+
values.set(id, { ref: `mg_${v}`, type: "vec3" });
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
case "output": {
|
|
199
|
+
output = { id };
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
default: {
|
|
203
|
+
warnings.push(`unknown node type "${node.nodeType}" (node "${id}") \u2014 treated as black`);
|
|
204
|
+
body.push(` let mg_${v} = vec3<f32>(0.0); // unknown:${esc(node.nodeType, "TypeScript")}`);
|
|
205
|
+
values.set(id, { ref: `mg_${v}`, type: "vec3" });
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const baseColorIn = output ? inPort(output.id, "base_color") : void 0;
|
|
210
|
+
const roughnessIn = output ? inPort(output.id, "roughness") : void 0;
|
|
211
|
+
const metallicIn = output ? inPort(output.id, "metallic") : void 0;
|
|
212
|
+
const emissiveIn = output ? inPort(output.id, "emissive") : void 0;
|
|
213
|
+
const baseColor = baseColorIn ? mgToVec3(baseColorIn) : "vec3<f32>(0.8)";
|
|
214
|
+
const roughness = roughnessIn ? mgToF32(roughnessIn, "0.5") : "0.5";
|
|
215
|
+
const metallic = metallicIn ? mgToF32(metallicIn, "0.0") : "0.0";
|
|
216
|
+
const emissive = emissiveIn ? mgToVec3(emissiveIn) : "vec3<f32>(0.0)";
|
|
217
|
+
const header = [
|
|
218
|
+
`// Material Graph "${esc(graph.name, "TypeScript")}" \u2014 generated by HoloScript TSLCompiler`,
|
|
219
|
+
`// Nodes: ${graph.nodes.length} | Edges: ${graph.edges.length} | topo-ordered: [${order.map((o) => esc(o, "TypeScript")).join(" -> ")}]`,
|
|
220
|
+
...warnings.map((w) => `// WARNING: ${esc(w, "TypeScript")}`)
|
|
221
|
+
];
|
|
222
|
+
const wgsl = [
|
|
223
|
+
...header,
|
|
224
|
+
"",
|
|
225
|
+
"struct MaterialGraphSurface {",
|
|
226
|
+
" baseColor: vec3<f32>,",
|
|
227
|
+
" roughness: f32,",
|
|
228
|
+
" metallic: f32,",
|
|
229
|
+
" emissive: vec3<f32>,",
|
|
230
|
+
"};",
|
|
231
|
+
"",
|
|
232
|
+
"// Cheap value-noise helper (hash-based); replace with a texture sample for AAA fidelity.",
|
|
233
|
+
"fn mgNoise(p: vec2<f32>) -> f32 {",
|
|
234
|
+
" return fract(sin(dot(p, vec2<f32>(12.9898, 78.233))) * 43758.5453);",
|
|
235
|
+
"}",
|
|
236
|
+
"",
|
|
237
|
+
`fn ${fnName}(uv: vec2<f32>, N: vec3<f32>, V: vec3<f32>, time: f32) -> MaterialGraphSurface {`,
|
|
238
|
+
...body,
|
|
239
|
+
" var surface: MaterialGraphSurface;",
|
|
240
|
+
` surface.baseColor = ${baseColor};`,
|
|
241
|
+
` surface.roughness = ${roughness};`,
|
|
242
|
+
` surface.metallic = ${metallic};`,
|
|
243
|
+
` surface.emissive = ${emissive};`,
|
|
244
|
+
" return surface;",
|
|
245
|
+
"}"
|
|
246
|
+
].join("\n");
|
|
247
|
+
return { fnName, wgsl };
|
|
248
|
+
}
|
|
249
|
+
function compileParticleFieldBlock(block) {
|
|
250
|
+
const props = block.properties || {};
|
|
251
|
+
const forces = [];
|
|
252
|
+
let count = 1e3;
|
|
253
|
+
let lifetime = 2;
|
|
254
|
+
for (const [key, raw] of Object.entries(props)) {
|
|
255
|
+
if (key === "count" && typeof raw === "number") {
|
|
256
|
+
count = raw;
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
if (key === "lifetime" && typeof raw === "number") {
|
|
260
|
+
lifetime = raw;
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
if (raw && typeof raw === "object" && !Array.isArray(raw)) {
|
|
264
|
+
const { type, ...params } = raw;
|
|
265
|
+
if (typeof type === "string") forces.push({ id: key, forceType: type, params });
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return { name: block.name || "unnamed", count, lifetime, forces, traits: block.traits || [] };
|
|
269
|
+
}
|
|
270
|
+
function particleFieldToWGSL(field) {
|
|
271
|
+
const safe = sanitizeMgIdent(field.name);
|
|
272
|
+
const fnName = `cs_particle_field_${safe}`;
|
|
273
|
+
const warnings = [];
|
|
274
|
+
const num = (p, k, d) => typeof p[k] === "number" ? p[k] : d;
|
|
275
|
+
const forceLines = [];
|
|
276
|
+
for (const f of field.forces) {
|
|
277
|
+
const p = f.params;
|
|
278
|
+
switch (f.forceType) {
|
|
279
|
+
case "gravity":
|
|
280
|
+
forceLines.push(
|
|
281
|
+
` accel += vec3<f32>(0.0, ${num(p, "strength", -9.81).toFixed(4)}, 0.0); // gravity:${esc(f.id, "TypeScript")}`
|
|
282
|
+
);
|
|
283
|
+
break;
|
|
284
|
+
case "drag":
|
|
285
|
+
forceLines.push(
|
|
286
|
+
` accel -= p.vel * ${num(p, "coefficient", 0.1).toFixed(4)}; // drag:${esc(f.id, "TypeScript")}`
|
|
287
|
+
);
|
|
288
|
+
break;
|
|
289
|
+
case "vortex":
|
|
290
|
+
forceLines.push(
|
|
291
|
+
` accel += normalize(vec3<f32>(-p.pos.z, 0.0, p.pos.x) + vec3<f32>(1e-4)) * ${num(p, "strength", 1).toFixed(4)}; // vortex:${esc(f.id, "TypeScript")}`
|
|
292
|
+
);
|
|
293
|
+
break;
|
|
294
|
+
case "attractor":
|
|
295
|
+
forceLines.push(
|
|
296
|
+
` accel += -normalize(p.pos + vec3<f32>(1e-4)) * ${num(p, "strength", 1).toFixed(4)}; // attractor:${esc(f.id, "TypeScript")}`
|
|
297
|
+
);
|
|
298
|
+
break;
|
|
299
|
+
case "curl_noise":
|
|
300
|
+
case "turbulence":
|
|
301
|
+
forceLines.push(
|
|
302
|
+
` accel += pfCurl(p.pos * ${num(p, "scale", 1).toFixed(4)}) * ${num(p, "strength", 1).toFixed(4)}; // ${f.forceType}:${esc(f.id, "TypeScript")}`
|
|
303
|
+
);
|
|
304
|
+
break;
|
|
305
|
+
default:
|
|
306
|
+
warnings.push(`unknown force "${f.forceType}" (node "${f.id}") \u2014 skipped`);
|
|
307
|
+
forceLines.push(` // unknown force ${esc(f.forceType, "TypeScript")}:${esc(f.id, "TypeScript")}`);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
if (forceLines.length === 0) forceLines.push(" // no forces declared \u2014 particles drift inertially");
|
|
311
|
+
const wgsl = [
|
|
312
|
+
`// Particle Field "${esc(field.name, "TypeScript")}" \u2014 generated by HoloScript TSLCompiler`,
|
|
313
|
+
`// count: ${field.count} | lifetime: ${field.lifetime} | forces: [${field.forces.map((f) => `${esc(f.forceType, "TypeScript")}:${esc(f.id, "TypeScript")}`).join(", ")}]`,
|
|
314
|
+
...warnings.map((w) => `// WARNING: ${esc(w, "TypeScript")}`),
|
|
315
|
+
"",
|
|
316
|
+
`struct ParticleField_${safe} {`,
|
|
317
|
+
" pos: vec3<f32>,",
|
|
318
|
+
" life: f32,",
|
|
319
|
+
" vel: vec3<f32>,",
|
|
320
|
+
" _pad: f32,",
|
|
321
|
+
"};",
|
|
322
|
+
"",
|
|
323
|
+
"// hash-based value noise \u2192 cheap curl approximation for turbulent forces",
|
|
324
|
+
"fn pfHash3(p: vec3<f32>) -> f32 {",
|
|
325
|
+
" return fract(sin(dot(p, vec3<f32>(12.9898, 78.233, 37.719))) * 43758.5453);",
|
|
326
|
+
"}",
|
|
327
|
+
"fn pfCurl(p: vec3<f32>) -> vec3<f32> {",
|
|
328
|
+
" let e = 0.1;",
|
|
329
|
+
" let dx = pfHash3(p + vec3<f32>(e, 0.0, 0.0)) - pfHash3(p - vec3<f32>(e, 0.0, 0.0));",
|
|
330
|
+
" let dy = pfHash3(p + vec3<f32>(0.0, e, 0.0)) - pfHash3(p - vec3<f32>(0.0, e, 0.0));",
|
|
331
|
+
" let dz = pfHash3(p + vec3<f32>(0.0, 0.0, e)) - pfHash3(p - vec3<f32>(0.0, 0.0, e));",
|
|
332
|
+
" return vec3<f32>(dy - dz, dz - dx, dx - dy);",
|
|
333
|
+
"}",
|
|
334
|
+
"",
|
|
335
|
+
`@group(0) @binding(0) var<storage, read> pfIn_${safe}: array<ParticleField_${safe}>;`,
|
|
336
|
+
`@group(0) @binding(1) var<storage, read_write> pfOut_${safe}: array<ParticleField_${safe}>;`,
|
|
337
|
+
`@group(0) @binding(2) var<uniform> pfDt_${safe}: f32;`,
|
|
338
|
+
"",
|
|
339
|
+
"@compute @workgroup_size(64)",
|
|
340
|
+
`fn ${fnName}(@builtin(global_invocation_id) gid: vec3<u32>) {`,
|
|
341
|
+
` let i = gid.x;`,
|
|
342
|
+
` if (i >= arrayLength(&pfIn_${safe})) { return; }`,
|
|
343
|
+
` var p = pfIn_${safe}[i];`,
|
|
344
|
+
` let dt = pfDt_${safe};`,
|
|
345
|
+
" var accel = vec3<f32>(0.0);",
|
|
346
|
+
...forceLines,
|
|
347
|
+
" p.vel += accel * dt;",
|
|
348
|
+
" p.pos += p.vel * dt;",
|
|
349
|
+
" p.life -= dt;",
|
|
350
|
+
" if (p.life <= 0.0) {",
|
|
351
|
+
" p.pos = vec3<f32>(0.0);",
|
|
352
|
+
" p.vel = vec3<f32>(0.0, 1.0, 0.0);",
|
|
353
|
+
` p.life = ${field.lifetime.toFixed(4)};`,
|
|
354
|
+
" }",
|
|
355
|
+
` pfOut_${safe}[i] = p;`,
|
|
356
|
+
"}"
|
|
357
|
+
].join("\n");
|
|
358
|
+
return { fnName, wgsl };
|
|
359
|
+
}
|
|
360
|
+
function compileLightFieldBlock(block) {
|
|
361
|
+
const props = block.properties || {};
|
|
362
|
+
const lights = [];
|
|
363
|
+
let ambient = "#000000";
|
|
364
|
+
let bounces = 1;
|
|
365
|
+
let intensity = 1;
|
|
366
|
+
for (const [key, raw] of Object.entries(props)) {
|
|
367
|
+
if (key === "ambient" && typeof raw === "string") {
|
|
368
|
+
ambient = raw;
|
|
369
|
+
continue;
|
|
370
|
+
}
|
|
371
|
+
if (key === "bounces" && typeof raw === "number") {
|
|
372
|
+
bounces = raw;
|
|
373
|
+
continue;
|
|
374
|
+
}
|
|
375
|
+
if (key === "intensity" && typeof raw === "number") {
|
|
376
|
+
intensity = raw;
|
|
377
|
+
continue;
|
|
378
|
+
}
|
|
379
|
+
if (raw && typeof raw === "object" && !Array.isArray(raw)) {
|
|
380
|
+
const { type, ...params } = raw;
|
|
381
|
+
if (typeof type === "string") lights.push({ id: key, lightType: type, params });
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
return { name: block.name || "unnamed", ambient, bounces, intensity, lights, traits: block.traits || [] };
|
|
385
|
+
}
|
|
386
|
+
function lightFieldToWGSL(field) {
|
|
387
|
+
const safe = sanitizeMgIdent(field.name);
|
|
388
|
+
const fnName = `evalLightField_${safe}`;
|
|
389
|
+
const warnings = [];
|
|
390
|
+
const num = (p, k, d) => typeof p[k] === "number" ? p[k] : d;
|
|
391
|
+
const lightBlocks = [];
|
|
392
|
+
for (const l of field.lights) {
|
|
393
|
+
const p = l.params;
|
|
394
|
+
const color = mgHexToVec3(p.color);
|
|
395
|
+
const intensity = num(p, "intensity", 1).toFixed(4);
|
|
396
|
+
switch (l.lightType) {
|
|
397
|
+
case "directional":
|
|
398
|
+
case "sun":
|
|
399
|
+
lightBlocks.push(
|
|
400
|
+
[
|
|
401
|
+
` { // directional:${esc(l.id, "TypeScript")}`,
|
|
402
|
+
` let L = normalize(-vec3<f32>(${num(p, "dir_x", 0).toFixed(4)}, ${num(p, "dir_y", -1).toFixed(4)}, ${num(p, "dir_z", 0).toFixed(4)}));`,
|
|
403
|
+
` let NdotL = max(dot(N, L), 0.0);`,
|
|
404
|
+
` radiance += albedo * ${color} * ${intensity} * NdotL;`,
|
|
405
|
+
` }`
|
|
406
|
+
].join("\n")
|
|
407
|
+
);
|
|
408
|
+
break;
|
|
409
|
+
case "point":
|
|
410
|
+
lightBlocks.push(
|
|
411
|
+
[
|
|
412
|
+
` { // point:${esc(l.id, "TypeScript")}`,
|
|
413
|
+
` let d = vec3<f32>(${num(p, "pos_x", 0).toFixed(4)}, ${num(p, "pos_y", 0).toFixed(4)}, ${num(p, "pos_z", 0).toFixed(4)}) - worldPos;`,
|
|
414
|
+
` let dist = length(d);`,
|
|
415
|
+
` let L = d / max(dist, 1e-4);`,
|
|
416
|
+
` let NdotL = max(dot(N, L), 0.0);`,
|
|
417
|
+
` let atten = 1.0 / (1.0 + (dist * dist) / (${num(p, "range", 10).toFixed(4)} * ${num(p, "range", 10).toFixed(4)}));`,
|
|
418
|
+
` radiance += albedo * ${color} * ${intensity} * NdotL * atten;`,
|
|
419
|
+
` }`
|
|
420
|
+
].join("\n")
|
|
421
|
+
);
|
|
422
|
+
break;
|
|
423
|
+
case "spot":
|
|
424
|
+
lightBlocks.push(
|
|
425
|
+
[
|
|
426
|
+
` { // spot:${esc(l.id, "TypeScript")}`,
|
|
427
|
+
` let d = vec3<f32>(${num(p, "pos_x", 0).toFixed(4)}, ${num(p, "pos_y", 5).toFixed(4)}, ${num(p, "pos_z", 0).toFixed(4)}) - worldPos;`,
|
|
428
|
+
` let dist = length(d);`,
|
|
429
|
+
` let L = d / max(dist, 1e-4);`,
|
|
430
|
+
` let spotDir = normalize(vec3<f32>(${num(p, "dir_x", 0).toFixed(4)}, ${num(p, "dir_y", -1).toFixed(4)}, ${num(p, "dir_z", 0).toFixed(4)}));`,
|
|
431
|
+
` let cone = smoothstep(${Math.cos(num(p, "cone", 30) * Math.PI / 180).toFixed(4)}, 1.0, dot(-L, spotDir));`,
|
|
432
|
+
` let NdotL = max(dot(N, L), 0.0);`,
|
|
433
|
+
` let atten = 1.0 / (1.0 + (dist * dist) / (${num(p, "range", 10).toFixed(4)} * ${num(p, "range", 10).toFixed(4)}));`,
|
|
434
|
+
` radiance += albedo * ${color} * ${intensity} * NdotL * atten * cone;`,
|
|
435
|
+
` }`
|
|
436
|
+
].join("\n")
|
|
437
|
+
);
|
|
438
|
+
break;
|
|
439
|
+
case "ambient":
|
|
440
|
+
case "ambient_probe":
|
|
441
|
+
case "sky":
|
|
442
|
+
lightBlocks.push(
|
|
443
|
+
[
|
|
444
|
+
` { // ambient:${esc(l.id, "TypeScript")}`,
|
|
445
|
+
` radiance += albedo * ${color} * ${intensity};`,
|
|
446
|
+
` }`
|
|
447
|
+
].join("\n")
|
|
448
|
+
);
|
|
449
|
+
break;
|
|
450
|
+
default:
|
|
451
|
+
warnings.push(`unknown light "${l.lightType}" (node "${l.id}") \u2014 skipped`);
|
|
452
|
+
lightBlocks.push(` // unknown light ${esc(l.lightType, "TypeScript")}:${esc(l.id, "TypeScript")}`);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
const giScale = `(${field.intensity.toFixed(4)} * (1.0 + f32(${Math.round(field.bounces)}) * 0.5))`;
|
|
456
|
+
const wgsl = [
|
|
457
|
+
`// Light Field "${esc(field.name, "TypeScript")}" \u2014 generated by HoloScript TSLCompiler`,
|
|
458
|
+
`// ambient: ${esc(field.ambient, "TypeScript")} | bounces: ${field.bounces} | lights: [${field.lights.map((l) => `${esc(l.lightType, "TypeScript")}:${esc(l.id, "TypeScript")}`).join(", ")}]`,
|
|
459
|
+
...warnings.map((w) => `// WARNING: ${esc(w, "TypeScript")}`),
|
|
460
|
+
"",
|
|
461
|
+
`fn ${fnName}(worldPos: vec3<f32>, N: vec3<f32>, V: vec3<f32>, albedo: vec3<f32>, roughness: f32, metallic: f32) -> vec3<f32> {`,
|
|
462
|
+
" var radiance = vec3<f32>(0.0);",
|
|
463
|
+
" // ambient / GI base \u2014 bounces approximated as an indirect ambient lift",
|
|
464
|
+
` radiance += albedo * ${mgHexToVec3(field.ambient)} * ${giScale};`,
|
|
465
|
+
...lightBlocks,
|
|
466
|
+
" return radiance;",
|
|
467
|
+
"}"
|
|
468
|
+
].join("\n");
|
|
469
|
+
return { fnName, wgsl };
|
|
470
|
+
}
|
|
471
|
+
function compileNavFieldBlock(block) {
|
|
472
|
+
const props = block.properties || {};
|
|
473
|
+
const behaviors = [];
|
|
474
|
+
let agents = 256;
|
|
475
|
+
let maxSpeed = 2;
|
|
476
|
+
for (const [key, raw] of Object.entries(props)) {
|
|
477
|
+
if (key === "agents" && typeof raw === "number") {
|
|
478
|
+
agents = raw;
|
|
479
|
+
continue;
|
|
480
|
+
}
|
|
481
|
+
if ((key === "max_speed" || key === "maxSpeed") && typeof raw === "number") {
|
|
482
|
+
maxSpeed = raw;
|
|
483
|
+
continue;
|
|
484
|
+
}
|
|
485
|
+
if (raw && typeof raw === "object" && !Array.isArray(raw)) {
|
|
486
|
+
const { type, ...params } = raw;
|
|
487
|
+
if (typeof type === "string") behaviors.push({ id: key, behaviorType: type, params });
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
return { name: block.name || "unnamed", agents, maxSpeed, behaviors, traits: block.traits || [] };
|
|
491
|
+
}
|
|
492
|
+
function navFieldToWGSL(field) {
|
|
493
|
+
const safe = sanitizeMgIdent(field.name);
|
|
494
|
+
const fnName = `cs_nav_field_${safe}`;
|
|
495
|
+
const ms = field.maxSpeed.toFixed(4);
|
|
496
|
+
const warnings = [];
|
|
497
|
+
const num = (p, k, d) => typeof p[k] === "number" ? p[k] : d;
|
|
498
|
+
const steerLines = [];
|
|
499
|
+
for (const b of field.behaviors) {
|
|
500
|
+
const p = b.params;
|
|
501
|
+
const w = num(p, "weight", 1).toFixed(4);
|
|
502
|
+
const target = `vec3<f32>(${num(p, "target_x", 0).toFixed(4)}, ${num(p, "target_y", 0).toFixed(4)}, ${num(p, "target_z", 0).toFixed(4)})`;
|
|
503
|
+
switch (b.behaviorType) {
|
|
504
|
+
case "seek":
|
|
505
|
+
steerLines.push(
|
|
506
|
+
` { let desired = normalize(${target} - a.pos + vec3<f32>(1e-4)) * ${ms}; steer += (desired - a.vel) * ${w}; } // seek:${esc(b.id, "TypeScript")}`
|
|
507
|
+
);
|
|
508
|
+
break;
|
|
509
|
+
case "flee":
|
|
510
|
+
steerLines.push(
|
|
511
|
+
` { let desired = normalize(a.pos - ${target} + vec3<f32>(1e-4)) * ${ms}; steer += (desired - a.vel) * ${w}; } // flee:${esc(b.id, "TypeScript")}`
|
|
512
|
+
);
|
|
513
|
+
break;
|
|
514
|
+
case "flow":
|
|
515
|
+
steerLines.push(
|
|
516
|
+
` { let desired = normalize(vec3<f32>(${num(p, "dir_x", 1).toFixed(4)}, ${num(p, "dir_y", 0).toFixed(4)}, ${num(p, "dir_z", 0).toFixed(4)}) + vec3<f32>(1e-4)) * ${ms}; steer += (desired - a.vel) * ${w}; } // flow:${esc(b.id, "TypeScript")}`
|
|
517
|
+
);
|
|
518
|
+
break;
|
|
519
|
+
case "arrive":
|
|
520
|
+
steerLines.push(
|
|
521
|
+
[
|
|
522
|
+
` { // arrive:${esc(b.id, "TypeScript")}`,
|
|
523
|
+
` let to = ${target} - a.pos;`,
|
|
524
|
+
` let dist = length(to);`,
|
|
525
|
+
` let speed = ${ms} * clamp(dist / ${num(p, "slow_radius", 3).toFixed(4)}, 0.0, 1.0);`,
|
|
526
|
+
` let desired = normalize(to + vec3<f32>(1e-4)) * speed;`,
|
|
527
|
+
` steer += (desired - a.vel) * ${w};`,
|
|
528
|
+
` }`
|
|
529
|
+
].join("\n")
|
|
530
|
+
);
|
|
531
|
+
break;
|
|
532
|
+
default:
|
|
533
|
+
warnings.push(`unknown behavior "${b.behaviorType}" (node "${b.id}") \u2014 skipped`);
|
|
534
|
+
steerLines.push(` // unknown behavior ${esc(b.behaviorType, "TypeScript")}:${esc(b.id, "TypeScript")}`);
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
if (steerLines.length === 0) steerLines.push(" // no behaviors declared \u2014 agents coast");
|
|
538
|
+
const wgsl = [
|
|
539
|
+
`// Nav Field "${esc(field.name, "TypeScript")}" \u2014 generated by HoloScript TSLCompiler`,
|
|
540
|
+
`// agents: ${field.agents} | max_speed: ${field.maxSpeed} | behaviors: [${field.behaviors.map((b) => `${esc(b.behaviorType, "TypeScript")}:${esc(b.id, "TypeScript")}`).join(", ")}]`,
|
|
541
|
+
...warnings.map((w) => `// WARNING: ${esc(w, "TypeScript")}`),
|
|
542
|
+
"",
|
|
543
|
+
`struct NavAgent_${safe} {`,
|
|
544
|
+
" pos: vec3<f32>,",
|
|
545
|
+
" _pad0: f32,",
|
|
546
|
+
" vel: vec3<f32>,",
|
|
547
|
+
" _pad1: f32,",
|
|
548
|
+
"};",
|
|
549
|
+
"",
|
|
550
|
+
`@group(0) @binding(0) var<storage, read> navIn_${safe}: array<NavAgent_${safe}>;`,
|
|
551
|
+
`@group(0) @binding(1) var<storage, read_write> navOut_${safe}: array<NavAgent_${safe}>;`,
|
|
552
|
+
`@group(0) @binding(2) var<uniform> navDt_${safe}: f32;`,
|
|
553
|
+
"",
|
|
554
|
+
"@compute @workgroup_size(64)",
|
|
555
|
+
`fn ${fnName}(@builtin(global_invocation_id) gid: vec3<u32>) {`,
|
|
556
|
+
` let i = gid.x;`,
|
|
557
|
+
` if (i >= arrayLength(&navIn_${safe})) { return; }`,
|
|
558
|
+
` var a = navIn_${safe}[i];`,
|
|
559
|
+
` let dt = navDt_${safe};`,
|
|
560
|
+
" var steer = vec3<f32>(0.0);",
|
|
561
|
+
...steerLines,
|
|
562
|
+
" a.vel += steer * dt;",
|
|
563
|
+
` let sp = length(a.vel);`,
|
|
564
|
+
` if (sp > ${ms}) { a.vel = a.vel / sp * ${ms}; }`,
|
|
565
|
+
" a.pos += a.vel * dt;",
|
|
566
|
+
` navOut_${safe}[i] = a;`,
|
|
567
|
+
"}"
|
|
568
|
+
].join("\n");
|
|
569
|
+
return { fnName, wgsl };
|
|
570
|
+
}
|
|
571
|
+
function compilePhysicsContractBlock(block) {
|
|
572
|
+
const props = block.properties || {};
|
|
573
|
+
const bodies = [];
|
|
574
|
+
const constraints = [];
|
|
575
|
+
const gravity = [0, -9.81, 0];
|
|
576
|
+
let substeps = 1;
|
|
577
|
+
const numOf = (v, d) => typeof v === "number" ? v : d;
|
|
578
|
+
for (const [key, raw] of Object.entries(props)) {
|
|
579
|
+
if (key === "gravity" && Array.isArray(raw)) {
|
|
580
|
+
gravity[0] = numOf(raw[0], gravity[0]);
|
|
581
|
+
gravity[1] = numOf(raw[1], gravity[1]);
|
|
582
|
+
gravity[2] = numOf(raw[2], gravity[2]);
|
|
583
|
+
continue;
|
|
584
|
+
}
|
|
585
|
+
if (key === "gravity_x" && typeof raw === "number") {
|
|
586
|
+
gravity[0] = raw;
|
|
587
|
+
continue;
|
|
588
|
+
}
|
|
589
|
+
if (key === "gravity_y" && typeof raw === "number") {
|
|
590
|
+
gravity[1] = raw;
|
|
591
|
+
continue;
|
|
592
|
+
}
|
|
593
|
+
if (key === "gravity_z" && typeof raw === "number") {
|
|
594
|
+
gravity[2] = raw;
|
|
595
|
+
continue;
|
|
596
|
+
}
|
|
597
|
+
if (key === "substeps" && typeof raw === "number") {
|
|
598
|
+
substeps = Math.max(1, Math.floor(raw));
|
|
599
|
+
continue;
|
|
600
|
+
}
|
|
601
|
+
if (raw && typeof raw === "object" && !Array.isArray(raw)) {
|
|
602
|
+
const sub = raw;
|
|
603
|
+
const kind = sub.kind;
|
|
604
|
+
if (kind === "body") {
|
|
605
|
+
bodies.push({
|
|
606
|
+
id: key,
|
|
607
|
+
mass: numOf(sub.mass, 1),
|
|
608
|
+
shape: typeof sub.shape === "string" ? sub.shape : "box",
|
|
609
|
+
pos: [numOf(sub.pos_x, 0), numOf(sub.pos_y, 0), numOf(sub.pos_z, 0)]
|
|
610
|
+
});
|
|
611
|
+
} else if (kind === "constraint") {
|
|
612
|
+
const { kind: _k, type, body_a, body_b, ...params } = sub;
|
|
613
|
+
constraints.push({
|
|
614
|
+
id: key,
|
|
615
|
+
constraintType: typeof type === "string" ? type : "distance",
|
|
616
|
+
bodyA: typeof body_a === "string" ? body_a : "",
|
|
617
|
+
bodyB: typeof body_b === "string" ? body_b : "",
|
|
618
|
+
params
|
|
619
|
+
});
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
return { name: block.name || "unnamed", gravity, substeps, bodies, constraints, traits: block.traits || [] };
|
|
624
|
+
}
|
|
625
|
+
function physicsContractToWGSL(field) {
|
|
626
|
+
const safe = sanitizeMgIdent(field.name);
|
|
627
|
+
const fnName = `cs_physics_contract_${safe}`;
|
|
628
|
+
const warnings = [];
|
|
629
|
+
const idx = new Map(field.bodies.map((b, i) => [b.id, i]));
|
|
630
|
+
const num = (p, k, d) => typeof p[k] === "number" ? p[k] : d;
|
|
631
|
+
const g = `vec3<f32>(${field.gravity[0].toFixed(4)}, ${field.gravity[1].toFixed(4)}, ${field.gravity[2].toFixed(4)})`;
|
|
632
|
+
const substeps = Math.max(1, field.substeps);
|
|
633
|
+
const constraintLines = [];
|
|
634
|
+
for (const c of field.constraints) {
|
|
635
|
+
const aIdx = idx.get(c.bodyA);
|
|
636
|
+
const bIdx = idx.get(c.bodyB);
|
|
637
|
+
if (aIdx === void 0 || bIdx === void 0) {
|
|
638
|
+
warnings.push(`constraint "${c.id}" (${c.constraintType}) references unknown body \u2014 skipped`);
|
|
639
|
+
constraintLines.push(` // ${esc(c.constraintType, "TypeScript")}:${esc(c.id, "TypeScript")} \u2014 unresolved body ref, skipped`);
|
|
640
|
+
continue;
|
|
641
|
+
}
|
|
642
|
+
const a = `${aIdx}u`;
|
|
643
|
+
const b = `${bIdx}u`;
|
|
644
|
+
const p = c.params;
|
|
645
|
+
if (c.constraintType === "distance" || c.constraintType === "hinge") {
|
|
646
|
+
const rest = (c.constraintType === "hinge" ? num(p, "rest", 0) : num(p, "rest", 1)).toFixed(4);
|
|
647
|
+
const stiff = num(p, "stiffness", 1).toFixed(4);
|
|
648
|
+
const axisNote = c.constraintType === "hinge" ? ` axis (${num(p, "axis_x", 0).toFixed(2)},${num(p, "axis_y", 1).toFixed(2)},${num(p, "axis_z", 0).toFixed(2)}) \u2014 angular limit deferred` : "";
|
|
649
|
+
constraintLines.push(
|
|
650
|
+
[
|
|
651
|
+
` // ${c.constraintType}:${esc(c.id, "TypeScript")}${axisNote}`,
|
|
652
|
+
` if (i == ${a}) { let o = physIn_${safe}[${b}]; let d = p.pos - o.pos; let dist = length(d) + 1e-6; let n = d / dist; let C = dist - ${rest}; let w = p.invMass + o.invMass + 1e-6; p.pos -= n * (C * (p.invMass / w) * ${stiff}); }`,
|
|
653
|
+
` if (i == ${b}) { let o = physIn_${safe}[${a}]; let d = p.pos - o.pos; let dist = length(d) + 1e-6; let n = d / dist; let C = dist - ${rest}; let w = p.invMass + o.invMass + 1e-6; p.pos -= n * (C * (p.invMass / w) * ${stiff}); }`
|
|
654
|
+
].join("\n")
|
|
655
|
+
);
|
|
656
|
+
} else if (c.constraintType === "fixed") {
|
|
657
|
+
const off = `vec3<f32>(${num(p, "rest_x", 0).toFixed(4)}, ${num(p, "rest_y", 0).toFixed(4)}, ${num(p, "rest_z", 0).toFixed(4)})`;
|
|
658
|
+
constraintLines.push(
|
|
659
|
+
[
|
|
660
|
+
` // fixed:${esc(c.id, "TypeScript")} \u2014 3-DoF weld (rotational lock deferred)`,
|
|
661
|
+
` if (i == ${a}) { let o = physIn_${safe}[${b}]; let e = (o.pos - p.pos) - ${off}; let w = p.invMass + o.invMass + 1e-6; p.pos += e * (p.invMass / w); }`,
|
|
662
|
+
` if (i == ${b}) { let o = physIn_${safe}[${a}]; let e = (p.pos - o.pos) - ${off}; let w = p.invMass + o.invMass + 1e-6; p.pos -= e * (p.invMass / w); }`
|
|
663
|
+
].join("\n")
|
|
664
|
+
);
|
|
665
|
+
} else {
|
|
666
|
+
warnings.push(`unknown constraint "${c.constraintType}" (node "${c.id}") \u2014 skipped`);
|
|
667
|
+
constraintLines.push(` // unknown constraint ${esc(c.constraintType, "TypeScript")}:${esc(c.id, "TypeScript")} \u2014 skipped`);
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
if (constraintLines.length === 0) constraintLines.push(" // no constraints declared \u2014 free integration only");
|
|
671
|
+
const wgsl = [
|
|
672
|
+
`// Physics Contract "${esc(field.name, "TypeScript")}" \u2014 generated by HoloScript TSLCompiler`,
|
|
673
|
+
`// bodies: ${field.bodies.length} | constraints: ${field.constraints.length} | gravity: [${field.gravity.join(", ")}] | substeps: ${substeps}`,
|
|
674
|
+
`// Upload: physIn[i] = { pos, invMass (= mass>0 ? 1/mass : 0), vel, _pad } from the authored body stack.`,
|
|
675
|
+
...warnings.map((w) => `// WARNING: ${esc(w, "TypeScript")}`),
|
|
676
|
+
"",
|
|
677
|
+
`struct PhysBody_${safe} {`,
|
|
678
|
+
" pos: vec3<f32>,",
|
|
679
|
+
" invMass: f32,",
|
|
680
|
+
" vel: vec3<f32>,",
|
|
681
|
+
" _pad: f32,",
|
|
682
|
+
"};",
|
|
683
|
+
"",
|
|
684
|
+
`@group(0) @binding(0) var<storage, read> physIn_${safe}: array<PhysBody_${safe}>;`,
|
|
685
|
+
`@group(0) @binding(1) var<storage, read_write> physOut_${safe}: array<PhysBody_${safe}>;`,
|
|
686
|
+
`@group(0) @binding(2) var<uniform> physDt_${safe}: f32;`,
|
|
687
|
+
"",
|
|
688
|
+
"@compute @workgroup_size(64)",
|
|
689
|
+
`fn ${fnName}(@builtin(global_invocation_id) gid: vec3<u32>) {`,
|
|
690
|
+
` let i = gid.x;`,
|
|
691
|
+
` if (i >= arrayLength(&physIn_${safe})) { return; }`,
|
|
692
|
+
` var p = physIn_${safe}[i];`,
|
|
693
|
+
` let subDt = physDt_${safe} / ${substeps}.0;`,
|
|
694
|
+
` for (var s = 0u; s < ${substeps}u; s = s + 1u) {`,
|
|
695
|
+
" if (p.invMass > 0.0) {",
|
|
696
|
+
` p.vel += ${g} * subDt;`,
|
|
697
|
+
" p.pos += p.vel * subDt;",
|
|
698
|
+
" }",
|
|
699
|
+
...constraintLines,
|
|
700
|
+
" }",
|
|
701
|
+
` physOut_${safe}[i] = p;`,
|
|
702
|
+
"}"
|
|
703
|
+
].join("\n");
|
|
704
|
+
return { fnName, wgsl };
|
|
705
|
+
}
|
|
49
706
|
function compilePhysicsBlock(block) {
|
|
50
707
|
const colliders = [];
|
|
51
708
|
const forceFields = [];
|
|
@@ -2727,6 +3384,102 @@ function iotToUSDA(iot) {
|
|
|
2727
3384
|
lines.push("}");
|
|
2728
3385
|
return lines.join("\n");
|
|
2729
3386
|
}
|
|
3387
|
+
function stringProperty(props, keys) {
|
|
3388
|
+
for (const key of keys) {
|
|
3389
|
+
const value = props[key];
|
|
3390
|
+
if (typeof value === "string" && value.trim()) return value.trim();
|
|
3391
|
+
}
|
|
3392
|
+
return void 0;
|
|
3393
|
+
}
|
|
3394
|
+
function numberProperty(props, keys) {
|
|
3395
|
+
for (const key of keys) {
|
|
3396
|
+
const value = props[key];
|
|
3397
|
+
if (typeof value === "number" && Number.isFinite(value)) return value;
|
|
3398
|
+
}
|
|
3399
|
+
return void 0;
|
|
3400
|
+
}
|
|
3401
|
+
function booleanProperty(props, keys) {
|
|
3402
|
+
for (const key of keys) {
|
|
3403
|
+
const value = props[key];
|
|
3404
|
+
if (typeof value === "boolean") return value;
|
|
3405
|
+
}
|
|
3406
|
+
return void 0;
|
|
3407
|
+
}
|
|
3408
|
+
function stringArrayProperty(props, keys) {
|
|
3409
|
+
for (const key of keys) {
|
|
3410
|
+
const value = props[key];
|
|
3411
|
+
if (Array.isArray(value) && value.every((entry) => typeof entry === "string")) {
|
|
3412
|
+
return [...value];
|
|
3413
|
+
}
|
|
3414
|
+
}
|
|
3415
|
+
return void 0;
|
|
3416
|
+
}
|
|
3417
|
+
function gradientStopsProperty(props, keys) {
|
|
3418
|
+
for (const key of keys) {
|
|
3419
|
+
const value = props[key];
|
|
3420
|
+
if (!Array.isArray(value)) continue;
|
|
3421
|
+
const stops = [];
|
|
3422
|
+
for (const entry of value) {
|
|
3423
|
+
if (entry && typeof entry === "object" && typeof entry.t === "number" && typeof entry.color === "string") {
|
|
3424
|
+
const stop = entry;
|
|
3425
|
+
stops.push({ t: stop.t, color: stop.color });
|
|
3426
|
+
}
|
|
3427
|
+
}
|
|
3428
|
+
if (stops.length > 0) return stops;
|
|
3429
|
+
}
|
|
3430
|
+
return void 0;
|
|
3431
|
+
}
|
|
3432
|
+
function sampledStopsFromColors(colors) {
|
|
3433
|
+
if (colors.length === 0) return [];
|
|
3434
|
+
if (colors.length === 1) return [{ t: 0, color: colors[0] }];
|
|
3435
|
+
return colors.map((color, index) => ({
|
|
3436
|
+
t: index / (colors.length - 1),
|
|
3437
|
+
color
|
|
3438
|
+
}));
|
|
3439
|
+
}
|
|
3440
|
+
function buildPerceptualColorMetadata(props, traits, fallbackColorMap = "viridis") {
|
|
3441
|
+
const colorMap = stringProperty(props, ["color_map", "colormap", "colorMap"]);
|
|
3442
|
+
const palette = stringArrayProperty(props, ["palette", "colors"]);
|
|
3443
|
+
const gradient = gradientStopsProperty(props, ["gradient", "color_gradient", "colorGradient"]) ?? stringArrayProperty(props, ["gradient", "color_gradient", "colorGradient"]);
|
|
3444
|
+
const enabled = traits.includes("perceptual_color") || booleanProperty(props, ["perceptual_color", "perceptualColor", "scientific"]) === true || colorMap !== void 0 || palette !== void 0 || gradient !== void 0;
|
|
3445
|
+
if (!enabled) return void 0;
|
|
3446
|
+
const input = {
|
|
3447
|
+
colorMap: colorMap ?? (palette || gradient ? void 0 : fallbackColorMap),
|
|
3448
|
+
palette,
|
|
3449
|
+
gradient,
|
|
3450
|
+
steps: numberProperty(props, ["steps", "color_steps", "colorSteps"]),
|
|
3451
|
+
dampening: numberProperty(props, ["dampening", "perceptual_dampening", "perceptualDampening"]),
|
|
3452
|
+
targetDeltaE: numberProperty(props, ["target_delta_e", "targetDeltaE"]),
|
|
3453
|
+
neutralAxis: booleanProperty(props, ["neutral_axis", "neutralAxis"]),
|
|
3454
|
+
scientific: true
|
|
3455
|
+
};
|
|
3456
|
+
const pass = chunkVHORVGCG_cjs.applyPerceptualColorPass(input);
|
|
3457
|
+
const source = pass.colorMap ?? pass.gradient ?? pass.palette;
|
|
3458
|
+
const colors = source?.colors ?? [];
|
|
3459
|
+
const stops = pass.colorMap?.stops ?? pass.gradient?.stops ?? sampledStopsFromColors(colors);
|
|
3460
|
+
return {
|
|
3461
|
+
mapName: pass.colorMap?.name ?? colorMap ?? (palette ? "palette" : gradient ? "gradient" : fallbackColorMap),
|
|
3462
|
+
colors,
|
|
3463
|
+
stops,
|
|
3464
|
+
minDeltaE: source?.minDeltaE ?? 0,
|
|
3465
|
+
maxDeltaE: source?.maxDeltaE ?? 0,
|
|
3466
|
+
meanDeltaE: source?.meanDeltaE ?? 0,
|
|
3467
|
+
warnings: pass.warnings,
|
|
3468
|
+
pass
|
|
3469
|
+
};
|
|
3470
|
+
}
|
|
3471
|
+
function perceptualColorRampFloat32(metadata) {
|
|
3472
|
+
return metadata.colors.map((color) => {
|
|
3473
|
+
const [r, g, b] = hexToRGBTuple(color);
|
|
3474
|
+
return `${r}, ${g}, ${b}, 1.0`;
|
|
3475
|
+
}).join(", ");
|
|
3476
|
+
}
|
|
3477
|
+
function perceptualColorRampLinearColors(metadata) {
|
|
3478
|
+
return metadata.colors.map((color) => {
|
|
3479
|
+
const [r, g, b] = hexToRGBTuple(color);
|
|
3480
|
+
return `FLinearColor(${r}f, ${g}f, ${b}f, 1.0f)`;
|
|
3481
|
+
}).join(", ");
|
|
3482
|
+
}
|
|
2730
3483
|
function compileDataVizBlock(block) {
|
|
2731
3484
|
const props = block.properties || {};
|
|
2732
3485
|
let axes;
|
|
@@ -2740,6 +3493,9 @@ function compileDataVizBlock(block) {
|
|
|
2740
3493
|
if (props.width != null || props.height != null) {
|
|
2741
3494
|
dimensions = { width: props.width ?? 400, height: props.height ?? 300 };
|
|
2742
3495
|
}
|
|
3496
|
+
const traits = block.traits || [];
|
|
3497
|
+
const colorMap = stringProperty(props, ["color_map", "colormap", "colorMap"]);
|
|
3498
|
+
const perceptualColorPass = buildPerceptualColorMetadata(props, traits, colorMap ?? "viridis");
|
|
2743
3499
|
return {
|
|
2744
3500
|
name: block.name || "unnamed",
|
|
2745
3501
|
keyword: block.keyword,
|
|
@@ -2749,11 +3505,14 @@ function compileDataVizBlock(block) {
|
|
|
2749
3505
|
aggregation: props.aggregation,
|
|
2750
3506
|
refreshInterval: props.refresh_interval,
|
|
2751
3507
|
dimensions,
|
|
2752
|
-
|
|
3508
|
+
colorMap: colorMap ?? perceptualColorPass?.mapName,
|
|
3509
|
+
perceptualColorPass,
|
|
3510
|
+
traits,
|
|
2753
3511
|
properties: props
|
|
2754
3512
|
};
|
|
2755
3513
|
}
|
|
2756
3514
|
function datavizToR3F(dv) {
|
|
3515
|
+
const perceptual = dv.perceptualColorPass;
|
|
2757
3516
|
const safeName = dv.name.replace(/[^a-zA-Z0-9_]/g, "_");
|
|
2758
3517
|
const lines = [];
|
|
2759
3518
|
lines.push(`// DataViz: ${dv.name} (${dv.keyword})`);
|
|
@@ -2767,10 +3526,15 @@ function datavizToR3F(dv) {
|
|
|
2767
3526
|
if (dv.refreshInterval) lines.push(` refreshInterval: ${dv.refreshInterval},`);
|
|
2768
3527
|
if (dv.dimensions)
|
|
2769
3528
|
lines.push(` dimensions: { width: ${dv.dimensions.width}, height: ${dv.dimensions.height} },`);
|
|
3529
|
+
if (dv.colorMap)
|
|
3530
|
+
lines.push(` colorMap: ${JSON.stringify(dv.colorMap)},`);
|
|
3531
|
+
if (perceptual)
|
|
3532
|
+
lines.push(` perceptualColorPass: ${JSON.stringify(perceptual)},`);
|
|
2770
3533
|
lines.push("};");
|
|
2771
3534
|
return lines.join("\n");
|
|
2772
3535
|
}
|
|
2773
3536
|
function datavizToUnity(dv) {
|
|
3537
|
+
const perceptual = dv.perceptualColorPass;
|
|
2774
3538
|
const safeName = dv.name.replace(/[^a-zA-Z0-9_]/g, "_");
|
|
2775
3539
|
const lines = [];
|
|
2776
3540
|
lines.push(`// DataViz: ${dv.name}`);
|
|
@@ -2784,9 +3548,58 @@ function datavizToUnity(dv) {
|
|
|
2784
3548
|
lines.push(` public float width = ${dv.dimensions.width}f;`);
|
|
2785
3549
|
lines.push(` public float height = ${dv.dimensions.height}f;`);
|
|
2786
3550
|
}
|
|
3551
|
+
if (dv.colorMap)
|
|
3552
|
+
lines.push(` public string colorMap = "${esc(dv.colorMap, "CSharp")}";`);
|
|
3553
|
+
if (perceptual) {
|
|
3554
|
+
lines.push(
|
|
3555
|
+
` public string[] perceptualColorRamp = new string[] { ${perceptual.colors.map((color) => `"${color}"`).join(", ")} };`
|
|
3556
|
+
);
|
|
3557
|
+
lines.push(` public float perceptualMinDeltaE = ${perceptual.minDeltaE.toFixed(3)}f;`);
|
|
3558
|
+
lines.push(` public float perceptualMeanDeltaE = ${perceptual.meanDeltaE.toFixed(3)}f;`);
|
|
3559
|
+
}
|
|
2787
3560
|
lines.push("}");
|
|
2788
3561
|
return lines.join("\n");
|
|
2789
3562
|
}
|
|
3563
|
+
function datavizToUnreal(dv, varPrefix) {
|
|
3564
|
+
const perceptual = dv.perceptualColorPass;
|
|
3565
|
+
const lines = [];
|
|
3566
|
+
lines.push(`// DataViz: ${dv.name}`);
|
|
3567
|
+
lines.push(`FString ${varPrefix}DataVizType = TEXT("${esc(dv.keyword, "CSharp")}");`);
|
|
3568
|
+
if (dv.chartType) lines.push(`FString ${varPrefix}ChartType = TEXT("${esc(dv.chartType, "CSharp")}");`);
|
|
3569
|
+
if (dv.dataSource) lines.push(`FString ${varPrefix}DataSource = TEXT("${esc(dv.dataSource, "CSharp")}");`);
|
|
3570
|
+
if (perceptual) {
|
|
3571
|
+
lines.push(`// PerceptualColorPass: ${perceptual.mapName}, ${perceptual.colors.length} stops`);
|
|
3572
|
+
lines.push(`TArray<FLinearColor> ${varPrefix}PerceptualColorRamp = { ${perceptualColorRampLinearColors(perceptual)} };`);
|
|
3573
|
+
lines.push(`float ${varPrefix}PerceptualMinDeltaE = ${perceptual.minDeltaE.toFixed(3)}f;`);
|
|
3574
|
+
}
|
|
3575
|
+
return lines.join("\n");
|
|
3576
|
+
}
|
|
3577
|
+
function datavizToWebGPU(dv, varPrefix) {
|
|
3578
|
+
const perceptual = dv.perceptualColorPass;
|
|
3579
|
+
const lines = [];
|
|
3580
|
+
lines.push(`// DataViz: ${dv.name}`);
|
|
3581
|
+
lines.push(`const ${varPrefix}DataVizConfig = ${JSON.stringify({
|
|
3582
|
+
name: dv.name,
|
|
3583
|
+
type: dv.keyword,
|
|
3584
|
+
chartType: dv.chartType,
|
|
3585
|
+
dataSource: dv.dataSource,
|
|
3586
|
+
axes: dv.axes,
|
|
3587
|
+
aggregation: dv.aggregation,
|
|
3588
|
+
refreshInterval: dv.refreshInterval,
|
|
3589
|
+
dimensions: dv.dimensions,
|
|
3590
|
+
colorMap: dv.colorMap
|
|
3591
|
+
})};`);
|
|
3592
|
+
if (perceptual) {
|
|
3593
|
+
lines.push(`const ${varPrefix}PerceptualColorRamp = new Float32Array([${perceptualColorRampFloat32(perceptual)}]);`);
|
|
3594
|
+
lines.push(`const ${varPrefix}PerceptualColorStats = ${JSON.stringify({
|
|
3595
|
+
minDeltaE: perceptual.minDeltaE,
|
|
3596
|
+
maxDeltaE: perceptual.maxDeltaE,
|
|
3597
|
+
meanDeltaE: perceptual.meanDeltaE,
|
|
3598
|
+
warnings: perceptual.warnings
|
|
3599
|
+
})};`);
|
|
3600
|
+
}
|
|
3601
|
+
return lines.join("\n");
|
|
3602
|
+
}
|
|
2790
3603
|
function datavizToGodot(dv) {
|
|
2791
3604
|
const lines = [];
|
|
2792
3605
|
lines.push(`# DataViz: ${dv.name}`);
|
|
@@ -3734,13 +4547,19 @@ function compileSimulationBlock(block) {
|
|
|
3734
4547
|
const c = child;
|
|
3735
4548
|
if (c.traits?.includes("scalar_field_overlay") || c.keyword === "scalar_field_overlay") {
|
|
3736
4549
|
const p = c.properties || {};
|
|
4550
|
+
const colormap = p.colormap ?? "turbo";
|
|
3737
4551
|
overlays.push({
|
|
3738
4552
|
source: p.source ?? "",
|
|
3739
|
-
colormap
|
|
4553
|
+
colormap,
|
|
3740
4554
|
range: p.range ?? [0, 1],
|
|
3741
4555
|
opacity: p.opacity ?? 0.7,
|
|
3742
4556
|
visible: p.visible ?? true,
|
|
3743
|
-
label: p.label ?? ""
|
|
4557
|
+
label: p.label ?? "",
|
|
4558
|
+
perceptualColorPass: buildPerceptualColorMetadata(
|
|
4559
|
+
{ ...p, colormap },
|
|
4560
|
+
c.traits || [],
|
|
4561
|
+
colormap
|
|
4562
|
+
)
|
|
3744
4563
|
});
|
|
3745
4564
|
}
|
|
3746
4565
|
}
|
|
@@ -3776,9 +4595,16 @@ function simulationEnvironmentToR3FChunks(env) {
|
|
|
3776
4595
|
function simulationToR3F(sim) {
|
|
3777
4596
|
const configExpr = JSON.stringify(sim.config);
|
|
3778
4597
|
const { visualLines, userDataExpr } = simulationEnvironmentToR3FChunks(sim.environment);
|
|
3779
|
-
const overlayJSX = sim.overlays.map(
|
|
3780
|
-
|
|
3781
|
-
|
|
4598
|
+
const overlayJSX = sim.overlays.map((o) => {
|
|
4599
|
+
const perceptualComment = o.perceptualColorPass ? `{/* PerceptualColorPass ${JSON.stringify({
|
|
4600
|
+
mapName: o.perceptualColorPass.mapName,
|
|
4601
|
+
colors: o.perceptualColorPass.colors,
|
|
4602
|
+
minDeltaE: o.perceptualColorPass.minDeltaE,
|
|
4603
|
+
meanDeltaE: o.perceptualColorPass.meanDeltaE
|
|
4604
|
+
})} */}
|
|
4605
|
+
` : "";
|
|
4606
|
+
return `${perceptualComment}<ScalarFieldOverlay colormap="${o.colormap}" range={[${o.range.join(", ")}]} opacity={${o.opacity}} visible={${o.visible}} label="${o.label}" />`;
|
|
4607
|
+
}).join("\n ");
|
|
3782
4608
|
const envVisual = visualLines.length > 0 ? `${visualLines.join("\n ")}
|
|
3783
4609
|
` : "";
|
|
3784
4610
|
const wrapWithGroup = (body) => userDataExpr ? `<group userData={${userDataExpr}}>
|
|
@@ -3821,13 +4647,14 @@ function hexToRGBA(hex, alpha) {
|
|
|
3821
4647
|
];
|
|
3822
4648
|
}
|
|
3823
4649
|
function getRequiredCapability() {
|
|
3824
|
-
return
|
|
4650
|
+
return chunkZK7KX5CD_cjs.ANSCapabilityPath.DOMAIN_BLOCK;
|
|
3825
4651
|
}
|
|
3826
|
-
var PHYSICAL_MATERIAL_KEYS; exports.DOMAIN_BLOCK_COMPILER_MIXIN_CAPABILITY = void 0;
|
|
3827
|
-
var init_DomainBlockCompilerMixin =
|
|
4652
|
+
var PHYSICAL_MATERIAL_KEYS, mgToVec3, mgToF32; exports.DOMAIN_BLOCK_COMPILER_MIXIN_CAPABILITY = void 0;
|
|
4653
|
+
var init_DomainBlockCompilerMixin = chunkZHPMP447_cjs.__esm({
|
|
3828
4654
|
"src/compiler/DomainBlockCompilerMixin.ts"() {
|
|
3829
|
-
|
|
3830
|
-
|
|
4655
|
+
chunkZK7KX5CD_cjs.init_CompilerBase();
|
|
4656
|
+
chunkZK7KX5CD_cjs.init_ANSNamespace();
|
|
4657
|
+
chunkVHORVGCG_cjs.init_PerceptualColorPass();
|
|
3831
4658
|
PHYSICAL_MATERIAL_KEYS = [
|
|
3832
4659
|
"clearcoat",
|
|
3833
4660
|
"clearcoatRoughness",
|
|
@@ -3841,6 +4668,8 @@ var init_DomainBlockCompilerMixin = chunkHCCQLAA4_cjs.__esm({
|
|
|
3841
4668
|
"attenuationColor",
|
|
3842
4669
|
"attenuationDistance"
|
|
3843
4670
|
];
|
|
4671
|
+
mgToVec3 = (v) => !v ? "vec3<f32>(0.0)" : v.type === "vec3" ? v.ref : `vec3<f32>(${v.ref})`;
|
|
4672
|
+
mgToF32 = (v, fallback = "0.0") => !v ? fallback : v.type === "f32" ? v.ref : `(${v.ref}).x`;
|
|
3844
4673
|
exports.DOMAIN_BLOCK_COMPILER_MIXIN_CAPABILITY = "/compile/mixin/domain-block";
|
|
3845
4674
|
}
|
|
3846
4675
|
});
|
|
@@ -3867,13 +4696,18 @@ exports.compileEducationBlock = compileEducationBlock;
|
|
|
3867
4696
|
exports.compileHealthcareBlock = compileHealthcareBlock;
|
|
3868
4697
|
exports.compileInputBlock = compileInputBlock;
|
|
3869
4698
|
exports.compileIoTBlock = compileIoTBlock;
|
|
4699
|
+
exports.compileLightFieldBlock = compileLightFieldBlock;
|
|
3870
4700
|
exports.compileMaterialBlock = compileMaterialBlock;
|
|
4701
|
+
exports.compileMaterialGraphBlock = compileMaterialGraphBlock;
|
|
3871
4702
|
exports.compileMusicBlock = compileMusicBlock;
|
|
3872
4703
|
exports.compileNarrativeBlock = compileNarrativeBlock;
|
|
4704
|
+
exports.compileNavFieldBlock = compileNavFieldBlock;
|
|
3873
4705
|
exports.compileNavigationBlock = compileNavigationBlock;
|
|
3874
4706
|
exports.compileParticleBlock = compileParticleBlock;
|
|
4707
|
+
exports.compileParticleFieldBlock = compileParticleFieldBlock;
|
|
3875
4708
|
exports.compilePaymentBlock = compilePaymentBlock;
|
|
3876
4709
|
exports.compilePhysicsBlock = compilePhysicsBlock;
|
|
4710
|
+
exports.compilePhysicsContractBlock = compilePhysicsContractBlock;
|
|
3877
4711
|
exports.compilePostProcessingBlock = compilePostProcessingBlock;
|
|
3878
4712
|
exports.compileProceduralBlock = compileProceduralBlock;
|
|
3879
4713
|
exports.compileRenderingBlock = compileRenderingBlock;
|
|
@@ -3885,7 +4719,9 @@ exports.datavizToGodot = datavizToGodot;
|
|
|
3885
4719
|
exports.datavizToR3F = datavizToR3F;
|
|
3886
4720
|
exports.datavizToUSDA = datavizToUSDA;
|
|
3887
4721
|
exports.datavizToUnity = datavizToUnity;
|
|
4722
|
+
exports.datavizToUnreal = datavizToUnreal;
|
|
3888
4723
|
exports.datavizToVRChat = datavizToVRChat;
|
|
4724
|
+
exports.datavizToWebGPU = datavizToWebGPU;
|
|
3889
4725
|
exports.educationToGodot = educationToGodot;
|
|
3890
4726
|
exports.educationToR3F = educationToR3F;
|
|
3891
4727
|
exports.educationToUSDA = educationToUSDA;
|
|
@@ -3909,6 +4745,8 @@ exports.iotToUSDA = iotToUSDA;
|
|
|
3909
4745
|
exports.iotToUnity = iotToUnity;
|
|
3910
4746
|
exports.iotToVRChat = iotToVRChat;
|
|
3911
4747
|
exports.isPhysicalMaterial = isPhysicalMaterial;
|
|
4748
|
+
exports.lightFieldToWGSL = lightFieldToWGSL;
|
|
4749
|
+
exports.materialGraphToWGSL = materialGraphToWGSL;
|
|
3912
4750
|
exports.materialToAndroidXR = materialToAndroidXR;
|
|
3913
4751
|
exports.materialToBabylon = materialToBabylon;
|
|
3914
4752
|
exports.materialToGLTF = materialToGLTF;
|
|
@@ -3932,11 +4770,13 @@ exports.narrativeToR3F = narrativeToR3F;
|
|
|
3932
4770
|
exports.narrativeToUSDA = narrativeToUSDA;
|
|
3933
4771
|
exports.narrativeToUnity = narrativeToUnity;
|
|
3934
4772
|
exports.narrativeToVRChat = narrativeToVRChat;
|
|
4773
|
+
exports.navFieldToWGSL = navFieldToWGSL;
|
|
3935
4774
|
exports.navigationToGodot = navigationToGodot;
|
|
3936
4775
|
exports.navigationToR3F = navigationToR3F;
|
|
3937
4776
|
exports.navigationToUSDA = navigationToUSDA;
|
|
3938
4777
|
exports.navigationToUnity = navigationToUnity;
|
|
3939
4778
|
exports.navigationToVRChat = navigationToVRChat;
|
|
4779
|
+
exports.particleFieldToWGSL = particleFieldToWGSL;
|
|
3940
4780
|
exports.particlesToAndroidXR = particlesToAndroidXR;
|
|
3941
4781
|
exports.particlesToBabylon = particlesToBabylon;
|
|
3942
4782
|
exports.particlesToGodot = particlesToGodot;
|
|
@@ -3951,6 +4791,7 @@ exports.paymentToR3F = paymentToR3F;
|
|
|
3951
4791
|
exports.paymentToUSDA = paymentToUSDA;
|
|
3952
4792
|
exports.paymentToUnity = paymentToUnity;
|
|
3953
4793
|
exports.paymentToVRChat = paymentToVRChat;
|
|
4794
|
+
exports.physicsContractToWGSL = physicsContractToWGSL;
|
|
3954
4795
|
exports.physicsToAndroidXR = physicsToAndroidXR;
|
|
3955
4796
|
exports.physicsToBabylon = physicsToBabylon;
|
|
3956
4797
|
exports.physicsToGodot = physicsToGodot;
|
|
@@ -3994,5 +4835,5 @@ exports.web3ToR3F = web3ToR3F;
|
|
|
3994
4835
|
exports.web3ToUSDA = web3ToUSDA;
|
|
3995
4836
|
exports.web3ToUnity = web3ToUnity;
|
|
3996
4837
|
exports.web3ToVRChat = web3ToVRChat;
|
|
3997
|
-
//# sourceMappingURL=chunk-
|
|
3998
|
-
//# sourceMappingURL=chunk-
|
|
4838
|
+
//# sourceMappingURL=chunk-QEDMOGF3.cjs.map
|
|
4839
|
+
//# sourceMappingURL=chunk-QEDMOGF3.cjs.map
|