@aura3d/engine 2.0.4 → 3.0.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/README.md +25 -10
- package/dist/animation/AnimationAction.d.ts.map +1 -1
- package/dist/animation/AnimationAction.js +20 -2
- package/dist/animation/AnimationAction.js.map +1 -1
- package/dist/animation/AnimationLayer.d.ts +1 -0
- package/dist/animation/AnimationLayer.d.ts.map +1 -1
- package/dist/animation/AnimationLayer.js +24 -3
- package/dist/animation/AnimationLayer.js.map +1 -1
- package/dist/animation/AnimationMixer.d.ts +3 -0
- package/dist/animation/AnimationMixer.d.ts.map +1 -1
- package/dist/animation/AnimationMixer.js +69 -5
- package/dist/animation/AnimationMixer.js.map +1 -1
- package/dist/animation/AnimationTrack.d.ts.map +1 -1
- package/dist/animation/AnimationTrack.js +13 -0
- package/dist/animation/AnimationTrack.js.map +1 -1
- package/dist/animation/FootIk.d.ts +10 -0
- package/dist/animation/FootIk.d.ts.map +1 -1
- package/dist/animation/FootIk.js +95 -3
- package/dist/animation/FootIk.js.map +1 -1
- package/dist/animation/HumanoidRetargeting.d.ts +29 -0
- package/dist/animation/HumanoidRetargeting.d.ts.map +1 -1
- package/dist/animation/HumanoidRetargeting.js +41 -1
- package/dist/animation/HumanoidRetargeting.js.map +1 -1
- package/dist/animation/LocomotionKit.d.ts +6 -0
- package/dist/animation/LocomotionKit.d.ts.map +1 -1
- package/dist/animation/LocomotionKit.js +6 -0
- package/dist/animation/LocomotionKit.js.map +1 -1
- package/dist/animation/RootMotion.d.ts +27 -0
- package/dist/animation/RootMotion.d.ts.map +1 -1
- package/dist/animation/RootMotion.js +38 -0
- package/dist/animation/RootMotion.js.map +1 -1
- package/dist/animation/SpringBones.d.ts +28 -0
- package/dist/animation/SpringBones.d.ts.map +1 -1
- package/dist/animation/SpringBones.js +24 -0
- package/dist/animation/SpringBones.js.map +1 -1
- package/dist/assets/GLTFAnimationRuntime.d.ts +95 -2
- package/dist/assets/GLTFAnimationRuntime.d.ts.map +1 -1
- package/dist/assets/GLTFAnimationRuntime.js +328 -3
- package/dist/assets/GLTFAnimationRuntime.js.map +1 -1
- package/dist/assets/GLTFExtensionSupport.js +2 -2
- package/dist/assets/GLTFExtensionSupport.js.map +1 -1
- package/dist/assets/GLTFLoader.d.ts +360 -1
- package/dist/assets/GLTFLoader.d.ts.map +1 -1
- package/dist/assets/GLTFLoader.js +197 -1
- package/dist/assets/GLTFLoader.js.map +1 -1
- package/dist/assets/KTX2BasisTextureTranscoder.d.ts +39 -0
- package/dist/assets/KTX2BasisTextureTranscoder.d.ts.map +1 -1
- package/dist/assets/KTX2BasisTextureTranscoder.js +70 -0
- package/dist/assets/KTX2BasisTextureTranscoder.js.map +1 -1
- package/dist/assets/TexturePipeline.d.ts +20 -0
- package/dist/assets/TexturePipeline.d.ts.map +1 -1
- package/dist/assets/TexturePipeline.js +20 -0
- package/dist/assets/TexturePipeline.js.map +1 -1
- package/dist/assets/TextureStreaming.d.ts +30 -0
- package/dist/assets/TextureStreaming.d.ts.map +1 -1
- package/dist/assets/TextureStreaming.js +53 -0
- package/dist/assets/TextureStreaming.js.map +1 -1
- package/dist/assets/browser-index.d.ts +7 -3
- package/dist/assets/browser-index.d.ts.map +1 -1
- package/dist/assets/browser-index.js +3 -1
- package/dist/assets/browser-index.js.map +1 -1
- package/dist/assets/gltf-runtime.d.ts +1 -1
- package/dist/assets/gltf-runtime.d.ts.map +1 -1
- package/dist/assets/gltf-runtime.js.map +1 -1
- package/dist/assets/index.d.ts +7 -7
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js +3 -3
- package/dist/assets/index.js.map +1 -1
- package/dist/assets/loaders/HDRLoader.d.ts +40 -0
- package/dist/assets/loaders/HDRLoader.d.ts.map +1 -1
- package/dist/assets/loaders/HDRLoader.js +158 -0
- package/dist/assets/loaders/HDRLoader.js.map +1 -1
- package/dist/audio/AudioSource.d.ts +2 -0
- package/dist/audio/AudioSource.d.ts.map +1 -1
- package/dist/audio/AudioSource.js +7 -0
- package/dist/audio/AudioSource.js.map +1 -1
- package/dist/audio/Footsteps.d.ts +47 -0
- package/dist/audio/Footsteps.d.ts.map +1 -0
- package/dist/audio/Footsteps.js +73 -0
- package/dist/audio/Footsteps.js.map +1 -0
- package/dist/audio/GameMixer.d.ts +69 -0
- package/dist/audio/GameMixer.d.ts.map +1 -0
- package/dist/audio/GameMixer.js +141 -0
- package/dist/audio/GameMixer.js.map +1 -0
- package/dist/audio/PositionalEmitter.d.ts +95 -0
- package/dist/audio/PositionalEmitter.d.ts.map +1 -0
- package/dist/audio/PositionalEmitter.js +199 -0
- package/dist/audio/PositionalEmitter.js.map +1 -0
- package/dist/audio/index.d.ts +6 -0
- package/dist/audio/index.d.ts.map +1 -1
- package/dist/audio/index.js +3 -0
- package/dist/audio/index.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge/profiles.d.ts +12 -2
- package/dist/aura3d-cli/pull-bridge/profiles.d.ts.map +1 -1
- package/dist/aura3d-cli/pull-bridge/profiles.js +35 -4
- package/dist/aura3d-cli/pull-bridge/profiles.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge/provenance.d.ts +15 -1
- package/dist/aura3d-cli/pull-bridge/provenance.d.ts.map +1 -1
- package/dist/aura3d-cli/pull-bridge/provenance.js +60 -1
- package/dist/aura3d-cli/pull-bridge/provenance.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge/scoring.d.ts +10 -1
- package/dist/aura3d-cli/pull-bridge/scoring.d.ts.map +1 -1
- package/dist/aura3d-cli/pull-bridge/scoring.js +9 -1
- package/dist/aura3d-cli/pull-bridge/scoring.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge/search.js +2 -2
- package/dist/aura3d-cli/pull-bridge/search.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge.d.ts +15 -3
- package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -1
- package/dist/aura3d-cli/pull-bridge.js +68 -5
- package/dist/aura3d-cli/pull-bridge.js.map +1 -1
- package/dist/controls/ArcballControls.d.ts +92 -0
- package/dist/controls/ArcballControls.d.ts.map +1 -0
- package/dist/controls/ArcballControls.js +286 -0
- package/dist/controls/ArcballControls.js.map +1 -0
- package/dist/controls/DragControls.d.ts +13 -0
- package/dist/controls/DragControls.d.ts.map +1 -1
- package/dist/controls/DragControls.js +24 -1
- package/dist/controls/DragControls.js.map +1 -1
- package/dist/controls/FlyControls.d.ts +9 -0
- package/dist/controls/FlyControls.d.ts.map +1 -1
- package/dist/controls/FlyControls.js +20 -2
- package/dist/controls/FlyControls.js.map +1 -1
- package/dist/controls/FocusFrame.d.ts +34 -0
- package/dist/controls/FocusFrame.d.ts.map +1 -0
- package/dist/controls/FocusFrame.js +82 -0
- package/dist/controls/FocusFrame.js.map +1 -0
- package/dist/controls/HoverOutline.d.ts +46 -0
- package/dist/controls/HoverOutline.d.ts.map +1 -0
- package/dist/controls/HoverOutline.js +87 -0
- package/dist/controls/HoverOutline.js.map +1 -0
- package/dist/controls/InteractionControls.d.ts +7 -0
- package/dist/controls/InteractionControls.d.ts.map +1 -1
- package/dist/controls/InteractionControls.js +12 -1
- package/dist/controls/InteractionControls.js.map +1 -1
- package/dist/controls/NativeControlTypes.d.ts +17 -0
- package/dist/controls/NativeControlTypes.d.ts.map +1 -1
- package/dist/controls/NativeControlTypes.js.map +1 -1
- package/dist/controls/OrbitControls.d.ts +9 -0
- package/dist/controls/OrbitControls.d.ts.map +1 -1
- package/dist/controls/OrbitControls.js +26 -6
- package/dist/controls/OrbitControls.js.map +1 -1
- package/dist/controls/Picking.d.ts +15 -0
- package/dist/controls/Picking.d.ts.map +1 -1
- package/dist/controls/Picking.js +62 -23
- package/dist/controls/Picking.js.map +1 -1
- package/dist/controls/PointerLockControls.d.ts.map +1 -1
- package/dist/controls/PointerLockControls.js +4 -0
- package/dist/controls/PointerLockControls.js.map +1 -1
- package/dist/controls/SelectionManager.d.ts +8 -0
- package/dist/controls/SelectionManager.d.ts.map +1 -1
- package/dist/controls/SelectionManager.js +11 -0
- package/dist/controls/SelectionManager.js.map +1 -1
- package/dist/controls/TrackballControls.d.ts +7 -0
- package/dist/controls/TrackballControls.d.ts.map +1 -1
- package/dist/controls/TrackballControls.js +19 -5
- package/dist/controls/TrackballControls.js.map +1 -1
- package/dist/controls/TransformControls.d.ts +8 -0
- package/dist/controls/TransformControls.d.ts.map +1 -1
- package/dist/controls/TransformControls.js +15 -2
- package/dist/controls/TransformControls.js.map +1 -1
- package/dist/controls/index.d.ts +6 -0
- package/dist/controls/index.d.ts.map +1 -1
- package/dist/controls/index.js +3 -0
- package/dist/controls/index.js.map +1 -1
- package/dist/create-aura3d/index.js +1 -1
- package/dist/editor-runtime/RootEditorSurface.d.ts +65 -0
- package/dist/editor-runtime/RootEditorSurface.d.ts.map +1 -0
- package/dist/editor-runtime/RootEditorSurface.js +62 -0
- package/dist/editor-runtime/RootEditorSurface.js.map +1 -0
- package/dist/editor-runtime/index.d.ts +2 -0
- package/dist/editor-runtime/index.d.ts.map +1 -1
- package/dist/editor-runtime/index.js +1 -0
- package/dist/editor-runtime/index.js.map +1 -1
- package/dist/engine/agent-api/AnimationController.d.ts +9 -1
- package/dist/engine/agent-api/AnimationController.d.ts.map +1 -1
- package/dist/engine/agent-api/AnimationController.js +5 -1
- package/dist/engine/agent-api/AnimationController.js.map +1 -1
- package/dist/engine/agent-api/AnimationDebugOverlay.d.ts +56 -0
- package/dist/engine/agent-api/AnimationDebugOverlay.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationDebugOverlay.js +148 -0
- package/dist/engine/agent-api/AnimationDebugOverlay.js.map +1 -0
- package/dist/engine/agent-api/AnimationMixerBuilders.d.ts +41 -0
- package/dist/engine/agent-api/AnimationMixerBuilders.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationMixerBuilders.js +146 -0
- package/dist/engine/agent-api/AnimationMixerBuilders.js.map +1 -0
- package/dist/engine/agent-api/AssetDecoders.d.ts +17 -0
- package/dist/engine/agent-api/AssetDecoders.d.ts.map +1 -0
- package/dist/engine/agent-api/AssetDecoders.js +18 -0
- package/dist/engine/agent-api/AssetDecoders.js.map +1 -0
- package/dist/engine/agent-api/Decals.d.ts +174 -0
- package/dist/engine/agent-api/Decals.d.ts.map +1 -0
- package/dist/engine/agent-api/Decals.js +350 -0
- package/dist/engine/agent-api/Decals.js.map +1 -0
- package/dist/engine/agent-api/FootPlanting.d.ts +75 -0
- package/dist/engine/agent-api/FootPlanting.d.ts.map +1 -0
- package/dist/engine/agent-api/FootPlanting.js +60 -0
- package/dist/engine/agent-api/FootPlanting.js.map +1 -0
- package/dist/engine/agent-api/GameAppRuntime.d.ts +19 -0
- package/dist/engine/agent-api/GameAppRuntime.d.ts.map +1 -1
- package/dist/engine/agent-api/GameAppRuntime.js +37 -1
- package/dist/engine/agent-api/GameAppRuntime.js.map +1 -1
- package/dist/engine/agent-api/GameCameraRigs.d.ts +185 -0
- package/dist/engine/agent-api/GameCameraRigs.d.ts.map +1 -0
- package/dist/engine/agent-api/GameCameraRigs.js +414 -0
- package/dist/engine/agent-api/GameCameraRigs.js.map +1 -0
- package/dist/engine/agent-api/GameFeel.d.ts +100 -0
- package/dist/engine/agent-api/GameFeel.d.ts.map +1 -0
- package/dist/engine/agent-api/GameFeel.js +226 -0
- package/dist/engine/agent-api/GameFeel.js.map +1 -0
- package/dist/engine/agent-api/LabelTelemetry.d.ts +108 -0
- package/dist/engine/agent-api/LabelTelemetry.d.ts.map +1 -0
- package/dist/engine/agent-api/LabelTelemetry.js +116 -0
- package/dist/engine/agent-api/LabelTelemetry.js.map +1 -0
- package/dist/engine/agent-api/NavigationCrowds.d.ts +146 -0
- package/dist/engine/agent-api/NavigationCrowds.d.ts.map +1 -0
- package/dist/engine/agent-api/NavigationCrowds.js +104 -0
- package/dist/engine/agent-api/NavigationCrowds.js.map +1 -0
- package/dist/engine/agent-api/PhysicsRuntime.d.ts +61 -5
- package/dist/engine/agent-api/PhysicsRuntime.d.ts.map +1 -1
- package/dist/engine/agent-api/PhysicsRuntime.js +53 -21
- package/dist/engine/agent-api/PhysicsRuntime.js.map +1 -1
- package/dist/engine/agent-api/RootGeometry.d.ts +16 -1
- package/dist/engine/agent-api/RootGeometry.d.ts.map +1 -1
- package/dist/engine/agent-api/RootGeometry.js.map +1 -1
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts +6 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts.map +1 -1
- package/dist/engine/agent-api/RuntimeNodeHandle.js.map +1 -1
- package/dist/engine/agent-api/Scatter.d.ts +18 -0
- package/dist/engine/agent-api/Scatter.d.ts.map +1 -0
- package/dist/engine/agent-api/Scatter.js +18 -0
- package/dist/engine/agent-api/Scatter.js.map +1 -0
- package/dist/engine/agent-api/TouchControlBinding.d.ts +32 -0
- package/dist/engine/agent-api/TouchControlBinding.d.ts.map +1 -1
- package/dist/engine/agent-api/TouchControlBinding.js +36 -0
- package/dist/engine/agent-api/TouchControlBinding.js.map +1 -1
- package/dist/engine/agent-api/VehicleChassis.d.ts.map +1 -1
- package/dist/engine/agent-api/VehicleChassis.js +76 -13
- package/dist/engine/agent-api/VehicleChassis.js.map +1 -1
- package/dist/engine/agent-api/index.d.ts +708 -6
- package/dist/engine/agent-api/index.d.ts.map +1 -1
- package/dist/engine/agent-api/index.js +1757 -134
- package/dist/engine/agent-api/index.js.map +1 -1
- package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
- package/dist/engine/game/GameAudio.d.ts +66 -0
- package/dist/engine/game/GameAudio.d.ts.map +1 -1
- package/dist/engine/game/GameAudio.js +179 -44
- package/dist/engine/game/GameAudio.js.map +1 -1
- package/dist/engine/instances-model/InstancedModel.d.ts +111 -0
- package/dist/engine/instances-model/InstancedModel.d.ts.map +1 -0
- package/dist/engine/instances-model/InstancedModel.js +108 -0
- package/dist/engine/instances-model/InstancedModel.js.map +1 -0
- package/dist/engine/material-physical/PhysicalMaterialSpec.d.ts +72 -0
- package/dist/engine/material-physical/PhysicalMaterialSpec.d.ts.map +1 -0
- package/dist/engine/material-physical/PhysicalMaterialSpec.js +95 -0
- package/dist/engine/material-physical/PhysicalMaterialSpec.js.map +1 -0
- package/dist/engine/production-runtime/GameAppRuntime.d.ts +1 -1
- package/dist/engine/production-runtime/GameAppRuntime.d.ts.map +1 -1
- package/dist/engine/production-runtime/GameRenderPreset.d.ts +76 -0
- package/dist/engine/production-runtime/GameRenderPreset.d.ts.map +1 -1
- package/dist/engine/production-runtime/GameRenderPreset.js +167 -0
- package/dist/engine/production-runtime/GameRenderPreset.js.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.d.ts +22 -2
- package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.js +33 -1
- package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
- package/dist/engine/production-runtime/index.d.ts +4 -4
- package/dist/engine/production-runtime/index.d.ts.map +1 -1
- package/dist/engine/production-runtime/index.js +5 -3
- package/dist/engine/production-runtime/index.js.map +1 -1
- package/dist/input/ActionMap.d.ts +40 -0
- package/dist/input/ActionMap.d.ts.map +1 -1
- package/dist/input/ActionMap.js +179 -0
- package/dist/input/ActionMap.js.map +1 -1
- package/dist/input/ComboDetector.d.ts +49 -0
- package/dist/input/ComboDetector.d.ts.map +1 -0
- package/dist/input/ComboDetector.js +102 -0
- package/dist/input/ComboDetector.js.map +1 -0
- package/dist/input/Haptics.d.ts +46 -0
- package/dist/input/Haptics.d.ts.map +1 -0
- package/dist/input/Haptics.js +67 -0
- package/dist/input/Haptics.js.map +1 -0
- package/dist/input/TouchLayouts.d.ts +35 -0
- package/dist/input/TouchLayouts.d.ts.map +1 -0
- package/dist/input/TouchLayouts.js +88 -0
- package/dist/input/TouchLayouts.js.map +1 -0
- package/dist/input/WebXRSessionController.d.ts +53 -0
- package/dist/input/WebXRSessionController.d.ts.map +1 -1
- package/dist/input/WebXRSessionController.js +88 -2
- package/dist/input/WebXRSessionController.js.map +1 -1
- package/dist/input/index.d.ts +8 -2
- package/dist/input/index.d.ts.map +1 -1
- package/dist/input/index.js +3 -0
- package/dist/input/index.js.map +1 -1
- package/dist/lean/game.d.ts +98 -0
- package/dist/lean/game.d.ts.map +1 -1
- package/dist/lean/game.js +192 -0
- package/dist/lean/game.js.map +1 -1
- package/dist/materials/GameReadyMaterialLibrary.d.ts +39 -0
- package/dist/materials/GameReadyMaterialLibrary.d.ts.map +1 -0
- package/dist/materials/GameReadyMaterialLibrary.js +253 -0
- package/dist/materials/GameReadyMaterialLibrary.js.map +1 -0
- package/dist/materials/MaterialValidation.d.ts +21 -0
- package/dist/materials/MaterialValidation.d.ts.map +1 -1
- package/dist/materials/MaterialValidation.js +105 -0
- package/dist/materials/MaterialValidation.js.map +1 -1
- package/dist/materials/browser-index.d.ts +2 -0
- package/dist/materials/browser-index.d.ts.map +1 -1
- package/dist/materials/browser-index.js +1 -0
- package/dist/materials/browser-index.js.map +1 -1
- package/dist/materials/node.d.ts +2 -2
- package/dist/materials/node.d.ts.map +1 -1
- package/dist/materials/node.js +1 -1
- package/dist/materials/node.js.map +1 -1
- package/dist/physics/CollisionVolumes.d.ts +59 -0
- package/dist/physics/CollisionVolumes.d.ts.map +1 -1
- package/dist/physics/CollisionVolumes.js +87 -0
- package/dist/physics/CollisionVolumes.js.map +1 -1
- package/dist/physics/PhysicsDebugDraw.d.ts +37 -0
- package/dist/physics/PhysicsDebugDraw.d.ts.map +1 -1
- package/dist/physics/PhysicsDebugDraw.js +38 -1
- package/dist/physics/PhysicsDebugDraw.js.map +1 -1
- package/dist/physics/PhysicsWorld.d.ts +15 -0
- package/dist/physics/PhysicsWorld.d.ts.map +1 -1
- package/dist/physics/PhysicsWorld.js +8 -1
- package/dist/physics/PhysicsWorld.js.map +1 -1
- package/dist/physics/solverless.d.ts +1 -1
- package/dist/physics/solverless.d.ts.map +1 -1
- package/dist/physics/solverless.js.map +1 -1
- package/dist/physics-rapier/index.d.ts +7 -1
- package/dist/physics-rapier/index.d.ts.map +1 -1
- package/dist/physics-rapier/index.js +1 -1
- package/dist/physics-rapier/index.js.map +1 -1
- package/dist/react/index.d.ts +136 -2
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +251 -10
- package/dist/react/index.js.map +1 -1
- package/dist/rendering/AtmosphereWetness.d.ts +61 -0
- package/dist/rendering/AtmosphereWetness.d.ts.map +1 -0
- package/dist/rendering/AtmosphereWetness.js +99 -0
- package/dist/rendering/AtmosphereWetness.js.map +1 -0
- package/dist/rendering/ClusteredForwardLighting.d.ts +25 -1
- package/dist/rendering/ClusteredForwardLighting.d.ts.map +1 -1
- package/dist/rendering/ClusteredForwardLighting.js +80 -3
- package/dist/rendering/ClusteredForwardLighting.js.map +1 -1
- package/dist/rendering/DayNightSky.d.ts +63 -0
- package/dist/rendering/DayNightSky.d.ts.map +1 -0
- package/dist/rendering/DayNightSky.js +156 -0
- package/dist/rendering/DayNightSky.js.map +1 -0
- package/dist/rendering/EnvironmentPresetPack.d.ts +30 -0
- package/dist/rendering/EnvironmentPresetPack.d.ts.map +1 -0
- package/dist/rendering/EnvironmentPresetPack.js +49 -0
- package/dist/rendering/EnvironmentPresetPack.js.map +1 -0
- package/dist/rendering/ForwardPass.d.ts +65 -0
- package/dist/rendering/ForwardPass.d.ts.map +1 -1
- package/dist/rendering/ForwardPass.js +196 -2
- package/dist/rendering/ForwardPass.js.map +1 -1
- package/dist/rendering/InstancedPBRMaterial.d.ts +1 -0
- package/dist/rendering/InstancedPBRMaterial.d.ts.map +1 -1
- package/dist/rendering/InstancedPBRMaterial.js +3 -0
- package/dist/rendering/InstancedPBRMaterial.js.map +1 -1
- package/dist/rendering/InstancingDiagnostics.d.ts +69 -0
- package/dist/rendering/InstancingDiagnostics.d.ts.map +1 -0
- package/dist/rendering/InstancingDiagnostics.js +98 -0
- package/dist/rendering/InstancingDiagnostics.js.map +1 -0
- package/dist/rendering/LightingRig.d.ts +19 -1
- package/dist/rendering/LightingRig.d.ts.map +1 -1
- package/dist/rendering/LightingRig.js +61 -1
- package/dist/rendering/LightingRig.js.map +1 -1
- package/dist/rendering/MeshConsolidation.d.ts +12 -0
- package/dist/rendering/MeshConsolidation.d.ts.map +1 -1
- package/dist/rendering/MeshConsolidation.js +28 -0
- package/dist/rendering/MeshConsolidation.js.map +1 -1
- package/dist/rendering/MorphTargetPlan.d.ts +29 -2
- package/dist/rendering/MorphTargetPlan.d.ts.map +1 -1
- package/dist/rendering/MorphTargetPlan.js +23 -4
- package/dist/rendering/MorphTargetPlan.js.map +1 -1
- package/dist/rendering/NormalMappedPBRMaterial.d.ts.map +1 -1
- package/dist/rendering/NormalMappedPBRMaterial.js +22 -2
- package/dist/rendering/NormalMappedPBRMaterial.js.map +1 -1
- package/dist/rendering/OceanSurface.d.ts +75 -0
- package/dist/rendering/OceanSurface.d.ts.map +1 -1
- package/dist/rendering/OceanSurface.js +211 -0
- package/dist/rendering/OceanSurface.js.map +1 -1
- package/dist/rendering/PBRMaterial.d.ts +1 -0
- package/dist/rendering/PBRMaterial.d.ts.map +1 -1
- package/dist/rendering/PBRMaterial.js +23 -2
- package/dist/rendering/PBRMaterial.js.map +1 -1
- package/dist/rendering/PbrReference.d.ts +48 -0
- package/dist/rendering/PbrReference.d.ts.map +1 -1
- package/dist/rendering/PbrReference.js +126 -0
- package/dist/rendering/PbrReference.js.map +1 -1
- package/dist/rendering/PlanarReflection.d.ts +221 -0
- package/dist/rendering/PlanarReflection.d.ts.map +1 -0
- package/dist/rendering/PlanarReflection.js +541 -0
- package/dist/rendering/PlanarReflection.js.map +1 -0
- package/dist/rendering/PostProcessPass.d.ts +13 -0
- package/dist/rendering/PostProcessPass.d.ts.map +1 -1
- package/dist/rendering/PostProcessPass.js +15 -4
- package/dist/rendering/PostProcessPass.js.map +1 -1
- package/dist/rendering/ReflectionSurfaces.d.ts +14 -0
- package/dist/rendering/ReflectionSurfaces.d.ts.map +1 -1
- package/dist/rendering/ReflectionSurfaces.js +93 -0
- package/dist/rendering/ReflectionSurfaces.js.map +1 -1
- package/dist/rendering/RenderDevice.d.ts +87 -0
- package/dist/rendering/RenderDevice.d.ts.map +1 -1
- package/dist/rendering/RenderDevice.js +85 -0
- package/dist/rendering/RenderDevice.js.map +1 -1
- package/dist/rendering/Renderer.js +3 -1
- package/dist/rendering/Renderer.js.map +1 -1
- package/dist/rendering/RendererPostprocessPlan.d.ts +48 -0
- package/dist/rendering/RendererPostprocessPlan.d.ts.map +1 -1
- package/dist/rendering/RendererPostprocessPlan.js +101 -11
- package/dist/rendering/RendererPostprocessPlan.js.map +1 -1
- package/dist/rendering/RendererVisualPipelineReport.d.ts.map +1 -1
- package/dist/rendering/RendererVisualPipelineReport.js +3 -1
- package/dist/rendering/RendererVisualPipelineReport.js.map +1 -1
- package/dist/rendering/Sampler.d.ts +29 -0
- package/dist/rendering/Sampler.d.ts.map +1 -1
- package/dist/rendering/Sampler.js +47 -0
- package/dist/rendering/Sampler.js.map +1 -1
- package/dist/rendering/SdfText.d.ts +250 -0
- package/dist/rendering/SdfText.d.ts.map +1 -0
- package/dist/rendering/SdfText.js +551 -0
- package/dist/rendering/SdfText.js.map +1 -0
- package/dist/rendering/ShaderChunks.d.ts.map +1 -1
- package/dist/rendering/ShaderChunks.js +30 -12
- package/dist/rendering/ShaderChunks.js.map +1 -1
- package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
- package/dist/rendering/ShaderLibrary.js +478 -34
- package/dist/rendering/ShaderLibrary.js.map +1 -1
- package/dist/rendering/ShaderLibraryCore.d.ts.map +1 -1
- package/dist/rendering/ShaderLibraryCore.js +70 -12
- package/dist/rendering/ShaderLibraryCore.js.map +1 -1
- package/dist/rendering/ShadowMap.d.ts +24 -0
- package/dist/rendering/ShadowMap.d.ts.map +1 -1
- package/dist/rendering/ShadowMap.js +43 -0
- package/dist/rendering/ShadowMap.js.map +1 -1
- package/dist/rendering/SkinnedLitMaterial.d.ts.map +1 -1
- package/dist/rendering/SkinnedLitMaterial.js +2 -0
- package/dist/rendering/SkinnedLitMaterial.js.map +1 -1
- package/dist/rendering/SkinningBounds.d.ts +10 -0
- package/dist/rendering/SkinningBounds.d.ts.map +1 -1
- package/dist/rendering/SkinningBounds.js +27 -0
- package/dist/rendering/SkinningBounds.js.map +1 -1
- package/dist/rendering/SpriteFlipbook.d.ts +60 -0
- package/dist/rendering/SpriteFlipbook.d.ts.map +1 -0
- package/dist/rendering/SpriteFlipbook.js +128 -0
- package/dist/rendering/SpriteFlipbook.js.map +1 -0
- package/dist/rendering/TerrainTiles.d.ts +120 -0
- package/dist/rendering/TerrainTiles.d.ts.map +1 -0
- package/dist/rendering/TerrainTiles.js +221 -0
- package/dist/rendering/TerrainTiles.js.map +1 -0
- package/dist/rendering/TexturedPBRMaterial.d.ts +1 -0
- package/dist/rendering/TexturedPBRMaterial.d.ts.map +1 -1
- package/dist/rendering/TexturedPBRMaterial.js +23 -2
- package/dist/rendering/TexturedPBRMaterial.js.map +1 -1
- package/dist/rendering/TexturedUnlitMaterial.d.ts.map +1 -1
- package/dist/rendering/TexturedUnlitMaterial.js +20 -2
- package/dist/rendering/TexturedUnlitMaterial.js.map +1 -1
- package/dist/rendering/UnlitMaterial.d.ts.map +1 -1
- package/dist/rendering/UnlitMaterial.js +20 -2
- package/dist/rendering/UnlitMaterial.js.map +1 -1
- package/dist/rendering/VertexFormat.d.ts +6 -0
- package/dist/rendering/VertexFormat.d.ts.map +1 -1
- package/dist/rendering/VertexFormat.js +12 -0
- package/dist/rendering/VertexFormat.js.map +1 -1
- package/dist/rendering/VolumetricFog.d.ts +55 -0
- package/dist/rendering/VolumetricFog.d.ts.map +1 -0
- package/dist/rendering/VolumetricFog.js +91 -0
- package/dist/rendering/VolumetricFog.js.map +1 -0
- package/dist/rendering/WaterSurface.d.ts +77 -0
- package/dist/rendering/WaterSurface.d.ts.map +1 -0
- package/dist/rendering/WaterSurface.js +133 -0
- package/dist/rendering/WaterSurface.js.map +1 -0
- package/dist/rendering/WebGL2Device.d.ts +58 -0
- package/dist/rendering/WebGL2Device.d.ts.map +1 -1
- package/dist/rendering/WebGL2Device.js +536 -17
- package/dist/rendering/WebGL2Device.js.map +1 -1
- package/dist/rendering/WebGPUDevice.d.ts +50 -0
- package/dist/rendering/WebGPUDevice.d.ts.map +1 -1
- package/dist/rendering/WebGPUDevice.js +504 -10
- package/dist/rendering/WebGPUDevice.js.map +1 -1
- package/dist/rendering/WebGPUSkinningLimits.d.ts +40 -0
- package/dist/rendering/WebGPUSkinningLimits.d.ts.map +1 -1
- package/dist/rendering/WebGPUSkinningLimits.js +32 -0
- package/dist/rendering/WebGPUSkinningLimits.js.map +1 -1
- package/dist/rendering/effects/CollisionModule.d.ts +9 -0
- package/dist/rendering/effects/CollisionModule.d.ts.map +1 -1
- package/dist/rendering/effects/CollisionModule.js +10 -0
- package/dist/rendering/effects/CollisionModule.js.map +1 -1
- package/dist/rendering/effects/ColorModule.d.ts +7 -0
- package/dist/rendering/effects/ColorModule.d.ts.map +1 -1
- package/dist/rendering/effects/ColorModule.js +23 -0
- package/dist/rendering/effects/ColorModule.js.map +1 -1
- package/dist/rendering/effects/ForceModule.d.ts +35 -0
- package/dist/rendering/effects/ForceModule.d.ts.map +1 -1
- package/dist/rendering/effects/ForceModule.js +49 -0
- package/dist/rendering/effects/ForceModule.js.map +1 -1
- package/dist/rendering/effects/GPUParticleBackend.d.ts +186 -0
- package/dist/rendering/effects/GPUParticleBackend.d.ts.map +1 -1
- package/dist/rendering/effects/GPUParticleBackend.js +692 -1
- package/dist/rendering/effects/GPUParticleBackend.js.map +1 -1
- package/dist/rendering/effects/HeightfieldModule.d.ts +58 -0
- package/dist/rendering/effects/HeightfieldModule.d.ts.map +1 -0
- package/dist/rendering/effects/HeightfieldModule.js +129 -0
- package/dist/rendering/effects/HeightfieldModule.js.map +1 -0
- package/dist/rendering/effects/LightingModule.d.ts +34 -0
- package/dist/rendering/effects/LightingModule.d.ts.map +1 -0
- package/dist/rendering/effects/LightingModule.js +54 -0
- package/dist/rendering/effects/LightingModule.js.map +1 -0
- package/dist/rendering/effects/ParticleDiagnostics.d.ts +8 -0
- package/dist/rendering/effects/ParticleDiagnostics.d.ts.map +1 -1
- package/dist/rendering/effects/ParticleDiagnostics.js +3 -0
- package/dist/rendering/effects/ParticleDiagnostics.js.map +1 -1
- package/dist/rendering/effects/ParticleModule.d.ts +8 -0
- package/dist/rendering/effects/ParticleModule.d.ts.map +1 -1
- package/dist/rendering/effects/ParticleModule.js.map +1 -1
- package/dist/rendering/effects/ParticleRenderer.d.ts +20 -0
- package/dist/rendering/effects/ParticleRenderer.d.ts.map +1 -1
- package/dist/rendering/effects/ParticleRenderer.js +57 -7
- package/dist/rendering/effects/ParticleRenderer.js.map +1 -1
- package/dist/rendering/effects/ParticleSystem.d.ts +45 -1
- package/dist/rendering/effects/ParticleSystem.d.ts.map +1 -1
- package/dist/rendering/effects/ParticleSystem.js +373 -4
- package/dist/rendering/effects/ParticleSystem.js.map +1 -1
- package/dist/rendering/effects/SizeModule.d.ts +4 -0
- package/dist/rendering/effects/SizeModule.d.ts.map +1 -1
- package/dist/rendering/effects/SizeModule.js +16 -0
- package/dist/rendering/effects/SizeModule.js.map +1 -1
- package/dist/rendering/effects/SubEmitterModule.d.ts +61 -0
- package/dist/rendering/effects/SubEmitterModule.d.ts.map +1 -0
- package/dist/rendering/effects/SubEmitterModule.js +119 -0
- package/dist/rendering/effects/SubEmitterModule.js.map +1 -0
- package/dist/rendering/effects/TrailModule.d.ts +38 -0
- package/dist/rendering/effects/TrailModule.d.ts.map +1 -1
- package/dist/rendering/effects/TrailModule.js +95 -2
- package/dist/rendering/effects/TrailModule.js.map +1 -1
- package/dist/rendering/effects/TurbulenceModule.d.ts +43 -0
- package/dist/rendering/effects/TurbulenceModule.d.ts.map +1 -0
- package/dist/rendering/effects/TurbulenceModule.js +130 -0
- package/dist/rendering/effects/TurbulenceModule.js.map +1 -0
- package/dist/rendering/effects/index.d.ts +4 -0
- package/dist/rendering/effects/index.d.ts.map +1 -1
- package/dist/rendering/effects/index.js +4 -0
- package/dist/rendering/effects/index.js.map +1 -1
- package/dist/rendering/index.d.ts +57 -19
- package/dist/rendering/index.d.ts.map +1 -1
- package/dist/rendering/index.js +31 -10
- package/dist/rendering/index.js.map +1 -1
- package/dist/rendering/materials/MaterialExtensions.js +3 -3
- package/dist/rendering/materials/MaterialExtensions.js.map +1 -1
- package/dist/rendering/postprocess/NativeBloomPyramid.d.ts +28 -0
- package/dist/rendering/postprocess/NativeBloomPyramid.d.ts.map +1 -0
- package/dist/rendering/postprocess/NativeBloomPyramid.js +54 -0
- package/dist/rendering/postprocess/NativeBloomPyramid.js.map +1 -0
- package/dist/rendering/postprocess/NativeLdrEffectLuts.d.ts +10 -1
- package/dist/rendering/postprocess/NativeLdrEffectLuts.d.ts.map +1 -1
- package/dist/rendering/postprocess/NativeLdrEffectLuts.js +19 -2
- package/dist/rendering/postprocess/NativeLdrEffectLuts.js.map +1 -1
- package/dist/rendering/postprocess/index.d.ts +2 -0
- package/dist/rendering/postprocess/index.d.ts.map +1 -1
- package/dist/rendering/postprocess/index.js +1 -0
- package/dist/rendering/postprocess/index.js.map +1 -1
- package/dist/rendering/production-runtime/PBRHDRPipeline.d.ts +22 -0
- package/dist/rendering/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
- package/dist/rendering/production-runtime/PBRHDRPipeline.js +125 -0
- package/dist/rendering/production-runtime/PBRHDRPipeline.js.map +1 -1
- package/dist/rendering/production-runtime/ProductionWebGPURenderer.d.ts +52 -0
- package/dist/rendering/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
- package/dist/rendering/production-runtime/ProductionWebGPURenderer.js +101 -0
- package/dist/rendering/production-runtime/ProductionWebGPURenderer.js.map +1 -1
- package/dist/rendering/production-runtime/index.d.ts +5 -4
- package/dist/rendering/production-runtime/index.d.ts.map +1 -1
- package/dist/rendering/production-runtime/index.js +3 -2
- package/dist/rendering/production-runtime/index.js.map +1 -1
- package/dist/rendering/production-runtime/passes/DepthPrepass.d.ts +26 -1
- package/dist/rendering/production-runtime/passes/DepthPrepass.d.ts.map +1 -1
- package/dist/rendering/production-runtime/passes/DepthPrepass.js +49 -2
- package/dist/rendering/production-runtime/passes/DepthPrepass.js.map +1 -1
- package/dist/rendering/production-runtime/passes/FramegraphTopology.d.ts +13 -0
- package/dist/rendering/production-runtime/passes/FramegraphTopology.d.ts.map +1 -0
- package/dist/rendering/production-runtime/passes/FramegraphTopology.js +59 -0
- package/dist/rendering/production-runtime/passes/FramegraphTopology.js.map +1 -0
- package/dist/rendering/production-runtime/passes/OpaquePass.d.ts +24 -1
- package/dist/rendering/production-runtime/passes/OpaquePass.d.ts.map +1 -1
- package/dist/rendering/production-runtime/passes/OpaquePass.js +41 -2
- package/dist/rendering/production-runtime/passes/OpaquePass.js.map +1 -1
- package/dist/rendering/production-runtime/passes/ShadowPass.d.ts +24 -1
- package/dist/rendering/production-runtime/passes/ShadowPass.d.ts.map +1 -1
- package/dist/rendering/production-runtime/passes/ShadowPass.js +43 -2
- package/dist/rendering/production-runtime/passes/ShadowPass.js.map +1 -1
- package/dist/rendering/production-runtime/passes/SkyboxPass.d.ts +21 -1
- package/dist/rendering/production-runtime/passes/SkyboxPass.d.ts.map +1 -1
- package/dist/rendering/production-runtime/passes/SkyboxPass.js +39 -2
- package/dist/rendering/production-runtime/passes/SkyboxPass.js.map +1 -1
- package/dist/rendering/production-runtime/passes/ToneMappingPass.d.ts +29 -1
- package/dist/rendering/production-runtime/passes/ToneMappingPass.d.ts.map +1 -1
- package/dist/rendering/production-runtime/passes/ToneMappingPass.js +53 -2
- package/dist/rendering/production-runtime/passes/ToneMappingPass.js.map +1 -1
- package/dist/rendering/production-runtime/passes/TransparentPass.d.ts +24 -1
- package/dist/rendering/production-runtime/passes/TransparentPass.d.ts.map +1 -1
- package/dist/rendering/production-runtime/passes/TransparentPass.js +42 -2
- package/dist/rendering/production-runtime/passes/TransparentPass.js.map +1 -1
- package/dist/rendering/shadows/CascadeHysteresis.d.ts +67 -0
- package/dist/rendering/shadows/CascadeHysteresis.d.ts.map +1 -0
- package/dist/rendering/shadows/CascadeHysteresis.js +104 -0
- package/dist/rendering/shadows/CascadeHysteresis.js.map +1 -0
- package/dist/rendering/shadows/ContactShadows.d.ts +52 -0
- package/dist/rendering/shadows/ContactShadows.d.ts.map +1 -1
- package/dist/rendering/shadows/ContactShadows.js +122 -0
- package/dist/rendering/shadows/ContactShadows.js.map +1 -1
- package/dist/rendering/shadows/SpotShadowMaps.d.ts +77 -0
- package/dist/rendering/shadows/SpotShadowMaps.d.ts.map +1 -0
- package/dist/rendering/shadows/SpotShadowMaps.js +106 -0
- package/dist/rendering/shadows/SpotShadowMaps.js.map +1 -0
- package/dist/rendering/webgpu/WebGPUPostProcess.d.ts +2 -0
- package/dist/rendering/webgpu/WebGPUPostProcess.d.ts.map +1 -1
- package/dist/rendering/webgpu/WebGPUPostProcess.js +1 -0
- package/dist/rendering/webgpu/WebGPUPostProcess.js.map +1 -1
- package/dist/rendering/webgpu/WebGPUPostShaders.d.ts +78 -0
- package/dist/rendering/webgpu/WebGPUPostShaders.d.ts.map +1 -0
- package/dist/rendering/webgpu/WebGPUPostShaders.js +262 -0
- package/dist/rendering/webgpu/WebGPUPostShaders.js.map +1 -0
- package/dist/scene/Scene.d.ts +8 -1
- package/dist/scene/Scene.d.ts.map +1 -1
- package/dist/scene/Scene.js +12 -2
- package/dist/scene/Scene.js.map +1 -1
- package/dist/scripting/VisualGraphContext.d.ts +31 -0
- package/dist/scripting/VisualGraphContext.d.ts.map +1 -1
- package/dist/scripting/VisualGraphExecutor.d.ts.map +1 -1
- package/dist/scripting/VisualGraphExecutor.js +110 -0
- package/dist/scripting/VisualGraphExecutor.js.map +1 -1
- package/dist/scripting/VisualNodeCatalog.d.ts +1 -1
- package/dist/scripting/VisualNodeCatalog.d.ts.map +1 -1
- package/dist/scripting/VisualNodeCatalog.js +20 -0
- package/dist/scripting/VisualNodeCatalog.js.map +1 -1
- package/dist/scripting/VisualScriptingRoot.d.ts +96 -0
- package/dist/scripting/VisualScriptingRoot.d.ts.map +1 -0
- package/dist/scripting/VisualScriptingRoot.js +150 -0
- package/dist/scripting/VisualScriptingRoot.js.map +1 -0
- package/dist/scripting/index.d.ts +3 -1
- package/dist/scripting/index.d.ts.map +1 -1
- package/dist/scripting/index.js +1 -0
- package/dist/scripting/index.js.map +1 -1
- package/package.json +24 -22
- package/templates/cinematic-scene/node_modules/.vite/deps/_metadata.json +8 -0
- package/templates/cinematic-scene/node_modules/.vite/deps/package.json +3 -0
- package/templates/cinematic-scene/test-results/.last-run.json +6 -0
- package/templates/cinematic-scene/test-results/route-health-Aura3D-cinematic-scene-reaches-ready-state/error-context.md +64 -0
- package/templates/product-viewer/node_modules/.vite/deps/_metadata.json +8 -0
- package/templates/product-viewer/node_modules/.vite/deps/package.json +3 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* B1 cascade stabilization (muse3jsparity-PRD).
|
|
3
|
+
*
|
|
4
|
+
* Sits on top of the existing `selectForwardShadowMap` depth selection:
|
|
5
|
+
* hysteresis on cascade selection, a temporal shimmer metric, and
|
|
6
|
+
* per-cascade bias tables. Pure functions so the 60s moving-camera browser
|
|
7
|
+
* stress can assert the same math the renderer uses.
|
|
8
|
+
*/
|
|
9
|
+
export interface HysteresisCascadeSplit {
|
|
10
|
+
readonly index: number;
|
|
11
|
+
readonly near: number;
|
|
12
|
+
readonly far: number;
|
|
13
|
+
}
|
|
14
|
+
export interface CascadeHysteresisInput {
|
|
15
|
+
readonly depth: number;
|
|
16
|
+
readonly splits: readonly HysteresisCascadeSplit[];
|
|
17
|
+
/** Previously selected cascade index, or null on the first frame. */
|
|
18
|
+
readonly previousIndex: number | null;
|
|
19
|
+
/**
|
|
20
|
+
* Hysteresis band as a fraction of the current cascade depth span.
|
|
21
|
+
* The camera must travel this far past a boundary before the selection
|
|
22
|
+
* flips, which kills boundary flicker on long moving-camera paths.
|
|
23
|
+
*/
|
|
24
|
+
readonly hysteresis?: number;
|
|
25
|
+
}
|
|
26
|
+
export declare function selectCascadeWithHysteresis(input: CascadeHysteresisInput): number;
|
|
27
|
+
export interface ShimmerSample {
|
|
28
|
+
readonly cascadeIndex: number;
|
|
29
|
+
/** Receiver depth used for this frame's selection. */
|
|
30
|
+
readonly depth: number;
|
|
31
|
+
}
|
|
32
|
+
export interface ShimmerScore {
|
|
33
|
+
/** Fraction of frames where the cascade index changed (0 = rock solid). */
|
|
34
|
+
readonly flipRate: number;
|
|
35
|
+
/** Mean absolute depth delta per frame, normalized by scene depth range. */
|
|
36
|
+
readonly depthJitter: number;
|
|
37
|
+
/** Combined score in [0, 1]; the B1 long-path stress asserts this. */
|
|
38
|
+
readonly score: number;
|
|
39
|
+
readonly frames: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Temporal shimmer metric over a moving-camera sample window.
|
|
43
|
+
* flipRate captures cascade-boundary flicker; depthJitter captures the
|
|
44
|
+
* camera-path energy so the stress report proves the camera actually moved.
|
|
45
|
+
*/
|
|
46
|
+
export declare function computeShimmerScore(samples: readonly ShimmerSample[], sceneDepthRange: number): ShimmerScore;
|
|
47
|
+
export interface CascadeBiasTableEntry {
|
|
48
|
+
readonly cascadeIndex: number;
|
|
49
|
+
readonly baseBias: number;
|
|
50
|
+
readonly slopeScale: number;
|
|
51
|
+
readonly texelSize: number;
|
|
52
|
+
/** Effective bias at normal incidence (grazing adds slope term). */
|
|
53
|
+
readonly effectiveBias: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Per-cascade bias tables: outer cascades cover more world per texel, so
|
|
57
|
+
* both the base bias and the slope scale grow with cascade index while the
|
|
58
|
+
* innermost cascade keeps the tightest values (contact-gap retention).
|
|
59
|
+
*/
|
|
60
|
+
export declare function createCascadeBiasTable(options: {
|
|
61
|
+
readonly cascadeCount: number;
|
|
62
|
+
readonly baseBias?: number;
|
|
63
|
+
readonly slopeScale?: number;
|
|
64
|
+
readonly texelSize?: number;
|
|
65
|
+
readonly growthPerCascade?: number;
|
|
66
|
+
}): readonly CascadeBiasTableEntry[];
|
|
67
|
+
//# sourceMappingURL=CascadeHysteresis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CascadeHysteresis.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/shadows/CascadeHysteresis.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,qEAAqE;IACrE,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAuBjF;AAOD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,YAAY,CAmB5G;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC,GAAG,SAAS,qBAAqB,EAAE,CAwBnC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* B1 cascade stabilization (muse3jsparity-PRD).
|
|
3
|
+
*
|
|
4
|
+
* Sits on top of the existing `selectForwardShadowMap` depth selection:
|
|
5
|
+
* hysteresis on cascade selection, a temporal shimmer metric, and
|
|
6
|
+
* per-cascade bias tables. Pure functions so the 60s moving-camera browser
|
|
7
|
+
* stress can assert the same math the renderer uses.
|
|
8
|
+
*/
|
|
9
|
+
export function selectCascadeWithHysteresis(input) {
|
|
10
|
+
if (input.splits.length === 0)
|
|
11
|
+
throw new RangeError("Cascade hysteresis requires at least one split.");
|
|
12
|
+
if (!Number.isFinite(input.depth) || input.depth < 0) {
|
|
13
|
+
throw new RangeError("Cascade hysteresis depth must be finite and non-negative.");
|
|
14
|
+
}
|
|
15
|
+
const hysteresis = input.hysteresis ?? 0.08;
|
|
16
|
+
if (!Number.isFinite(hysteresis) || hysteresis < 0 || hysteresis > 0.5) {
|
|
17
|
+
throw new RangeError("Cascade hysteresis must be in [0, 0.5].");
|
|
18
|
+
}
|
|
19
|
+
const raw = rawCascadeIndex(input.depth, input.splits);
|
|
20
|
+
if (input.previousIndex === null)
|
|
21
|
+
return raw;
|
|
22
|
+
if (raw === input.previousIndex)
|
|
23
|
+
return raw;
|
|
24
|
+
const current = input.splits[input.previousIndex];
|
|
25
|
+
if (!current)
|
|
26
|
+
return raw;
|
|
27
|
+
const span = Math.max(current.far - current.near, 1e-6);
|
|
28
|
+
if (raw > input.previousIndex) {
|
|
29
|
+
// Moving outward: require depth to clear the far edge + band.
|
|
30
|
+
if (input.depth <= current.far + hysteresis * span)
|
|
31
|
+
return input.previousIndex;
|
|
32
|
+
return raw;
|
|
33
|
+
}
|
|
34
|
+
// Moving inward: require depth to clear the near edge - band.
|
|
35
|
+
if (input.depth >= current.near - hysteresis * span)
|
|
36
|
+
return input.previousIndex;
|
|
37
|
+
return raw;
|
|
38
|
+
}
|
|
39
|
+
function rawCascadeIndex(depth, splits) {
|
|
40
|
+
const hit = splits.find((split) => depth <= split.far);
|
|
41
|
+
return hit ? hit.index : splits[splits.length - 1].index;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Temporal shimmer metric over a moving-camera sample window.
|
|
45
|
+
* flipRate captures cascade-boundary flicker; depthJitter captures the
|
|
46
|
+
* camera-path energy so the stress report proves the camera actually moved.
|
|
47
|
+
*/
|
|
48
|
+
export function computeShimmerScore(samples, sceneDepthRange) {
|
|
49
|
+
if (samples.length < 2)
|
|
50
|
+
throw new RangeError("Shimmer scoring requires at least two samples.");
|
|
51
|
+
if (!Number.isFinite(sceneDepthRange) || sceneDepthRange <= 0) {
|
|
52
|
+
throw new RangeError("Shimmer sceneDepthRange must be finite and positive.");
|
|
53
|
+
}
|
|
54
|
+
let flips = 0;
|
|
55
|
+
let jitter = 0;
|
|
56
|
+
for (let i = 1; i < samples.length; i += 1) {
|
|
57
|
+
if (samples[i].cascadeIndex !== samples[i - 1].cascadeIndex)
|
|
58
|
+
flips += 1;
|
|
59
|
+
jitter += Math.abs(samples[i].depth - samples[i - 1].depth);
|
|
60
|
+
}
|
|
61
|
+
const frames = samples.length - 1;
|
|
62
|
+
const flipRate = Number((flips / frames).toFixed(6));
|
|
63
|
+
const depthJitter = Number((jitter / frames / sceneDepthRange).toFixed(6));
|
|
64
|
+
// A static camera legitimately scores 0 (no flicker without motion), so the
|
|
65
|
+
// B1 60s stress must drive a moving-camera path: depthJitter is reported
|
|
66
|
+
// alongside the score so reviewers can verify the path had energy.
|
|
67
|
+
const score = Number(Math.min(1, flipRate * (1 + depthJitter * 10)).toFixed(6));
|
|
68
|
+
return { flipRate, depthJitter, score, frames: samples.length };
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Per-cascade bias tables: outer cascades cover more world per texel, so
|
|
72
|
+
* both the base bias and the slope scale grow with cascade index while the
|
|
73
|
+
* innermost cascade keeps the tightest values (contact-gap retention).
|
|
74
|
+
*/
|
|
75
|
+
export function createCascadeBiasTable(options) {
|
|
76
|
+
const cascadeCount = options.cascadeCount;
|
|
77
|
+
if (!Number.isInteger(cascadeCount) || cascadeCount <= 0 || cascadeCount > 8) {
|
|
78
|
+
throw new RangeError("Cascade bias table requires 1-8 cascades.");
|
|
79
|
+
}
|
|
80
|
+
const baseBias = options.baseBias ?? 0.001;
|
|
81
|
+
const slopeScale = options.slopeScale ?? 1;
|
|
82
|
+
const texelSize = options.texelSize ?? 1;
|
|
83
|
+
const growth = options.growthPerCascade ?? 0.35;
|
|
84
|
+
if (!Number.isFinite(baseBias) || baseBias < 0)
|
|
85
|
+
throw new RangeError("Cascade baseBias must be finite and non-negative.");
|
|
86
|
+
if (!Number.isFinite(slopeScale) || slopeScale < 0)
|
|
87
|
+
throw new RangeError("Cascade slopeScale must be finite and non-negative.");
|
|
88
|
+
if (!Number.isFinite(texelSize) || texelSize <= 0)
|
|
89
|
+
throw new RangeError("Cascade texelSize must be finite and positive.");
|
|
90
|
+
if (!Number.isFinite(growth) || growth < 0)
|
|
91
|
+
throw new RangeError("Cascade bias growth must be finite and non-negative.");
|
|
92
|
+
return Array.from({ length: cascadeCount }, (_, index) => {
|
|
93
|
+
const entryBase = Number((baseBias * (1 + growth * index)).toFixed(8));
|
|
94
|
+
const entrySlope = Number((slopeScale * (1 + growth * index)).toFixed(8));
|
|
95
|
+
return {
|
|
96
|
+
cascadeIndex: index,
|
|
97
|
+
baseBias: entryBase,
|
|
98
|
+
slopeScale: entrySlope,
|
|
99
|
+
texelSize,
|
|
100
|
+
effectiveBias: entryBase,
|
|
101
|
+
};
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=CascadeHysteresis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CascadeHysteresis.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/shadows/CascadeHysteresis.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAqBH,MAAM,UAAU,2BAA2B,CAAC,KAA6B;IACvE,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,iDAAiD,CAAC,CAAC;IACvG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,UAAU,CAAC,2DAA2D,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;QACvE,MAAM,IAAI,UAAU,CAAC,yCAAyC,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC;IAC7C,IAAI,GAAG,KAAK,KAAK,CAAC,aAAa;QAAE,OAAO,GAAG,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAClD,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxD,IAAI,GAAG,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QAC9B,8DAA8D;QAC9D,IAAI,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,GAAG,UAAU,GAAG,IAAI;YAAE,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/E,OAAO,GAAG,CAAC;IACb,CAAC;IACD,8DAA8D;IAC9D,IAAI,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,GAAG,IAAI;QAAE,OAAO,KAAK,CAAC,aAAa,CAAC;IAChF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,MAAyC;IAC/E,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,KAAK,CAAC;AAC5D,CAAC;AAkBD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAiC,EAAE,eAAuB;IAC5F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,gDAAgD,CAAC,CAAC;IAC/F,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,UAAU,CAAC,sDAAsD,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,CAAC,CAAE,CAAC,YAAY,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,YAAY;YAAE,KAAK,IAAI,CAAC,CAAC;QAC1E,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,4EAA4E;IAC5E,yEAAyE;IACzE,mEAAmE;IACnE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AAClE,CAAC;AAWD;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAMtC;IACC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;IAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,mDAAmD,CAAC,CAAC;IAC1H,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,qDAAqD,CAAC,CAAC;IAChI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,gDAAgD,CAAC,CAAC;IAC1H,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,sDAAsD,CAAC,CAAC;IACzH,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QACvD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO;YACL,YAAY,EAAE,KAAK;YACnB,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,UAAU;YACtB,SAAS;YACT,aAAa,EAAE,SAAS;SACzB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -34,4 +34,56 @@ export interface ExternalParityContactShadowPlan {
|
|
|
34
34
|
}
|
|
35
35
|
export declare function createExternalParityContactShadow(options: ExternalParityContactShadowOptions): ExternalParityContactShadow;
|
|
36
36
|
export declare function createExternalParityContactShadowPlan(options: ExternalParityContactShadowPlanOptions): ExternalParityContactShadowPlan;
|
|
37
|
+
export type ContactOccluderKind = "capsule" | "plane";
|
|
38
|
+
export interface ContactOccluder {
|
|
39
|
+
readonly id: string;
|
|
40
|
+
readonly kind: ContactOccluderKind;
|
|
41
|
+
/** Capsule segment endpoints (world) for "capsule"; ignored for "plane". */
|
|
42
|
+
readonly segmentA?: readonly [number, number, number];
|
|
43
|
+
readonly segmentB?: readonly [number, number, number];
|
|
44
|
+
/** Capsule radius in world units. */
|
|
45
|
+
readonly radius?: number;
|
|
46
|
+
/** Plane normal (world, normalized by the resolver) for "plane". */
|
|
47
|
+
readonly planeNormal?: readonly [number, number, number];
|
|
48
|
+
/** Plane offset along the normal for "plane". */
|
|
49
|
+
readonly planeOffset?: number;
|
|
50
|
+
}
|
|
51
|
+
export interface ContactReceiverSample {
|
|
52
|
+
readonly objectId: string;
|
|
53
|
+
readonly receiverPosition: readonly [number, number, number];
|
|
54
|
+
readonly receiverNormal: readonly [number, number, number];
|
|
55
|
+
}
|
|
56
|
+
export interface ContactDarkeningSample {
|
|
57
|
+
readonly objectId: string;
|
|
58
|
+
/** Mean occlusion in [0, 1]; 0 = untouched, 1 = fully grounded. */
|
|
59
|
+
readonly contactDarkening: number;
|
|
60
|
+
/** Bent normal (world) approximating blocked-hemisphere leakage. */
|
|
61
|
+
readonly bentNormal: readonly [number, number, number];
|
|
62
|
+
/** Contact radius used for this receiver (depth-hardened). */
|
|
63
|
+
readonly radius: number;
|
|
64
|
+
}
|
|
65
|
+
export interface ContactTelemetryFrame {
|
|
66
|
+
readonly frame: number;
|
|
67
|
+
readonly samples: readonly ContactDarkeningSample[];
|
|
68
|
+
/** Max |darkening| delta vs the previous frame (frame-stability proof). */
|
|
69
|
+
readonly maxFrameDelta: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Depth-aware contact radius: the contact hardens (shrinks) as the
|
|
73
|
+
* caster-to-receiver distance grows, so distant pairs fade instead of
|
|
74
|
+
* smearing.
|
|
75
|
+
*/
|
|
76
|
+
export declare function resolveDepthAwareContactRadius(baseRadius: number, casterDistance: number, falloffDistance: number): number;
|
|
77
|
+
/**
|
|
78
|
+
* Analytic contact darkening for one receiver against capsule/plane
|
|
79
|
+
* occluders. Deterministic in its inputs: identical frames produce
|
|
80
|
+
* identical telemetry (frame-stable by construction).
|
|
81
|
+
*/
|
|
82
|
+
export declare function resolveContactDarkening(receiver: ContactReceiverSample, occluders: readonly ContactOccluder[], options?: {
|
|
83
|
+
readonly baseRadius?: number;
|
|
84
|
+
readonly falloffDistance?: number;
|
|
85
|
+
readonly opacity?: number;
|
|
86
|
+
}): ContactDarkeningSample;
|
|
87
|
+
/** Frame telemetry with max per-object delta vs the previous frame. */
|
|
88
|
+
export declare function createContactTelemetryFrame(frame: number, samples: readonly ContactDarkeningSample[], previous: ContactTelemetryFrame | null): ContactTelemetryFrame;
|
|
37
89
|
//# sourceMappingURL=ContactShadows.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContactShadows.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/shadows/ContactShadows.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sCAAuC,SAAQ,kCAAkC;IAChG,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,SAAS,gCAAgC,EAAE,CAAC;IAC7D,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C,QAAQ,CAAC,2BAA2B,EAAE,SAAS,MAAM,EAAE,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,kCAAkC,GAAG,2BAA2B,CAc1H;AAED,wBAAgB,qCAAqC,CAAC,OAAO,EAAE,sCAAsC,GAAG,+BAA+B,CA+BtI"}
|
|
1
|
+
{"version":3,"file":"ContactShadows.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/shadows/ContactShadows.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,4 +65,126 @@ function finite(value, label) {
|
|
|
65
65
|
function clamp(value, min, max) {
|
|
66
66
|
return Math.min(max, Math.max(min, value));
|
|
67
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Depth-aware contact radius: the contact hardens (shrinks) as the
|
|
70
|
+
* caster-to-receiver distance grows, so distant pairs fade instead of
|
|
71
|
+
* smearing.
|
|
72
|
+
*/
|
|
73
|
+
export function resolveDepthAwareContactRadius(baseRadius, casterDistance, falloffDistance) {
|
|
74
|
+
if (!Number.isFinite(baseRadius) || baseRadius <= 0)
|
|
75
|
+
throw new RangeError("Contact baseRadius must be finite and positive.");
|
|
76
|
+
if (!Number.isFinite(casterDistance) || casterDistance < 0)
|
|
77
|
+
throw new RangeError("Contact casterDistance must be finite and non-negative.");
|
|
78
|
+
if (!Number.isFinite(falloffDistance) || falloffDistance <= 0)
|
|
79
|
+
throw new RangeError("Contact falloffDistance must be finite and positive.");
|
|
80
|
+
const t = clamp(casterDistance / falloffDistance, 0, 1);
|
|
81
|
+
return Number((baseRadius * (1 - 0.65 * t)).toFixed(4));
|
|
82
|
+
}
|
|
83
|
+
function distancePointToSegment(point, a, b) {
|
|
84
|
+
const ab = [b[0] - a[0], b[1] - a[1], b[2] - a[2]];
|
|
85
|
+
const lengthSquared = ab[0] * ab[0] + ab[1] * ab[1] + ab[2] * ab[2];
|
|
86
|
+
if (lengthSquared <= 1e-12) {
|
|
87
|
+
return Math.hypot(point[0] - a[0], point[1] - a[1], point[2] - a[2]);
|
|
88
|
+
}
|
|
89
|
+
const t = clamp(((point[0] - a[0]) * ab[0] + (point[1] - a[1]) * ab[1] + (point[2] - a[2]) * ab[2]) / lengthSquared, 0, 1);
|
|
90
|
+
return Math.hypot(point[0] - (a[0] + ab[0] * t), point[1] - (a[1] + ab[1] * t), point[2] - (a[2] + ab[2] * t));
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Analytic contact darkening for one receiver against capsule/plane
|
|
94
|
+
* occluders. Deterministic in its inputs: identical frames produce
|
|
95
|
+
* identical telemetry (frame-stable by construction).
|
|
96
|
+
*/
|
|
97
|
+
export function resolveContactDarkening(receiver, occluders, options = {}) {
|
|
98
|
+
if (!receiver.objectId.trim())
|
|
99
|
+
throw new Error("Contact receiver objectId is required.");
|
|
100
|
+
const baseRadius = options.baseRadius ?? 0.5;
|
|
101
|
+
const falloffDistance = options.falloffDistance ?? 2;
|
|
102
|
+
const opacity = clamp(options.opacity ?? 0.55, 0, 1);
|
|
103
|
+
let occlusion = 0;
|
|
104
|
+
let bentX = 0;
|
|
105
|
+
let bentY = 0;
|
|
106
|
+
let bentZ = 0;
|
|
107
|
+
let nearestDistance = Number.POSITIVE_INFINITY;
|
|
108
|
+
for (const occluder of occluders) {
|
|
109
|
+
if (occluder.kind === "capsule") {
|
|
110
|
+
if (!occluder.segmentA || !occluder.segmentB)
|
|
111
|
+
throw new Error(`Contact capsule occluder ${occluder.id} requires segmentA/segmentB.`);
|
|
112
|
+
const radius = occluder.radius ?? 0.25;
|
|
113
|
+
if (!Number.isFinite(radius) || radius <= 0)
|
|
114
|
+
throw new RangeError(`Contact capsule occluder ${occluder.id} radius must be positive.`);
|
|
115
|
+
const distance = distancePointToSegment(receiver.receiverPosition, occluder.segmentA, occluder.segmentB);
|
|
116
|
+
nearestDistance = Math.min(nearestDistance, distance);
|
|
117
|
+
const hardened = resolveDepthAwareContactRadius(baseRadius, distance, falloffDistance);
|
|
118
|
+
const local = clamp(1 - Math.max(0, distance - radius) / Math.max(hardened, 1e-6), 0, 1);
|
|
119
|
+
occlusion = Math.max(occlusion, local);
|
|
120
|
+
const away = distance <= 1e-9
|
|
121
|
+
? [0, 1, 0]
|
|
122
|
+
: [
|
|
123
|
+
(receiver.receiverPosition[0] - occluder.segmentA[0]) / distance,
|
|
124
|
+
(receiver.receiverPosition[1] - occluder.segmentA[1]) / distance,
|
|
125
|
+
(receiver.receiverPosition[2] - occluder.segmentA[2]) / distance,
|
|
126
|
+
];
|
|
127
|
+
bentX += away[0] * local;
|
|
128
|
+
bentY += away[1] * local;
|
|
129
|
+
bentZ += away[2] * local;
|
|
130
|
+
}
|
|
131
|
+
else if (occluder.kind === "plane") {
|
|
132
|
+
if (!occluder.planeNormal)
|
|
133
|
+
throw new Error(`Contact plane occluder ${occluder.id} requires planeNormal.`);
|
|
134
|
+
const normalLength = Math.hypot(occluder.planeNormal[0], occluder.planeNormal[1], occluder.planeNormal[2]);
|
|
135
|
+
if (!Number.isFinite(normalLength) || normalLength <= 0)
|
|
136
|
+
throw new RangeError(`Contact plane occluder ${occluder.id} normal must be non-zero.`);
|
|
137
|
+
const normal = [
|
|
138
|
+
occluder.planeNormal[0] / normalLength,
|
|
139
|
+
occluder.planeNormal[1] / normalLength,
|
|
140
|
+
occluder.planeNormal[2] / normalLength,
|
|
141
|
+
];
|
|
142
|
+
const offset = occluder.planeOffset ?? 0;
|
|
143
|
+
const distance = Math.abs(receiver.receiverPosition[0] * normal[0] + receiver.receiverPosition[1] * normal[1] + receiver.receiverPosition[2] * normal[2] - offset);
|
|
144
|
+
nearestDistance = Math.min(nearestDistance, distance);
|
|
145
|
+
const hardened = resolveDepthAwareContactRadius(baseRadius, distance, falloffDistance);
|
|
146
|
+
const local = clamp(1 - distance / Math.max(hardened, 1e-6), 0, 1);
|
|
147
|
+
occlusion = Math.max(occlusion, local);
|
|
148
|
+
bentX += normal[0] * local;
|
|
149
|
+
bentY += normal[1] * local;
|
|
150
|
+
bentZ += normal[2] * local;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
throw new Error(`Unsupported contact occluder kind: ${String(occluder.kind)}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const normal = receiver.receiverNormal;
|
|
157
|
+
const bentLength = Math.hypot(normal[0] + bentX * 0.5, normal[1] + bentY * 0.5, normal[2] + bentZ * 0.5);
|
|
158
|
+
const bentNormal = bentLength <= 1e-9
|
|
159
|
+
? [normal[0], normal[1], normal[2]]
|
|
160
|
+
: [
|
|
161
|
+
Number(((normal[0] + bentX * 0.5) / bentLength).toFixed(6)),
|
|
162
|
+
Number(((normal[1] + bentY * 0.5) / bentLength).toFixed(6)),
|
|
163
|
+
Number(((normal[2] + bentZ * 0.5) / bentLength).toFixed(6)),
|
|
164
|
+
];
|
|
165
|
+
const radius = occluders.length === 0 || !Number.isFinite(nearestDistance)
|
|
166
|
+
? baseRadius
|
|
167
|
+
: resolveDepthAwareContactRadius(baseRadius, nearestDistance, falloffDistance);
|
|
168
|
+
return {
|
|
169
|
+
objectId: receiver.objectId,
|
|
170
|
+
contactDarkening: Number((clamp(occlusion, 0, 1) * opacity).toFixed(4)),
|
|
171
|
+
bentNormal,
|
|
172
|
+
radius,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
/** Frame telemetry with max per-object delta vs the previous frame. */
|
|
176
|
+
export function createContactTelemetryFrame(frame, samples, previous) {
|
|
177
|
+
if (!Number.isInteger(frame) || frame < 0)
|
|
178
|
+
throw new RangeError("Contact telemetry frame must be a non-negative integer.");
|
|
179
|
+
let maxFrameDelta = 0;
|
|
180
|
+
if (previous) {
|
|
181
|
+
const prior = new Map(previous.samples.map((sample) => [sample.objectId, sample.contactDarkening]));
|
|
182
|
+
for (const sample of samples) {
|
|
183
|
+
const before = prior.get(sample.objectId);
|
|
184
|
+
if (before !== undefined)
|
|
185
|
+
maxFrameDelta = Math.max(maxFrameDelta, Math.abs(sample.contactDarkening - before));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return { frame, samples, maxFrameDelta: Number(maxFrameDelta.toFixed(6)) };
|
|
189
|
+
}
|
|
68
190
|
//# sourceMappingURL=ContactShadows.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContactShadows.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/shadows/ContactShadows.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ContactShadows.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/shadows/ContactShadows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { TextureBinding } from "../TextureBinding.js";
|
|
2
|
+
import { type ShadowFilterKernel } from "../ShadowMap.js";
|
|
3
|
+
/**
|
|
4
|
+
* B1 spot shadow path (muse3jsparity-PRD).
|
|
5
|
+
*
|
|
6
|
+
* Perspective spot shadows were the missing member of the shadow family:
|
|
7
|
+
* directional CSM + point-cube uniforms already exist in ForwardPass, but
|
|
8
|
+
* zero `spot` matches existed there. This module owns the spot side:
|
|
9
|
+
* options, perspective projection math, projective-UV evaluation, a CPU
|
|
10
|
+
* PCF reference mirror (fixed inputs -> expected factor, so refactors
|
|
11
|
+
* cannot silently regress the math), and atlas sizing tiers.
|
|
12
|
+
*
|
|
13
|
+
* The GLSL sampling reuses the shared PCF/Poisson kernel tables from
|
|
14
|
+
* ShadowMap.ts (same policy as the point cube path); slope-scaled bias
|
|
15
|
+
* reuses `computeShadowDepthBias`.
|
|
16
|
+
*/
|
|
17
|
+
export interface ForwardSpotShadowMapOptions {
|
|
18
|
+
readonly texture: TextureBinding;
|
|
19
|
+
/** World-space position of the spot light. */
|
|
20
|
+
readonly lightPosition: readonly [number, number, number];
|
|
21
|
+
/** Normalized world-space direction of the spot cone axis. */
|
|
22
|
+
readonly lightDirection: readonly [number, number, number];
|
|
23
|
+
/** Outer cone half-angle in radians, within (0, PI/2). */
|
|
24
|
+
readonly angle: number;
|
|
25
|
+
/** Penumbra blend in [0, 1] (matches CollectedLight.penumbra). */
|
|
26
|
+
readonly penumbra: number;
|
|
27
|
+
/** Shadow camera far plane (range). Must be positive. */
|
|
28
|
+
readonly range: number;
|
|
29
|
+
/** Perspective spot shadow matrix (projection * view), 16 numbers. */
|
|
30
|
+
readonly shadowMatrix: Float32Array | readonly number[];
|
|
31
|
+
readonly strength?: number;
|
|
32
|
+
readonly bias?: number;
|
|
33
|
+
readonly slopeBias?: number;
|
|
34
|
+
readonly texelSize?: readonly [number, number];
|
|
35
|
+
readonly filterKernel?: ShadowFilterKernel;
|
|
36
|
+
}
|
|
37
|
+
export interface SpotShadowProjection {
|
|
38
|
+
/** Vertical field of view in radians (2 * angle). */
|
|
39
|
+
readonly fovY: number;
|
|
40
|
+
readonly near: number;
|
|
41
|
+
readonly far: number;
|
|
42
|
+
/** Column-major perspective matrix entries (16 numbers). */
|
|
43
|
+
readonly projectionMatrix: readonly number[];
|
|
44
|
+
}
|
|
45
|
+
export interface SpotShadowAtlasTier {
|
|
46
|
+
readonly resolution: number;
|
|
47
|
+
readonly reason: string;
|
|
48
|
+
}
|
|
49
|
+
export declare function createSpotShadowProjection(angle: number, range: number, near?: number): SpotShadowProjection;
|
|
50
|
+
/**
|
|
51
|
+
* Projective UV + linear depth of a world position in spot shadow space.
|
|
52
|
+
* Returns null when the position is behind the light or outside the cone.
|
|
53
|
+
*/
|
|
54
|
+
export declare function projectSpotShadowUv(worldPosition: readonly [number, number, number], lightPosition: readonly [number, number, number], lightDirection: readonly [number, number, number], angle: number, shadowMatrix: Float32Array | readonly number[]): {
|
|
55
|
+
readonly u: number;
|
|
56
|
+
readonly v: number;
|
|
57
|
+
readonly depth: number;
|
|
58
|
+
} | null;
|
|
59
|
+
export interface SpotShadowFactorInput {
|
|
60
|
+
/** Sampled occluder depths, one per PCF tap, in [0, 1]. */
|
|
61
|
+
readonly tapDepths: readonly number[];
|
|
62
|
+
readonly receiverDepth: number;
|
|
63
|
+
readonly normalDotLight: number;
|
|
64
|
+
readonly baseBias?: number;
|
|
65
|
+
readonly slopeScale?: number;
|
|
66
|
+
readonly texelSize?: number;
|
|
67
|
+
readonly strength?: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* CPU mirror of the spot PCF compare: hardens the point-cube path's shared
|
|
71
|
+
* bias tables (computeShadowDepthBias) and averages lit taps.
|
|
72
|
+
*/
|
|
73
|
+
export declare function resolveSpotShadowFactor(input: SpotShadowFactorInput): number;
|
|
74
|
+
/** Atlas resolution tier for a spot light: wider cones cost more texels. */
|
|
75
|
+
export declare function selectSpotShadowAtlasTier(angle: number): SpotShadowAtlasTier;
|
|
76
|
+
export declare function defaultSpotShadowKernel(): ShadowFilterKernel;
|
|
77
|
+
//# sourceMappingURL=SpotShadowMaps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpotShadowMaps.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/shadows/SpotShadowMaps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { computeShadowDepthBias, createShadowFilterKernel, } from "../ShadowMap.js";
|
|
2
|
+
const DEFAULT_SPOT_SHADOW_KERNEL = createShadowFilterKernel({ filter: "pcf", pcfRadius: 1, pcfSamples: 9 });
|
|
3
|
+
export function createSpotShadowProjection(angle, range, near = 0.1) {
|
|
4
|
+
if (!Number.isFinite(angle) || angle <= 0 || angle >= Math.PI / 2) {
|
|
5
|
+
throw new RangeError("Spot shadow angle must be within (0, PI / 2).");
|
|
6
|
+
}
|
|
7
|
+
if (!Number.isFinite(range) || range <= 0) {
|
|
8
|
+
throw new RangeError("Spot shadow range must be finite and positive.");
|
|
9
|
+
}
|
|
10
|
+
if (!Number.isFinite(near) || near <= 0 || near >= range) {
|
|
11
|
+
throw new RangeError("Spot shadow near plane must be finite, positive, and below range.");
|
|
12
|
+
}
|
|
13
|
+
const fovY = angle * 2;
|
|
14
|
+
const f = 1 / Math.tan(fovY / 2);
|
|
15
|
+
const projectionMatrix = [
|
|
16
|
+
f, 0, 0, 0,
|
|
17
|
+
0, f, 0, 0,
|
|
18
|
+
0, 0, (range + near) / (near - range), -1,
|
|
19
|
+
0, 0, (2 * range * near) / (near - range), 0,
|
|
20
|
+
];
|
|
21
|
+
return { fovY, near, far: range, projectionMatrix };
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Projective UV + linear depth of a world position in spot shadow space.
|
|
25
|
+
* Returns null when the position is behind the light or outside the cone.
|
|
26
|
+
*/
|
|
27
|
+
export function projectSpotShadowUv(worldPosition, lightPosition, lightDirection, angle, shadowMatrix) {
|
|
28
|
+
if (shadowMatrix.length < 16)
|
|
29
|
+
throw new RangeError("Spot shadow matrix must hold 16 numbers.");
|
|
30
|
+
const dirLength = Math.hypot(lightDirection[0], lightDirection[1], lightDirection[2]);
|
|
31
|
+
if (!Number.isFinite(dirLength) || dirLength <= 0)
|
|
32
|
+
throw new RangeError("Spot light direction must be a non-zero finite vector.");
|
|
33
|
+
const axis = [
|
|
34
|
+
lightDirection[0] / dirLength,
|
|
35
|
+
lightDirection[1] / dirLength,
|
|
36
|
+
lightDirection[2] / dirLength,
|
|
37
|
+
];
|
|
38
|
+
const toFragment = [
|
|
39
|
+
worldPosition[0] - lightPosition[0],
|
|
40
|
+
worldPosition[1] - lightPosition[1],
|
|
41
|
+
worldPosition[2] - lightPosition[2],
|
|
42
|
+
];
|
|
43
|
+
const alongAxis = toFragment[0] * axis[0] + toFragment[1] * axis[1] + toFragment[2] * axis[2];
|
|
44
|
+
if (!Number.isFinite(alongAxis) || alongAxis <= 0)
|
|
45
|
+
return null;
|
|
46
|
+
const cosOuter = Math.cos(angle);
|
|
47
|
+
const distance = Math.hypot(toFragment[0], toFragment[1], toFragment[2]);
|
|
48
|
+
if (alongAxis / Math.max(distance, 1e-9) < cosOuter)
|
|
49
|
+
return null;
|
|
50
|
+
const m = shadowMatrix;
|
|
51
|
+
const x = worldPosition[0];
|
|
52
|
+
const y = worldPosition[1];
|
|
53
|
+
const z = worldPosition[2];
|
|
54
|
+
const w = m[3] * x + m[7] * y + m[11] * z + m[15];
|
|
55
|
+
if (!Number.isFinite(w) || Math.abs(w) <= 1e-9)
|
|
56
|
+
return null;
|
|
57
|
+
const clipX = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;
|
|
58
|
+
const clipY = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;
|
|
59
|
+
const clipZ = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;
|
|
60
|
+
if (clipX < -1 || clipX > 1 || clipY < -1 || clipY > 1)
|
|
61
|
+
return null;
|
|
62
|
+
return { u: clipX * 0.5 + 0.5, v: clipY * 0.5 + 0.5, depth: clipZ * 0.5 + 0.5 };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* CPU mirror of the spot PCF compare: hardens the point-cube path's shared
|
|
66
|
+
* bias tables (computeShadowDepthBias) and averages lit taps.
|
|
67
|
+
*/
|
|
68
|
+
export function resolveSpotShadowFactor(input) {
|
|
69
|
+
if (input.tapDepths.length === 0)
|
|
70
|
+
throw new RangeError("Spot shadow PCF requires at least one tap.");
|
|
71
|
+
const strength = input.strength ?? 1;
|
|
72
|
+
if (!Number.isFinite(strength) || strength < 0 || strength > 1) {
|
|
73
|
+
throw new RangeError("Spot shadow strength must be in [0, 1].");
|
|
74
|
+
}
|
|
75
|
+
const bias = computeShadowDepthBias({
|
|
76
|
+
baseBias: input.baseBias ?? 0.001,
|
|
77
|
+
slopeScale: input.slopeScale ?? 1,
|
|
78
|
+
normalDotLight: input.normalDotLight,
|
|
79
|
+
texelSize: input.texelSize ?? 1,
|
|
80
|
+
});
|
|
81
|
+
let lit = 0;
|
|
82
|
+
for (const tap of input.tapDepths) {
|
|
83
|
+
if (!Number.isFinite(tap))
|
|
84
|
+
throw new RangeError("Spot shadow tap depths must be finite.");
|
|
85
|
+
if (input.receiverDepth - bias <= tap)
|
|
86
|
+
lit += 1;
|
|
87
|
+
}
|
|
88
|
+
const litFraction = lit / input.tapDepths.length;
|
|
89
|
+
return Number((1 - strength * (1 - litFraction)).toFixed(6));
|
|
90
|
+
}
|
|
91
|
+
/** Atlas resolution tier for a spot light: wider cones cost more texels. */
|
|
92
|
+
export function selectSpotShadowAtlasTier(angle) {
|
|
93
|
+
if (!Number.isFinite(angle) || angle <= 0 || angle >= Math.PI / 2) {
|
|
94
|
+
throw new RangeError("Spot shadow angle must be within (0, PI / 2).");
|
|
95
|
+
}
|
|
96
|
+
const degrees = (angle * 180) / Math.PI;
|
|
97
|
+
if (degrees <= 20)
|
|
98
|
+
return { resolution: 512, reason: "narrow cone (<=20deg half-angle) fits a 512 tile" };
|
|
99
|
+
if (degrees <= 40)
|
|
100
|
+
return { resolution: 1024, reason: "medium cone (<=40deg half-angle) needs a 1024 tile" };
|
|
101
|
+
return { resolution: 2048, reason: "wide cone (>40deg half-angle) needs a 2048 tile" };
|
|
102
|
+
}
|
|
103
|
+
export function defaultSpotShadowKernel() {
|
|
104
|
+
return DEFAULT_SPOT_SHADOW_KERNEL;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=SpotShadowMaps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpotShadowMaps.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/shadows/SpotShadowMaps.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GAEzB,MAAM,cAAc,CAAC;AAoDtB,MAAM,0BAA0B,GAAG,wBAAwB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AAE5G,MAAM,UAAU,0BAA0B,CAAC,KAAa,EAAE,KAAa,EAAE,IAAI,GAAG,GAAG;IACjF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,UAAU,CAAC,gDAAgD,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;QACzD,MAAM,IAAI,UAAU,CAAC,mEAAmE,CAAC,CAAC;IAC5F,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,gBAAgB,GAAG;QACvB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACV,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;KAC7C,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,aAAgD,EAChD,aAAgD,EAChD,cAAiD,EACjD,KAAa,EACb,YAA8C;IAE9C,IAAI,YAAY,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,CAAC;IAC/F,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAE,EAAE,cAAc,CAAC,CAAC,CAAE,EAAE,cAAc,CAAC,CAAC,CAAE,CAAC,CAAC;IACzF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,wDAAwD,CAAC,CAAC;IAClI,MAAM,IAAI,GAAsC;QAC9C,cAAc,CAAC,CAAC,CAAE,GAAG,SAAS;QAC9B,cAAc,CAAC,CAAC,CAAE,GAAG,SAAS;QAC9B,cAAc,CAAC,CAAC,CAAE,GAAG,SAAS;KAC/B,CAAC;IACF,MAAM,UAAU,GAAsC;QACpD,aAAa,CAAC,CAAC,CAAE,GAAG,aAAa,CAAC,CAAC,CAAE;QACrC,aAAa,CAAC,CAAC,CAAE,GAAG,aAAa,CAAC,CAAC,CAAE;QACrC,aAAa,CAAC,CAAC,CAAE,GAAG,aAAa,CAAC,CAAC,CAAE;KACtC,CAAC;IACF,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,CAAC,CAAE,GAAG,UAAU,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,CAAC,CAAE,GAAG,UAAU,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;IACpG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAE,EAAE,UAAU,CAAC,CAAC,CAAE,EAAE,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC;IAC5E,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjE,MAAM,CAAC,GAAG,YAAY,CAAC;IACvB,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC;IAC5B,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC;IAC5B,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC;IAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5D,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC,GAAG,CAAC,CAAC;IAChE,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpE,OAAO,EAAE,CAAC,EAAE,KAAK,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,KAAK,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;AAClF,CAAC;AAaD;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAA4B;IAClE,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4CAA4C,CAAC,CAAC;IACrG,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,UAAU,CAAC,yCAAyC,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,IAAI,GAAG,sBAAsB,CAAC;QAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;QACjC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,CAAC;QACjC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC;KAChC,CAAC,CAAC;IACH,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,wCAAwC,CAAC,CAAC;QAC1F,IAAI,KAAK,CAAC,aAAa,GAAG,IAAI,IAAI,GAAG;YAAE,GAAG,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,WAAW,GAAG,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;IACjD,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IACxC,IAAI,OAAO,IAAI,EAAE;QAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,kDAAkD,EAAE,CAAC;IAC1G,IAAI,OAAO,IAAI,EAAE;QAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,oDAAoD,EAAE,CAAC;IAC7G,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,iDAAiD,EAAE,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,0BAA0B,CAAC;AACpC,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { runWebGPURenderToTextureProof } from "../WebGPURenderToTextureProof.js";
|
|
2
2
|
export type { WebGPURenderToTextureProof, WebGPURenderToTextureProofOptions } from "../WebGPURenderToTextureProof.js";
|
|
3
|
+
export { defaultWebGPUBloomWeights, normalizeWebGPUColorGradeOptions, normalizeWebGPUBloomOptions, normalizeWebGPUBloomQuality, webgpuBloomCompositeFragment, webgpuBlurFragment, webgpuBrightExtractFragment, webgpuColorGradeFragment, webgpuFxaaFragment, webgpuSoftKneeWeight, WEBGPU_BLOOM_MAX_MIPS, WEBGPU_BLOOM_QUALITY_TABLE, WEBGPU_POST_VERTEX_WGSL } from "./WebGPUPostShaders.js";
|
|
4
|
+
export type { NormalizedWebGPUColorGrade, NormalizedWebGPUBloom, WebGPUBloomDiagnostics, WebGPUBloomOptions, WebGPUBloomQuality, WebGPUColorGradeOptions, WebGPUCompositeParams, WebGPUFxaaOptions } from "./WebGPUPostShaders.js";
|
|
3
5
|
//# sourceMappingURL=WebGPUPostProcess.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebGPUPostProcess.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/webgpu/WebGPUPostProcess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,YAAY,EAAE,0BAA0B,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"WebGPUPostProcess.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/webgpu/WebGPUPostProcess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,YAAY,EAAE,0BAA0B,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AACnH,OAAO,EACL,yBAAyB,EACzB,gCAAgC,EAChC,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,2BAA2B,EAC3B,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { runWebGPURenderToTextureProof } from "../WebGPURenderToTextureProof.js";
|
|
2
|
+
export { defaultWebGPUBloomWeights, normalizeWebGPUColorGradeOptions, normalizeWebGPUBloomOptions, normalizeWebGPUBloomQuality, webgpuBloomCompositeFragment, webgpuBlurFragment, webgpuBrightExtractFragment, webgpuColorGradeFragment, webgpuFxaaFragment, webgpuSoftKneeWeight, WEBGPU_BLOOM_MAX_MIPS, WEBGPU_BLOOM_QUALITY_TABLE, WEBGPU_POST_VERTEX_WGSL } from "./WebGPUPostShaders.js";
|
|
2
3
|
//# sourceMappingURL=WebGPUPostProcess.js.map
|