@woosh/meep-engine 3.46.0 → 3.49.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/build/bundle-worker-terrain.js +1 -1
- package/editor/actions/concrete/TransformModifyAction.d.ts.map +1 -1
- package/editor/actions/concrete/TransformModifyAction.js +10 -2
- package/editor/ecs/component/FieldDescriptor.js +15 -0
- package/editor/ecs/component/createObjectEditor.js +41 -12
- package/editor/ecs/component/editors/ecs/Transform64Editor.d.ts.map +1 -1
- package/editor/ecs/component/editors/ecs/Transform64Editor.js +77 -70
- package/editor/particles/effect/ParticleReferenceSimulation.d.ts +1 -2
- package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -1
- package/editor/particles/effect/ParticleReferenceSimulation.js +2 -4
- package/editor/tools/TransformToolV2.d.ts.map +1 -1
- package/editor/tools/TransformToolV2.js +4 -0
- package/editor/tools/v2/TransformControls.d.ts.map +1 -1
- package/editor/tools/v2/TransformControls.js +7 -0
- package/editor/view/ecs/EntityEditor.d.ts.map +1 -1
- package/editor/view/ecs/EntityEditor.js +4 -2
- package/editor/view/particles/effect/ParticleGraphEditorView.js +1 -1
- package/package.json +1 -1
- package/src/core/collection/array/array_insert_at.d.ts +16 -0
- package/src/core/collection/array/array_insert_at.d.ts.map +1 -0
- package/src/core/collection/array/array_insert_at.js +32 -0
- package/src/core/collection/array/array_remove_at.d.ts +15 -0
- package/src/core/collection/array/array_remove_at.d.ts.map +1 -0
- package/src/core/collection/array/array_remove_at.js +30 -0
- package/src/core/geom/3d/quaternion/quat3_look_rotation.d.ts +37 -0
- package/src/core/geom/3d/quaternion/quat3_look_rotation.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/quat3_look_rotation.js +172 -0
- package/src/core/geom/Quaternion.d.ts +1 -0
- package/src/core/geom/Quaternion.d.ts.map +1 -1
- package/src/core/geom/Quaternion.js +12 -48
- package/src/engine/Engine.d.ts.map +1 -1
- package/src/engine/Engine.js +9 -4
- package/src/engine/ecs/async/WORKER_SYSTEM_PLAN.md +27 -11
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +21 -0
- package/src/engine/ecs/transform/t64_look_rotation.d.ts +4 -4
- package/src/engine/ecs/transform/t64_look_rotation.d.ts.map +1 -1
- package/src/engine/ecs/transform/t64_look_rotation.js +7 -18
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js +30 -1
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts +2 -2
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts.map +1 -1
- package/src/engine/graphics/ecs/particles/ParticleEffect.js +7 -7
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts +8 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.js +11 -3
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.d.ts +26 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.d.ts.map +1 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationUpgrader_1_2.js +91 -0
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +6 -0
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +72 -29
- package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
- package/src/engine/graphics3/GraphicsEngine.js +8 -1
- package/src/engine/graphics3/ParticipatingMedia.d.ts +84 -1
- package/src/engine/graphics3/ParticipatingMedia.d.ts.map +1 -1
- package/src/engine/graphics3/ParticipatingMedia.js +139 -5
- package/src/engine/graphics3/ParticipatingMediaSerializationAdapter.d.ts +6 -2
- package/src/engine/graphics3/ParticipatingMediaSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics3/ParticipatingMediaSerializationAdapter.js +29 -4
- package/src/engine/graphics3/ParticipatingMediaSerializationUpgrader_0_1.d.ts +10 -0
- package/src/engine/graphics3/ParticipatingMediaSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/graphics3/ParticipatingMediaSerializationUpgrader_0_1.js +38 -0
- package/src/engine/graphics3/ParticipatingMediaSystem.d.ts.map +1 -1
- package/src/engine/graphics3/ParticipatingMediaSystem.js +46 -3
- package/src/engine/input/devices/KeyboardDevice.d.ts +1 -0
- package/src/engine/input/devices/KeyboardDevice.d.ts.map +1 -1
- package/src/engine/input/devices/KeyboardDevice.js +7 -6
- package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts.map +1 -1
- package/src/engine/navigation/ecs/path_following/PathFollowingSystem.js +15 -2
- package/src/engine/network/CONGESTION_CONTROL.md +9 -9
- package/src/engine/network/MESSAGE_TRANSPORT.md +364 -0
- package/src/engine/network/NetworkSession.d.ts +47 -16
- package/src/engine/network/NetworkSession.d.ts.map +1 -1
- package/src/engine/network/NetworkSession.js +556 -292
- package/src/engine/network/README.md +104 -28
- package/src/engine/network/SMOOTHNESS_DESIGN.md +13 -5
- package/src/engine/network/diagnostics/BandwidthMeter.d.ts +1 -1
- package/src/engine/network/diagnostics/BandwidthMeter.js +1 -1
- package/src/engine/network/orchestrator/HostJoin.d.ts +111 -0
- package/src/engine/network/orchestrator/HostJoin.d.ts.map +1 -0
- package/src/engine/network/orchestrator/HostJoin.js +271 -0
- package/src/engine/network/orchestrator/NetworkPeer.d.ts +151 -112
- package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.js +450 -499
- package/src/engine/network/orchestrator/PendingSlices.d.ts +30 -0
- package/src/engine/network/orchestrator/PendingSlices.d.ts.map +1 -0
- package/src/engine/network/orchestrator/PendingSlices.js +83 -0
- package/src/engine/network/orchestrator/ReliableFrames.d.ts +34 -0
- package/src/engine/network/orchestrator/ReliableFrames.d.ts.map +1 -0
- package/src/engine/network/orchestrator/ReliableFrames.js +96 -0
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts +77 -10
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.js +236 -61
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +59 -23
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +213 -198
- package/src/engine/network/replication/Replicator.d.ts +15 -4
- package/src/engine/network/replication/Replicator.d.ts.map +1 -1
- package/src/engine/network/replication/Replicator.js +57 -17
- package/src/engine/network/sim/ActionLog.d.ts +32 -5
- package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
- package/src/engine/network/sim/ActionLog.js +47 -5
- package/src/engine/network/sim/SimActionExecutor.d.ts +42 -2
- package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
- package/src/engine/network/sim/SimActionExecutor.js +100 -4
- package/src/engine/network/sim/Snapshotter.d.ts +12 -0
- package/src/engine/network/sim/Snapshotter.d.ts.map +1 -1
- package/src/engine/network/sim/Snapshotter.js +43 -0
- package/src/engine/network/state/Baseline.d.ts +1 -1
- package/src/engine/network/state/Baseline.js +1 -1
- package/src/engine/network/state/FrameBufferRing.d.ts +25 -6
- package/src/engine/network/state/FrameBufferRing.d.ts.map +1 -1
- package/src/engine/network/state/FrameBufferRing.js +51 -6
- package/src/engine/network/state/InputRing.d.ts +4 -0
- package/src/engine/network/state/InputRing.d.ts.map +1 -1
- package/src/engine/network/state/InputRing.js +7 -0
- package/src/engine/network/state/RecordArrivalRing.d.ts +57 -0
- package/src/engine/network/state/RecordArrivalRing.d.ts.map +1 -0
- package/src/engine/network/state/RecordArrivalRing.js +144 -0
- package/src/engine/network/transport/DeferredTransport.d.ts.map +1 -1
- package/src/engine/network/transport/DeferredTransport.js +1 -0
- package/src/engine/network/transport/LoopbackTransport.d.ts.map +1 -1
- package/src/engine/network/transport/LoopbackTransport.js +4 -2
- package/src/engine/network/transport/Transport.d.ts +7 -0
- package/src/engine/network/transport/Transport.d.ts.map +1 -1
- package/src/engine/network/transport/Transport.js +8 -0
- package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/NodeUDPTransport.js +20 -5
- package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.js +8 -0
- package/src/engine/network/transport/adapters/WebTransportTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebTransportTransport.js +6 -0
- package/src/engine/network/transport/connection/Connection.d.ts +191 -0
- package/src/engine/network/transport/connection/Connection.d.ts.map +1 -0
- package/src/engine/network/transport/connection/Connection.js +1262 -0
- package/src/engine/network/transport/connection/RangeSet.d.ts +94 -0
- package/src/engine/network/transport/connection/RangeSet.d.ts.map +1 -0
- package/src/engine/network/transport/connection/RangeSet.js +260 -0
- package/src/engine/network/transport/connection/RxStream.d.ts +48 -0
- package/src/engine/network/transport/connection/RxStream.d.ts.map +1 -0
- package/src/engine/network/transport/connection/RxStream.js +211 -0
- package/src/engine/network/transport/connection/TxStream.d.ts +90 -0
- package/src/engine/network/transport/connection/TxStream.d.ts.map +1 -0
- package/src/engine/network/transport/connection/TxStream.js +243 -0
- package/src/engine/network/transport/connection/bytes_copy.d.ts +17 -0
- package/src/engine/network/transport/connection/bytes_copy.d.ts.map +1 -0
- package/src/engine/network/transport/connection/bytes_copy.js +34 -0
- package/src/engine/network/transport/connection/varint.d.ts +46 -0
- package/src/engine/network/transport/connection/varint.d.ts.map +1 -0
- package/src/engine/network/transport/connection/varint.js +107 -0
- package/src/engine/physics/cloth/MEASUREMENTS.md +354 -0
- package/src/engine/physics/cloth/PLAN.md +85 -5
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +0 -12
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothInstance.js +0 -13
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +2 -1
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothSystem.js +7 -1
- package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothWorld.js +4 -15
- package/src/engine/physics/cloth/ecs/WorkerClothSystem.d.ts +2 -1
- package/src/engine/physics/cloth/ecs/WorkerClothSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/WorkerClothSystem.js +6 -1
- package/src/engine/physics/cloth/ecs/cloth_build_rows.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_build_rows.js +20 -10
- package/src/engine/physics/cloth/playground/collide.html +5 -3
- package/src/engine/physics/cloth/playground/collide_main.js +14 -13
- package/src/engine/physics/cloth/solver/ClothState.d.ts +30 -2
- package/src/engine/physics/cloth/solver/ClothState.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/ClothState.js +62 -4
- package/src/engine/physics/cloth/solver/cloth_self_find.d.ts +11 -3
- package/src/engine/physics/cloth/solver/cloth_self_find.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_self_find.js +52 -11
- package/src/engine/physics/cloth/solver/cloth_self_radius.d.ts +42 -0
- package/src/engine/physics/cloth/solver/cloth_self_radius.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/cloth_self_radius.js +64 -0
- package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts +99 -24
- package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_solver_constants.js +102 -25
- package/src/engine/physics/cloth/solver/cloth_step.d.ts +5 -1
- package/src/engine/physics/cloth/solver/cloth_step.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_step.js +13 -3
- package/src/engine/physics/cloth/solver/cloth_step_instance.d.ts +0 -1
- package/src/engine/physics/cloth/solver/cloth_step_instance.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_step_instance.js +12 -14
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts +23 -4
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +36 -8
- package/src/engine/physics/cloth/solver/constraint/cloth_self_row.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/constraint/cloth_self_row.js +4 -2
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +38 -7
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitter.js +35 -7
- package/src/engine/sound/ecs/audio/AudioEmitterSerializationAdapter.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSerializationAdapter.js +5 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSerializationUpgrader_0_1.d.ts +18 -0
- package/src/engine/sound/ecs/audio/AudioEmitterSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/sound/ecs/audio/AudioEmitterSerializationUpgrader_0_1.js +48 -0
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +12 -2
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +173 -9
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +9 -3
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/LiveEmitterSet.js +28 -8
- package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts +8 -0
- package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts.map +1 -1
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts.map +1 -1
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.js +5 -1
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationUpgrader_0_1.d.ts +18 -0
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationUpgrader_0_1.js +51 -0
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.js +15 -1
- package/src/engine/sound/sopra/README.md +768 -644
- package/src/engine/sound/sopra/SopraEngine.d.ts +104 -8
- package/src/engine/sound/sopra/SopraEngine.d.ts.map +1 -1
- package/src/engine/sound/sopra/SopraEngine.js +327 -12
- package/src/engine/sound/sopra/definition/EventDescription.d.ts +28 -2
- package/src/engine/sound/sopra/definition/EventDescription.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/EventDescription.js +55 -5
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts +10 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js +77 -55
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationUpgrader_0_1.d.ts +31 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationUpgrader_0_1.js +75 -0
- package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.d.ts +38 -9
- package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/AbstractAudioEffect.js +34 -5
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts +7 -2
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.js +137 -122
- package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts +3 -1
- package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/EqEffect.js +146 -131
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts +1 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +6 -1
- package/src/engine/sound/sopra/runtime/BusGraph.d.ts +44 -2
- package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -1
- package/src/engine/sound/sopra/runtime/BusGraph.js +83 -43
- package/src/engine/sound/sopra/runtime/EffectChain.d.ts +96 -0
- package/src/engine/sound/sopra/runtime/EffectChain.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/EffectChain.js +286 -0
- package/src/engine/sound/sopra/runtime/EffectParamOverrides.d.ts +123 -0
- package/src/engine/sound/sopra/runtime/EffectParamOverrides.d.ts.map +1 -0
- package/src/engine/sound/sopra/runtime/EffectParamOverrides.js +320 -0
- package/src/engine/sound/sopra/runtime/EventInstance.d.ts +55 -5
- package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -1
- package/src/engine/sound/sopra/runtime/EventInstance.js +201 -26
- package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.d.ts +2 -1
- package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.d.ts.map +1 -1
- package/src/engine/sound/sopra/serialization/populateSopraSerializationRegistry.js +6 -1
- package/src/engine/sound/sopra/serialization/sopraSerializationHarness.d.ts +15 -0
- package/src/engine/sound/sopra/serialization/sopraSerializationHarness.d.ts.map +1 -1
- package/src/engine/sound/sopra/serialization/sopraSerializationHarness.js +32 -0
- package/src/engine/sound/sopra/util/MockAudioContext.d.ts.map +1 -1
- package/src/engine/sound/sopra/util/MockAudioContext.js +3 -0
- package/src/engine/sound/sopra/util/fadeOutAndStop.d.ts +13 -3
- package/src/engine/sound/sopra/util/fadeOutAndStop.d.ts.map +1 -1
- package/src/engine/sound/sopra/util/fadeOutAndStop.js +25 -13
- package/src/shade/RENDERER_CONTRACT.md +6 -3
- package/src/shade/device/SHADE_DEVICE_FLOOR.d.ts +24 -0
- package/src/shade/device/SHADE_DEVICE_FLOOR.d.ts.map +1 -0
- package/src/shade/device/SHADE_DEVICE_FLOOR.js +34 -0
- package/src/shade/device/ShadeDeviceFailure.d.ts +12 -5
- package/src/shade/device/ShadeDeviceFailure.d.ts.map +1 -1
- package/src/shade/device/ShadeDeviceFailure.js +17 -8
- package/src/shade/device/ShadeDeviceFailureReason.d.ts +1 -1
- package/src/shade/device/ShadeDeviceFailureReason.js +2 -2
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts +15 -0
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUDevice.js +21 -0
- package/src/shade/device/pipeline/ComputePipelineManager.d.ts +20 -0
- package/src/shade/device/pipeline/ComputePipelineManager.d.ts.map +1 -1
- package/src/shade/device/pipeline/ComputePipelineManager.js +80 -6
- package/src/shade/device/pipeline/PipelineEnquiry.d.ts +52 -0
- package/src/shade/device/pipeline/PipelineEnquiry.d.ts.map +1 -0
- package/src/shade/device/pipeline/PipelineEnquiry.js +63 -0
- package/src/shade/device/pipeline/RenderPipelineManager.d.ts +21 -0
- package/src/shade/device/pipeline/RenderPipelineManager.d.ts.map +1 -1
- package/src/shade/device/pipeline/RenderPipelineManager.js +84 -4
- package/src/shade/device/shade_device_floor_unmet.d.ts +13 -0
- package/src/shade/device/shade_device_floor_unmet.d.ts.map +1 -0
- package/src/shade/device/shade_device_floor_unmet.js +32 -0
- package/src/shade/playground/contact_shadows/ContactShadowLab.d.ts +137 -0
- package/src/shade/playground/contact_shadows/ContactShadowLab.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/ContactShadowLab.js +654 -0
- package/src/shade/playground/contact_shadows/README.md +126 -0
- package/src/shade/playground/contact_shadows/index.html +191 -0
- package/src/shade/playground/contact_shadows/main.d.ts +2 -0
- package/src/shade/playground/contact_shadows/main.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/main.js +888 -0
- package/src/shade/playground/contact_shadows/scenes.d.ts +48 -0
- package/src/shade/playground/contact_shadows/scenes.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/scenes.js +620 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_composite.d.ts +36 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_composite.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_composite.js +245 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_reference.d.ts +15 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_reference.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_reference.js +120 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_stats.d.ts +55 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_stats.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_stats.js +216 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_view.d.ts +20 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_view.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/shader_contact_lab_view.js +114 -0
- package/src/shade/playground/contact_shadows/shader_contact_shadow_march.d.ts +11 -0
- package/src/shade/playground/contact_shadows/shader_contact_shadow_march.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/shader_contact_shadow_march.js +90 -0
- package/src/shade/playground/contact_shadows/textures.d.ts +16 -0
- package/src/shade/playground/contact_shadows/textures.d.ts.map +1 -0
- package/src/shade/playground/contact_shadows/textures.js +123 -0
- package/src/shade/playground/particle_ecs/README.md +1 -1
- package/src/shade/playground/particle_ecs/effects/flame.json +1932 -1881
- package/src/shade/playground/particle_ecs/effects/smoke.json +99 -1
- package/src/shade/playground/particle_ecs/effects/soot.json +152 -145
- package/src/shade/playground/tonemap_sdr/README.md +90 -0
- package/src/shade/playground/tonemap_sdr/ToneMapCompare.d.ts +105 -0
- package/src/shade/playground/tonemap_sdr/ToneMapCompare.d.ts.map +1 -0
- package/src/shade/playground/tonemap_sdr/ToneMapCompare.js +380 -0
- package/src/shade/playground/tonemap_sdr/chunk_tonemap_gt7_sdr_reference.d.ts +32 -0
- package/src/shade/playground/tonemap_sdr/chunk_tonemap_gt7_sdr_reference.d.ts.map +1 -0
- package/src/shade/playground/tonemap_sdr/chunk_tonemap_gt7_sdr_reference.js +104 -0
- package/src/shade/playground/tonemap_sdr/index.html +90 -0
- package/src/shade/playground/tonemap_sdr/main.d.ts +2 -0
- package/src/shade/playground/tonemap_sdr/main.d.ts.map +1 -0
- package/src/shade/playground/tonemap_sdr/main.js +306 -0
- package/src/shade/playground/tonemap_sdr/scenes.d.ts +26 -0
- package/src/shade/playground/tonemap_sdr/scenes.d.ts.map +1 -0
- package/src/shade/playground/tonemap_sdr/scenes.js +404 -0
- package/src/shade/playground/volumetrics_froxel/main.d.ts.map +1 -1
- package/src/shade/playground/volumetrics_froxel/main.js +85 -4
- package/src/shade/playground/water_refraction/README.md +26 -18
- package/src/shade/playground/water_refraction/index.html +1 -1
- package/src/shade/renderer/Renderer.d.ts +37 -3
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +237 -67
- package/src/shade/renderer/ShadeToneMappingMode.d.ts +14 -0
- package/src/shade/renderer/ShadeToneMappingMode.d.ts.map +1 -0
- package/src/shade/renderer/ShadeToneMappingMode.js +30 -0
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts +9 -0
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +14 -0
- package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js +5 -3
- package/src/shade/renderer/buffer/GPUBufferAllocator.d.ts.map +1 -1
- package/src/shade/renderer/buffer/GPUBufferAllocator.js +9 -0
- package/src/shade/renderer/buffer/buffer_pool_ops.d.ts +21 -12
- package/src/shade/renderer/buffer/buffer_pool_ops.d.ts.map +1 -1
- package/src/shade/renderer/buffer/buffer_pool_ops.js +18 -19
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts +7 -0
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUDatabase.js +12 -0
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts +8 -0
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +12 -0
- package/src/shade/renderer/camera/GPUCameraContext.d.ts.map +1 -1
- package/src/shade/renderer/camera/GPUCameraContext.js +19 -8
- package/src/shade/renderer/deferred/chunk_read_gBuffer_material.d.ts.map +1 -1
- package/src/shade/renderer/deferred/chunk_read_gBuffer_material.js +4 -0
- package/src/shade/renderer/deferred/chunk_shade_standard_material_direct.d.ts.map +1 -1
- package/src/shade/renderer/deferred/chunk_shade_standard_material_direct.js +4 -0
- package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_restir.d.ts.map +1 -1
- package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_restir.js +4 -0
- package/src/shade/renderer/deferred/shader_deferred_main.d.ts.map +1 -1
- package/src/shade/renderer/deferred/shader_deferred_main.js +3 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts +6 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts.map +1 -1
- package/src/shade/renderer/deferred/shader_tonemap_HDR.js +13 -3
- package/src/shade/renderer/deferred/shader_tonemap_HDR_none.d.ts +9 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR_none.d.ts.map +1 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR_none.js +63 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.d.ts +10 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.d.ts.map +1 -0
- package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.js +87 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR.d.ts +6 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR.d.ts.map +1 -1
- package/src/shade/renderer/deferred/shader_tonemap_LDR.js +23 -5
- package/src/shade/renderer/deferred/shader_tonemap_LDR_none.d.ts +9 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR_none.d.ts.map +1 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR_none.js +68 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.d.ts +10 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.d.ts.map +1 -0
- package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.js +73 -0
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +58 -9
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +35 -25
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +97 -196
- package/src/shade/renderer/geometry/sdf/shader_build_sdf.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/shader_build_sdf.js +121 -129
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +3 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +4 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.js +4 -0
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +3 -0
- package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.js +4 -0
- package/src/shade/renderer/global_illumination/probe/octahedral/graph_sample_light_probes.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/graph_sample_light_probes.js +4 -0
- package/src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.js +4 -0
- package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +131 -1
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts +7 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.js +45 -38
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts +2 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.js +81 -79
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts +2 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.js +5 -3
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_internal_children.d.ts +21 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_internal_children.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_internal_children.js +42 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_morton_code.d.ts +19 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_morton_code.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_morton_code.js +44 -0
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts +23 -5
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +139 -23
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.d.ts +25 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.js +179 -0
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts +2 -2
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +7 -16
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts +3 -4
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +6 -23
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.d.ts +11 -0
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.js +14 -3
- package/src/shade/renderer/gpu_primitive/indirect/build_indirect_draw_command.d.ts +10 -0
- package/src/shade/renderer/gpu_primitive/indirect/build_indirect_draw_command.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/indirect/build_indirect_draw_command.js +13 -3
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.d.ts +10 -0
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.js +14 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_comparator.d.ts +26 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_comparator.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_comparator.js +52 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_workgroup.d.ts +32 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_workgroup.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/sort/chunk_sort_bitonic_workgroup.js +89 -0
- package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts +10 -0
- package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +20 -1
- package/src/shade/renderer/gpu_primitive/test/gpu_test.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/test/gpu_test.js +8 -11
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +10 -0
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.js +294 -281
- package/src/shade/renderer/light/GPULightCollection.d.ts +8 -0
- package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/GPULightCollection.js +18 -1
- package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts +8 -0
- package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/cull/graph_cull_lights.js +234 -218
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts +7 -0
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.js +13 -0
- package/src/shade/renderer/light/cluster/graph_build_light_clusters.d.ts +7 -0
- package/src/shade/renderer/light/cluster/graph_build_light_clusters.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/graph_build_light_clusters.js +16 -2
- package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts +10 -0
- package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/execute_filter_environment_map.js +13 -0
- package/src/shade/renderer/lightmap/GPULightMap.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/GPULightMap.js +3 -0
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.js +4 -0
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.js +4 -0
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.d.ts +16 -4
- package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.js +38 -8
- package/src/shade/renderer/particles/DESIGN.md +49 -7
- package/src/shade/renderer/particles/ORIENTATION_PLAN_2026_10_15.md +453 -0
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts +5 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +13 -5
- package/src/shade/renderer/particles/data/particle_emitter_record.js +2 -2
- package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.js +12 -0
- package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts +60 -0
- package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.js +156 -0
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +2 -2
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.js +8 -8
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +6 -4
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts +7 -6
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +91 -58
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +10 -0
- package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +5 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +6 -0
- package/src/shade/renderer/pool/TransientResourcePool.d.ts +24 -0
- package/src/shade/renderer/pool/TransientResourcePool.d.ts.map +1 -1
- package/src/shade/renderer/pool/TransientResourcePool.js +41 -10
- package/src/shade/renderer/postprocess/bloom/graph_postprocess_bloom.d.ts +7 -0
- package/src/shade/renderer/postprocess/bloom/graph_postprocess_bloom.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/bloom/graph_postprocess_bloom.js +18 -0
- package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.js +1 -0
- package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.js +6 -4
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts +11 -0
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +16 -0
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +10 -0
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.js +16 -0
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +32 -10
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +3 -0
- package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.js +6 -3
- package/src/shade/renderer/postprocess/taa/TAA.d.ts +12 -0
- package/src/shade/renderer/postprocess/taa/TAA.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/TAA.js +15 -0
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts +7 -0
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js +13 -0
- package/src/shade/renderer/rasterize/TemplatePassDescriptor.d.ts +31 -3
- package/src/shade/renderer/rasterize/TemplatePassDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/TemplatePassDescriptor.js +79 -4
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts +17 -0
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.js +35 -4
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts +7 -0
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.js +182 -169
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.d.ts +10 -0
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.js +20 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts +10 -0
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.js +18 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.d.ts +10 -0
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.js +20 -1
- package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts +7 -0
- package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.js +187 -170
- package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.d.ts +10 -0
- package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.js +19 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts +13 -0
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.js +25 -1
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.d.ts +10 -0
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.js +20 -0
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.js +6 -0
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.js +6 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +3 -2
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +3 -2
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +7 -2
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +12 -4
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.js +4 -3
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.js +4 -3
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts +2 -1
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +11 -3
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.js +4 -3
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.js +4 -3
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts +15 -0
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +35 -2
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts +14 -0
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +32 -4
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts +17 -0
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +34 -4
- package/src/shade/renderer/restir/di/chunk_restir_resolve.d.ts +5 -3
- package/src/shade/renderer/restir/di/chunk_restir_resolve.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/chunk_restir_resolve.js +8 -3
- package/src/shade/renderer/restir/di/graph_restir_di.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/graph_restir_di.js +1 -0
- package/src/shade/renderer/restir/di/shader_restir_di_resolve.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_resolve.js +5 -1
- package/src/shade/renderer/restir/reservoir/shader.d.ts.map +1 -1
- package/src/shade/renderer/restir/reservoir/shader.js +7 -4
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +7 -0
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +13 -1
- package/src/shade/renderer/scene/GPUSceneContext.d.ts +10 -0
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +19 -0
- package/src/shade/renderer/scene/SceneManager.d.ts +9 -0
- package/src/shade/renderer/scene/SceneManager.d.ts.map +1 -1
- package/src/shade/renderer/scene/SceneManager.js +11 -0
- package/src/shade/renderer/scene/hierarchy/graph_nodes_update_transform_hierarchy.d.ts +11 -0
- package/src/shade/renderer/scene/hierarchy/graph_nodes_update_transform_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/graph_nodes_update_transform_hierarchy.js +17 -0
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts +11 -0
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.js +18 -1
- package/src/shade/renderer/shader/ComputeShader.d.ts +12 -0
- package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ComputeShader.js +71 -2
- package/src/shade/renderer/shader/ImageShader.d.ts +27 -8
- package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ImageShader.js +299 -218
- package/src/shade/renderer/shader/ShaderDescriptor.d.ts +21 -0
- package/src/shade/renderer/shader/ShaderDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/ShaderDescriptor.js +71 -1
- package/src/shade/renderer/shader/chunk/camera/chunk_project_view_position_from_depth.d.ts +17 -0
- package/src/shade/renderer/shader/chunk/camera/chunk_project_view_position_from_depth.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/camera/chunk_project_view_position_from_depth.js +45 -0
- package/src/shade/renderer/shader/chunk/camera/chunk_screen_coordinate_to_view.js +3 -3
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.d.ts +1 -1
- package/src/shade/renderer/shader/chunk/color/iCtCp/chunk_eotf_st2084.js +62 -62
- package/src/shade/renderer/shader/chunk/color/tonemap/HDR_TONE_MAPPING_FORMS_BRIEF_2026_10_16.md +318 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/SDR_TONE_MAPPING_BRIEF_2026_10_16.md +237 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.d.ts +17 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.js +22 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_khronos_pbr.d.ts +14 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_khronos_pbr.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_khronos_pbr.js +28 -15
- package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts +12 -0
- package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.js +128 -110
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_offset_ray_from_depth.d.ts +20 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_offset_ray_from_depth.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_offset_ray_from_depth.js +33 -0
- package/src/shade/renderer/shader/chunk/light/chunk_compute_multiscattering_specular.d.ts +4 -0
- package/src/shade/renderer/shader/chunk/light/chunk_compute_multiscattering_specular.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/chunk_compute_multiscattering_specular.js +12 -1
- package/src/shade/renderer/shader/chunk/material/MATERIAL_SHADING_INFO_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/material/MATERIAL_SHADING_INFO_STRUCT.js +7 -0
- package/src/shade/renderer/shader/chunk/material/MULTISCATTER.md +108 -0
- package/src/shade/renderer/shader/chunk/material/chunk_compute_indirect_specular.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/material/chunk_compute_indirect_specular.js +23 -4
- package/src/shade/renderer/shader/chunk/material/chunk_re_direct_multiscatter.d.ts +18 -0
- package/src/shade/renderer/shader/chunk/material/chunk_re_direct_multiscatter.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/chunk_re_direct_multiscatter.js +56 -0
- package/src/shade/renderer/shader/chunk/material/chunk_re_indirect_specular_physical.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/material/chunk_re_indirect_specular_physical.js +2 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_linear_ray.d.ts +43 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_linear_ray.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_linear_ray.js +319 -0
- package/src/shade/renderer/shader/compiler/CodeChunk.d.ts +33 -0
- package/src/shade/renderer/shader/compiler/CodeChunk.d.ts.map +1 -1
- package/src/shade/renderer/shader/compiler/CodeChunk.js +140 -0
- package/src/shade/renderer/shader/compiler/CodeChunkChoice.d.ts +74 -0
- package/src/shade/renderer/shader/compiler/CodeChunkChoice.d.ts.map +1 -0
- package/src/shade/renderer/shader/compiler/CodeChunkChoice.js +166 -0
- package/src/shade/renderer/shader/compiler/SHADER_SWITCH_PROPOSAL_2026_10_16.md +680 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitch.d.ts +86 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitch.d.ts.map +1 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitch.js +178 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitchSet.d.ts +67 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitchSet.d.ts.map +1 -0
- package/src/shade/renderer/shader/compiler/ShaderSwitchSet.js +205 -0
- package/src/shade/renderer/shadow/contact/CONTACT_SHADOW_WAVE_SIZE.d.ts +14 -0
- package/src/shade/renderer/shadow/contact/CONTACT_SHADOW_WAVE_SIZE.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/CONTACT_SHADOW_WAVE_SIZE.js +13 -0
- package/src/shade/renderer/shadow/contact/ContactShadowDispatchList.d.ts +65 -0
- package/src/shade/renderer/shadow/contact/ContactShadowDispatchList.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/ContactShadowDispatchList.js +252 -0
- package/src/shade/renderer/shadow/contact/FINDINGS.md +413 -0
- package/src/shade/renderer/shadow/contact/chunk_contact_shadow_wavefront_extents.d.ts +29 -0
- package/src/shade/renderer/shadow/contact/chunk_contact_shadow_wavefront_extents.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/chunk_contact_shadow_wavefront_extents.js +105 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts +29 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.js +39 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_wavefront.d.ts +29 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_wavefront.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_wavefront.js +92 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.d.ts +29 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.js +128 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_wavefront.d.ts +52 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_wavefront.d.ts.map +1 -0
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_wavefront.js +358 -0
- package/src/shade/renderer/shadow/map/ShadowDirectionalTechnique.d.ts +10 -0
- package/src/shade/renderer/shadow/map/ShadowDirectionalTechnique.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/ShadowDirectionalTechnique.js +12 -0
- package/src/shade/renderer/shadow/map/shader/SHADOW_DIRECTIONAL_TECHNIQUE.d.ts +13 -0
- package/src/shade/renderer/shadow/map/shader/SHADOW_DIRECTIONAL_TECHNIQUE.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/shader/SHADOW_DIRECTIONAL_TECHNIQUE.js +14 -0
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts +14 -8
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.js +20 -86
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional_cascades.d.ts +14 -0
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional_cascades.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional_cascades.js +79 -0
- package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.js +12 -12
- package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js +153 -151
- package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_directional_virtual.d.ts +13 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_directional_virtual.d.ts.map +1 -0
- package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_directional_virtual.js +48 -0
- package/src/shade/renderer/texture/GPUTextureContext.d.ts +10 -0
- package/src/shade/renderer/texture/GPUTextureContext.d.ts.map +1 -1
- package/src/shade/renderer/texture/GPUTextureContext.js +24 -0
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts +219 -0
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts.map +1 -0
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.js +671 -0
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts +26 -2
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +108 -4
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +5 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +6 -0
- package/src/shade/renderer/volumetrics/NOTES.md +50 -0
- package/src/shade/renderer/volumetrics/PARTICIPATING_MEDIA_VOLUME_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/PARTICIPATING_MEDIA_VOLUME_STRUCT.js +30 -1
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +51 -13
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.js +98 -13
- package/src/shade/renderer/volumetrics/SceneVolumetrics.d.ts +9 -0
- package/src/shade/renderer/volumetrics/SceneVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/SceneVolumetrics.js +78 -68
- package/src/shade/renderer/volumetrics/VOLUMETRIC_NOISE_PLAN_2026_10_15.md +326 -0
- package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts +7 -4
- package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.js +21 -9
- package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_uvw_from_clip.d.ts +19 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_uvw_from_clip.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_uvw_from_clip.js +53 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sample_froxel_extinction.d.ts +12 -3
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sample_froxel_extinction.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sample_froxel_extinction.js +85 -48
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts +4 -1
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.js +4 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +4 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +21 -1
- package/src/shade/renderer/volumetrics/noise/PARTICIPATING_MEDIA_NOISE.d.ts +98 -0
- package/src/shade/renderer/volumetrics/noise/PARTICIPATING_MEDIA_NOISE.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/noise/PARTICIPATING_MEDIA_NOISE.js +115 -0
- package/src/shade/renderer/volumetrics/noise/VOLUMETRICS_NOISE_TILE_BAKE_SETTINGS_STRUCT.d.ts +9 -0
- package/src/shade/renderer/volumetrics/noise/VOLUMETRICS_NOISE_TILE_BAKE_SETTINGS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/noise/VOLUMETRICS_NOISE_TILE_BAKE_SETTINGS_STRUCT.js +24 -0
- package/src/shade/renderer/volumetrics/noise/bake_volumetrics_noise_tile.d.ts +27 -0
- package/src/shade/renderer/volumetrics/noise/bake_volumetrics_noise_tile.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/noise/bake_volumetrics_noise_tile.js +91 -0
- package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise.d.ts +35 -0
- package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise.js +92 -0
- package/src/shade/renderer/volumetrics/noise/shader_volumetrics_noise_tile_bake.d.ts +10 -0
- package/src/shade/renderer/volumetrics/noise/shader_volumetrics_noise_tile_bake.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/noise/shader_volumetrics_noise_tile_bake.js +121 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +38 -3
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.js +311 -290
- package/src/shade/renderer/volumetrics/volumetrics_position_world_to_froxel_uvw.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/volumetrics_position_world_to_froxel_uvw.js +28 -49
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +3 -1
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +24 -18
- package/src/shade/renderer/water/chunk_water_transport.d.ts +0 -1
- package/src/shade/renderer/water/chunk_water_transport.d.ts.map +1 -1
- package/src/shade/renderer/water/chunk_water_transport.js +0 -17
- package/src/shade/renderer/water/shader_water.d.ts +4 -2
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +27 -16
- package/src/shade/renderer/water/shader_water_avboit.d.ts +0 -4
- package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water_avboit.js +0 -63
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +43 -9
- package/src/view/graphics/GraphicsContextFailureView.d.ts +1 -2
- package/src/view/graphics/GraphicsContextFailureView.d.ts.map +1 -1
- package/src/view/graphics/GraphicsContextFailureView.js +1 -2
- package/src/engine/network/transport/Channel.d.ts +0 -85
- package/src/engine/network/transport/Channel.d.ts.map +0 -1
- package/src/engine/network/transport/Channel.js +0 -336
- package/src/engine/network/transport/ReliableCommandPipeline.d.ts +0 -155
- package/src/engine/network/transport/ReliableCommandPipeline.d.ts.map +0 -1
- package/src/engine/network/transport/ReliableCommandPipeline.js +0 -335
- package/src/engine/network/transport/fragments/FragmentAssembler.d.ts +0 -105
- package/src/engine/network/transport/fragments/FragmentAssembler.d.ts.map +0 -1
- package/src/engine/network/transport/fragments/FragmentAssembler.js +0 -350
- package/src/engine/network/transport/fragments/FragmentRetention.d.ts +0 -103
- package/src/engine/network/transport/fragments/FragmentRetention.d.ts.map +0 -1
- package/src/engine/network/transport/fragments/FragmentRetention.js +0 -191
- package/src/engine/network/transport/fragments/fragment_send.d.ts +0 -61
- package/src/engine/network/transport/fragments/fragment_send.d.ts.map +0 -1
- package/src/engine/network/transport/fragments/fragment_send.js +0 -157
- package/src/engine/network/transport/fragments/packet_size.d.ts +0 -99
- package/src/engine/network/transport/fragments/packet_size.d.ts.map +0 -1
- package/src/engine/network/transport/fragments/packet_size.js +0 -107
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_RRTAndODTFit.d.ts +0 -6
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_RRTAndODTFit.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_RRTAndODTFit.js +0 -16
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_aces.d.ts +0 -7
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_aces.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_aces.js +0 -46
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_agx.d.ts +0 -10
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_agx.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_agx.js +0 -127
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_pbr_neutral.d.ts +0 -7
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_pbr_neutral.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/tonemap/chunk_tonemap_pbr_neutral.js +0 -39
|
@@ -39,16 +39,24 @@
|
|
|
39
39
|
* the whole decay in α, whose only job is the multiplier, is the truthful
|
|
40
40
|
* placement.
|
|
41
41
|
*
|
|
42
|
-
* **γ
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
42
|
+
* **γ stays 1 for the persistent rows, and a contact now has a penalty decay
|
|
43
|
+
* of its own.** The paragraph that stood here called γ the one unmeasured
|
|
44
|
+
* constant, and named what a `γ < 1` would reach: PLAN §18's coupling, that a
|
|
45
|
+
* contact's penalty ramps to the ceiling and never comes back down. The ratio
|
|
46
|
+
* ramp made that live. A row violated by millimetres while a pile lands is at
|
|
47
|
+
* the ceiling for good, and at the ceiling §53's limit cycle is too large for
|
|
48
|
+
* silk to sleep: a ribbon pile never came to rest, a twirled skirt settled 17 mm
|
|
49
|
+
* from where it hung, a draped sheet was carried 4° less. So
|
|
50
|
+
* {@link CLOTH_CONTACT_GAMMA} decays a contact's two penalties per substep, the
|
|
51
|
+
* multiplier's `α·γ` untouched; a quiet row sinks back to the floor in a few
|
|
52
|
+
* steps and a violated one re-climbs within an iteration. Measured at 0.8, and
|
|
53
|
+
* the friction penalty has to decay with the normal one: decaying the normal
|
|
54
|
+
* penalty alone left the resting rope's sleep erratic (never at 0.8 and 0.75
|
|
55
|
+
* with friction, never at 0.7 without), decaying both sleeps every scene from
|
|
56
|
+
* 0.5 to 0.95. What it costs is static friction's exactness: a sheet on a slope
|
|
57
|
+
* it should stick to creeps 0.2–0.3 mm in four seconds, and the marginal case,
|
|
58
|
+
* μ a tenth over the tangent, slides 0.55 m where the shipped ramp slid 0.19.
|
|
59
|
+
* `MEASUREMENTS.md` §67.
|
|
52
60
|
*
|
|
53
61
|
* **`k_min` and `k_max` are equal, which disables the ramp.** Pinning the
|
|
54
62
|
* penalty at the top of the band measured as good as or better than every
|
|
@@ -71,14 +79,23 @@
|
|
|
71
79
|
* bought, settling three orders of magnitude worse on a gentle landing
|
|
72
80
|
* (6.4e-5 J against 3.2e-8 J). `MEASUREMENTS.md` §17.
|
|
73
81
|
*
|
|
74
|
-
* The
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
+
* **The contact's normal ramp is a ratio now, and `β` no longer runs it.** The
|
|
83
|
+
* paragraph that stood here said the scale-dependence of a ramp in N/m² was
|
|
84
|
+
* "stated rather than removed", because a ratio-valued ramp "would have to
|
|
85
|
+
* choose the reference length that shape is built out of". The cloth-skirt
|
|
86
|
+
* example chose it: a thigh advancing 17 mm a substep into a hanging skirt
|
|
87
|
+
* sat at the penalty floor for the whole of its arrival, because 1e3 N/m²
|
|
88
|
+
* against that cloth's band of 72 to 2,300 N/m is **0.003 of the band per
|
|
89
|
+
* contact offset of violation**, and the row's multiplier — rebuilt from a
|
|
90
|
+
* quarter every substep — could not carry a limb's push in four iterations.
|
|
91
|
+
* Twelve per cent of the dance had a thigh showing through, up to 13 mm, and
|
|
92
|
+
* four times the iteration budget made it zero. The reference length is the
|
|
93
|
+
* contact offset itself: {@link CLOTH_CONTACT_RAMP_RATIO} is how much of the
|
|
94
|
+
* band a contact gains per offset of violation per iteration, and the shape
|
|
95
|
+
* the M2 measurement picked — gentle grazing, immediate interpenetration — is
|
|
96
|
+
* kept, in the units the contact is defined in. `β` still ramps the friction
|
|
97
|
+
* row, which is unmeasured, and the persistent rows, where `k_min = k_max`
|
|
98
|
+
* makes it inert. `MEASUREMENTS.md` §67.
|
|
82
99
|
*
|
|
83
100
|
* @author Alex Goldring
|
|
84
101
|
* @copyright Company Named Limited (c) 2026
|
|
@@ -134,6 +151,58 @@ export const CLOTH_K_MAX_RATIO: number;
|
|
|
134
151
|
* @type {number}
|
|
135
152
|
*/
|
|
136
153
|
export const CLOTH_CONTACT_K_MIN_RATIO: number;
|
|
154
|
+
/**
|
|
155
|
+
* How fast a **contact** row's normal penalty climbs, as the fraction of the
|
|
156
|
+
* band `[floor, k_max]` it gains per contact offset of violation per iteration:
|
|
157
|
+
*
|
|
158
|
+
* k ← min(k + ratio · k_max · |C| / (thickness + inflation), k_max)
|
|
159
|
+
*
|
|
160
|
+
* **A tenth, measured on both sides.** On the cloth-skirt example the thigh
|
|
161
|
+
* penetration is on a plateau from 0.05 up (12.7% of steps → 0.1%, the
|
|
162
|
+
* deepest shortfall of the offset 18.6 → 7.7 mm); below it a sweeping limb
|
|
163
|
+
* still gets through (0.03: 0.5%). On the other side a rope **resting** on a
|
|
164
|
+
* floor with friction — §53's limit cycle — sleeps at 0.2 and never at 0.25,
|
|
165
|
+
* because every speculative row round the resting particles is at the
|
|
166
|
+
* ceiling before it is touched. A tenth is a factor of two clear of each.
|
|
167
|
+
* It is also at least as good as the ramp it replaces on the scene that
|
|
168
|
+
* chose that ramp: M2's sheet landing at 3 m/s reads 0.68 mm of penetration
|
|
169
|
+
* against 1.10, with its settled kinetic energy eight times lower and the
|
|
170
|
+
* peak contact force 9% higher, and M2 §6's capsule swept through a hanging
|
|
171
|
+
* sheet at 2 m/s reads 1.8 mm against 17. The tunnelling threshold does not
|
|
172
|
+
* move — that bound is the substep count. `MEASUREMENTS.md` §67.
|
|
173
|
+
*
|
|
174
|
+
* **It ramps whether or not the row is active**, as before. Ramping only
|
|
175
|
+
* active rows — the reference implementation's form — leaves a sweeping limb
|
|
176
|
+
* through more often (1.0% of the skirt's steps against 0.1%) and takes the
|
|
177
|
+
* speed a thrown particle is still stopped at from 6 to 4 m/s at two
|
|
178
|
+
* substeps, which is §54's one-sided-ramp finding again: the pre-stiffening
|
|
179
|
+
* of speculative rows is what a fast arrival hits.
|
|
180
|
+
*
|
|
181
|
+
* A contact offset of zero is not a contact `ClothDynamics` allows, and a
|
|
182
|
+
* division by it climbs straight to `k_max` rather than anywhere worse.
|
|
183
|
+
* @type {number}
|
|
184
|
+
*/
|
|
185
|
+
export const CLOTH_CONTACT_RAMP_RATIO: number;
|
|
186
|
+
/**
|
|
187
|
+
* How much of a **contact** row's penalties — the normal row's and the friction
|
|
188
|
+
* row's — survives a substep's warm start. The multiplier decays by `α·γ` as
|
|
189
|
+
* every hard row's does; this is the band's own decay, which the persistent
|
|
190
|
+
* rows do not have because their band is a single point.
|
|
191
|
+
*
|
|
192
|
+
* **0.8, for cloth that rests on something to sleep.** Without it the ratio
|
|
193
|
+
* ramp leaves every row that was ever violated by millimetres at the ceiling,
|
|
194
|
+
* where a resting pile's limit cycle (§53) is too large to pass the sleep test:
|
|
195
|
+
* §64's ribbon pile never slept in 2,400 steps. At 0.8 a row's penalty halves
|
|
196
|
+
* in three substeps and is back at the floor from the ceiling in eight steps at
|
|
197
|
+
* two substeps, the multiplier carries the resting load, and the pile sleeps as
|
|
198
|
+
* it did; the twirled skirt settles where it hung and the draped sheet is
|
|
199
|
+
* carried as far. The sleep is erratic at 0.7 and slow at 0.5. Both penalties
|
|
200
|
+
* decay, because decaying the normal one alone made the resting rope's sleep a
|
|
201
|
+
* coin toss. The price is in the module docblock: static friction creeps a
|
|
202
|
+
* fraction of a millimetre in seconds where it was exact. `MEASUREMENTS.md` §67.
|
|
203
|
+
* @type {number}
|
|
204
|
+
*/
|
|
205
|
+
export const CLOTH_CONTACT_GAMMA: number;
|
|
137
206
|
/**
|
|
138
207
|
* Penalty stiffness for a **self-collision** row, as a multiple of the row's
|
|
139
208
|
* own `m_eff/h²`.
|
|
@@ -174,19 +243,23 @@ export const CLOTH_CONTACT_K_MIN_RATIO: number;
|
|
|
174
243
|
export const CLOTH_SELF_RATIO: number;
|
|
175
244
|
/**
|
|
176
245
|
* Smallest radius a self-collision row is written at, as a multiple of the
|
|
177
|
-
*
|
|
246
|
+
* **particle's own** shortest row — so the row's **diameter** is one particle
|
|
247
|
+
* spacing, at that particle.
|
|
178
248
|
*
|
|
179
249
|
* `ClothState#self_radius` carries why the radius is a property of the proxy
|
|
180
250
|
* rather than of the fabric, and `MEASUREMENTS.md` §31 is the sweep: at the
|
|
181
251
|
* fabric's own thickness the row removes 21% of a folding sheet's
|
|
182
|
-
* self-intersections and here it removes 82%.
|
|
252
|
+
* self-intersections and here it removes 82%. It was a multiple of the
|
|
253
|
+
* *cloth's* shortest row until a circle skirt's hem, whose rows are five times
|
|
254
|
+
* the waistband's, got the waistband's radius and passed through itself
|
|
255
|
+
* (§67, §68); `cloth_self_radius_update` applies it per particle.
|
|
183
256
|
* @type {number}
|
|
184
257
|
*/
|
|
185
258
|
export const CLOTH_SELF_RADIUS_MIN_RATIO: number;
|
|
186
259
|
/**
|
|
187
260
|
* Largest radius a self-collision row is written at, as a fraction of the
|
|
188
|
-
* closest
|
|
189
|
-
* `
|
|
261
|
+
* closest **that particle** gets to one no row joins it to, in the bind pose —
|
|
262
|
+
* `ClothState#self_free_pair`. Two fifths of it, so the row's diameter is
|
|
190
263
|
* four fifths of the nearest thing it could touch and a cloth at rest is never
|
|
191
264
|
* in contact with itself.
|
|
192
265
|
*
|
|
@@ -245,9 +318,9 @@ export const CLOTH_SELF_RADIUS_MAX_RATIO: number;
|
|
|
245
318
|
*/
|
|
246
319
|
export const CLOTH_COLLIDER_SLOTS: number;
|
|
247
320
|
/**
|
|
248
|
-
* The
|
|
321
|
+
* The constants as one frozen object, which is what {@link cloth_step}
|
|
249
322
|
* takes. A sweep passes its own; nothing else should.
|
|
250
|
-
* @type {Readonly<{alpha: number, beta: number, gamma: number, k_min_ratio: number, k_max_ratio: number}>}
|
|
323
|
+
* @type {Readonly<{alpha: number, beta: number, gamma: number, k_min_ratio: number, k_max_ratio: number, contact_ramp_ratio: number, contact_gamma: number}>}
|
|
251
324
|
*/
|
|
252
325
|
export const CLOTH_SOLVER_TUNING: Readonly<{
|
|
253
326
|
alpha: number;
|
|
@@ -255,5 +328,7 @@ export const CLOTH_SOLVER_TUNING: Readonly<{
|
|
|
255
328
|
gamma: number;
|
|
256
329
|
k_min_ratio: number;
|
|
257
330
|
k_max_ratio: number;
|
|
331
|
+
contact_ramp_ratio: number;
|
|
332
|
+
contact_gamma: number;
|
|
258
333
|
}>;
|
|
259
334
|
//# sourceMappingURL=cloth_solver_constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloth_solver_constants.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/cloth/solver/cloth_solver_constants.js"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cloth_solver_constants.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/cloth/solver/cloth_solver_constants.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AAEH;;;GAGG;AACH,0BAFU,MAAM,CAEgB;AAEhC;;;;GAIG;AACH,yBAFU,MAAM,CAEc;AAE9B;;;GAGG;AACH,0BAFU,MAAM,CAEa;AAE7B;;;GAGG;AACH,gCAFU,MAAM,CAEmB;AAEnC;;;GAGG;AACH,gCAFU,MAAM,CAEmB;AAEnC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wCAFU,MAAM,CAE8B;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,uCAFU,MAAM,CAE4B;AAE5C;;;;;;;;;;;;;;;;;;GAkBG;AACH,kCAFU,MAAM,CAEuB;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,+BAFU,MAAM,CAEkB;AAElC;;;;;;;;;;;;;GAaG;AACH,0CAFU,MAAM,CAE+B;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,0CAFU,MAAM,CAE+B;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,mCAFU,MAAM,CAEuB;AAEvC;;;;GAIG;AACH,kCAFU,SAAS;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAC,CAAC,CAU1J"}
|
|
@@ -39,16 +39,24 @@
|
|
|
39
39
|
* the whole decay in α, whose only job is the multiplier, is the truthful
|
|
40
40
|
* placement.
|
|
41
41
|
*
|
|
42
|
-
* **γ
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
42
|
+
* **γ stays 1 for the persistent rows, and a contact now has a penalty decay
|
|
43
|
+
* of its own.** The paragraph that stood here called γ the one unmeasured
|
|
44
|
+
* constant, and named what a `γ < 1` would reach: PLAN §18's coupling, that a
|
|
45
|
+
* contact's penalty ramps to the ceiling and never comes back down. The ratio
|
|
46
|
+
* ramp made that live. A row violated by millimetres while a pile lands is at
|
|
47
|
+
* the ceiling for good, and at the ceiling §53's limit cycle is too large for
|
|
48
|
+
* silk to sleep: a ribbon pile never came to rest, a twirled skirt settled 17 mm
|
|
49
|
+
* from where it hung, a draped sheet was carried 4° less. So
|
|
50
|
+
* {@link CLOTH_CONTACT_GAMMA} decays a contact's two penalties per substep, the
|
|
51
|
+
* multiplier's `α·γ` untouched; a quiet row sinks back to the floor in a few
|
|
52
|
+
* steps and a violated one re-climbs within an iteration. Measured at 0.8, and
|
|
53
|
+
* the friction penalty has to decay with the normal one: decaying the normal
|
|
54
|
+
* penalty alone left the resting rope's sleep erratic (never at 0.8 and 0.75
|
|
55
|
+
* with friction, never at 0.7 without), decaying both sleeps every scene from
|
|
56
|
+
* 0.5 to 0.95. What it costs is static friction's exactness: a sheet on a slope
|
|
57
|
+
* it should stick to creeps 0.2–0.3 mm in four seconds, and the marginal case,
|
|
58
|
+
* μ a tenth over the tangent, slides 0.55 m where the shipped ramp slid 0.19.
|
|
59
|
+
* `MEASUREMENTS.md` §67.
|
|
52
60
|
*
|
|
53
61
|
* **`k_min` and `k_max` are equal, which disables the ramp.** Pinning the
|
|
54
62
|
* penalty at the top of the band measured as good as or better than every
|
|
@@ -71,14 +79,23 @@
|
|
|
71
79
|
* bought, settling three orders of magnitude worse on a gentle landing
|
|
72
80
|
* (6.4e-5 J against 3.2e-8 J). `MEASUREMENTS.md` §17.
|
|
73
81
|
*
|
|
74
|
-
* The
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
+
* **The contact's normal ramp is a ratio now, and `β` no longer runs it.** The
|
|
83
|
+
* paragraph that stood here said the scale-dependence of a ramp in N/m² was
|
|
84
|
+
* "stated rather than removed", because a ratio-valued ramp "would have to
|
|
85
|
+
* choose the reference length that shape is built out of". The cloth-skirt
|
|
86
|
+
* example chose it: a thigh advancing 17 mm a substep into a hanging skirt
|
|
87
|
+
* sat at the penalty floor for the whole of its arrival, because 1e3 N/m²
|
|
88
|
+
* against that cloth's band of 72 to 2,300 N/m is **0.003 of the band per
|
|
89
|
+
* contact offset of violation**, and the row's multiplier — rebuilt from a
|
|
90
|
+
* quarter every substep — could not carry a limb's push in four iterations.
|
|
91
|
+
* Twelve per cent of the dance had a thigh showing through, up to 13 mm, and
|
|
92
|
+
* four times the iteration budget made it zero. The reference length is the
|
|
93
|
+
* contact offset itself: {@link CLOTH_CONTACT_RAMP_RATIO} is how much of the
|
|
94
|
+
* band a contact gains per offset of violation per iteration, and the shape
|
|
95
|
+
* the M2 measurement picked — gentle grazing, immediate interpenetration — is
|
|
96
|
+
* kept, in the units the contact is defined in. `β` still ramps the friction
|
|
97
|
+
* row, which is unmeasured, and the persistent rows, where `k_min = k_max`
|
|
98
|
+
* makes it inert. `MEASUREMENTS.md` §67.
|
|
82
99
|
*
|
|
83
100
|
* @author Alex Goldring
|
|
84
101
|
* @copyright Company Named Limited (c) 2026
|
|
@@ -141,6 +158,60 @@ export const CLOTH_K_MAX_RATIO = 8;
|
|
|
141
158
|
*/
|
|
142
159
|
export const CLOTH_CONTACT_K_MIN_RATIO = 0.25;
|
|
143
160
|
|
|
161
|
+
/**
|
|
162
|
+
* How fast a **contact** row's normal penalty climbs, as the fraction of the
|
|
163
|
+
* band `[floor, k_max]` it gains per contact offset of violation per iteration:
|
|
164
|
+
*
|
|
165
|
+
* k ← min(k + ratio · k_max · |C| / (thickness + inflation), k_max)
|
|
166
|
+
*
|
|
167
|
+
* **A tenth, measured on both sides.** On the cloth-skirt example the thigh
|
|
168
|
+
* penetration is on a plateau from 0.05 up (12.7% of steps → 0.1%, the
|
|
169
|
+
* deepest shortfall of the offset 18.6 → 7.7 mm); below it a sweeping limb
|
|
170
|
+
* still gets through (0.03: 0.5%). On the other side a rope **resting** on a
|
|
171
|
+
* floor with friction — §53's limit cycle — sleeps at 0.2 and never at 0.25,
|
|
172
|
+
* because every speculative row round the resting particles is at the
|
|
173
|
+
* ceiling before it is touched. A tenth is a factor of two clear of each.
|
|
174
|
+
* It is also at least as good as the ramp it replaces on the scene that
|
|
175
|
+
* chose that ramp: M2's sheet landing at 3 m/s reads 0.68 mm of penetration
|
|
176
|
+
* against 1.10, with its settled kinetic energy eight times lower and the
|
|
177
|
+
* peak contact force 9% higher, and M2 §6's capsule swept through a hanging
|
|
178
|
+
* sheet at 2 m/s reads 1.8 mm against 17. The tunnelling threshold does not
|
|
179
|
+
* move — that bound is the substep count. `MEASUREMENTS.md` §67.
|
|
180
|
+
*
|
|
181
|
+
* **It ramps whether or not the row is active**, as before. Ramping only
|
|
182
|
+
* active rows — the reference implementation's form — leaves a sweeping limb
|
|
183
|
+
* through more often (1.0% of the skirt's steps against 0.1%) and takes the
|
|
184
|
+
* speed a thrown particle is still stopped at from 6 to 4 m/s at two
|
|
185
|
+
* substeps, which is §54's one-sided-ramp finding again: the pre-stiffening
|
|
186
|
+
* of speculative rows is what a fast arrival hits.
|
|
187
|
+
*
|
|
188
|
+
* A contact offset of zero is not a contact `ClothDynamics` allows, and a
|
|
189
|
+
* division by it climbs straight to `k_max` rather than anywhere worse.
|
|
190
|
+
* @type {number}
|
|
191
|
+
*/
|
|
192
|
+
export const CLOTH_CONTACT_RAMP_RATIO = 0.1;
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* How much of a **contact** row's penalties — the normal row's and the friction
|
|
196
|
+
* row's — survives a substep's warm start. The multiplier decays by `α·γ` as
|
|
197
|
+
* every hard row's does; this is the band's own decay, which the persistent
|
|
198
|
+
* rows do not have because their band is a single point.
|
|
199
|
+
*
|
|
200
|
+
* **0.8, for cloth that rests on something to sleep.** Without it the ratio
|
|
201
|
+
* ramp leaves every row that was ever violated by millimetres at the ceiling,
|
|
202
|
+
* where a resting pile's limit cycle (§53) is too large to pass the sleep test:
|
|
203
|
+
* §64's ribbon pile never slept in 2,400 steps. At 0.8 a row's penalty halves
|
|
204
|
+
* in three substeps and is back at the floor from the ceiling in eight steps at
|
|
205
|
+
* two substeps, the multiplier carries the resting load, and the pile sleeps as
|
|
206
|
+
* it did; the twirled skirt settles where it hung and the draped sheet is
|
|
207
|
+
* carried as far. The sleep is erratic at 0.7 and slow at 0.5. Both penalties
|
|
208
|
+
* decay, because decaying the normal one alone made the resting rope's sleep a
|
|
209
|
+
* coin toss. The price is in the module docblock: static friction creeps a
|
|
210
|
+
* fraction of a millimetre in seconds where it was exact. `MEASUREMENTS.md` §67.
|
|
211
|
+
* @type {number}
|
|
212
|
+
*/
|
|
213
|
+
export const CLOTH_CONTACT_GAMMA = 0.8;
|
|
214
|
+
|
|
144
215
|
/**
|
|
145
216
|
* Penalty stiffness for a **self-collision** row, as a multiple of the row's
|
|
146
217
|
* own `m_eff/h²`.
|
|
@@ -182,20 +253,24 @@ export const CLOTH_SELF_RATIO = 2;
|
|
|
182
253
|
|
|
183
254
|
/**
|
|
184
255
|
* Smallest radius a self-collision row is written at, as a multiple of the
|
|
185
|
-
*
|
|
256
|
+
* **particle's own** shortest row — so the row's **diameter** is one particle
|
|
257
|
+
* spacing, at that particle.
|
|
186
258
|
*
|
|
187
259
|
* `ClothState#self_radius` carries why the radius is a property of the proxy
|
|
188
260
|
* rather than of the fabric, and `MEASUREMENTS.md` §31 is the sweep: at the
|
|
189
261
|
* fabric's own thickness the row removes 21% of a folding sheet's
|
|
190
|
-
* self-intersections and here it removes 82%.
|
|
262
|
+
* self-intersections and here it removes 82%. It was a multiple of the
|
|
263
|
+
* *cloth's* shortest row until a circle skirt's hem, whose rows are five times
|
|
264
|
+
* the waistband's, got the waistband's radius and passed through itself
|
|
265
|
+
* (§67, §68); `cloth_self_radius_update` applies it per particle.
|
|
191
266
|
* @type {number}
|
|
192
267
|
*/
|
|
193
268
|
export const CLOTH_SELF_RADIUS_MIN_RATIO = 0.5;
|
|
194
269
|
|
|
195
270
|
/**
|
|
196
271
|
* Largest radius a self-collision row is written at, as a fraction of the
|
|
197
|
-
* closest
|
|
198
|
-
* `
|
|
272
|
+
* closest **that particle** gets to one no row joins it to, in the bind pose —
|
|
273
|
+
* `ClothState#self_free_pair`. Two fifths of it, so the row's diameter is
|
|
199
274
|
* four fifths of the nearest thing it could touch and a cloth at rest is never
|
|
200
275
|
* in contact with itself.
|
|
201
276
|
*
|
|
@@ -256,14 +331,16 @@ export const CLOTH_SELF_RADIUS_MAX_RATIO = 0.4;
|
|
|
256
331
|
export const CLOTH_COLLIDER_SLOTS = 64;
|
|
257
332
|
|
|
258
333
|
/**
|
|
259
|
-
* The
|
|
334
|
+
* The constants as one frozen object, which is what {@link cloth_step}
|
|
260
335
|
* takes. A sweep passes its own; nothing else should.
|
|
261
|
-
* @type {Readonly<{alpha: number, beta: number, gamma: number, k_min_ratio: number, k_max_ratio: number}>}
|
|
336
|
+
* @type {Readonly<{alpha: number, beta: number, gamma: number, k_min_ratio: number, k_max_ratio: number, contact_ramp_ratio: number, contact_gamma: number}>}
|
|
262
337
|
*/
|
|
263
338
|
export const CLOTH_SOLVER_TUNING = Object.freeze({
|
|
264
339
|
alpha: CLOTH_ALPHA,
|
|
265
340
|
beta: CLOTH_BETA,
|
|
266
341
|
gamma: CLOTH_GAMMA,
|
|
267
342
|
k_min_ratio: CLOTH_K_MIN_RATIO,
|
|
268
|
-
k_max_ratio: CLOTH_K_MAX_RATIO
|
|
343
|
+
k_max_ratio: CLOTH_K_MAX_RATIO,
|
|
344
|
+
contact_ramp_ratio: CLOTH_CONTACT_RAMP_RATIO,
|
|
345
|
+
contact_gamma: CLOTH_CONTACT_GAMMA
|
|
269
346
|
});
|
|
@@ -9,11 +9,13 @@
|
|
|
9
9
|
* predict y = x + h·v + h²·a
|
|
10
10
|
* x ← x + h·v + h²·ã (adaptive initialisation)
|
|
11
11
|
* warm start λ ← λ·α·γ ; k ← clamp(k·γ, k_min, k_max) (hard rows only)
|
|
12
|
+
* (a contact's penalties: k ← clamp(k·γ_c, k_min, k_max))
|
|
12
13
|
* iterate × iterations:
|
|
13
14
|
* for each colour: for each particle: vertex update
|
|
14
15
|
* last iteration, held particles on one line: turn about it
|
|
15
16
|
* dual update: λ ← clamp(k·C + λ, f_min, f_max)
|
|
16
17
|
* k ← min(k + β·|C|, min(k_max, stiffness))
|
|
18
|
+
* (a contact: k ← min(k + ρ·k_max·|C|/offset, k_max))
|
|
17
19
|
* integrate v = (x − x_prev)/h
|
|
18
20
|
*
|
|
19
21
|
* Six row kinds — stretch, bend, leash, backstop, contact and self-collision —
|
|
@@ -141,7 +143,7 @@
|
|
|
141
143
|
* @param {Float32Array|Float64Array|null} [collider_table] packed colliders in the
|
|
142
144
|
* cloth's own frame, with their contact rows already found
|
|
143
145
|
* @param {number} [collider_count]
|
|
144
|
-
* @param {{alpha: number, beta: number, gamma: number, k_min_ratio: number, k_max_ratio: number, self_ratio?: number}} [tuning]
|
|
146
|
+
* @param {{alpha: number, beta: number, gamma: number, k_min_ratio: number, k_max_ratio: number, self_ratio?: number, contact_ramp_ratio?: number, contact_gamma?: number}} [tuning]
|
|
145
147
|
* @param {Float32Array|null} [external] per-particle external acceleration,
|
|
146
148
|
* cloth-local, 3 each — §10's wind, already carrying gravity. `null` takes the
|
|
147
149
|
* uniform path above, which is what a scene with no air in it runs.
|
|
@@ -153,5 +155,7 @@ export function cloth_step(state: ClothState, dt: number, acceleration_x: number
|
|
|
153
155
|
k_min_ratio: number;
|
|
154
156
|
k_max_ratio: number;
|
|
155
157
|
self_ratio?: number;
|
|
158
|
+
contact_ramp_ratio?: number;
|
|
159
|
+
contact_gamma?: number;
|
|
156
160
|
}, external?: Float32Array | null): void;
|
|
157
161
|
//# sourceMappingURL=cloth_step.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloth_step.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/cloth/solver/cloth_step.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cloth_step.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/cloth/solver/cloth_step.js"],"names":[],"mappings":"AAoCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkIG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,kDAfW,MAAM,kBACN,MAAM,kBAEN,MAAM,kBACN,MAAM,YACN,MAAM,cACN,MAAM,mBACN,YAAY,GAAC,YAAY,GAAC,IAAI,mBAE9B,MAAM,WACN;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAC,aAChK,YAAY,GAAC,IAAI,QAwI3B"}
|
|
@@ -5,7 +5,9 @@ import { cloth_collider_pose_at } from "../collider/cloth_collider_sdf.js";
|
|
|
5
5
|
import { CLOTH_HOLD_LINE_WORDS, cloth_hold_line_fit, cloth_hold_line_turn } from "./cloth_hold_line.js";
|
|
6
6
|
import { cloth_solve_vertex } from "./cloth_solve_vertex.js";
|
|
7
7
|
import {
|
|
8
|
+
CLOTH_CONTACT_GAMMA,
|
|
8
9
|
CLOTH_CONTACT_K_MIN_RATIO,
|
|
10
|
+
CLOTH_CONTACT_RAMP_RATIO,
|
|
9
11
|
CLOTH_SELF_RATIO,
|
|
10
12
|
CLOTH_SOLVER_TUNING
|
|
11
13
|
} from "./cloth_solver_constants.js";
|
|
@@ -43,11 +45,13 @@ import { find_non_finite_cloth_state } from "./find_non_finite_cloth_state.js";
|
|
|
43
45
|
* predict y = x + h·v + h²·a
|
|
44
46
|
* x ← x + h·v + h²·ã (adaptive initialisation)
|
|
45
47
|
* warm start λ ← λ·α·γ ; k ← clamp(k·γ, k_min, k_max) (hard rows only)
|
|
48
|
+
* (a contact's penalties: k ← clamp(k·γ_c, k_min, k_max))
|
|
46
49
|
* iterate × iterations:
|
|
47
50
|
* for each colour: for each particle: vertex update
|
|
48
51
|
* last iteration, held particles on one line: turn about it
|
|
49
52
|
* dual update: λ ← clamp(k·C + λ, f_min, f_max)
|
|
50
53
|
* k ← min(k + β·|C|, min(k_max, stiffness))
|
|
54
|
+
* (a contact: k ← min(k + ρ·k_max·|C|/offset, k_max))
|
|
51
55
|
* integrate v = (x − x_prev)/h
|
|
52
56
|
*
|
|
53
57
|
* Six row kinds — stretch, bend, leash, backstop, contact and self-collision —
|
|
@@ -176,7 +180,7 @@ import { find_non_finite_cloth_state } from "./find_non_finite_cloth_state.js";
|
|
|
176
180
|
* @param {Float32Array|Float64Array|null} [collider_table] packed colliders in the
|
|
177
181
|
* cloth's own frame, with their contact rows already found
|
|
178
182
|
* @param {number} [collider_count]
|
|
179
|
-
* @param {{alpha: number, beta: number, gamma: number, k_min_ratio: number, k_max_ratio: number, self_ratio?: number}} [tuning]
|
|
183
|
+
* @param {{alpha: number, beta: number, gamma: number, k_min_ratio: number, k_max_ratio: number, self_ratio?: number, contact_ramp_ratio?: number, contact_gamma?: number}} [tuning]
|
|
180
184
|
* @param {Float32Array|null} [external] per-particle external acceleration,
|
|
181
185
|
* cloth-local, 3 each — §10's wind, already carrying gravity. `null` takes the
|
|
182
186
|
* uniform path above, which is what a scene with no air in it runs.
|
|
@@ -201,6 +205,11 @@ export function cloth_step(
|
|
|
201
205
|
const k_min_ratio = tuning.k_min_ratio;
|
|
202
206
|
const k_max_ratio = tuning.k_max_ratio;
|
|
203
207
|
|
|
208
|
+
// A sweep's tuning from before the contact had a ramp ratio and a decay of its own names neither,
|
|
209
|
+
// and gets the shipped ones.
|
|
210
|
+
const contact_ramp_ratio = tuning.contact_ramp_ratio ?? CLOTH_CONTACT_RAMP_RATIO;
|
|
211
|
+
const contact_gamma = tuning.contact_gamma ?? CLOTH_CONTACT_GAMMA;
|
|
212
|
+
|
|
204
213
|
const h = dt / substeps;
|
|
205
214
|
const inverse_h = 1 / h;
|
|
206
215
|
const inverse_h_squared = inverse_h * inverse_h;
|
|
@@ -265,7 +274,8 @@ export function cloth_step(
|
|
|
265
274
|
if (contacts !== null) {
|
|
266
275
|
cloth_contact_warm_start(
|
|
267
276
|
state, alpha, gamma,
|
|
268
|
-
CLOTH_CONTACT_K_MIN_RATIO, k_max_ratio, inverse_h_squared
|
|
277
|
+
CLOTH_CONTACT_K_MIN_RATIO, k_max_ratio, inverse_h_squared,
|
|
278
|
+
contact_gamma
|
|
269
279
|
);
|
|
270
280
|
}
|
|
271
281
|
|
|
@@ -292,7 +302,7 @@ export function cloth_step(
|
|
|
292
302
|
cloth_backstop_dual_update(state, beta, k_max_ratio, inverse_h_squared);
|
|
293
303
|
|
|
294
304
|
if (contacts !== null) {
|
|
295
|
-
cloth_contact_dual_update(state, contacts, beta, k_max_ratio, inverse_h_squared);
|
|
305
|
+
cloth_contact_dual_update(state, contacts, beta, k_max_ratio, inverse_h_squared, contact_ramp_ratio);
|
|
296
306
|
}
|
|
297
307
|
}
|
|
298
308
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloth_step_instance.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/cloth/solver/cloth_step_instance.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cloth_step_instance.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/cloth/solver/cloth_step_instance.js"],"names":[],"mappings":"AAyIA;;;;;;;;;GASG;AACH,wEANW;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAC,GAAC,IAAI,UAE9C,YAAY,UACZ,MAAM,GACJ,IAAI,CA+DhB;;;;6BAnJS,MAAM;;;;;;;;;;;;;;;;;AAsEhB;;;GAGG;AACH,sCAFU,MAAM,CAE0B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { vector_scale_offset } from "../../../../core/geom/vec/vector_scale_offset.js";
|
|
2
2
|
import { cloth_contact_find } from "./cloth_contact_find.js";
|
|
3
3
|
import { cloth_self_find } from "./cloth_self_find.js";
|
|
4
|
+
import { cloth_self_radius_update } from "./cloth_self_radius.js";
|
|
4
5
|
import { cloth_step } from "./cloth_step.js";
|
|
5
6
|
import { cloth_wind_accelerate } from "./cloth_wind_accelerate.js";
|
|
6
7
|
import { ClothStepResult } from "./ClothState.js";
|
|
@@ -96,24 +97,19 @@ export const ClothStepParam = {
|
|
|
96
97
|
*/
|
|
97
98
|
VELOCITY_LIMIT: 8,
|
|
98
99
|
/**
|
|
99
|
-
* `ClothDynamics#thickness`, metres
|
|
100
|
+
* `ClothDynamics#thickness`, metres — the contact offset, and what each
|
|
101
|
+
* particle's self-collision radius is built from per step
|
|
102
|
+
* (`cloth_self_radius_update`).
|
|
100
103
|
*/
|
|
101
104
|
CONTACT_RADIUS: 9,
|
|
102
|
-
/**
|
|
103
|
-
* The self-collision row's radius, metres. Read only when
|
|
104
|
-
* {@link ClothStepParam.SELF_COLLISION} is set — a cloth with the flag
|
|
105
|
-
* clear keeps whatever radius it last had, because the row that would read
|
|
106
|
-
* it does not run.
|
|
107
|
-
*/
|
|
108
|
-
SELF_RADIUS: 10,
|
|
109
105
|
/**
|
|
110
106
|
* Live records in the state's collider table, as the gather left it.
|
|
111
107
|
*/
|
|
112
|
-
COLLIDER_COUNT:
|
|
108
|
+
COLLIDER_COUNT: 10,
|
|
113
109
|
/**
|
|
114
110
|
* Non-zero when `ClothDynamicsFlags.SelfCollision` is set.
|
|
115
111
|
*/
|
|
116
|
-
SELF_COLLISION:
|
|
112
|
+
SELF_COLLISION: 11,
|
|
117
113
|
/**
|
|
118
114
|
* §10's aerodynamic coupling, as the **per-step response**
|
|
119
115
|
* `(1 − e^(−rate·dt))/dt` in 1/s rather than as a rate — see
|
|
@@ -124,20 +120,20 @@ export const ClothStepParam = {
|
|
|
124
120
|
* takes `cloth_step`'s uniform-gravity path, which is the path M0 through
|
|
125
121
|
* M5 measured.
|
|
126
122
|
*/
|
|
127
|
-
DRAG_RESPONSE:
|
|
123
|
+
DRAG_RESPONSE: 12,
|
|
128
124
|
/**
|
|
129
125
|
* The furthest any held particle is carried this step, metres — how far a
|
|
130
126
|
* cloth its holders are dragging moves without a velocity to show for it.
|
|
131
127
|
* Contact discovery reaches this much further for every free particle.
|
|
132
128
|
*/
|
|
133
|
-
KINEMATIC_TRAVEL:
|
|
129
|
+
KINEMATIC_TRAVEL: 13
|
|
134
130
|
};
|
|
135
131
|
|
|
136
132
|
/**
|
|
137
133
|
* `Float64` words one cloth's parameter block occupies.
|
|
138
134
|
* @type {number}
|
|
139
135
|
*/
|
|
140
|
-
export const CLOTH_STEP_PARAM_STRIDE =
|
|
136
|
+
export const CLOTH_STEP_PARAM_STRIDE = 14;
|
|
141
137
|
|
|
142
138
|
/**
|
|
143
139
|
* Step one cloth.
|
|
@@ -173,7 +169,9 @@ export function cloth_step_instance(state, self_exclusions, params, offset) {
|
|
|
173
169
|
let self_pairs = 0;
|
|
174
170
|
|
|
175
171
|
if (params[offset + ClothStepParam.SELF_COLLISION] !== 0) {
|
|
176
|
-
|
|
172
|
+
// Each particle's radius from its own two lengths and this step's thickness,
|
|
173
|
+
// here so both threads derive it from the same words.
|
|
174
|
+
cloth_self_radius_update(state, params[offset + ClothStepParam.CONTACT_RADIUS]);
|
|
177
175
|
|
|
178
176
|
self_pairs = cloth_self_find(state, self_exclusions);
|
|
179
177
|
} else {
|
|
@@ -20,12 +20,14 @@ export function cloth_contact_accumulate(accumulator: Float64Array, state: Cloth
|
|
|
20
20
|
*
|
|
21
21
|
* @param {ClothState} state
|
|
22
22
|
* @param {number} alpha
|
|
23
|
-
* @param {number} gamma
|
|
23
|
+
* @param {number} gamma the multiplier's decay, with `alpha`
|
|
24
24
|
* @param {number} k_min_ratio
|
|
25
25
|
* @param {number} k_max_ratio
|
|
26
26
|
* @param {number} inverse_h_squared
|
|
27
|
+
* @param {number} [penalty_gamma] the contact's own decay of both penalties per
|
|
28
|
+
* substep — {@link CLOTH_CONTACT_GAMMA}, and why a contact has one
|
|
27
29
|
*/
|
|
28
|
-
export function cloth_contact_warm_start(state: ClothState, alpha: number, gamma: number, k_min_ratio: number, k_max_ratio: number, inverse_h_squared: number): void;
|
|
30
|
+
export function cloth_contact_warm_start(state: ClothState, alpha: number, gamma: number, k_min_ratio: number, k_max_ratio: number, inverse_h_squared: number, penalty_gamma?: number): void;
|
|
29
31
|
/**
|
|
30
32
|
* Dual update for every occupied contact slot.
|
|
31
33
|
*
|
|
@@ -38,11 +40,13 @@ export function cloth_contact_warm_start(state: ClothState, alpha: number, gamma
|
|
|
38
40
|
*
|
|
39
41
|
* @param {ClothState} state
|
|
40
42
|
* @param {Float32Array|Float64Array} table
|
|
41
|
-
* @param {number} beta
|
|
43
|
+
* @param {number} beta the friction row's ramp, N/m²
|
|
42
44
|
* @param {number} k_max_ratio
|
|
43
45
|
* @param {number} inverse_h_squared
|
|
46
|
+
* @param {number} [ramp_ratio] the normal row's ramp, as the fraction of the
|
|
47
|
+
* band gained per contact offset of violation per iteration
|
|
44
48
|
*/
|
|
45
|
-
export function cloth_contact_dual_update(state: ClothState, table: Float32Array | Float64Array, beta: number, k_max_ratio: number, inverse_h_squared: number): void;
|
|
49
|
+
export function cloth_contact_dual_update(state: ClothState, table: Float32Array | Float64Array, beta: number, k_max_ratio: number, inverse_h_squared: number, ramp_ratio?: number): void;
|
|
46
50
|
/**
|
|
47
51
|
* # Contact — the collision row and its friction row, which are one contact
|
|
48
52
|
*
|
|
@@ -100,6 +104,21 @@ export function cloth_contact_dual_update(state: ClothState, table: Float32Array
|
|
|
100
104
|
* never act at all. The current force is already computed, already
|
|
101
105
|
* non-negative, and makes a cloth land on a slope and stay there at 1×1.
|
|
102
106
|
*
|
|
107
|
+
* ## The normal penalty ramps in the contact's own units
|
|
108
|
+
*
|
|
109
|
+
* `k ← min(k + ratio·k_max·|C|/offset, k_max)`, `offset = thickness + inflation`:
|
|
110
|
+
* the penalty gains {@link CLOTH_CONTACT_RAMP_RATIO} of its band per contact
|
|
111
|
+
* offset of violation per iteration, rather than `β·|C|` newtons per metre.
|
|
112
|
+
* A contact against a **sweeping** collider — a thigh into a skirt — has to
|
|
113
|
+
* produce an arresting force within the iteration budget, and a ramp in N/m²
|
|
114
|
+
* that was gentle on a landing sheet was, on a 20 g particle at two substeps,
|
|
115
|
+
* 0.003 of the band per offset: the row sat at the floor while its multiplier
|
|
116
|
+
* was rebuilt from a quarter every substep, and the limb showed through. The
|
|
117
|
+
* ratio keeps the measured shape — a grazing contact ramps gently, a real
|
|
118
|
+
* interpenetration is at the ceiling within an iteration — and it keeps it
|
|
119
|
+
* for every mass, substep count and thickness. `β` still ramps friction.
|
|
120
|
+
* `MEASUREMENTS.md` §67.
|
|
121
|
+
*
|
|
103
122
|
* @author Alex Goldring
|
|
104
123
|
* @copyright Company Named Limited (c) 2026
|
|
105
124
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloth_contact_row.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/physics/cloth/solver/constraint/cloth_contact_row.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cloth_contact_row.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/physics/cloth/solver/constraint/cloth_contact_row.js"],"names":[],"mappings":"AAwIA;;;;;;;;GAQG;AACH,sDANW,YAAY,+BAEZ,MAAM,SACN,YAAY,GAAC,YAAY,QA+LnC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,mEARW,MAAM,SACN,MAAM,eACN,MAAM,eACN,MAAM,qBACN,MAAM,kBACN,MAAM,QAkDhB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,oEAPW,YAAY,GAAC,YAAY,QACzB,MAAM,eACN,MAAM,qBACN,MAAM,eACN,MAAM,QA2GhB;AAnfD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0EG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,kCAFU,MAAM,CAEqB;AAErC;;;;;GAKG;AACH,qCAFU,MAAM,CAE2B"}
|