@volter/game-editor 0.5.82 → 0.5.83
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/BUNDLED_NOTICES +22 -22
- package/catalog/entries/blender.json +2 -2
- package/catalog/entries/music.json +2 -2
- package/catalog/entries/reflections.json +1 -1
- package/catalog/project-source/src/lib/reflections/ReflectionProbe.tsx +34 -5
- package/catalog/project-source/src/lib/reflections/index.ts +1 -0
- package/catalog/project-source/src/lib/reflections/probe-controller.ts +44 -3
- package/catalog/project-source/src/lib/reflections/reflection-probe-registry.ts +32 -7
- package/catalog/project-source/src/lib/reflections/volume-reflection-material.ts +638 -160
- package/dist/.vite/manifest.json +2206 -2188
- package/dist/assets/{AssetBudgetPanel-Iip49rxI.js → AssetBudgetPanel-SrgQ5Lx5.js} +3 -3
- package/dist/assets/{AudioViewer-DmkOvskF.js → AudioViewer-BqEwLSZN.js} +1 -1
- package/dist/assets/{CanvasBoardDocument-DCS8uzQo.js → CanvasBoardDocument-BfzWZdLX.js} +1 -1
- package/dist/assets/{CanvasSceneViewport-CfOuQiQ0.js → CanvasSceneViewport-CQ7ewAlO.js} +1 -1
- package/dist/assets/{ColorInput-7CPpl8MI.js → ColorInput-DQ6YyPD_.js} +1 -1
- package/dist/assets/EntityModelDocument-By-BM9dS.js +1 -0
- package/dist/assets/{EnvironmentAssetDocument-DlS6KFJu.js → EnvironmentAssetDocument-CrD37BI0.js} +1 -1
- package/dist/assets/{GameplaySessionTimeline-C3zH6edi.js → GameplaySessionTimeline-DYtnW0Si.js} +1 -1
- package/dist/assets/{ImageViewer-C0lQ6YO0.js → ImageViewer-CZNpdUEA.js} +1 -1
- package/dist/assets/InspectorObjectPreview-gWOVV6Ll.js +1 -0
- package/dist/assets/{JsonAssetDocument-DjmH9CQH.js → JsonAssetDocument-Bg74MDXy.js} +1 -1
- package/dist/assets/{LiveModuleDocument-Hiot8Q5L.js → LiveModuleDocument-CSqzNMjn.js} +1 -1
- package/dist/assets/{LutAssetDocument-6bBwNMOn.js → LutAssetDocument-CsboXa8x.js} +1 -1
- package/dist/assets/ModelAssetDocument-DDVoKZpQ.js +1 -0
- package/dist/assets/{NonThreeAuthoringBootstrap-DpieYAMC.js → NonThreeAuthoringBootstrap-DcqD6_34.js} +1 -1
- package/dist/assets/{Object3DDocumentToolbar-BtZkDxKa.js → Object3DDocumentToolbar-p2pd2TuS.js} +1 -1
- package/dist/assets/Object3DDocumentViewport-BvNfSHi_.js +2 -0
- package/dist/assets/{Object3DPreview-DdrYVJUZ.js → Object3DPreview-Bv0fZcdS.js} +1 -1
- package/dist/assets/{OnlineAssetDetail-D06eTe3y.js → OnlineAssetDetail-CPDafN4x.js} +1 -1
- package/dist/assets/{PlayBar-BbzjgLFJ.js → PlayBar-CBD4rcED.js} +1 -1
- package/dist/assets/{QuarksAssetDocument-wGHNt4ov.js → QuarksAssetDocument-DUUhKUxZ.js} +1 -1
- package/dist/assets/{ReactCanvasControls-BL2tOUj6.js → ReactCanvasControls-3ual87uP.js} +1 -1
- package/dist/assets/{RootSelectionOverlay-C6Wu8nIs.js → RootSelectionOverlay-DtX8yWUQ.js} +1 -1
- package/dist/assets/{ShaderAssetDocument-BDi8iNLA.js → ShaderAssetDocument-rkhRdPRk.js} +3 -3
- package/dist/assets/{ShadowEditor-C3L0UWSH.js → ShadowEditor-B-3FlftY.js} +1 -1
- package/dist/assets/{SourceAssetViewer-D832bARo.js → SourceAssetViewer-CsMPohqK.js} +1 -1
- package/dist/assets/StageHost-BOaImrmu.js +2 -0
- package/dist/assets/{StoryPreviewMount-CmOEFzZY.js → StoryPreviewMount-BI-ANJix.js} +1 -1
- package/dist/assets/{ThreeBoardDocument-BtBMGtiQ.js → ThreeBoardDocument-CoBjs8BP.js} +2 -2
- package/dist/assets/{ThreeIsolationSceneContent-BEHNSEsi.js → ThreeIsolationSceneContent-uShwSK1O.js} +1 -1
- package/dist/assets/{ToolObject3DPreview-76LMkfin.js → ToolObject3DPreview-CBZdWA_7.js} +1 -1
- package/dist/assets/{Toolbar-BEBQdxRz.js → Toolbar-DJK7o_be.js} +1 -1
- package/dist/assets/{TransientHint-CzsdY8W6.js → TransientHint-Dgu6u7U5.js} +1 -1
- package/dist/assets/{VideoViewer-Ckrawyuq.js → VideoViewer-BwTcASO2.js} +1 -1
- package/dist/assets/{ViewportShadingMenu-BofQt6_4.js → ViewportShadingMenu-DUROUZdC.js} +1 -1
- package/dist/assets/{active-ingest-D_ryI_R4.js → active-ingest-Ra07ruDo.js} +3 -3
- package/dist/assets/{animation-clock-QjtJDIsR.js → animation-clock-CKeqYCt9.js} +1 -1
- package/dist/assets/{animation-mixers.service-BInUs1US.js → animation-mixers.service-BNiEU2dA.js} +1 -1
- package/dist/assets/{animation-timeline.utility-DUrfNSwn.js → animation-timeline.utility-DQqMh1lF.js} +1 -1
- package/dist/assets/{asset-budget-asset.menu-DVQEksFp.js → asset-budget-asset.menu-DFFih9b4.js} +1 -1
- package/dist/assets/{asset-budget.action-C-ENAa52.js → asset-budget.action-C3SMMeSX.js} +1 -1
- package/dist/assets/{asset-budget.document-Bb1PyL3H.js → asset-budget.document-B5NTy5dU.js} +1 -1
- package/dist/assets/{asset-budget.menu-CPi2yjBA.js → asset-budget.menu-Cclz2utV.js} +1 -1
- package/dist/assets/{asset-editor-persistence-Duoq7o22.js → asset-editor-persistence-DsIjTddX.js} +1 -1
- package/dist/assets/{asset-loaders-BftJ2m7-.js → asset-loaders-CQiLyapK.js} +1 -1
- package/dist/assets/{asset-preview-BS71mXsZ.js → asset-preview-BkFAKkZH.js} +1 -1
- package/dist/assets/{audio-unlock.service-C3ygvDjU.js → audio-unlock.service-CupzdUuC.js} +1 -1
- package/dist/assets/{audio.utility-DF55sgHW.js → audio.utility-0il96T5s.js} +1 -1
- package/dist/assets/autoplay.service-SQBFaKvM.js +1 -0
- package/dist/assets/{babylon-authoring-adapter-CmeehOBt.js → babylon-authoring-adapter-HZ_SbAet.js} +1 -1
- package/dist/assets/{binding-resolver-DUz8C8Fs.js → binding-resolver-BoecCqTq.js} +2 -2
- package/dist/assets/blender-emscripten-engine-Dk-rq4bm.js +2 -0
- package/dist/assets/{blender-node-editor.document-B8S2TVMM.js → blender-node-editor.document-B_MGPd1D.js} +1 -1
- package/dist/assets/{blender-properties-tab-y-_BeZDx.js → blender-properties-tab-ITmWT_gZ.js} +1 -1
- package/dist/assets/{blender-runtime-host-CUH6peXj.js → blender-runtime-host-CACzxt1b.js} +1 -1
- package/dist/assets/{blender-runtime-skin-B1tYITn2.js → blender-runtime-skin-CwFW2Hj7.js} +13 -13
- package/dist/assets/blender-runtime.document-CozOB5TX.js +13 -0
- package/dist/assets/blender-screenshot.menu-BFR44H0L.js +1 -0
- package/dist/assets/{blender-timeline.document-CeCylyXB.js → blender-timeline.document-C0Zzi8Vo.js} +1 -1
- package/dist/assets/{blender-uv-editor.document-DEllMw3a.js → blender-uv-editor.document-BktbYoor.js} +1 -1
- package/dist/assets/{blender-version.status-CrT9NqK-.js → blender-version.status-CLPjDPFV.js} +1 -1
- package/dist/assets/blender-wali-engine-CUWSQ_vI.js +2 -0
- package/dist/assets/{blender.command-GIjMG1-m.js → blender.command-DdHEHM62.js} +1 -1
- package/dist/assets/{board-guides-B6TEPOPi.js → board-guides-DhwRYHGT.js} +1 -1
- package/dist/assets/bridge.command-D4O9w4ft.js +3 -0
- package/dist/assets/{browserAll-k35XRFil.js → browserAll-BhQBgoJL.js} +1 -1
- package/dist/assets/{build-player.document-CHxj4P8q.js → build-player.document-DFr-d97N.js} +1 -1
- package/dist/assets/{build-profiles.document-CZCk1HYA.js → build-profiles.document-C-64YHSV.js} +2 -2
- package/dist/assets/{build-progress.status-BNwBxP2a.js → build-progress.status-DVm95Lmt.js} +1 -1
- package/dist/assets/{build-session-CW2UyYFF.js → build-session-C_SD2MNJ.js} +1 -1
- package/dist/assets/{build.action-EmCcMu47.js → build.action-CPee4b_9.js} +1 -1
- package/dist/assets/{build.command-CzEckGcR.js → build.command-CrZ5sHYt.js} +1 -1
- package/dist/assets/{build.header-CsYLpZbh.js → build.header-DDbhXD6t.js} +1 -1
- package/dist/assets/{build.menu-CaDkDQuy.js → build.menu-Ci-W_A1E.js} +1 -1
- package/dist/assets/{build.service-BcKtbU0-.js → build.service-CpUtTLP4.js} +1 -1
- package/dist/assets/{camera-BwWZUyKt.js → camera-BZM67LhS.js} +1 -1
- package/dist/assets/{camera-runtime.inspector-CJyi3zmp.js → camera-runtime.inspector-BLgPGd97.js} +1 -1
- package/dist/assets/{canvas-design-mount-B_uwZkEU.js → canvas-design-mount-DPAhHuIQ.js} +4 -4
- package/dist/assets/{canvas-entry-runtime-DskaohHK.js → canvas-entry-runtime-DeyvFKWS.js} +2 -2
- package/dist/assets/{canvas-preview-frames-BzLeTumX.js → canvas-preview-frames-Cm0GJ-40.js} +1 -1
- package/dist/assets/{canvas-story-capture.service-C80CsS8r.js → canvas-story-capture.service-Ziv9XNot.js} +2 -2
- package/dist/assets/{capability-coverage-wd6bAhv3.js → capability-coverage-39yK3DGt.js} +3 -3
- package/dist/assets/collaboration-presence-MR8LW4mZ.js +1 -0
- package/dist/assets/{collider-Dw2iWV3F.js → collider-4Sgmy-qt.js} +1 -1
- package/dist/assets/component-board.service-BdcOkwgn.js +2 -0
- package/dist/assets/{component-board.service-CH99sgj0.js → component-board.service-DO_oHdnS.js} +2 -2
- package/dist/assets/{component-board.service-XAxyLCnM.js → component-board.service-DRJcETCR.js} +2 -2
- package/dist/assets/{component-contracts.service-DerT0BP-.js → component-contracts.service-BYQTO1HK.js} +1 -1
- package/dist/assets/{component-instance-root-Cw_-ajBX.js → component-instance-root-CzRnRMe6.js} +1 -1
- package/dist/assets/{component-verbs.command-BHK9M2Rk.js → component-verbs.command-CFv5y_pR.js} +1 -1
- package/dist/assets/component-verbs.service-BMBAwqjA.js +1 -0
- package/dist/assets/{config-1rCvm02z.js → config-C6iAsozB.js} +3 -3
- package/dist/assets/{configurations-CRTYw0r9.js → configurations-Dua_x6Wx.js} +1 -1
- package/dist/assets/{connection.status-D4fjnH24.js → connection.status-DQJvEgdT.js} +1 -1
- package/dist/assets/{constraints.inspector-BgnafOLf.js → constraints.inspector-AHeP-LBc.js} +1 -1
- package/dist/assets/{content-bounds-D5pXeHJN.js → content-bounds-tMCAobKq.js} +1 -1
- package/dist/assets/{contract-system-adapters-rVGdworX.js → contract-system-adapters-D6ion7SF.js} +1 -1
- package/dist/assets/{coverage.service-BNme5Agb.js → coverage.service-Dm_H5o74.js} +2 -2
- package/dist/assets/{create-runtime-CcuQTSfy.js → create-runtime-C82CmCbc.js} +2 -2
- package/dist/assets/{curve-DorFv33R.js → curve-C7Gg05DV.js} +1 -1
- package/dist/assets/{data-asset-CAE35Emh.js → data-asset-BquhdFX2.js} +1 -1
- package/dist/assets/{data-ref-DXqRnZsJ.js → data-ref-Dcq9KJIG.js} +1 -1
- package/dist/assets/{debug-bridge-DdCJSEni.js → debug-bridge-DODnLefz.js} +1 -1
- package/dist/assets/{debug-registry-xQJcVubm.js → debug-registry-CwYeaZ9J.js} +1 -1
- package/dist/assets/{deferred-ingest-play-CEnsC3uN.js → deferred-ingest-play-7EJo_GNB.js} +2 -2
- package/dist/assets/{design-time-canvas-mount-CPRrCPFA.js → design-time-canvas-mount-DCINR1Hg.js} +2 -2
- package/dist/assets/{design-time-layers-hmGqBp06.js → design-time-layers-i1N-JjPz.js} +1 -1
- package/dist/assets/{design-time-mount.service-CLL-1Za4.js → design-time-mount.service-CtnijZJJ.js} +2 -2
- package/dist/assets/{design-time-mount.service-CEmJjRIJ.js → design-time-mount.service-DrUVDx2-.js} +2 -2
- package/dist/assets/{design-time-react-mount-DmXi3GBy.js → design-time-react-mount-CpgoPMGr.js} +1 -1
- package/dist/assets/{document-preview-three-B4j_zNef.js → document-preview-three-CuBUMP4o.js} +1 -1
- package/dist/assets/{dom-authoring-adapter-BklRbjZB.js → dom-authoring-adapter-DSM-2JgU.js} +1 -1
- package/dist/assets/{draco3d-CFWI1XDT.js → draco3d--d91Ay95.js} +1 -1
- package/dist/assets/{edit-mode-audio.service-SUzv0nHs.js → edit-mode-audio.service-C9_299G0.js} +1 -1
- package/dist/assets/{edit-mode-authoring-CSt3zzmS.js → edit-mode-authoring-DgvzXpiM.js} +1 -1
- package/dist/assets/{edit-mode-networking.service-D6UohrCr.js → edit-mode-networking.service-B6l9ESo-.js} +1 -1
- package/dist/assets/editor-api-D9NJWRVZ.js +1 -0
- package/dist/assets/{editor-layers-CjeYrUlm.js → editor-layers-D7HXdvWY.js} +1 -1
- package/dist/assets/{editor-shell-store-DckLm6m8.js → editor-shell-store-CGWO4Ldz.js} +1 -1
- package/dist/assets/{entity-object-V13bGmay.js → entity-object-Dl04-FE8.js} +1 -1
- package/dist/assets/{extend-BQeRA-aV.js → extend-GXzJ7XU_.js} +1 -1
- package/dist/assets/fork-menu-DO1KASKk.js +1 -0
- package/dist/assets/{frame-debugger-store-DDxWlDPK.js → frame-debugger-store-DOewah-x.js} +1 -1
- package/dist/assets/{game-contract-seams-DrYyE5PX.js → game-contract-seams-B5a-Ev-f.js} +1 -1
- package/dist/assets/{game-css-scope-transform-D5hQWaci.js → game-css-scope-transform-CQhuDfMR.js} +1 -1
- package/dist/assets/{game-document.service-cJ1yKc2V.js → game-document.service-CMc6SfH9.js} +1 -1
- package/dist/assets/{game-eval.command-CKo-W17_.js → game-eval.command-MY5YxNL-.js} +1 -1
- package/dist/assets/{game-module-access-DuptGLGx.js → game-module-access-BafPamOR.js} +1 -1
- package/dist/assets/{game-network-CAH_Jsh6.js → game-network-COQRxS_4.js} +3 -3
- package/dist/assets/{gameplay-export-B-JE4uSD.js → gameplay-export-i_fnSpRp.js} +1 -1
- package/dist/assets/gameplay-replay-BM_frdpr.js +1 -0
- package/dist/assets/{gameplay.command-D4cY3nOq.js → gameplay.command-Dkp2IG9Q.js} +1 -1
- package/dist/assets/{generation-jobs-CcCrhKLM.js → generation-jobs-B6T_j2D_.js} +1 -1
- package/dist/assets/{generation.service-CQwmLAOQ.js → generation.service-BXJTa6dr.js} +1 -1
- package/dist/assets/{generations-qfhCRH8C.js → generations-DqNhoKz8.js} +1 -1
- package/dist/assets/{generations.status-CcbR2OfF.js → generations.status-Dt8TW7Lk.js} +1 -1
- package/dist/assets/{hierarchy-marks-B1jSqxSv.js → hierarchy-marks-fSNwXIFe.js} +1 -1
- package/dist/assets/{hosted-asset-materialization-BZf-8JA1.js → hosted-asset-materialization-76jdNP28.js} +2 -2
- package/dist/assets/ibl-override-material-C09OAhCc.js +6 -0
- package/dist/assets/{index-V4J7xfRg.js → index-C5tasxXb.js} +294 -294
- package/dist/assets/{index-DXtfej3G.js → index-CKznhnFr.js} +1 -1
- package/dist/assets/index-CO6HFW9e.js +1 -0
- package/dist/assets/{index-aREcGExk.js → index-Cf-uQvPt.js} +1 -1
- package/dist/assets/{index-D_ViOFCz.js → index-Cub6ESrb.js} +2 -2
- package/dist/assets/{index-DrEVdQvN.js → index-D5pDWxZH.js} +1 -1
- package/dist/assets/{index-Cj_b0Ygc.js → index-c6fd_bqy.js} +1 -1
- package/dist/assets/{index-CHa43s2p.js → index-cGaEzVz5.js} +1 -1
- package/dist/assets/{index-D-RMHSzb.js → index-cNdu8TlA.js} +1 -1
- package/dist/assets/{inference-diagnostics-DoZQ1mpg.js → inference-diagnostics-D7uYs70A.js} +1 -1
- package/dist/assets/{ingest-boot-viewport-DWdOtGGE.js → ingest-boot-viewport-CjtFKkMD.js} +1 -1
- package/dist/assets/{ingest-siblings-DyvasVDH.js → ingest-siblings-Dlx0quan.js} +1 -1
- package/dist/assets/{ingest-source-persistence-CQOJeGhj.js → ingest-source-persistence-SAe0xIy-.js} +1 -1
- package/dist/assets/{ingest.service-CqIcydem.js → ingest.service-BXkZ1vXa.js} +1 -1
- package/dist/assets/{inspect-DiSjB-N1.js → inspect-BqIL-41D.js} +1 -1
- package/dist/assets/instances.command-wpQVWPb9.js +1 -0
- package/dist/assets/{json-history-resource-CH2nzMZh.js → json-history-resource-BUJgH5iK.js} +1 -1
- package/dist/assets/layered-pick-RElCrqXb.js +1 -0
- package/dist/assets/{light-CxiGIJma.js → light-DLADuHH2.js} +1 -1
- package/dist/assets/{live-project-verbs-CnknlUlT.js → live-project-verbs-Cc1GXtG5.js} +1 -1
- package/dist/assets/{machine.document-D7jMrzXt.js → machine.document-ER7OD-37.js} +1 -1
- package/dist/assets/{machines.finder-Dor3O0uf.js → machines.finder-CZ2ZxPFR.js} +1 -1
- package/dist/assets/material-CspuVO3Q.js +1 -0
- package/dist/assets/{material-factory-BN3Lax5C.js → material-factory-KV4mqSzl.js} +1 -1
- package/dist/assets/{mesh-Cj-CYroI.js → mesh-CrIkl8_H.js} +1 -1
- package/dist/assets/{model-asset-sections.service-mC4WJFTA.js → model-asset-sections.service-Cyom1FRs.js} +1 -1
- package/dist/assets/{model-inspection-8o57YSZW.js → model-inspection-BLOiPoW4.js} +1 -1
- package/dist/assets/{model-thumbnail-chePRlH7.js → model-thumbnail-B7DVMYtQ.js} +1 -1
- package/dist/assets/{models.finder-CKkT5ZdU.js → models.finder-At2wuWE3.js} +1 -1
- package/dist/assets/{module-mode-BMiMhHI3.js → module-mode-CHqvCb69.js} +2 -2
- package/dist/assets/{mount-canvas-ingest-root-B1swVIUJ.js → mount-canvas-ingest-root-uISMj3zn.js} +2 -2
- package/dist/assets/{mount-dom-ingest-root-B8hO5mht.js → mount-dom-ingest-root-C8PsgrCd.js} +2 -2
- package/dist/assets/{mount-ingest-root-Cbnh-mSw.js → mount-ingest-root-Dmb_D_oY.js} +2 -2
- package/dist/assets/{mount-manifest-B7oL1Abg.js → mount-manifest-CGwCOZO6.js} +1 -1
- package/dist/assets/{mount-three-ingest-root-BdUJx6ix.js → mount-three-ingest-root-BGdd6UoG.js} +1 -1
- package/dist/assets/{mounted-authoring-C47L5H5t.js → mounted-authoring-BS53gpIm.js} +1 -1
- package/dist/assets/{mounted-story-viewport-source-CyEK_vaq.js → mounted-story-viewport-source-CL9Ra-_N.js} +1 -1
- package/dist/assets/{native-debug-module-JJOFtIVz.js → native-debug-module-DRmkIrIW.js} +1 -1
- package/dist/assets/{navigation-ROJM2w84.js → navigation-DOuNvaV6.js} +1 -1
- package/dist/assets/{navmesh.menu-DjefqtkI.js → navmesh.menu-9g4nO2dp.js} +1 -1
- package/dist/assets/{navmesh.service-BPqjEQiq.js → navmesh.service-B7MllQj9.js} +1 -1
- package/dist/assets/network-observer.service-DY_39EdG.js +1 -0
- package/dist/assets/{network.utility-6Y5u53n8.js → network.utility-BgzPLUS5.js} +1 -1
- package/dist/assets/{object3d-document-session-registry-DNCOGA3i.js → object3d-document-session-registry-Bk-I9jZH.js} +2 -2
- package/dist/assets/{oid-transform-DQzN_Gl_.js → oid-transform-CHeHFNUu.js} +1 -1
- package/dist/assets/{particles-DGdUmqOr.js → particles-RD4cI69F.js} +1 -1
- package/dist/assets/{pixi-authoring-adapter-BRktdcIz.js → pixi-authoring-adapter-BuP3Qc7X.js} +1 -1
- package/dist/assets/{pixi-live-write-target-Dg0mdLaa.js → pixi-live-write-target-DzyXhmiw.js} +1 -1
- package/dist/assets/{play.command-4IDAqR5W.js → play.command-C7iZbm26.js} +2 -2
- package/dist/assets/{presentation-8m-RDKIS.js → presentation-43UAzXCV.js} +1 -1
- package/dist/assets/{product-t6tauO7R.js → product-BfaoEtK8.js} +1 -1
- package/dist/assets/{profiler.action-CXA4IkQB.js → profiler.action-DIp4OPNA.js} +1 -1
- package/dist/assets/{profiler.menu-BgIBv4-I.js → profiler.menu-tHZqii7c.js} +1 -1
- package/dist/assets/{profiler.utility-BYoRbfIK.js → profiler.utility-CSg5WNN8.js} +1 -1
- package/dist/assets/{project-authoring-session-DkekCxNv.js → project-authoring-session-BbwFHEzZ.js} +2 -2
- package/dist/assets/{properties-bone-constraints.inspector-DXpiCtf9.js → properties-bone-constraints.inspector-ooGWoGiI.js} +1 -1
- package/dist/assets/{properties-bone.inspector-wIDsP4c5.js → properties-bone.inspector-C_UdJjDe.js} +1 -1
- package/dist/assets/{properties-collection.inspector-5SRPbqfM.js → properties-collection.inspector-Dm4MNZQK.js} +1 -1
- package/dist/assets/{properties-constraints.inspector-DIjKz692.js → properties-constraints.inspector-DlCHF3Nd.js} +1 -1
- package/dist/assets/{properties-data.inspector-DE6i8biZ.js → properties-data.inspector-DTfv2ILq.js} +1 -1
- package/dist/assets/{properties-material.inspector-Cu1UCPY4.js → properties-material.inspector-C_-GsOvF.js} +1 -1
- package/dist/assets/{properties-modifiers.inspector-DsQzA638.js → properties-modifiers.inspector-BELGiG49.js} +1 -1
- package/dist/assets/{properties-object.inspector-C57X0GJq.js → properties-object.inspector-COLlzAo4.js} +1 -1
- package/dist/assets/{properties-output.inspector-DzrcFuRM.js → properties-output.inspector-DLpqLRCp.js} +1 -1
- package/dist/assets/{properties-particles.inspector-DGqSnelN.js → properties-particles.inspector-C8ZhuG-X.js} +1 -1
- package/dist/assets/{properties-physics.inspector-DIjhtiLe.js → properties-physics.inspector-DQ3fUdPx.js} +1 -1
- package/dist/assets/{properties-render.inspector-CX0orwn9.js → properties-render.inspector-DlPuoXQ-.js} +1 -1
- package/dist/assets/{properties-scene.inspector-DaHNL_sq.js → properties-scene.inspector-itnV8qGu.js} +1 -1
- package/dist/assets/{properties-texture.inspector-B5hmxPRy.js → properties-texture.inspector-BZbBAQ_O.js} +1 -1
- package/dist/assets/{properties-view-layer.inspector-C7hdJgei.js → properties-view-layer.inspector-CNOevOy3.js} +1 -1
- package/dist/assets/{properties-world.inspector-EWTC6jNw.js → properties-world.inspector-C7u-dAkO.js} +1 -1
- package/dist/assets/{r3f-design-session-CXlGV9hp.js → r3f-design-session-DbXiRez3.js} +2 -2
- package/dist/assets/{r3f-physics-binding-DZSIB0d_.js → r3f-physics-binding-B8Je7bNy.js} +1 -1
- package/dist/assets/{r3f-source-authoring-adapter-GR97EmII.js → r3f-source-authoring-adapter-CarxaAwC.js} +1 -1
- package/dist/assets/{react-canvas-navigation-L_mOnybL.js → react-canvas-navigation-BTVCmK_d.js} +1 -1
- package/dist/assets/{react-inspector.service-B4P3UnSY.js → react-inspector.service-BV9ZVls7.js} +1 -1
- package/dist/assets/{react-story-board-CT1_3sk_.js → react-story-board-CETbMKNG.js} +1 -1
- package/dist/assets/{react-three-rapier.esm-DyMNYoA_.js → react-three-rapier.esm-BQ3IBcaP.js} +1 -1
- package/dist/assets/{react-world-authoring-adapter-OR1SW2jI.js → react-world-authoring-adapter-DsywMgco.js} +1 -1
- package/dist/assets/{realm-services-u0mnjXU9.js → realm-services-DoN23Ol2.js} +1 -1
- package/dist/assets/{reflection-probe-capture.inspector-CTNlSaGW.js → reflection-probe-capture.inspector-D0grUDdX.js} +1 -1
- package/dist/assets/{registry-wqakYaDW.js → registry-CZxNkOhN.js} +1 -1
- package/dist/assets/{relative-import-specifier-DXWVQf0o.js → relative-import-specifier-DMppRnNH.js} +1 -1
- package/dist/assets/{render-env-CN09NtDf.js → render-env-BAO3Rc6G.js} +1 -1
- package/dist/assets/{render-features-HCEupUJ6.js → render-features-CBm-s0QE.js} +1 -1
- package/dist/assets/{render-settings-Clt6d05o.js → render-settings-DCZaLK-j.js} +1 -1
- package/dist/assets/{resolve-three-CLzKVMx2.js → resolve-three-Bwj7rkZB.js} +3 -3
- package/dist/assets/{root-seam-contract-D2uQHWF9.js → root-seam-contract-DMUsCBFW.js} +1 -1
- package/dist/assets/{run-selection-AyelFc9T.js → run-selection-DRkjJF-w.js} +1 -1
- package/dist/assets/{scene-capture-WbPcLfJl.js → scene-capture-DVXdql_1.js} +1 -1
- package/dist/assets/{scene-document.service-4U6rDhCp.js → scene-document.service-CxGQ1BN-.js} +2 -2
- package/dist/assets/{scene-framing-DzSL2Cld.js → scene-framing-DUd4lKtW.js} +1 -1
- package/dist/assets/{seeded-random-tpdJjdqy.js → seeded-random-DzZFJTfh.js} +1 -1
- package/dist/assets/{setup-renderer-B5vZmCyu.js → setup-renderer-DF2zFw-E.js} +1 -1
- package/dist/assets/{source-object3d-authoring-adapter-BQnQ3Qzg.js → source-object3d-authoring-adapter-RimvAMDG.js} +1 -1
- package/dist/assets/{source-persistence-backend-uyd6NiWD.js → source-persistence-backend-BRcy23H9.js} +1 -1
- package/dist/assets/{stage-keyboard-B2yrk2zu.js → stage-keyboard-JRZ1CNbL.js} +1 -1
- package/dist/assets/{stage-overlay-set-Cqtz3s06.js → stage-overlay-set-DHN11xPU.js} +1 -1
- package/dist/assets/{stage-presence-markers-BgLs0Aj5.js → stage-presence-markers-AQuGIbnu.js} +1 -1
- package/dist/assets/stage-transform-tools-B8u8n8gJ.js +1 -0
- package/dist/assets/{standard-viewport-dressing-uhv_3JvQ.js → standard-viewport-dressing-NHKaiGVg.js} +3 -3
- package/dist/assets/{state-watch.action-BJ08HgcO.js → state-watch.action-B_conRk5.js} +1 -1
- package/dist/assets/{state-watch.menu-rAULwijr.js → state-watch.menu-B6GNrnYH.js} +1 -1
- package/dist/assets/{state-watch.utility-eEbQcj8t.js → state-watch.utility-CxuUOPhl.js} +1 -1
- package/dist/assets/story-capture-DYXQlnlZ.js +1 -0
- package/dist/assets/{story-documents-Cm4jCkW5.js → story-documents-D_Tg0idt.js} +2 -2
- package/dist/assets/{story-documents.service-Cgtg6rXn.js → story-documents.service-DQh0SkkQ.js} +1 -1
- package/dist/assets/{story-documents.service-BDvQCslK.js → story-documents.service-ES8nxeNu.js} +1 -1
- package/dist/assets/story-media-presence-D4w-waFJ.js +1 -0
- package/dist/assets/{story-pixi-preview-D62Q_vIW.js → story-pixi-preview-B6GFGUQG.js} +1 -1
- package/dist/assets/{story-presentation-CofUdEU7.js → story-presentation-6qhUDkv4.js} +1 -1
- package/dist/assets/{story-three-preview-B9O1wapP.js → story-three-preview-BgLSJIlN.js} +2 -2
- package/dist/assets/{studio-environment-BIhqrtFc.js → studio-environment-BGU84AOG.js} +1 -1
- package/dist/assets/{surface-state-DrM3wsrr.js → surface-state-BtNEZzCd.js} +1 -1
- package/dist/assets/{syntactic-prop-specs-BGz0N7Dg.js → syntactic-prop-specs-B309atpv.js} +1 -1
- package/dist/assets/{team-playtest.service-CiE8UJAe.js → team-playtest.service-B8leDEE-.js} +1 -1
- package/dist/assets/{three-BQfhEwUz.js → three-BRZq2Px5.js} +1 -1
- package/dist/assets/{three-authoring-adapter-COBwREQO.js → three-authoring-adapter-DkfGlaNQ.js} +1 -1
- package/dist/assets/three-authoring.service-sOchR4o8.js +2 -0
- package/dist/assets/{three-ingest-runtime-BnRF_nJN.js → three-ingest-runtime-D9JoNRjk.js} +1 -1
- package/dist/assets/three-integration-D3zBmOoj.js +2 -0
- package/dist/assets/three-integration.service-CE8aNHob.js +1 -0
- package/dist/assets/{three-projection-core-PQm-CO61.js → three-projection-core-Dt5ARGlM.js} +1 -1
- package/dist/assets/{three-state-C7khRIQE.js → three-state-3qPk0Sq8.js} +1 -1
- package/dist/assets/{three-story-capture.service-B0oiGIfp.js → three-story-capture.service-B3U2L4qG.js} +2 -2
- package/dist/assets/three-story-model-C96x-E0V.js +1 -0
- package/dist/assets/{three-viewport-presentation-B_tBudM-.js → three-viewport-presentation-DGctcUkE.js} +1 -1
- package/dist/assets/{transform-mode-request-DWM6BdRA.js → transform-mode-request-C0cdwtJf.js} +1 -1
- package/dist/assets/{transport-strip-vgXGDgkI.js → transport-strip-8OsPiJIm.js} +1 -1
- package/dist/assets/transport.header-D1Otpit3.js +1 -0
- package/dist/assets/{tuples-BnYrlQqS.js → tuples-CaBWqclR.js} +1 -1
- package/dist/assets/ui-board-document-BMTAhmJP.js +2 -0
- package/dist/assets/{user-data-CifDDvSr.js → user-data-4Ls0MsfF.js} +1 -1
- package/dist/assets/{utility-view-state-BPl8Asup.js → utility-view-state-gIzv2Oo_.js} +1 -1
- package/dist/assets/{viewport-door-BCXEYmon.js → viewport-door-C4Fu0zS3.js} +1 -1
- package/dist/assets/{viewport-root-presentation-DJLpUuf0.js → viewport-root-presentation-DMMIH4rt.js} +1 -1
- package/dist/assets/{viewport-surface-status-jwLhIK_M.js → viewport-surface-status-CdI6sQko.js} +1 -1
- package/dist/assets/{webworkerAll-P6jePa6X.js → webworkerAll-BINEvomm.js} +1 -1
- package/dist/assets/worker-Cu9kIzIf.js +2 -0
- package/dist/assets/{workspace-arrangement-B_OcbQbj.js → workspace-arrangement-w-T2xUGF.js} +1 -1
- package/dist/assets/{world-documents-Bx3j867R.js → world-documents-feEUCgVE.js} +1 -1
- package/dist/assets/{world-root-stage-binding-LEhjWDkn.js → world-root-stage-binding-BDb6wt_C.js} +1 -1
- package/dist/assets/{xstate-animation-binding-Dionc_fC.js → xstate-animation-binding-Bhz1Uhhw.js} +1 -1
- package/dist/assets/{xstate-animation-meta-XEmD_qc_.js → xstate-animation-meta-CvDlYgrt.js} +1 -1
- package/dist-node/cli.js +21 -18
- package/package.json +16 -16
- package/template/src/lib/reflections/ReflectionProbe.tsx +34 -5
- package/template/src/lib/reflections/index.ts +1 -0
- package/template/src/lib/reflections/probe-controller.ts +44 -3
- package/template/src/lib/reflections/reflection-probe-registry.ts +32 -7
- package/template/src/lib/reflections/volume-reflection-material.ts +638 -160
- package/dist/assets/EntityModelDocument-CplmAib0.js +0 -1
- package/dist/assets/InspectorObjectPreview-Bjc1Tn-I.js +0 -1
- package/dist/assets/ModelAssetDocument-G6ajiV51.js +0 -1
- package/dist/assets/Object3DDocumentViewport-BhH8afDi.js +0 -2
- package/dist/assets/StageHost-Bor1eHEO.js +0 -2
- package/dist/assets/autoplay.service-DaonKf7O.js +0 -1
- package/dist/assets/blender-emscripten-engine-DQljvfR7.js +0 -2
- package/dist/assets/blender-runtime.document-DnSl0twI.js +0 -12
- package/dist/assets/blender-wali-engine-CO-jG_ik.js +0 -2
- package/dist/assets/bridge.command-D6qTcgje.js +0 -3
- package/dist/assets/collaboration-presence-DcPhahtF.js +0 -1
- package/dist/assets/component-board.service-Cd1c9oSN.js +0 -2
- package/dist/assets/component-verbs.service-DsxhVcvk.js +0 -1
- package/dist/assets/editor-api-WeHVNlEo.js +0 -1
- package/dist/assets/fork-menu-Bthg9viY.js +0 -1
- package/dist/assets/gameplay-replay-WyopKGyB.js +0 -1
- package/dist/assets/ibl-override-material-CMo_a49U.js +0 -6
- package/dist/assets/index-yXSK_qPW.js +0 -1
- package/dist/assets/instances.command-COw2QpbN.js +0 -1
- package/dist/assets/layered-pick-BUr1U8lU.js +0 -1
- package/dist/assets/material-B6cH1Oqw.js +0 -1
- package/dist/assets/network-observer.service-GFzXuBMb.js +0 -1
- package/dist/assets/stage-transform-tools-BHcz53td.js +0 -1
- package/dist/assets/story-capture-B8wfSf5s.js +0 -1
- package/dist/assets/story-media-presence-SGlp_afL.js +0 -1
- package/dist/assets/three-authoring.service-C0azvoq8.js +0 -2
- package/dist/assets/three-integration-DeWYFf1x.js +0 -2
- package/dist/assets/three-integration.service-CoWCBTmg.js +0 -1
- package/dist/assets/three-story-model-D7g2pqfJ.js +0 -1
- package/dist/assets/transport.header-CfVHXjrT.js +0 -1
- package/dist/assets/ui-board-document-B_-K9luq.js +0 -2
- package/dist/assets/worker-CJIsrsP6.js +0 -2
package/BUNDLED_NOTICES
CHANGED
|
@@ -2106,9 +2106,9 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
2106
2106
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
2107
2107
|
SOFTWARE.
|
|
2108
2108
|
|
|
2109
|
-
@volter/blender-engine@0.1.
|
|
2109
|
+
@volter/blender-engine@0.1.21
|
|
2110
2110
|
Declared license: GPL-3.0-or-later
|
|
2111
|
-
Source: the unmodified npm package @volter/blender-engine@0.1.
|
|
2111
|
+
Source: the unmodified npm package @volter/blender-engine@0.1.21, from https://github.com/volter-ai/editor.git
|
|
2112
2112
|
|
|
2113
2113
|
--- packages/blender-engine/LICENSE ---
|
|
2114
2114
|
|
|
@@ -2838,9 +2838,9 @@ Public License instead of this License. But first, please read
|
|
|
2838
2838
|
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
|
2839
2839
|
|
|
2840
2840
|
|
|
2841
|
-
@volter/editor-blender@0.1.
|
|
2841
|
+
@volter/editor-blender@0.1.23
|
|
2842
2842
|
Declared license: AGPL-3.0-only AND GPL-3.0-or-later
|
|
2843
|
-
Source: the unmodified npm package @volter/editor-blender@0.1.
|
|
2843
|
+
Source: the unmodified npm package @volter/editor-blender@0.1.23, from https://github.com/volter-ai/editor.git
|
|
2844
2844
|
|
|
2845
2845
|
--- packages/editor-blender/LICENSE ---
|
|
2846
2846
|
|
|
@@ -4279,9 +4279,9 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
4279
4279
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
4280
4280
|
SOFTWARE.
|
|
4281
4281
|
|
|
4282
|
-
@volter/editor-core@0.5.
|
|
4282
|
+
@volter/editor-core@0.5.83
|
|
4283
4283
|
Declared license: AGPL-3.0-only AND Apache-2.0
|
|
4284
|
-
Source: the unmodified npm package @volter/editor-core@0.5.
|
|
4284
|
+
Source: the unmodified npm package @volter/editor-core@0.5.83, from https://github.com/volter-ai/editor.git
|
|
4285
4285
|
|
|
4286
4286
|
--- packages/editor-core/LICENSE ---
|
|
4287
4287
|
|
|
@@ -5187,9 +5187,9 @@ server/support/ modules transferred from the SDK package of volter-ai/volter-eng
|
|
|
5187
5187
|
Their source paths and hashes are recorded in provenance/editor-server.json.
|
|
5188
5188
|
|
|
5189
5189
|
|
|
5190
|
-
@volter/editor-game@0.5.
|
|
5190
|
+
@volter/editor-game@0.5.83
|
|
5191
5191
|
Declared license: AGPL-3.0-only
|
|
5192
|
-
Source: the unmodified npm package @volter/editor-game@0.5.
|
|
5192
|
+
Source: the unmodified npm package @volter/editor-game@0.5.83, from https://github.com/volter-ai/editor.git
|
|
5193
5193
|
|
|
5194
5194
|
--- packages/editor-game/LICENSE ---
|
|
5195
5195
|
|
|
@@ -5883,9 +5883,9 @@ package of volter-ai/volter-engine, and retains that license. It re-exports the
|
|
|
5883
5883
|
Apache-2.0 tool contract of @volter/editor-sdk.
|
|
5884
5884
|
|
|
5885
5885
|
|
|
5886
|
-
@volter/editor-project@0.5.
|
|
5886
|
+
@volter/editor-project@0.5.83
|
|
5887
5887
|
Declared license: Apache-2.0
|
|
5888
|
-
Source: the unmodified npm package @volter/editor-project@0.5.
|
|
5888
|
+
Source: the unmodified npm package @volter/editor-project@0.5.83, from https://github.com/volter-ai/editor.git
|
|
5889
5889
|
|
|
5890
5890
|
--- packages/editor-project/LICENSE ---
|
|
5891
5891
|
|
|
@@ -6093,9 +6093,9 @@ Source: the unmodified npm package @volter/editor-project@0.5.82, from https://g
|
|
|
6093
6093
|
limitations under the License.
|
|
6094
6094
|
|
|
6095
6095
|
|
|
6096
|
-
@volter/editor-react@0.5.
|
|
6096
|
+
@volter/editor-react@0.5.83
|
|
6097
6097
|
Declared license: AGPL-3.0-only
|
|
6098
|
-
Source: the unmodified npm package @volter/editor-react@0.5.
|
|
6098
|
+
Source: the unmodified npm package @volter/editor-react@0.5.83, from https://github.com/volter-ai/editor.git
|
|
6099
6099
|
|
|
6100
6100
|
--- packages/editor-react/LICENSE ---
|
|
6101
6101
|
|
|
@@ -6770,9 +6770,9 @@ The files in this package were imported from volter-ai/volter-engine at commit
|
|
|
6770
6770
|
09c2749ce. LICENSE contains the AGPL-3.0-only license they retain.
|
|
6771
6771
|
|
|
6772
6772
|
|
|
6773
|
-
@volter/editor-sdk@0.5.
|
|
6773
|
+
@volter/editor-sdk@0.5.83
|
|
6774
6774
|
Declared license: Apache-2.0
|
|
6775
|
-
Source: the unmodified npm package @volter/editor-sdk@0.5.
|
|
6775
|
+
Source: the unmodified npm package @volter/editor-sdk@0.5.83, from https://github.com/volter-ai/editor.git
|
|
6776
6776
|
|
|
6777
6777
|
--- packages/editor-sdk/LICENSE ---
|
|
6778
6778
|
|
|
@@ -6993,9 +6993,9 @@ The project output-root policy is Apache-2.0, transferred from the original
|
|
|
6993
6993
|
SDK; its exact source is recorded in provenance/editor-server.json.
|
|
6994
6994
|
|
|
6995
6995
|
|
|
6996
|
-
@volter/editor-threejs@0.5.
|
|
6996
|
+
@volter/editor-threejs@0.5.83
|
|
6997
6997
|
Declared license: AGPL-3.0-only AND Apache-2.0
|
|
6998
|
-
Source: the unmodified npm package @volter/editor-threejs@0.5.
|
|
6998
|
+
Source: the unmodified npm package @volter/editor-threejs@0.5.83, from https://github.com/volter-ai/editor.git
|
|
6999
6999
|
|
|
7000
7000
|
--- packages/editor-threejs/LICENSE ---
|
|
7001
7001
|
|
|
@@ -7886,9 +7886,9 @@ Source revisions and original file hashes are recorded in the repository's
|
|
|
7886
7886
|
provenance/blender-integration.json and provenance/editor-host.json.
|
|
7887
7887
|
|
|
7888
7888
|
|
|
7889
|
-
@volter/editor-xstate@0.5.
|
|
7889
|
+
@volter/editor-xstate@0.5.83
|
|
7890
7890
|
Declared license: AGPL-3.0-only
|
|
7891
|
-
Source: the unmodified npm package @volter/editor-xstate@0.5.
|
|
7891
|
+
Source: the unmodified npm package @volter/editor-xstate@0.5.83, from https://github.com/volter-ai/editor.git
|
|
7892
7892
|
|
|
7893
7893
|
--- packages/editor-xstate/LICENSE ---
|
|
7894
7894
|
|
|
@@ -8563,9 +8563,9 @@ Copyright 2026 Volter AI, Inc.
|
|
|
8563
8563
|
LICENSE contains the AGPL-3.0-only license this package is distributed under.
|
|
8564
8564
|
|
|
8565
8565
|
|
|
8566
|
-
@volter/game-runtime@0.5.
|
|
8566
|
+
@volter/game-runtime@0.5.83
|
|
8567
8567
|
Declared license: Apache-2.0
|
|
8568
|
-
Source: the unmodified npm package @volter/game-runtime@0.5.
|
|
8568
|
+
Source: the unmodified npm package @volter/game-runtime@0.5.83, from https://github.com/volter-ai/editor.git
|
|
8569
8569
|
|
|
8570
8570
|
--- packages/game-runtime/LICENSE ---
|
|
8571
8571
|
|
|
@@ -8783,9 +8783,9 @@ Apache-2.0 @volter/game-runtime package. They retain that license; LICENSE
|
|
|
8783
8783
|
contains its text.
|
|
8784
8784
|
|
|
8785
8785
|
|
|
8786
|
-
@volter/threejs-runtime@0.5.
|
|
8786
|
+
@volter/threejs-runtime@0.5.83
|
|
8787
8787
|
Declared license: Apache-2.0
|
|
8788
|
-
Source: the unmodified npm package @volter/threejs-runtime@0.5.
|
|
8788
|
+
Source: the unmodified npm package @volter/threejs-runtime@0.5.83, from https://github.com/volter-ai/editor.git
|
|
8789
8789
|
|
|
8790
8790
|
--- packages/threejs-runtime/LICENSE ---
|
|
8791
8791
|
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"id": "music",
|
|
16
16
|
"packageJson": {
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@volter/dawproject": "0.5.
|
|
19
|
-
"@volter/editor-dawproject": "0.5.
|
|
18
|
+
"@volter/dawproject": "0.5.83",
|
|
19
|
+
"@volter/editor-dawproject": "0.5.83"
|
|
20
20
|
},
|
|
21
21
|
"volterTools": [
|
|
22
22
|
"./src/tools/music-render.tool.ts"
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { type ThreeElements, useFrame, useThree } from '@react-three/fiber';
|
|
2
|
-
import type { ReflectionProbeConfig } from '@volter/threejs-runtime/adapter/reflection-probe';
|
|
3
2
|
import { type ReactNode, useLayoutEffect, useRef, useState } from 'react';
|
|
4
3
|
import type * as THREE from 'three';
|
|
5
|
-
import { createReflectionProbeMark } from './probe-controller';
|
|
4
|
+
import { createReflectionProbeMark, type VolumeReflectionProbeConfig } from './probe-controller';
|
|
6
5
|
import {
|
|
7
6
|
acquireReflectionProbeRegistry,
|
|
8
7
|
type ReflectionProbeRegistryLease,
|
|
@@ -60,6 +59,15 @@ export type ReflectionProbeProps = Omit<ThreeElements['group'], 'children'> & {
|
|
|
60
59
|
readonly blendDistance?: number;
|
|
61
60
|
readonly priority?: number;
|
|
62
61
|
readonly intensity?: number;
|
|
62
|
+
/**
|
|
63
|
+
* The diffuse light the volume material takes from this probe: its capture
|
|
64
|
+
* (default), the constant `diffuseColor`, or none. See `ReflectionProbeDiffuse`.
|
|
65
|
+
*/
|
|
66
|
+
readonly diffuse?: 'capture' | 'color' | 'none';
|
|
67
|
+
/** Scales the probe's diffuse light in the volume material; defaults to `intensity`. */
|
|
68
|
+
readonly diffuseIntensity?: number;
|
|
69
|
+
/** Linear RGB of the `color` diffuse. */
|
|
70
|
+
readonly diffuseColor?: [number, number, number];
|
|
63
71
|
readonly parallaxProjection?: boolean;
|
|
64
72
|
/** Full local-space projection-box dimensions. */
|
|
65
73
|
readonly parallaxSize?: [number, number, number];
|
|
@@ -73,6 +81,19 @@ export type ReflectionProbeProps = Omit<ThreeElements['group'], 'children'> & {
|
|
|
73
81
|
readonly captureShadows?: boolean;
|
|
74
82
|
};
|
|
75
83
|
|
|
84
|
+
/** The diffuse fields a probe states, leaving out the ones it does not (they keep their defaults). */
|
|
85
|
+
function diffuseConfig(
|
|
86
|
+
diffuse: ReflectionProbeProps['diffuse'],
|
|
87
|
+
diffuseIntensity: number | undefined,
|
|
88
|
+
diffuseColor: [number, number, number] | undefined,
|
|
89
|
+
): Partial<VolumeReflectionProbeConfig> {
|
|
90
|
+
return {
|
|
91
|
+
...(diffuse === undefined ? {} : { diffuse }),
|
|
92
|
+
...(diffuseIntensity === undefined ? {} : { diffuseIntensity }),
|
|
93
|
+
...(diffuseColor === undefined ? {} : { diffuseColor }),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
76
97
|
export function ReflectionProbe({
|
|
77
98
|
name = 'Reflection Probe',
|
|
78
99
|
children,
|
|
@@ -82,6 +103,9 @@ export function ReflectionProbe({
|
|
|
82
103
|
blendDistance = 1,
|
|
83
104
|
priority = 0,
|
|
84
105
|
intensity = 1,
|
|
106
|
+
diffuse,
|
|
107
|
+
diffuseIntensity,
|
|
108
|
+
diffuseColor,
|
|
85
109
|
parallaxProjection = true,
|
|
86
110
|
parallaxSize = [10, 6, 10],
|
|
87
111
|
parallaxOffset = [0, 0, 0],
|
|
@@ -109,6 +133,7 @@ export function ReflectionProbe({
|
|
|
109
133
|
blendDistance,
|
|
110
134
|
priority,
|
|
111
135
|
intensity,
|
|
136
|
+
...diffuseConfig(diffuse, diffuseIntensity, diffuseColor),
|
|
112
137
|
parallaxProjection,
|
|
113
138
|
parallaxSize,
|
|
114
139
|
parallaxOffset,
|
|
@@ -121,13 +146,14 @@ export function ReflectionProbe({
|
|
|
121
146
|
captureShadows,
|
|
122
147
|
}),
|
|
123
148
|
);
|
|
124
|
-
const config:
|
|
149
|
+
const config: VolumeReflectionProbeConfig = {
|
|
125
150
|
shape,
|
|
126
151
|
size,
|
|
127
152
|
radius,
|
|
128
153
|
blendDistance,
|
|
129
154
|
priority,
|
|
130
155
|
intensity,
|
|
156
|
+
...diffuseConfig(diffuse, diffuseIntensity, diffuseColor),
|
|
131
157
|
parallaxProjection,
|
|
132
158
|
parallaxSize,
|
|
133
159
|
parallaxOffset,
|
|
@@ -149,6 +175,9 @@ export function ReflectionProbe({
|
|
|
149
175
|
blendDistance,
|
|
150
176
|
priority,
|
|
151
177
|
intensity,
|
|
178
|
+
diffuse,
|
|
179
|
+
diffuseIntensity,
|
|
180
|
+
diffuseColor,
|
|
152
181
|
parallaxProjection,
|
|
153
182
|
parallaxSize,
|
|
154
183
|
parallaxOffset,
|
|
@@ -170,8 +199,8 @@ export function ReflectionProbe({
|
|
|
170
199
|
unobserve.current = acquired.registry.observe((probes: readonly ReflectionProbeRuntime[]) => {
|
|
171
200
|
const self = probes.find((probe) => probe.node === object);
|
|
172
201
|
const published = self?.ready ? self.texture : null;
|
|
173
|
-
// Runs
|
|
174
|
-
// actually changes identity,
|
|
202
|
+
// Runs whenever the registry changes; React re-renders only when the
|
|
203
|
+
// published texture actually changes identity, once per capture at most.
|
|
175
204
|
setEnvMap((current) => (current === published ? current : published));
|
|
176
205
|
});
|
|
177
206
|
return () => {
|
|
@@ -3,6 +3,7 @@ export {
|
|
|
3
3
|
type ReflectionProbeProps,
|
|
4
4
|
type ReflectionProbePublication,
|
|
5
5
|
} from './ReflectionProbe';
|
|
6
|
+
export type { ReflectionProbeDiffuse, VolumeReflectionProbeConfig } from './probe-controller';
|
|
6
7
|
export {
|
|
7
8
|
acquireReflectionProbeRegistry,
|
|
8
9
|
createReflectionProbeRegistry,
|
|
@@ -4,17 +4,53 @@ import type {
|
|
|
4
4
|
ReflectionProbeSnapshot,
|
|
5
5
|
} from '@volter/threejs-runtime/adapter/reflection-probe';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* How a probe lights the diffuse term of the volume material that blends it,
|
|
9
|
+
* carried in its mark's config beside the format-neutral fields. Every field
|
|
10
|
+
* is optional; left out, a probe lights the diffuse from its capture, scaled
|
|
11
|
+
* by its `intensity`, as the reflected term is.
|
|
12
|
+
*/
|
|
13
|
+
export interface ReflectionProbeDiffuse {
|
|
14
|
+
/**
|
|
15
|
+
* Where the probe's diffuse light comes from: its `capture` (the default), the
|
|
16
|
+
* constant `color` below, or `none` — the probe lights no diffuse, and a
|
|
17
|
+
* fragment that only it covers keeps the environment's.
|
|
18
|
+
*/
|
|
19
|
+
readonly diffuse?: 'capture' | 'color' | 'none';
|
|
20
|
+
/** Scales the probe's diffuse light. Defaults to the probe's `intensity`. */
|
|
21
|
+
readonly diffuseIntensity?: number;
|
|
22
|
+
/** Linear RGB radiance of the `color` diffuse. */
|
|
23
|
+
readonly diffuseColor?: readonly [number, number, number];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** A probe's config as the capability's own element states it. */
|
|
27
|
+
export type VolumeReflectionProbeConfig = ReflectionProbeConfig & ReflectionProbeDiffuse;
|
|
28
|
+
|
|
7
29
|
export interface MutableReflectionProbeMark extends ReflectionProbeMark {
|
|
8
30
|
updateConfig(config: ReflectionProbeConfig): void;
|
|
9
31
|
setCaptureStatus(snapshot: ReflectionProbeSnapshot): void;
|
|
10
32
|
}
|
|
11
33
|
|
|
12
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* The config as a capture sees it: everything but the diffuse fields, which
|
|
36
|
+
* only the volume material reads (from the probe's uniforms, not its capture).
|
|
37
|
+
*/
|
|
38
|
+
function captureSignature(config: ReflectionProbeConfig): string {
|
|
39
|
+
const { diffuse, diffuseIntensity, diffuseColor, ...captured } = config as VolumeReflectionProbeConfig;
|
|
40
|
+
return JSON.stringify(captured);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* One live projection of a component's JSX props and capture state. A config
|
|
45
|
+
* change that a capture sees queues a recapture (outside Manual); one that
|
|
46
|
+
* only changes the diffuse fields takes effect without one.
|
|
47
|
+
*/
|
|
13
48
|
export function createReflectionProbeMark(
|
|
14
49
|
initial: ReflectionProbeConfig,
|
|
15
50
|
): MutableReflectionProbeMark {
|
|
16
51
|
let config = initial;
|
|
17
52
|
let configSignature = JSON.stringify(initial);
|
|
53
|
+
let capturedSignature = captureSignature(initial);
|
|
18
54
|
let revision = 0;
|
|
19
55
|
let snapshot: ReflectionProbeSnapshot = {
|
|
20
56
|
status: initial.captureMode === 'manual' ? 'idle' : 'queued',
|
|
@@ -47,12 +83,17 @@ export function createReflectionProbeMark(
|
|
|
47
83
|
const signature = JSON.stringify(next);
|
|
48
84
|
if (signature === configSignature) return;
|
|
49
85
|
const previousMode = config.captureMode;
|
|
86
|
+
const nextCaptured = captureSignature(next);
|
|
87
|
+
const recapture = nextCaptured !== capturedSignature;
|
|
50
88
|
config = next;
|
|
51
89
|
configSignature = signature;
|
|
52
|
-
|
|
90
|
+
capturedSignature = nextCaptured;
|
|
91
|
+
// A diffuse-only change needs no capture: the registry sees the new config
|
|
92
|
+
// and the volume material rewrites its uniforms.
|
|
93
|
+
if (recapture && next.captureMode !== 'manual') {
|
|
53
94
|
revision += 1;
|
|
54
95
|
snapshot = { status: 'queued', lastCapturedAt: snapshot.lastCapturedAt };
|
|
55
|
-
} else if (previousMode !== 'manual' && snapshot.status !== 'ready') {
|
|
96
|
+
} else if (next.captureMode === 'manual' && previousMode !== 'manual' && snapshot.status !== 'ready') {
|
|
56
97
|
// Entering Manual never performs an implicit capture. A valid existing
|
|
57
98
|
// result remains valid; otherwise the explicit Recapture button is the
|
|
58
99
|
// only operation that advances the capture revision.
|
|
@@ -71,9 +71,17 @@ interface ProbeState extends ReflectionProbeRuntime {
|
|
|
71
71
|
ready: boolean;
|
|
72
72
|
capturedRevision: number;
|
|
73
73
|
readonly capturedTransform: Matrix4;
|
|
74
|
+
/** The node's world matrix and the mark's config as observers were last told them. */
|
|
75
|
+
readonly publishedTransform: Matrix4;
|
|
76
|
+
publishedConfig: ReflectionProbeMark['config'] | null;
|
|
74
77
|
}
|
|
75
78
|
|
|
76
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* Called when an observer starts observing, and again whenever what it reads
|
|
81
|
+
* changes: a probe added or removed, a capture window opening or closing (and
|
|
82
|
+
* the result it published), a probe's node moved or its config changed. A
|
|
83
|
+
* frame in which nothing changed calls no observer.
|
|
84
|
+
*/
|
|
77
85
|
export type ReflectionProbeObserver = (
|
|
78
86
|
probes: readonly ReflectionProbeRuntime[],
|
|
79
87
|
capturing: boolean,
|
|
@@ -129,6 +137,8 @@ function makeProbe(node: Object3D, mark: ReflectionProbeMark): ProbeState {
|
|
|
129
137
|
parallaxOffset: new Vector3(),
|
|
130
138
|
captureOffset: new Vector3(),
|
|
131
139
|
capturedTransform: new Matrix4().makeScale(0, 0, 0),
|
|
140
|
+
publishedTransform: new Matrix4().makeScale(0, 0, 0),
|
|
141
|
+
publishedConfig: null,
|
|
132
142
|
filtered: null,
|
|
133
143
|
atlases: new Map(),
|
|
134
144
|
texture: null,
|
|
@@ -174,6 +184,10 @@ function releaseProbeResources(probe: ProbeState): void {
|
|
|
174
184
|
probe.ready = false;
|
|
175
185
|
}
|
|
176
186
|
|
|
187
|
+
/**
|
|
188
|
+
* Bring the probe's volume up to date with its node and config; true when
|
|
189
|
+
* that changed what an observer reads since it was last told.
|
|
190
|
+
*/
|
|
177
191
|
function refreshProbe(probe: ProbeState): boolean {
|
|
178
192
|
const config = probe.mark.config;
|
|
179
193
|
const cubeSize = cubeSizeOf(probe.mark);
|
|
@@ -194,9 +208,15 @@ function refreshProbe(probe: ProbeState): boolean {
|
|
|
194
208
|
probe.parallaxExtents.fromArray(config.parallaxSize).multiplyScalar(0.5);
|
|
195
209
|
probe.parallaxOffset.fromArray(config.parallaxOffset);
|
|
196
210
|
probe.captureOffset.fromArray(config.captureOffset);
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
211
|
+
if (config.captureMode === 'on-change' && movedSinceCapture(probe)) probe.ready = false;
|
|
212
|
+
const changed = probe.publishedConfig !== config || !probe.publishedTransform.equals(probe.node.matrixWorld);
|
|
213
|
+
probe.publishedConfig = config;
|
|
214
|
+
probe.publishedTransform.copy(probe.node.matrixWorld);
|
|
215
|
+
return changed;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
function movedSinceCapture(probe: ProbeState): boolean {
|
|
219
|
+
return !probe.capturedTransform.equals(probe.node.matrixWorld);
|
|
200
220
|
}
|
|
201
221
|
|
|
202
222
|
/** The cube target and camera, created here because only a capture needs them. */
|
|
@@ -300,7 +320,7 @@ export function createReflectionProbeRegistry(
|
|
|
300
320
|
for (let offset = 0; offset < probes.length; offset += 1) {
|
|
301
321
|
const index = (cursor + offset) % probes.length;
|
|
302
322
|
const probe = probes[index]!;
|
|
303
|
-
const moved =
|
|
323
|
+
const moved = movedSinceCapture(probe);
|
|
304
324
|
const mode = probe.mark.config.captureMode;
|
|
305
325
|
const due =
|
|
306
326
|
mode === 'realtime' ||
|
|
@@ -336,10 +356,15 @@ export function createReflectionProbeRegistry(
|
|
|
336
356
|
update(frameToken) {
|
|
337
357
|
if (disposed || frameToken === lastFrame || !canCaptureEnvironment(renderer)) return;
|
|
338
358
|
lastFrame = frameToken;
|
|
339
|
-
|
|
359
|
+
let changed = false;
|
|
360
|
+
for (const probe of probes) {
|
|
361
|
+
const ready = probe.ready;
|
|
362
|
+
if (refreshProbe(probe) || probe.ready !== ready) changed = true;
|
|
363
|
+
}
|
|
340
364
|
const due = nextCapture();
|
|
341
365
|
if (due) capture(due);
|
|
342
|
-
|
|
366
|
+
// A capture opened a window (and published a result): closing it tells every observer.
|
|
367
|
+
if (due || changed) notify(false);
|
|
343
368
|
},
|
|
344
369
|
dispose() {
|
|
345
370
|
if (disposed) return;
|