@relu-interactives/spatial-ecs 0.5.3 → 0.9.0
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/dist/{System-V_mv07le.d.cts → System-8D-XBDKZ.d.cts} +734 -8
- package/dist/{System-V_mv07le.d.ts → System-DPMAW30g.d.ts} +734 -8
- package/dist/{XRHandPose-CU3vNFuS.d.ts → XRHandPose-CWSrsnYN.d.ts} +236 -3
- package/dist/{XRHandPose-CQTLGxFC.d.cts → XRHandPose-Dn2yiALk.d.cts} +236 -3
- package/dist/animation/index.cjs +252 -0
- package/dist/animation/index.cjs.map +1 -0
- package/dist/animation/index.d.cts +100 -0
- package/dist/animation/index.d.ts +100 -0
- package/dist/animation/index.js +4 -0
- package/dist/animation/index.js.map +1 -0
- package/dist/chunk-CKTHDXPS.js +11 -0
- package/dist/chunk-CKTHDXPS.js.map +1 -0
- package/dist/chunk-GSWC6LLD.js +241 -0
- package/dist/chunk-GSWC6LLD.js.map +1 -0
- package/dist/chunk-JEPUCLZX.js +1237 -0
- package/dist/chunk-JEPUCLZX.js.map +1 -0
- package/dist/{chunk-BUEKOSR5.js → chunk-JNYPJB55.js} +435 -14
- package/dist/chunk-JNYPJB55.js.map +1 -0
- package/dist/{chunk-RXBLOO5B.js → chunk-NXASMBDS.js} +105 -715
- package/dist/chunk-NXASMBDS.js.map +1 -0
- package/dist/chunk-OHCNPPMX.js +334 -0
- package/dist/chunk-OHCNPPMX.js.map +1 -0
- package/dist/{chunk-DF5SSRN6.js → chunk-VYIWOXAY.js} +2574 -3381
- package/dist/chunk-VYIWOXAY.js.map +1 -0
- package/dist/chunk-WWP46AEF.js +2878 -0
- package/dist/chunk-WWP46AEF.js.map +1 -0
- package/dist/{chunk-OY7ZODZP.js → chunk-XE4OXN2W.js} +3 -9
- package/dist/chunk-XE4OXN2W.js.map +1 -0
- package/dist/{chunk-OWQSESTO.js → chunk-XU2DVWCP.js} +4 -3
- package/dist/chunk-XU2DVWCP.js.map +1 -0
- package/dist/components/index.cjs +334 -10
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.d.cts +5 -3
- package/dist/components/index.d.ts +5 -3
- package/dist/components/index.js +3 -2
- package/dist/docs/api/Behaviour/classes/Behaviour.md +366 -79
- package/dist/docs/api/Behaviour/index.md +7 -3
- package/dist/docs/api/Behaviour/type-aliases/UiInteractionEvent.md +35 -0
- package/dist/docs/api/Component/classes/Component.md +14 -1
- package/dist/docs/api/components/classes/AnimationComponent.md +26 -26
- package/dist/docs/api/components/classes/AudioComponent.md +19 -19
- package/dist/docs/api/components/classes/CameraComponent.md +14 -14
- package/dist/docs/api/components/classes/EntityType.md +4 -4
- package/dist/docs/api/components/classes/Environment.md +5 -4
- package/dist/docs/api/components/classes/ImageComponent.md +7 -7
- package/dist/docs/api/components/classes/ImageTarget.md +8 -8
- package/dist/docs/api/components/classes/ImageTargetAnchor.md +4 -4
- package/dist/docs/api/components/classes/InstanceSlotComponent.md +4 -4
- package/dist/docs/api/components/classes/InstancedMeshComponent.md +10 -10
- package/dist/docs/api/components/classes/LightComponent.md +6 -6
- package/dist/docs/api/components/classes/MaterialComponent.md +16 -16
- package/dist/docs/api/components/classes/MeshComponent.md +3 -3
- package/dist/docs/api/components/classes/MeshGeometryComponent.md +9 -9
- package/dist/docs/api/components/classes/ModelComponent.md +8 -5
- package/dist/docs/api/components/classes/Name.md +3 -3
- package/dist/docs/api/components/classes/Object3DRef.md +4 -4
- package/dist/docs/api/components/classes/ParentId.md +3 -3
- package/dist/docs/api/components/classes/PhysicsComponent.md +7 -6
- package/dist/docs/api/components/classes/Postprocessing.md +3 -3
- package/dist/docs/api/components/classes/PrefabInstance.md +5 -5
- package/dist/docs/api/components/classes/PrefabNode.md +3 -3
- package/dist/docs/api/components/classes/ScriptComponent.md +5 -5
- package/dist/docs/api/components/classes/ScriptObjectComponent.md +9 -9
- package/dist/docs/api/components/classes/Selectable.md +3 -3
- package/dist/docs/api/components/classes/SelectionTransformState.md +5 -5
- package/dist/docs/api/components/classes/SpriteComponent.md +7 -7
- package/dist/docs/api/components/classes/TransformComponent.md +12 -12
- package/dist/docs/api/components/classes/UIButtonComponent.md +63 -0
- package/dist/docs/api/components/classes/UIPanelComponent.md +62 -0
- package/dist/docs/api/components/classes/UISliderComponent.md +59 -0
- package/dist/docs/api/components/classes/UITextComponent.md +59 -0
- package/dist/docs/api/components/classes/UIToggleComponent.md +56 -0
- package/dist/docs/api/components/classes/VRTeleportAreaComponent.md +53 -0
- package/dist/docs/api/components/classes/VideoComponent.md +28 -28
- package/dist/docs/api/components/classes/XRAnchorComponent.md +64 -0
- package/dist/docs/api/components/classes/XREnvironmentComponent.md +64 -0
- package/dist/docs/api/components/classes/XRHandPoseComponent.md +50 -0
- package/dist/docs/api/components/classes/XRInteractableComponent.md +74 -0
- package/dist/docs/api/components/classes/XRInteractorComponent.md +57 -0
- package/dist/docs/api/components/classes/XRInteractorSideComponent.md +50 -0
- package/dist/docs/api/components/classes/XRRigComponent.md +68 -0
- package/dist/docs/api/components/functions/createAttachPoint.md +25 -0
- package/dist/docs/api/components/functions/createHandPoseEntry.md +25 -0
- package/dist/docs/api/components/functions/defaultMaterialValue.md +1 -1
- package/dist/docs/api/components/functions/handPoseDefinitionFor.md +33 -0
- package/dist/docs/api/components/functions/normalizeEnvironmentLighting.md +30 -0
- package/dist/docs/api/components/functions/normalizePhysicsState.md +1 -1
- package/dist/docs/api/components/functions/setModelLoadState.md +33 -0
- package/dist/docs/api/components/functions/setPhysicsLiveRef.md +3 -9
- package/dist/docs/api/components/index.md +61 -4
- package/dist/docs/api/components/type-aliases/AnimationComponentOptions.md +9 -9
- package/dist/docs/api/components/type-aliases/CameraComponentOptions.md +13 -13
- package/dist/docs/api/components/type-aliases/CameraProjection.md +1 -1
- package/dist/docs/api/components/type-aliases/CameraRuntimeType.md +5 -3
- package/dist/docs/api/components/type-aliases/ColliderShape.md +1 -1
- package/dist/docs/api/components/type-aliases/ColliderState.md +20 -20
- package/dist/docs/api/components/type-aliases/CubeMeshParameters.md +4 -4
- package/dist/docs/api/components/type-aliases/EditableMeshObjectKind.md +1 -1
- package/dist/docs/api/components/type-aliases/EnvironmentFogState.md +8 -8
- package/dist/docs/api/components/type-aliases/EnvironmentFogType.md +1 -1
- package/dist/docs/api/components/type-aliases/EnvironmentGradientEffect.md +1 -1
- package/dist/docs/api/components/type-aliases/EnvironmentLightingState.md +40 -0
- package/dist/docs/api/components/type-aliases/EnvironmentSkyboxImageProjection.md +22 -0
- package/dist/docs/api/components/type-aliases/EnvironmentSkyboxState.md +9 -7
- package/dist/docs/api/components/type-aliases/EnvironmentSkyboxType.md +1 -1
- package/dist/docs/api/components/type-aliases/EnvironmentState.md +7 -5
- package/dist/docs/api/components/type-aliases/EnvironmentToneMapping.md +16 -0
- package/dist/docs/api/components/type-aliases/ImageTargetAnchorOptions.md +3 -3
- package/dist/docs/api/components/type-aliases/ImageTargetReference.md +7 -7
- package/dist/docs/api/components/type-aliases/InstanceTransform.md +13 -13
- package/dist/docs/api/components/type-aliases/InstancedMeshKind.md +1 -1
- package/dist/docs/api/components/type-aliases/LightShadowState.md +37 -0
- package/dist/docs/api/components/type-aliases/LightValueState.md +13 -11
- package/dist/docs/api/components/type-aliases/MaterialTypeValue.md +1 -1
- package/dist/docs/api/components/type-aliases/MaterialValueState.md +28 -28
- package/dist/docs/api/components/type-aliases/MeshGeometryParameters.md +1 -1
- package/dist/docs/api/components/type-aliases/MeshGeometryParametersByKind.md +7 -7
- package/dist/docs/api/components/type-aliases/ModelLoadState.md +15 -0
- package/dist/docs/api/components/type-aliases/PhysicsState.md +3 -3
- package/dist/docs/api/components/type-aliases/PlaneMeshParameters.md +3 -3
- package/dist/docs/api/components/type-aliases/PostprocessingState.md +62 -62
- package/dist/docs/api/components/type-aliases/RadiusHeightMeshParameters.md +3 -3
- package/dist/docs/api/components/type-aliases/RadiusMeshParameters.md +2 -2
- package/dist/docs/api/components/type-aliases/RigidbodyState.md +17 -17
- package/dist/docs/api/components/type-aliases/RigidbodyType.md +1 -1
- package/dist/docs/api/components/type-aliases/ScriptEntry.md +8 -8
- package/dist/docs/api/components/type-aliases/ScriptObjectComponentInput.md +1 -1
- package/dist/docs/api/components/type-aliases/ScriptObjectRuntimeState.md +1 -1
- package/dist/docs/api/components/type-aliases/TextureFilteringValue.md +1 -1
- package/dist/docs/api/components/type-aliases/TransformData.md +4 -4
- package/dist/docs/api/components/type-aliases/TransformModeValue.md +1 -1
- package/dist/docs/api/components/type-aliases/TransformSpaceValue.md +1 -1
- package/dist/docs/api/components/type-aliases/UIButtonOptions.md +45 -0
- package/dist/docs/api/components/type-aliases/UIPanelOptions.md +39 -0
- package/dist/docs/api/components/type-aliases/UISliderOptions.md +39 -0
- package/dist/docs/api/components/type-aliases/UITextOptions.md +41 -0
- package/dist/docs/api/components/type-aliases/UIToggleOptions.md +35 -0
- package/dist/docs/api/components/type-aliases/UiFollowMode.md +15 -0
- package/dist/docs/api/components/type-aliases/UiTextAlign.md +13 -0
- package/dist/docs/api/components/type-aliases/UiTextVAlign.md +13 -0
- package/dist/docs/api/components/type-aliases/VRTeleportAreaOptions.md +29 -0
- package/dist/docs/api/components/type-aliases/Vec3.md +4 -4
- package/dist/docs/api/components/type-aliases/VrTeleportShape.md +15 -0
- package/dist/docs/api/components/type-aliases/XRAnchorOptions.md +23 -0
- package/dist/docs/api/components/type-aliases/XRHandPoseOptions.md +23 -0
- package/dist/docs/api/components/type-aliases/XRInteractableOptions.md +75 -0
- package/dist/docs/api/components/type-aliases/XRInteractorOptions.md +37 -0
- package/dist/docs/api/components/type-aliases/XRRigOptions.md +51 -0
- package/dist/docs/api/components/type-aliases/XrAttachPoint.md +53 -0
- package/dist/docs/api/components/type-aliases/XrDistanceGrabBehavior.md +19 -0
- package/dist/docs/api/components/type-aliases/XrEnvironmentKind.md +15 -0
- package/dist/docs/api/components/type-aliases/XrEnvironmentOrientation.md +15 -0
- package/dist/docs/api/components/type-aliases/XrEnvironmentPhysics.md +25 -0
- package/dist/docs/api/components/type-aliases/XrGrabGesture.md +19 -0
- package/dist/docs/api/components/type-aliases/XrGrabHands.md +20 -0
- package/dist/docs/api/components/type-aliases/XrGrabReach.md +20 -0
- package/dist/docs/api/components/type-aliases/XrHandPoseEntry.md +49 -0
- package/dist/docs/api/components/type-aliases/XrHandPreset.md +19 -0
- package/dist/docs/api/components/type-aliases/XrInteractorSide.md +15 -0
- package/dist/docs/api/components/type-aliases/XrInteractorType.md +13 -0
- package/dist/docs/api/components/type-aliases/XrLocomotionMode.md +15 -0
- package/dist/docs/api/components/type-aliases/XrTrackingOrigin.md +24 -0
- package/dist/docs/api/components/type-aliases/XrTwoHandRotation.md +15 -0
- package/dist/docs/api/components/variables/DEFAULT_COLLIDER_STATE.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_ENVIRONMENT_LIGHTING.md +15 -0
- package/dist/docs/api/components/variables/DEFAULT_ENVIRONMENT_STATE.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_INSTANCED_MESH_PARAMETERS.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_INSTANCE_TRANSFORM.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_MESH_GEOMETRY_PARAMETERS.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_PHYSICS_STATE.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_POSE_CURLS.md +13 -0
- package/dist/docs/api/components/variables/DEFAULT_POSE_DIRECTIONS.md +13 -0
- package/dist/docs/api/components/variables/DEFAULT_POSTPROCESSING_STATE.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_RIGIDBODY_STATE.md +1 -1
- package/dist/docs/api/components/variables/MODEL_NO_PATH_MESSAGE.md +15 -0
- package/dist/docs/api/index/classes/AnimationStateMachine.md +16 -16
- package/dist/docs/api/index/classes/AnimationStateManager.md +13 -13
- package/dist/docs/api/index/classes/AnimationSystem.md +3 -3
- package/dist/docs/api/index/classes/AudioSystem.md +4 -4
- package/dist/docs/api/index/classes/CameraSyncSystem.md +2 -2
- package/dist/docs/api/index/classes/EnvironmentSyncSystem.md +19 -4
- package/dist/docs/api/index/classes/HandPoseTracker.md +114 -0
- package/dist/docs/api/index/classes/InputSystem.md +33 -33
- package/dist/docs/api/index/classes/InstancedMeshSystem.md +2 -2
- package/dist/docs/api/index/classes/LightSyncSystem.md +2 -2
- package/dist/docs/api/index/classes/MaterialSyncSystem.md +3 -3
- package/dist/docs/api/index/classes/MeshGeometrySystem.md +2 -2
- package/dist/docs/api/index/classes/ObjectManagementSystem.md +14 -14
- package/dist/docs/api/index/classes/ObjectVisibilitySystem.md +2 -2
- package/dist/docs/api/index/classes/PhysicsSyncSystem.md +4 -4
- package/dist/docs/api/index/classes/PostprocessingSyncSystem.md +34 -10
- package/dist/docs/api/index/classes/RenderSystem.md +13 -4
- package/dist/docs/api/index/classes/ScriptBehaviourSystem.md +9 -5
- package/dist/docs/api/index/classes/ScriptObject.md +10 -10
- package/dist/docs/api/index/classes/ScriptObjectSystem.md +6 -6
- package/dist/docs/api/index/classes/TeleportAimGate.md +114 -0
- package/dist/docs/api/index/classes/ThrowVelocityTracker.md +89 -0
- package/dist/docs/api/index/classes/TransformSyncSystem.md +2 -2
- package/dist/docs/api/index/classes/UIInteractionSystem.md +60 -0
- package/dist/docs/api/index/classes/UIPanelSystem.md +79 -0
- package/dist/docs/api/index/classes/VRTeleportAreaSystem.md +49 -0
- package/dist/docs/api/index/classes/VideoSystem.md +8 -6
- package/dist/docs/api/index/classes/World.md +282 -100
- package/dist/docs/api/index/classes/XRAnchorSystem.md +90 -0
- package/dist/docs/api/index/classes/XRControllerVisualSystem.md +77 -0
- package/dist/docs/api/index/classes/XREnvironmentSystem.md +137 -0
- package/dist/docs/api/index/classes/XRHandPoseSystem.md +107 -0
- package/dist/docs/api/index/classes/XRHitTestSystem.md +93 -0
- package/dist/docs/api/index/classes/XRHoverVisualSystem.md +76 -0
- package/dist/docs/api/index/classes/XRInputSystem.md +189 -0
- package/dist/docs/api/index/classes/XRInteractionSystem.md +323 -0
- package/dist/docs/api/index/classes/XRLocomotionSystem.md +128 -0
- package/dist/docs/api/index/classes/XRSessionSystem.md +116 -0
- package/dist/docs/api/index/classes/XRTeleportVisualSystem.md +75 -0
- package/dist/docs/api/index/functions/angularVelocityFrom.md +33 -0
- package/dist/docs/api/index/functions/applyHandMaterial.md +26 -0
- package/dist/docs/api/index/functions/applyPrefabToSnapshotInstances.md +1 -1
- package/dist/docs/api/index/functions/arcGroundCrossing.md +30 -0
- package/dist/docs/api/index/functions/buildComponentValueMaps.md +1 -1
- package/dist/docs/api/index/functions/buildNodeKeyMapsFromSnapshot.md +1 -1
- package/dist/docs/api/index/functions/buildNodeMapsFromSnapshot.md +1 -1
- package/dist/docs/api/index/functions/canonicalizeComponentValue.md +1 -1
- package/dist/docs/api/index/functions/clearModelCache.md +1 -1
- package/dist/docs/api/index/functions/clearPrefabCache.md +1 -1
- package/dist/docs/api/index/functions/cloneHandPose.md +23 -0
- package/dist/docs/api/index/functions/collectDiffPaths.md +1 -1
- package/dist/docs/api/index/functions/collectDirectPrefabDependencies.md +1 -1
- package/dist/docs/api/index/functions/collectEntitySubtree.md +1 -1
- package/dist/docs/api/index/functions/collectSnapshotSubtreeIds.md +1 -1
- package/dist/docs/api/index/functions/computeFingerCurl.md +29 -0
- package/dist/docs/api/index/functions/computeHandShape.md +29 -0
- package/dist/docs/api/index/functions/computeInstanceOverrides.md +1 -1
- package/dist/docs/api/index/functions/computePalmPose.md +30 -0
- package/dist/docs/api/index/functions/computePalmWidth.md +25 -0
- package/dist/docs/api/index/functions/computePinch.md +29 -0
- package/dist/docs/api/index/functions/computeSpread.md +33 -0
- package/dist/docs/api/index/functions/createAnimationComponent.md +1 -1
- package/dist/docs/api/index/functions/createAudioComponent.md +1 -1
- package/dist/docs/api/index/functions/createCameraComponent.md +1 -1
- package/dist/docs/api/index/functions/createEntityTypeComponent.md +2 -2
- package/dist/docs/api/index/functions/createEnvironmentComponent.md +1 -1
- package/dist/docs/api/index/functions/createHandMaterial.md +30 -0
- package/dist/docs/api/index/functions/createImageComponent.md +1 -1
- package/dist/docs/api/index/functions/createImageTargetAnchorComponent.md +1 -1
- package/dist/docs/api/index/functions/createImageTargetComponent.md +2 -2
- package/dist/docs/api/index/functions/createInstanceSlotComponent.md +1 -1
- package/dist/docs/api/index/functions/createInstancedMeshComponent.md +1 -1
- package/dist/docs/api/index/functions/createLightComponent.md +2 -2
- package/dist/docs/api/index/functions/createMaterialComponent.md +2 -2
- package/dist/docs/api/index/functions/createMeshComponent.md +1 -1
- package/dist/docs/api/index/functions/createMeshGeometryComponent.md +1 -1
- package/dist/docs/api/index/functions/createModelComponent.md +1 -1
- package/dist/docs/api/index/functions/createNameComponent.md +1 -1
- package/dist/docs/api/index/functions/createObject3DRefComponent.md +1 -1
- package/dist/docs/api/index/functions/createParentIdComponent.md +1 -1
- package/dist/docs/api/index/functions/createPhysicsComponent.md +1 -1
- package/dist/docs/api/index/functions/createPostprocessingComponent.md +1 -1
- package/dist/docs/api/index/functions/createScriptComponent.md +1 -1
- package/dist/docs/api/index/functions/createScriptObjectComponent.md +1 -1
- package/dist/docs/api/index/functions/createSelectableComponent.md +1 -1
- package/dist/docs/api/index/functions/createSelectionTransformStateComponent.md +1 -1
- package/dist/docs/api/index/functions/createSpriteComponent.md +1 -1
- package/dist/docs/api/index/functions/createTransformComponent.md +1 -1
- package/dist/docs/api/index/functions/createUIButtonComponent.md +28 -0
- package/dist/docs/api/index/functions/createUIPanelComponent.md +28 -0
- package/dist/docs/api/index/functions/createUISliderComponent.md +28 -0
- package/dist/docs/api/index/functions/createUITextComponent.md +28 -0
- package/dist/docs/api/index/functions/createUIToggleComponent.md +28 -0
- package/dist/docs/api/index/functions/createVRTeleportAreaComponent.md +28 -0
- package/dist/docs/api/index/functions/createVideoComponent.md +1 -1
- package/dist/docs/api/index/functions/createXRAnchorComponent.md +28 -0
- package/dist/docs/api/index/functions/createXRHandPoseComponent.md +28 -0
- package/dist/docs/api/index/functions/createXRInteractableComponent.md +28 -0
- package/dist/docs/api/index/functions/createXRInteractorComponent.md +28 -0
- package/dist/docs/api/index/functions/createXRInteractorSideComponent.md +28 -0
- package/dist/docs/api/index/functions/createXRRigComponent.md +28 -0
- package/dist/docs/api/index/functions/decanonicalizeComponentValue.md +1 -1
- package/dist/docs/api/index/functions/despawnPrefab.md +1 -1
- package/dist/docs/api/index/functions/encodeOverride.md +1 -1
- package/dist/docs/api/index/functions/estimateHandScale.md +28 -0
- package/dist/docs/api/index/functions/findSnapshotRootEntityIds.md +1 -1
- package/dist/docs/api/index/functions/findTopLevelNestedRegions.md +1 -1
- package/dist/docs/api/index/functions/getHandPosePreset.md +31 -0
- package/dist/docs/api/index/functions/groupOverridePaths.md +1 -1
- package/dist/docs/api/index/functions/handPoseFromCurls.md +42 -0
- package/dist/docs/api/index/functions/hydrateWorldFromSnapshot.md +1 -1
- package/dist/docs/api/index/functions/hydrateWorldFromSnapshotDetailed.md +1 -1
- package/dist/docs/api/index/functions/indexSnapshotByEntity.md +1 -1
- package/dist/docs/api/index/functions/instantiateSubtree.md +1 -1
- package/dist/docs/api/index/functions/loadPrefab.md +1 -1
- package/dist/docs/api/index/functions/loadSharedGltf.md +1 -1
- package/dist/docs/api/index/functions/matchHandPose.md +34 -0
- package/dist/docs/api/index/functions/mergeComponentValue.md +1 -1
- package/dist/docs/api/index/functions/parseOverride.md +1 -1
- package/dist/docs/api/index/functions/parsePrefabAsset.md +1 -1
- package/dist/docs/api/index/functions/prefabFileVersionFor.md +1 -1
- package/dist/docs/api/index/functions/readXrCapabilities.md +30 -0
- package/dist/docs/api/index/functions/registerDefaultComponentFactories.md +1 -1
- package/dist/docs/api/index/functions/registerDefaultFactories.md +1 -1
- package/dist/docs/api/index/functions/remapSnapshotEntityIds.md +3 -3
- package/dist/docs/api/index/functions/resolveDracoDecoderPath.md +1 -1
- package/dist/docs/api/index/functions/restoreComponentState.md +1 -1
- package/dist/docs/api/index/functions/restorePostCreateComponents.md +1 -1
- package/dist/docs/api/index/functions/sampleTeleportArc.md +40 -0
- package/dist/docs/api/index/functions/serializeEntitySubtree.md +1 -1
- package/dist/docs/api/index/functions/setDracoDecoderPath.md +1 -1
- package/dist/docs/api/index/functions/setPrefabAssetUrlResolver.md +1 -1
- package/dist/docs/api/index/functions/spawnPrefab.md +1 -1
- package/dist/docs/api/index/index.md +116 -4
- package/dist/docs/api/index/interfaces/ChromaKeyOptions.md +20 -0
- package/dist/docs/api/index/interfaces/EcsSystem.md +3 -3
- package/dist/docs/api/index/interfaces/PostprocessingBuildContext.md +21 -0
- package/dist/docs/api/index/interfaces/PostprocessingPipeline.md +84 -0
- package/dist/docs/api/index/interfaces/RenderBackend.md +168 -0
- package/dist/docs/api/index/interfaces/StateMachine.md +13 -13
- package/dist/docs/api/index/type-aliases/AnimationStateCallbacks.md +4 -4
- package/dist/docs/api/index/type-aliases/ApplyPrefabToSnapshotResult.md +3 -3
- package/dist/docs/api/index/type-aliases/ComponentFactory.md +1 -1
- package/dist/docs/api/index/type-aliases/ComponentValueMaps.md +50 -26
- package/dist/docs/api/index/type-aliases/EcsComponentFactoryKind.md +14 -2
- package/dist/docs/api/index/type-aliases/EcsRenderer.md +17 -0
- package/dist/docs/api/index/type-aliases/EcsWorldComponentSnapshot.md +3 -3
- package/dist/docs/api/index/type-aliases/EcsWorldStateSnapshotLike.md +4 -4
- package/dist/docs/api/index/type-aliases/ExternalRefWarning.md +5 -5
- package/dist/docs/api/index/type-aliases/HandMaterialOptions.md +32 -0
- package/dist/docs/api/index/type-aliases/HandPoseTrackerOptions.md +27 -0
- package/dist/docs/api/index/type-aliases/HydrateOptions.md +3 -3
- package/dist/docs/api/index/type-aliases/HydrateWorldFromSnapshotResult.md +4 -4
- package/dist/docs/api/index/type-aliases/InstantiateSubtreeResult.md +3 -3
- package/dist/docs/api/index/type-aliases/KeyboardKey.md +1 -1
- package/dist/docs/api/index/type-aliases/ModuleLoader.md +1 -1
- package/dist/docs/api/index/type-aliases/MouseButton.md +1 -1
- package/dist/docs/api/index/type-aliases/NestedRegion.md +5 -5
- package/dist/docs/api/index/type-aliases/NodeKeyMaps.md +5 -5
- package/dist/docs/api/index/type-aliases/NodeMaps.md +4 -4
- package/dist/docs/api/index/type-aliases/PrefabAsset.md +5 -5
- package/dist/docs/api/index/type-aliases/RemapSnapshotOptions.md +2 -2
- package/dist/docs/api/index/type-aliases/RendererKind.md +15 -0
- package/dist/docs/api/index/type-aliases/ScriptBehaviourSystemOptions.md +23 -0
- package/dist/docs/api/index/type-aliases/ScriptErrorEvent.md +39 -0
- package/dist/docs/api/index/type-aliases/ScriptErrorListener.md +25 -0
- package/dist/docs/api/index/type-aliases/ScriptErrorPhase.md +28 -0
- package/dist/docs/api/index/type-aliases/ScriptErrorReport.md +31 -0
- package/dist/docs/api/index/type-aliases/ScriptErrorSource.md +15 -0
- package/dist/docs/api/index/type-aliases/SelectionContext.md +4 -4
- package/dist/docs/api/index/type-aliases/SerializeEntitySubtreeResult.md +4 -4
- package/dist/docs/api/index/type-aliases/SpawnPrefabOptions.md +5 -5
- package/dist/docs/api/index/type-aliases/SpawnPrefabSource.md +1 -1
- package/dist/docs/api/index/type-aliases/SubtreeSnapshot.md +3 -3
- package/dist/docs/api/index/type-aliases/UiCanvasLike.md +46 -0
- package/dist/docs/api/index/type-aliases/VelocitySample.md +23 -0
- package/dist/docs/api/index/type-aliases/XrCapabilities.md +41 -0
- package/dist/docs/api/index/type-aliases/XrFinger.md +13 -0
- package/dist/docs/api/index/type-aliases/XrFingerCurl.md +27 -0
- package/dist/docs/api/index/type-aliases/XrFingerTarget.md +31 -0
- package/dist/docs/api/index/type-aliases/XrHandJointName.md +40 -0
- package/dist/docs/api/index/type-aliases/XrHandJoints.md +18 -0
- package/dist/docs/api/index/type-aliases/XrHandPoseAxis.md +15 -0
- package/dist/docs/api/index/type-aliases/XrHandPoseContext.md +23 -0
- package/dist/docs/api/index/type-aliases/XrHandPoseDefinition.md +47 -0
- package/dist/docs/api/index/type-aliases/XrHandPoseDirection.md +21 -0
- package/dist/docs/api/index/type-aliases/XrHandPoseEvent.md +13 -0
- package/dist/docs/api/index/type-aliases/XrHandPoseEventDetail.md +27 -0
- package/dist/docs/api/index/type-aliases/XrHandPoseMatch.md +25 -0
- package/dist/docs/api/index/type-aliases/XrHandPoseOrientation.md +25 -0
- package/dist/docs/api/index/type-aliases/XrHandShape.md +46 -0
- package/dist/docs/api/index/type-aliases/XrHandedness.md +15 -0
- package/dist/docs/api/index/type-aliases/XrHitResult.md +25 -0
- package/dist/docs/api/index/type-aliases/XrInputKind.md +19 -0
- package/dist/docs/api/index/type-aliases/XrInputState.md +60 -0
- package/dist/docs/api/index/type-aliases/XrPalmPose.md +31 -0
- package/dist/docs/api/index/variables/ADDED_NODE_MARKER_COMPONENT.md +2 -2
- package/dist/docs/api/index/variables/ARC_GRAVITY.md +15 -0
- package/dist/docs/api/index/variables/ARC_MAX_TIME.md +15 -0
- package/dist/docs/api/index/variables/ARC_SPEED.md +15 -0
- package/dist/docs/api/index/variables/ARC_STEPS.md +15 -0
- package/dist/docs/api/index/variables/CURLED_COS.md +13 -0
- package/dist/docs/api/index/variables/DEFAULT_DIRECTION_TOLERANCE.md +15 -0
- package/dist/docs/api/index/variables/DEFAULT_ENTER_CONFIDENCE.md +13 -0
- package/dist/docs/api/index/variables/DEFAULT_EXIT_CONFIDENCE.md +13 -0
- package/dist/docs/api/index/variables/DEFAULT_LOST_GRACE_SECONDS.md +13 -0
- package/dist/docs/api/index/variables/DEFAULT_MIN_HOLD_SECONDS.md +13 -0
- package/dist/docs/api/index/variables/DEFAULT_SCRIPT_ERROR_RETRY_DELAY.md +17 -0
- package/dist/docs/api/index/variables/FALLBACK_HAND_SCALE.md +15 -0
- package/dist/docs/api/index/variables/HAND_POSE_PRESETS.md +19 -0
- package/dist/docs/api/index/variables/HAND_POSE_PRESET_IDS.md +15 -0
- package/dist/docs/api/index/variables/HYDRATABLE_ENTITY_KINDS.md +1 -1
- package/dist/docs/api/index/variables/KeyboardKeys.md +89 -89
- package/dist/docs/api/index/variables/MATCH_FALLOFF.md +15 -0
- package/dist/docs/api/index/variables/MAX_PLAUSIBLE_SPEED.md +25 -0
- package/dist/docs/api/index/variables/MAX_SAMPLE_AGE_SECONDS.md +18 -0
- package/dist/docs/api/index/variables/NODE_KEY_SEPARATOR.md +1 -1
- package/dist/docs/api/index/variables/NO_XR_CAPABILITIES.md +15 -0
- package/dist/docs/api/index/variables/OVERRIDE_DIFF_EXCLUDED_COMPONENTS.md +1 -1
- package/dist/docs/api/index/variables/OVERRIDE_ROOT_EXCLUDED_COMPONENTS.md +1 -1
- package/dist/docs/api/index/variables/PINCH_FINGERS.md +15 -0
- package/dist/docs/api/index/variables/PREFAB_FILE_VERSION.md +1 -1
- package/dist/docs/api/index/variables/PREFAB_FILE_VERSION_NESTED.md +1 -1
- package/dist/docs/api/index/variables/SCRIPT_OBJECT_ROOT_FLAG.md +1 -1
- package/dist/docs/api/index/variables/SHARED_MODEL_RESOURCE_FLAG.md +1 -1
- package/dist/docs/api/index/variables/STRAIGHT_COS.md +19 -0
- package/dist/docs/api/index/variables/VELOCITY_SAMPLES.md +15 -0
- package/dist/docs/api/index/variables/XR_FINGERS.md +13 -0
- package/dist/docs/api/index/variables/XR_HOVER_SHELL_FLAG.md +15 -0
- package/dist/docs/api/index/variables/webglBackend.md +16 -0
- package/dist/docs/api/typedoc-sidebar.json +1 -1
- package/dist/docs/api/types/type-aliases/AssetInput.md +3 -3
- package/dist/docs/api/types/type-aliases/CheckboxInput.md +3 -3
- package/dist/docs/api/types/type-aliases/ColorInput.md +1 -1
- package/dist/docs/api/types/type-aliases/ComponentInput.md +4 -4
- package/dist/docs/api/types/type-aliases/ComponentKind.md +1 -1
- package/dist/docs/api/types/type-aliases/DropdownInput.md +3 -3
- package/dist/docs/api/types/type-aliases/DropdownOption.md +3 -3
- package/dist/docs/api/types/type-aliases/EcsEntityEditorKind.md +1 -1
- package/dist/docs/api/types/type-aliases/EcsEntityKind.md +10 -2
- package/dist/docs/api/types/type-aliases/EntityId.md +1 -1
- package/dist/docs/api/types/type-aliases/EntityInput.md +3 -3
- package/dist/docs/api/types/type-aliases/FloatInput.md +1 -1
- package/dist/docs/api/types/type-aliases/IntersectionResult.md +3 -3
- package/dist/docs/api/types/type-aliases/ParentLookup.md +3 -3
- package/dist/docs/api/types/type-aliases/SelectionListener.md +1 -1
- package/dist/docs/api/types/type-aliases/SliderInput.md +5 -5
- package/dist/docs/api/types/type-aliases/TextInput.md +1 -1
- package/dist/docs/api/types/type-aliases/ToggleInput.md +1 -1
- package/dist/docs/api/types/type-aliases/Vec3.md +1 -1
- package/dist/docs/api/types/type-aliases/Vector2Input.md +3 -3
- package/dist/docs/api/types/type-aliases/Vector3Input.md +4 -4
- package/dist/docs/api/types/type-aliases/WorldEntityView.md +1 -1
- package/dist/docs/guide/audio-mixing-and-sound-banks.md +71 -0
- package/dist/docs/guide/authoring-a-behaviour.md +3 -3
- package/dist/docs/guide/authoring-a-script-object.md +12 -9
- package/dist/docs/guide/behaviour-data-binding/index.md +11 -11
- package/dist/docs/guide/behaviour-lifecycle.md +9 -0
- package/dist/docs/guide/bone-attachments-and-ik.md +128 -0
- package/dist/docs/guide/component-catalog.md +10 -2
- package/dist/docs/guide/components/light.md +42 -0
- package/dist/docs/guide/components/model.md +32 -3
- package/dist/docs/guide/concepts.md +2 -2
- package/dist/docs/guide/getting-started/creating-objects.md +2 -2
- package/dist/docs/guide/getting-started/editing-objects.md +2 -2
- package/dist/docs/guide/getting-started/editor/ai-agent.md +227 -0
- package/dist/docs/guide/getting-started/editor/hierarchy.md +2 -2
- package/dist/docs/guide/getting-started/editor/index.md +3 -2
- package/dist/docs/guide/getting-started/editor/inspector.md +2 -2
- package/dist/docs/guide/getting-started/editor/scene-inspector.md +3 -3
- package/dist/docs/guide/getting-started/editor/toolbar.md +11 -11
- package/dist/docs/guide/getting-started/editor/viewport.md +17 -9
- package/dist/docs/guide/getting-started/index.md +1 -1
- package/dist/docs/guide/getting-started/installation.md +1 -1
- package/dist/docs/guide/getting-started/preview-and-test.md +7 -7
- package/dist/docs/guide/getting-started/project-types/image-tracking.md +23 -11
- package/dist/docs/guide/getting-started/project-types/index.md +4 -4
- package/dist/docs/guide/getting-started/project-types/vr.md +270 -2
- package/dist/docs/guide/getting-started/projects.md +4 -5
- package/dist/docs/guide/getting-started/shortcuts.md +5 -4
- package/dist/docs/guide/multiplayer.md +92 -0
- package/dist/docs/guide/scene/environment.md +101 -4
- package/dist/docs/guide/scene/index.md +4 -4
- package/dist/docs/guide/scene/postprocessing.md +67 -5
- package/dist/docs/guide/spatial-ui.md +83 -7
- package/dist/docs/guide/spawning/area-light.md +2 -0
- package/dist/docs/guide/systems/environment-sync-system.md +11 -6
- package/dist/docs/guide/systems/light-sync-system.md +5 -3
- package/dist/docs/guide/systems/postprocessing-sync-system.md +16 -6
- package/dist/docs/guide/systems/render-system.md +7 -6
- package/dist/docs/guide/systems/script-behaviour-system.md +7 -5
- package/dist/docs/guide/systems/script-object-system.md +3 -1
- package/dist/docs/guide/systems/video-system.md +1 -1
- package/dist/docs/guide/webgpu-and-tsl.md +415 -0
- package/dist/docs/guide/world-api.md +52 -2
- package/dist/factories/index.cjs +921 -283
- package/dist/factories/index.cjs.map +1 -1
- package/dist/factories/index.d.cts +14 -3
- package/dist/factories/index.d.ts +14 -3
- package/dist/factories/index.js +7 -4
- package/dist/{index-C3ik3sA1.d.ts → index-CAZHrh0q.d.cts} +28 -3
- package/dist/{index-Dlr-7-4m.d.cts → index-CLtSMf2M.d.ts} +28 -3
- package/dist/{index-D2Jt_JzH.d.ts → index-D5MmJNyj.d.ts} +161 -43
- package/dist/{index-DaG03vyN.d.cts → index-DiIjV2lm.d.cts} +161 -43
- package/dist/index.cjs +4959 -1414
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +113 -11
- package/dist/index.d.ts +113 -11
- package/dist/index.js +187 -12
- package/dist/index.js.map +1 -1
- package/dist/network/index.cjs +5069 -0
- package/dist/network/index.cjs.map +1 -0
- package/dist/network/index.d.cts +98 -0
- package/dist/network/index.d.ts +98 -0
- package/dist/network/index.js +493 -0
- package/dist/network/index.js.map +1 -0
- package/dist/systems/index.cjs +5319 -1957
- package/dist/systems/index.cjs.map +1 -1
- package/dist/systems/index.d.cts +4 -2
- package/dist/systems/index.d.ts +4 -2
- package/dist/systems/index.js +8 -4
- package/dist/types.d.cts +3 -1
- package/dist/types.d.ts +3 -1
- package/dist/webgpu/index.d.ts +113 -0
- package/dist/webgpu/index.js +302 -0
- package/dist/webgpu/index.js.map +1 -0
- package/dist/worldSnapshotUtils.d.cts +3 -1
- package/dist/worldSnapshotUtils.d.ts +3 -1
- package/dist/worldSnapshotUtils.js +3 -2
- package/package.json +19 -3
- package/dist/chunk-BUEKOSR5.js.map +0 -1
- package/dist/chunk-DF5SSRN6.js.map +0 -1
- package/dist/chunk-OWQSESTO.js.map +0 -1
- package/dist/chunk-OY7ZODZP.js.map +0 -1
- package/dist/chunk-RXBLOO5B.js.map +0 -1
- package/dist/chunk-WJD2VKEH.js +0 -315
- package/dist/chunk-WJD2VKEH.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../core/render/webglBackend.ts","../core/render/RenderBackend.ts","../core/render/fallbackBackend.ts","../core/render/resolveBackend.ts"],"names":["THREE2"],"mappings":";;;;;;;;;;;;;;;;;;AAyBA,IAAM,gBAAA,GAAmB;AAAA,EACvB,IAAA,EAAM,kBAAA;AAAA,EACN,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,EAAE,KAAA,EAAO,IAAA,EAA6B;AAAA,IAChD,YAAY,EAAE,KAAA,EAAO,IAAU,KAAA,CAAA,OAAA,CAAQ,CAAA,EAAG,CAAC,CAAA,EAAE;AAAA,IAC7C,SAAA,EAAW,EAAE,KAAA,EAAO,CAAA;AAAE,GACxB;AAAA,EACA,YAAA;AAAA;AAAA,IAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAAA,GAAA;AAAA,EAOzB,cAAA;AAAA;AAAA,IAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAAA;AAW7B,CAAA;AAOA,IAAM,eAAA,GAAN,MAAM,eAAA,SAAuB,UAAA,CAAW;AAAA,EAItC,WAAA,CAAY,aAAqB,aAAA,EAA6B;AAC5D,IAAA,KAAA,CAAM,gBAAgB,CAAA;AACtB,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,WAAW,CAAA;AAC1C,IAAA,IAAA,CAAK,aAAA,GAAgB,aAAA;AACrB,IAAA,IAAA,CAAK,eAAA,EAAgB;AAAA,EACvB;AAAA,EAEQ,eAAA,GAAwB;AAC9B,IAAA,MAAM,OAAA,GAAU,KAAK,QAAA,CAAS,SAAA;AAC9B,IAAA,IAAI,OAAA,EAAS;AAEX,MAAA,OAAA,CAAQ,KAAA,GAAQ,KAAK,WAAA,GAAc,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,CAAK,eAAe,CAAA;AAAA,IACrE;AAAA,EACF;AAAA,EAEA,OAAA,CAAQ,OAAe,MAAA,EAAsB;AAC3C,IAAA,MAAM,UAAA,GAAa,KAAK,QAAA,CAAS,UAAA;AACjC,IAAA,IAAI,UAAA,EAAY;AACd,MAAC,UAAA,CAAW,KAAA,CAAwB,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,IACjF;AACA,IAAA,IAAA,CAAK,eAAA,EAAgB;AAAA,EACvB;AACF,CAAA;AA1BwC,MAAA,CAAA,eAAA,EAAA,gBAAA,CAAA;AAAxC,IAAM,cAAA,GAAN,eAAA;AAsCA,SAAS,yBAAA,CAA0B;AAAA,EACjC,QAAA,EAAU,aAAA;AAAA,EACV,KAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAAuD;AACrD,EAAA,MAAM,QAAA,GAAW,aAAA;AACjB,EAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,QAAQ,CAAA;AAC5C,EAAA,QAAA,CAAS,OAAA,CAAQ,IAAI,UAAA,CAAW,KAAA,EAAO,MAAM,CAAC,CAAA;AAE9C,EAAA,IAAI,MAAA,CAAO,IAAI,OAAA,EAAS;AACtB,IAAA,QAAA,CAAS,OAAA;AAAA,MACP,IAAI,SAAA,CAAU,KAAA,EAAO,MAAA,EAAQ;AAAA,QAC3B,KAAA,EAAO,OAAO,GAAA,CAAI,aAAA;AAAA,QAClB,UAAU,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAA,CAAO,IAAI,WAAW,CAAA;AAAA,QAC5C,SAAS,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAA,CAAO,IAAI,UAAU;AAAA,OAC3C;AAAA,KACH;AAAA,EACF;AAEA,EAAA,IAAI,MAAA,CAAO,MAAM,OAAA,EAAS;AACxB,IAAA,MAAM,IAAA,GAAO,QAAA,CAAS,OAAA,CAAQ,IAAU,eAAS,CAAA;AACjD,IAAA,QAAA,CAAS,OAAA;AAAA,MACP,IAAI,eAAA;AAAA,QACF,IAAU,KAAA,CAAA,OAAA,CAAQ,IAAA,CAAK,KAAA,EAAO,KAAK,MAAM,CAAA;AAAA,QACzC,OAAO,KAAA,CAAM,SAAA;AAAA,QACb,OAAO,KAAA,CAAM,MAAA;AAAA,QACb,OAAO,KAAA,CAAM;AAAA;AACf,KACF;AAAA,EACF;AAEA,EAAA,IAAI,MAAA,CAAO,SAAS,OAAA,EAAS;AAC3B,IAAA,MAAM,IAAA,GAAO,IAAI,UAAA,CAAW,cAAc,CAAA;AAC1C,IAAA,MAAM,MAAA,GAAS,KAAK,QAAA,CAAS,MAAA;AAC7B,IAAA,MAAM,QAAA,GAAW,KAAK,QAAA,CAAS,QAAA;AAC/B,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAA,CAAO,KAAA,GAAQ,OAAO,QAAA,CAAS,MAAA;AAAA,IACjC;AACA,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,QAAA,CAAS,KAAA,GAAQ,OAAO,QAAA,CAAS,QAAA;AAAA,IACnC;AACA,IAAA,QAAA,CAAS,QAAQ,IAAI,CAAA;AAAA,EACvB;AAEA,EAAA,IAAI,MAAA,CAAO,cAAc,OAAA,EAAS;AAChC,IAAA,MAAM,IAAA,GAAO,IAAI,UAAA,CAAW,mBAAmB,CAAA;AAC/C,IAAA,MAAM,GAAA,GAAM,KAAK,QAAA,CAAS,GAAA;AAC1B,IAAA,MAAM,UAAA,GAAa,KAAK,QAAA,CAAS,UAAA;AACjC,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,GAAA,CAAI,KAAA,GAAQ,OAAO,aAAA,CAAc,GAAA;AAAA,IACnC;AACA,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,UAAA,CAAW,KAAA,GAAQ,OAAO,aAAA,CAAc,UAAA;AAAA,IAC1C;AACA,IAAA,QAAA,CAAS,QAAQ,IAAI,CAAA;AAAA,EACvB;AAEA,EAAA,IAAI,MAAA,CAAO,MAAM,OAAA,EAAS;AACxB,IAAA,MAAM,IAAA,GAAO,IAAI,UAAA,CAAW,WAAW,CAAA;AACvC,IAAA,MAAM,MAAA,GAAS,KAAK,QAAA,CAAS,MAAA;AAC7B,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAA,CAAO,KAAA,GAAQ,OAAO,KAAA,CAAM,SAAA;AAAA,IAC9B;AACA,IAAA,QAAA,CAAS,QAAQ,IAAI,CAAA;AAAA,EACvB;AAEA,EAAA,IAAI,MAAA,CAAO,MAAM,OAAA,EAAS;AACxB,IAAA,QAAA,CAAS,QAAQ,IAAI,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,OAAO,CAAC,CAAA;AAAA,EACrD;AAEA,EAAA,IAAI,MAAA,CAAO,UAAU,OAAA,EAAS;AAC5B,IAAA,QAAA,CAAS,OAAA;AAAA,MACP,IAAI,aAAA;AAAA,QACF,IAAU,KAAA,CAAA,OAAA,CAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,QACtB,MAAA,CAAO,SAAA,CAAU,KAAA,IAAS,MAAA,CAAO,SAAA,CAAU,cAAA;AAAA,QAC3C,MAAA,CAAO,SAAA,CAAU,KAAA,IAAS,MAAA,CAAO,SAAA,CAAU;AAAA;AAC7C,KACF;AAAA,EACF;AAEA,EAAA,IAAI,MAAA,CAAO,KAAK,OAAA,EAAS;AACvB,IAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,KAAA,EAAO,MAAM,CAAA;AACvC,IAAA,IAAA,CAAK,YAAA,GAAe,OAAO,IAAA,CAAK,MAAA;AAChC,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,IAAA,IAAA,CAAK,cAAc,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,MAAA,CAAO,KAAK,SAAS,CAAA;AACvD,IAAA,QAAA,CAAS,QAAQ,IAAI,CAAA;AAAA,EACvB;AAEA,EAAA,IAAI,MAAA,CAAO,OAAO,OAAA,EAAS;AACzB,IAAA,MAAM,IAAA,GAAO,IAAI,UAAA,EAAW;AAC5B,IAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,IAAA,IAAA,CAAK,MAAA,GAAS,OAAA,CAAQ,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA;AAC1C,IAAA,QAAA,CAAS,QAAQ,IAAI,CAAA;AAAA,EACvB;AAEA,EAAA,IAAI,MAAA,CAAO,gBAAgB,OAAA,EAAS;AAGlC,IAAA,MAAM,IAAA,GAAO,IAAI,UAAA,CAAW,cAAc,CAAA;AAC1C,IAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAQ,GAAI,MAAA,CAAO,eAAA;AACpC,IAAA,MAAM,MAAA,GAAS,KAAK,QAAA,CAAS,MAAA;AAC7B,IAAA,MAAM,KAAA,GAAQ,KAAK,QAAA,CAAS,KAAA;AAC5B,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAA,CAAO,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,OAAA,EAAS,OAAO,CAAA;AAAA,IAC5C;AACA,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,KAAA,CAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,OAAA,EAAS,OAAO,CAAA;AAAA,IAC3C;AACA,IAAA,QAAA,CAAS,QAAQ,IAAI,CAAA;AAAA,EACvB;AAEA,EAAA,IAAI,MAAA,CAAO,WAAW,OAAA,EAAS;AAC7B,IAAA,QAAA,CAAS,OAAA;AAAA,MACP,IAAI,cAAA;AAAA,QAAe,OAAO,UAAA,CAAW,WAAA;AAAA,QAAa,MAChD,OAAO,QAAA,CAAS,kBAAkB,UAAA,GAAa,QAAA,CAAS,eAAc,GAAI;AAAA;AAC5E,KACF;AAAA,EACF;AAEA,EAAA,IAAI,MAAA,CAAO,KAAK,OAAA,EAAS;AACvB,IAAA,QAAA,CAAS,OAAA,CAAQ,IAAI,QAAA,EAAU,CAAA;AAAA,EACjC;AAEA,EAAA,QAAA,CAAS,OAAA,CAAQ,IAAI,UAAA,EAAY,CAAA;AACjC,EAAA,OAAO,QAAA;AACT;AA9HS,MAAA,CAAA,yBAAA,EAAA,2BAAA,CAAA;AAkIT,IAAM,eAAA,GAAkB,cAAA;AAExB,SAAS,4BAAA,CACP,SACA,OAAA,EACsB;AACtB,EAAA,MAAM,QAAA,GAAW,IAAU,KAAA,CAAA,cAAA,CAAe;AAAA,IACxC,QAAA,EAAU;AAAA,MACR,GAAA,EAAK,EAAE,KAAA,EAAO,OAAA,EAAQ;AAAA,MACtB,UAAU,EAAE,KAAA,EAAO,IAAU,KAAA,CAAA,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,EAAE;AAAA,MACrD,UAAA,EAAY,EAAE,KAAA,EAAO,OAAA,CAAQ,UAAA,EAAW;AAAA,MACxC,UAAA,EAAY,EAAE,KAAA,EAAO,OAAA,CAAQ,UAAA,EAAW;AAAA,MACxC,KAAA,EAAO,EAAE,KAAA,EAAO,OAAA,CAAQ,KAAA;AAAM,KAChC;AAAA,IACA,YAAA,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAOd,cAAA,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAmBhB,WAAA,EAAa,IAAA;AAAA,IACb,IAAA,EAAY,KAAA,CAAA;AAAA,GACb,CAAA;AACD,EAAA,QAAA,CAAS,QAAA,CAAS,eAAe,CAAA,GAAI,IAAA;AACrC,EAAA,OAAO,QAAA;AACT;AA3CS,MAAA,CAAA,4BAAA,EAAA,8BAAA,CAAA;AA6CT,SAAS,4BAAA,CACP,UACA,OAAA,EACS;AACT,EAAA,IAAI,EAAE,QAAA,YAA0B,KAAA,CAAA,cAAA,CAAA,EAAiB,OAAO,KAAA;AACxD,EAAA,MAAM,EAAE,QAAA,EAAU,UAAA,EAAY,UAAA,EAAY,KAAA,KAAU,QAAA,CAAS,QAAA;AAC7D,EAAA,IAAI,CAAC,YAAY,CAAC,UAAA,IAAc,CAAC,UAAA,IAAc,CAAC,OAAO,OAAO,KAAA;AAC9D,EAAC,QAAA,CAAS,KAAA,CAAsB,GAAA,CAAI,OAAA,CAAQ,QAAQ,CAAA;AACpD,EAAA,UAAA,CAAW,QAAQ,OAAA,CAAQ,UAAA;AAC3B,EAAA,UAAA,CAAW,QAAQ,OAAA,CAAQ,UAAA;AAC3B,EAAA,KAAA,CAAM,QAAQ,OAAA,CAAQ,KAAA;AACtB,EAAA,OAAO,IAAA;AACT;AAZS,MAAA,CAAA,4BAAA,EAAA,8BAAA,CAAA;AAgBT,IAAI,wBAAA,GAA2B,KAAA;AAS/B,SAAS,sBAAA,GAA+B;AACtC,EAAA,IAAI,wBAAA,EAA0B;AAC9B,EAAA,wBAAA,GAA2B,IAAA;AAC3B,EAAA,OAAO,uDAAuD,CAAA,CAAE,IAAA;AAAA,IAC9D,CAAC,EAAE,wBAAA,EAAyB,KAAM;AAChC,MAAA,wBAAA,CAAyB,IAAA,EAAK;AAAA,IAChC,CAAA;AAAA,IACA,CAAC,KAAA,KAAU;AACT,MAAA,wBAAA,GAA2B,KAAA;AAC3B,MAAA,OAAA,CAAQ,IAAA,CAAK,uDAAuD,KAAK,CAAA;AAAA,IAC3E;AAAA,GACF;AACF;AAZS,MAAA,CAAA,sBAAA,EAAA,wBAAA,CAAA;AAkBF,IAAM,YAAA,GAA8B;AAAA,EACzC,IAAA,EAAM,OAAA;AAAA,EACN,iBAAA,EAAmB,sBAAA;AAAA,EACnB,oBAAA,EAAsB,yBAAA;AAAA,EACtB,uBAAA,EAAyB,4BAAA;AAAA,EACzB,uBAAA,EAAyB;AAC3B;;;ACzNO,SAAS,kBAAkB,QAAA,EAAiC;AACjE,EAAA,OAAQ,QAAA,EACJ,gBAAA,KAAqB,IAAA,GACrB,QAAA,GACA,OAAA;AACN;AALgB,MAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA;AAWT,SAAS,sBAAsB,KAAA,EAA8B;AAClE,EAAA,MAAM,SAAA,GAAY,KAAA;AAIlB,EAAA,IAAI,OAAO,SAAA,EAAW,eAAA,KAAoB,UAAA,EAAY;AACpD,IAAA,OAAO,UAAU,eAAA,EAAgB;AAAA,EACnC;AACA,EAAA,IAAI,OAAO,SAAA,EAAW,WAAA,KAAgB,UAAA,EAAY;AAChD,IAAA,IAAI;AACF,MAAA,OAAO,iBAAA,CAAkB,SAAA,CAAU,WAAA,EAAa,CAAA;AAAA,IAClD,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,OAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAhBgB,MAAA,CAAA,qBAAA,EAAA,uBAAA,CAAA;AChGT,IAAM,gCAAA,GAAkD;AAAA,EAC7D,IAAA,EAAM,QAAA;AAAA,EACN,oBAAA,+BAA4B,IAAA,EAAN,sBAAA,CAAA;AAAA,EACtB,uBAAA,kBAAyB,MAAA,CAAA,CAAC,OAAA,KACxB,IAAUA,KAAA,CAAA,iBAAA,CAAkB;AAAA,IAC1B,GAAA,EAAK,OAAA;AAAA,IACL,WAAA,EAAa,IAAA;AAAA,IACb,IAAA,EAAYA,KAAA,CAAA;AAAA,GACb,CAAA,EALsB,yBAAA,CAAA;AAAA,EAMzB,uBAAA,+BAA+B,KAAA,EAAN,yBAAA;AAC3B,CAAA;;;ACpBA,IAAM,eAAA,uBAAsB,OAAA,EAAgB;AAE5C,SAAS,QAAA,CAAS,UAAkB,OAAA,EAAuB;AACzD,EAAA,IAAI,eAAA,CAAgB,GAAA,CAAI,QAAQ,CAAA,EAAG;AACnC,EAAA,eAAA,CAAgB,IAAI,QAAQ,CAAA;AAC5B,EAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACtB;AAJS,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA;AAeF,SAAS,oBAAA,CACd,UACA,SAAA,EACe;AACf,EAAA,MAAM,IAAA,GAAO,kBAAkB,QAAQ,CAAA;AACvC,EAAA,MAAM,UAAU,SAAA,IAAa,YAAA;AAC7B,EAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,IAAA,EAAM,OAAO,OAAA;AAElC,EAAA,IAAI,SAAS,QAAA,EAAU;AACrB,IAAA,QAAA;AAAA,MACE,QAAA;AAAA,MACA;AAAA,KAGF;AACA,IAAA,OAAO,gCAAA;AAAA,EACT;AAEA,EAAA,QAAA;AAAA,IACE,QAAA;AAAA,IACA;AAAA,GAGF;AACA,EAAA,OAAO,YAAA;AACT;AAzBgB,MAAA,CAAA,oBAAA,EAAA,sBAAA,CAAA;AA+BT,SAAS,uBAAuB,KAAA,EAA+B;AACpE,EAAA,MAAM,SAAU,KAAA,EACZ,gBAAA;AACJ,EAAA,IAAI,OAAO,WAAW,UAAA,EAAY;AAChC,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AACjC,IAAA,IAAI,SAAS,OAAO,OAAA;AAAA,EACtB;AACA,EAAA,OAAO,YAAA;AACT;AARgB,MAAA,CAAA,sBAAA,EAAA,wBAAA,CAAA","file":"chunk-OHCNPPMX.js","sourcesContent":["import * as THREE from \"three\";\nimport { EffectComposer } from \"three/examples/jsm/postprocessing/EffectComposer.js\";\nimport { RenderPass } from \"three/examples/jsm/postprocessing/RenderPass.js\";\nimport { UnrealBloomPass } from \"three/examples/jsm/postprocessing/UnrealBloomPass.js\";\nimport { DotScreenPass } from \"three/examples/jsm/postprocessing/DotScreenPass.js\";\nimport { GlitchPass } from \"three/examples/jsm/postprocessing/GlitchPass.js\";\nimport { FilmPass } from \"three/examples/jsm/postprocessing/FilmPass.js\";\nimport { BokehPass } from \"three/examples/jsm/postprocessing/BokehPass.js\";\nimport { SSAOPass } from \"three/examples/jsm/postprocessing/SSAOPass.js\";\nimport { ShaderPass } from \"three/examples/jsm/postprocessing/ShaderPass.js\";\nimport { OutputPass } from \"three/examples/jsm/postprocessing/OutputPass.js\";\nimport { SMAAPass } from \"three/examples/jsm/postprocessing/SMAAPass.js\";\nimport { HueSaturationShader } from \"three/examples/jsm/shaders/HueSaturationShader.js\";\nimport { RGBShiftShader } from \"three/examples/jsm/shaders/RGBShiftShader.js\";\nimport { SepiaShader } from \"three/examples/jsm/shaders/SepiaShader.js\";\nimport { VignetteShader } from \"three/examples/jsm/shaders/VignetteShader.js\";\n\nimport type {\n ChromaKeyOptions,\n PostprocessingBuildContext,\n PostprocessingPipeline,\n RenderBackend,\n} from \"./RenderBackend\";\n\n/** Mosaic shader: samples the centre of each `pixelSize`-texel block. */\nconst PixelationShader = {\n name: \"PixelationShader\",\n uniforms: {\n tDiffuse: { value: null as THREE.Texture | null },\n resolution: { value: new THREE.Vector2(1, 1) },\n pixelSize: { value: 6 },\n },\n vertexShader: /* glsl */ `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: /* glsl */ `\n uniform sampler2D tDiffuse;\n uniform vec2 resolution;\n uniform float pixelSize;\n varying vec2 vUv;\n void main() {\n vec2 block = max(pixelSize, 1.0) / resolution;\n vec2 coord = block * (floor(vUv / block) + 0.5);\n gl_FragColor = texture2D(tDiffuse, coord);\n }\n `,\n};\n\n/**\n * Full-screen pixelation. A post pass rather than `RenderPixelatedPass` so it\n * pixelates whatever the chain produced so far and costs one texture fetch per\n * pixel instead of an extra scene + normals render.\n */\nclass PixelationPass extends ShaderPass {\n private readonly granularity: number;\n private readonly getPixelRatio: () => number;\n\n constructor(granularity: number, getPixelRatio: () => number) {\n super(PixelationShader);\n this.granularity = Math.max(1, granularity);\n this.getPixelRatio = getPixelRatio;\n this.updatePixelSize();\n }\n\n private updatePixelSize(): void {\n const uniform = this.uniforms.pixelSize;\n if (uniform) {\n // `granularity` is in CSS pixels; the composer works in device pixels.\n uniform.value = this.granularity * Math.max(1, this.getPixelRatio());\n }\n }\n\n setSize(width: number, height: number): void {\n const resolution = this.uniforms.resolution;\n if (resolution) {\n (resolution.value as THREE.Vector2).set(Math.max(1, width), Math.max(1, height));\n }\n this.updatePixelSize();\n }\n}\n\n/**\n * Build the WebGL `EffectComposer` for `values`.\n *\n * Pass order: scene render → depth of field → bloom → vignette →\n * hue/saturation → sepia → film noise → dot screen → SSAO → glitch →\n * chromatic aberration → pixelation → SMAA → output (tone mapping + sRGB).\n *\n * The returned object IS the `EffectComposer`, so scripts that read\n * `scene.userData.ecsPostprocessingComposer.passes` keep working.\n */\nfunction createWebglPostprocessing({\n renderer: rendererInput,\n scene,\n camera,\n values,\n}: PostprocessingBuildContext): PostprocessingPipeline {\n const renderer = rendererInput as THREE.WebGLRenderer;\n const composer = new EffectComposer(renderer);\n composer.addPass(new RenderPass(scene, camera));\n\n if (values.dof.enabled) {\n composer.addPass(\n new BokehPass(scene, camera, {\n focus: values.dof.focusDistance,\n aperture: Math.max(0, values.dof.focalLength),\n maxblur: Math.max(0, values.dof.bokehScale),\n }),\n );\n }\n\n if (values.bloom.enabled) {\n const size = renderer.getSize(new THREE.Vector2());\n composer.addPass(\n new UnrealBloomPass(\n new THREE.Vector2(size.width, size.height),\n values.bloom.intensity,\n values.bloom.radius,\n values.bloom.threshold,\n ),\n );\n }\n\n if (values.vignette.enabled) {\n const pass = new ShaderPass(VignetteShader);\n const offset = pass.uniforms.offset;\n const darkness = pass.uniforms.darkness;\n if (offset) {\n offset.value = values.vignette.offset;\n }\n if (darkness) {\n darkness.value = values.vignette.darkness;\n }\n composer.addPass(pass);\n }\n\n if (values.hueSaturation.enabled) {\n const pass = new ShaderPass(HueSaturationShader);\n const hue = pass.uniforms.hue;\n const saturation = pass.uniforms.saturation;\n if (hue) {\n hue.value = values.hueSaturation.hue;\n }\n if (saturation) {\n saturation.value = values.hueSaturation.saturation;\n }\n composer.addPass(pass);\n }\n\n if (values.sepia.enabled) {\n const pass = new ShaderPass(SepiaShader);\n const amount = pass.uniforms.amount;\n if (amount) {\n amount.value = values.sepia.intensity;\n }\n composer.addPass(pass);\n }\n\n if (values.noise.enabled) {\n composer.addPass(new FilmPass(values.noise.opacity));\n }\n\n if (values.dotScreen.enabled) {\n composer.addPass(\n new DotScreenPass(\n new THREE.Vector2(0, 0),\n values.dotScreen.angle ?? values.dotScreen.dotScreenAngle,\n values.dotScreen.scale ?? values.dotScreen.dotScreenScale,\n ),\n );\n }\n\n if (values.ssao.enabled) {\n const pass = new SSAOPass(scene, camera);\n pass.kernelRadius = values.ssao.radius;\n pass.minDistance = 0.001;\n pass.maxDistance = Math.max(0.01, values.ssao.intensity);\n composer.addPass(pass);\n }\n\n if (values.glitch.enabled) {\n const pass = new GlitchPass();\n pass.enabled = true;\n pass.goWild = Boolean(values.glitch.active);\n composer.addPass(pass);\n }\n\n if (values.chromAberration.enabled) {\n // RGBShift offsets red by +amount and blue by -amount along `angle`, so\n // the authored (x, y) offset maps to its length and direction.\n const pass = new ShaderPass(RGBShiftShader);\n const { offsetX, offsetY } = values.chromAberration;\n const amount = pass.uniforms.amount;\n const angle = pass.uniforms.angle;\n if (amount) {\n amount.value = Math.hypot(offsetX, offsetY);\n }\n if (angle) {\n angle.value = Math.atan2(offsetY, offsetX);\n }\n composer.addPass(pass);\n }\n\n if (values.pixelation.enabled) {\n composer.addPass(\n new PixelationPass(values.pixelation.granularity, () =>\n typeof renderer.getPixelRatio === \"function\" ? renderer.getPixelRatio() : 1,\n ),\n );\n }\n\n if (values.smaa.enabled) {\n composer.addPass(new SMAAPass());\n }\n\n composer.addPass(new OutputPass());\n return composer;\n}\n\n// ── Chroma key ────────────────────────────────────────────────────────────\n\nconst CHROMA_KEY_FLAG = \"ecsChromaKey\";\n\nfunction createWebglChromaKeyMaterial(\n texture: THREE.Texture,\n options: ChromaKeyOptions,\n): THREE.ShaderMaterial {\n const material = new THREE.ShaderMaterial({\n uniforms: {\n tex: { value: texture },\n keyColor: { value: new THREE.Color(options.keyColor) },\n similarity: { value: options.similarity },\n smoothness: { value: options.smoothness },\n spill: { value: options.spill },\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n uniform sampler2D tex;\n uniform vec3 keyColor;\n uniform float similarity;\n uniform float smoothness;\n uniform float spill;\n varying vec2 vUv;\n\n void main() {\n vec4 texel = texture2D(tex, vUv);\n float chromaDist = distance(texel.rgb, keyColor);\n float alpha = smoothstep(similarity, similarity + smoothness, chromaDist);\n\n float spillFactor = smoothstep(similarity, similarity + spill + smoothness, chromaDist);\n vec3 despilled = mix(vec3(dot(texel.rgb, vec3(0.299, 0.587, 0.114))), texel.rgb, spillFactor);\n\n gl_FragColor = vec4(despilled, texel.a * alpha);\n }\n `,\n transparent: true,\n side: THREE.DoubleSide,\n });\n material.userData[CHROMA_KEY_FLAG] = true;\n return material;\n}\n\nfunction updateWebglChromaKeyMaterial(\n material: THREE.Material,\n options: ChromaKeyOptions,\n): boolean {\n if (!(material instanceof THREE.ShaderMaterial)) return false;\n const { keyColor, similarity, smoothness, spill } = material.uniforms;\n if (!keyColor || !similarity || !smoothness || !spill) return false;\n (keyColor.value as THREE.Color).set(options.keyColor);\n similarity.value = options.similarity;\n smoothness.value = options.smoothness;\n spill.value = options.spill;\n return true;\n}\n\n// ── Area lights ───────────────────────────────────────────────────────────\n\nlet areaLightTablesRequested = false;\n\n/**\n * `RectAreaLight` shading needs lookup tables in `UniformsLib`; without them\n * area lights render black. The tables are ~300 KB of source, so they load on\n * demand the first time an area light is created rather than with every\n * WebGL bundle. WebGL reads them at render time, so a light created before\n * the import resolves lights up on the next frame.\n */\nfunction prepareWebglAreaLights(): void {\n if (areaLightTablesRequested) return;\n areaLightTablesRequested = true;\n import(\"three/examples/jsm/lights/RectAreaLightUniformsLib.js\").then(\n ({ RectAreaLightUniformsLib }) => {\n RectAreaLightUniformsLib.init();\n },\n (error) => {\n areaLightTablesRequested = false;\n console.warn(\"[spatial-ecs] Could not load the area light tables.\", error);\n },\n );\n}\n\n/**\n * The default {@link RenderBackend}: three's `WebGLRenderer`, post-processing\n * through `EffectComposer`, GLSL chroma key.\n */\nexport const webglBackend: RenderBackend = {\n kind: \"webgl\",\n prepareAreaLights: prepareWebglAreaLights,\n createPostprocessing: createWebglPostprocessing,\n createChromaKeyMaterial: createWebglChromaKeyMaterial,\n updateChromaKeyMaterial: updateWebglChromaKeyMaterial,\n};\n","import type * as THREE from \"three\";\n// Type-only: the default entry must never load `three/webgpu` at runtime.\nimport type { WebGPURenderer } from \"three/webgpu\";\n\nimport type { PostprocessingState } from \"../components/Postprocessing\";\nimport type { World } from \"../World\";\n\n/**\n * A renderer a {@link World} can run on: three's classic `WebGLRenderer`, or\n * `WebGPURenderer` from `three/webgpu` (which falls back to WebGL 2 on its own\n * when the browser has no WebGPU).\n */\nexport type EcsRenderer = THREE.WebGLRenderer | WebGPURenderer;\n\n/** Which renderer family a world is drawing with. */\nexport type RendererKind = \"webgl\" | \"webgpu\";\n\n/**\n * A built post-processing chain. `RenderSystem` calls `render()` in place of\n * `renderer.render()` while it is active.\n *\n * `setSize` / `setPixelRatio` are optional: a WebGL `EffectComposer` needs\n * them, while a WebGPU `RenderPipeline` reads the renderer's size every frame.\n */\nexport interface PostprocessingPipeline {\n render(): void;\n setSize?(width: number, height: number): void;\n setPixelRatio?(pixelRatio: number): void;\n dispose(): void;\n}\n\n/** Everything a backend needs to build a post-processing chain. */\nexport interface PostprocessingBuildContext {\n renderer: EcsRenderer;\n scene: THREE.Scene;\n camera: THREE.PerspectiveCamera;\n /** The scene's current `Postprocessing.values` (`postEnabled` is `true`). */\n values: PostprocessingState;\n /** The world being rendered, when known (used to scope one-time warnings). */\n world?: World;\n}\n\n/** Green-screen settings, in the same units as `VideoComponent.options`. */\nexport interface ChromaKeyOptions {\n /** Colour to key out (any three.js colour representation, e.g. `\"#00ff00\"`). */\n keyColor: THREE.ColorRepresentation;\n /** Colour distance below which a pixel is fully transparent. */\n similarity: number;\n /** Width of the soft edge above `similarity`. */\n smoothness: number;\n /** How far past the edge the key colour is desaturated (spill removal). */\n spill: number;\n}\n\n/**\n * Everything renderer-specific the engine does, behind one small interface so\n * a {@link World} can run on WebGL or WebGPU.\n *\n * The default is `webglBackend` (exported from the package root). For a\n * `WebGPURenderer`, pass `webgpuBackend` from\n * `@relu-interactives/spatial-ecs/webgpu`.\n */\nexport interface RenderBackend {\n /** Renderer family this backend drives. */\n readonly kind: RendererKind;\n /** One-time renderer setup, called once from the `World` constructor. */\n install?(world: World): void;\n /**\n * Called the first time an area light (`RectAreaLight`) is created, so the\n * backend can load the lookup tables those lights need. Optional.\n */\n prepareAreaLights?(world: World): void;\n /**\n * Build the post-processing chain for `context.values`. Return `null` to\n * render the scene directly (no chain).\n */\n createPostprocessing(\n context: PostprocessingBuildContext,\n ): PostprocessingPipeline | null;\n /**\n * Apply a values change to an existing chain without rebuilding it. Return\n * `true` when the chain was updated in place, `false` when the change is\n * structural (an effect switched on or off) and the caller must rebuild.\n * When omitted, every change rebuilds.\n */\n updatePostprocessing?(\n pipeline: PostprocessingPipeline,\n previous: PostprocessingState,\n next: PostprocessingState,\n ): boolean;\n /** Material that renders `texture` with `options.keyColor` keyed out. */\n createChromaKeyMaterial(\n texture: THREE.Texture,\n options: ChromaKeyOptions,\n ): THREE.Material;\n /**\n * Push new options into a material made by {@link createChromaKeyMaterial}.\n * Returns `false` when `material` is not one of this backend's chroma-key\n * materials.\n */\n updateChromaKeyMaterial(material: THREE.Material, options: ChromaKeyOptions): boolean;\n}\n\n/** `\"webgpu\"` for a `WebGPURenderer`, otherwise `\"webgl\"`. */\nexport function getRendererKindOf(renderer: unknown): RendererKind {\n return (renderer as { isWebGPURenderer?: unknown } | null | undefined)\n ?.isWebGPURenderer === true\n ? \"webgpu\"\n : \"webgl\";\n}\n\n/**\n * The renderer kind of `world`, tolerating partial worlds (test doubles and\n * worlds from older builds without `getRendererKind`).\n */\nexport function readWorldRendererKind(world: unknown): RendererKind {\n const candidate = world as {\n getRendererKind?: () => RendererKind;\n getRenderer?: () => unknown;\n } | null;\n if (typeof candidate?.getRendererKind === \"function\") {\n return candidate.getRendererKind();\n }\n if (typeof candidate?.getRenderer === \"function\") {\n try {\n return getRendererKindOf(candidate.getRenderer());\n } catch {\n return \"webgl\";\n }\n }\n return \"webgl\";\n}\n","import * as THREE from \"three\";\n\nimport type { RenderBackend } from \"./RenderBackend\";\n\n/**\n * What a `World` uses when it is handed a `WebGPURenderer` but no WebGPU\n * backend. Nothing here may touch WebGL-only APIs (`EffectComposer`, GLSL\n * `ShaderMaterial`), and the default entry may not import `three/webgpu`, so\n * it does the safe minimum:\n *\n * - no post-processing (the scene renders directly; tone mapping from\n * `Environment`/`Postprocessing` still applies through the renderer),\n * - green-screen videos play un-keyed through a plain `MeshBasicMaterial`,\n * which `WebGPURenderer` converts to a node material by itself.\n *\n * Area lights need lookup tables that only the WebGPU backend installs, so\n * they cannot render here either. Pass `webgpuBackend` from\n * `@relu-interactives/spatial-ecs/webgpu` to get all of it.\n */\nexport const unsupportedWebGpuFallbackBackend: RenderBackend = {\n kind: \"webgpu\",\n createPostprocessing: () => null,\n createChromaKeyMaterial: (texture) =>\n new THREE.MeshBasicMaterial({\n map: texture,\n transparent: true,\n side: THREE.DoubleSide,\n }),\n updateChromaKeyMaterial: () => false,\n};\n","import { unsupportedWebGpuFallbackBackend } from \"./fallbackBackend\";\nimport {\n getRendererKindOf,\n type EcsRenderer,\n type RenderBackend,\n} from \"./RenderBackend\";\nimport { webglBackend } from \"./webglBackend\";\n\n/** Renderers already warned about, so each mismatch is reported once. */\nconst warnedRenderers = new WeakSet<object>();\n\nfunction warnOnce(renderer: object, message: string): void {\n if (warnedRenderers.has(renderer)) return;\n warnedRenderers.add(renderer);\n console.warn(message);\n}\n\n/**\n * Pick the backend a world runs with. `requested` wins when it matches the\n * renderer. A mismatch is warned about once per renderer and resolved to\n * something that cannot crash:\n *\n * - `WebGPURenderer` without a WebGPU backend → no post-processing,\n * un-keyed green screen (never `EffectComposer` or GLSL on WebGPU).\n * - `WebGLRenderer` with a WebGPU backend → the WebGL backend.\n */\nexport function resolveRenderBackend(\n renderer: EcsRenderer,\n requested: RenderBackend | undefined,\n): RenderBackend {\n const kind = getRendererKindOf(renderer);\n const backend = requested ?? webglBackend;\n if (backend.kind === kind) return backend;\n\n if (kind === \"webgpu\") {\n warnOnce(\n renderer,\n \"[spatial-ecs] This World has a WebGPURenderer but no WebGPU backend, so \" +\n \"post-processing, green-screen keying and area lights are off. Pass \" +\n \"`backend: webgpuBackend` from '@relu-interactives/spatial-ecs/webgpu'.\",\n );\n return unsupportedWebGpuFallbackBackend;\n }\n\n warnOnce(\n renderer,\n \"[spatial-ecs] The WebGPU backend was passed with a WebGLRenderer; using \" +\n \"the WebGL backend instead. Use `new WebGPURenderer()` from 'three/webgpu' \" +\n \"to render with WebGPU.\",\n );\n return webglBackend;\n}\n\n/**\n * The backend of `world`, tolerating partial worlds (test doubles) by falling\n * back to the WebGL backend.\n */\nexport function readWorldRenderBackend(world: unknown): RenderBackend {\n const getter = (world as { getRenderBackend?: () => RenderBackend } | null)\n ?.getRenderBackend;\n if (typeof getter === \"function\") {\n const backend = getter.call(world);\n if (backend) return backend;\n }\n return webglBackend;\n}\n"]}
|