@woosh/meep-engine 3.45.0 → 3.47.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/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/package.json +1 -1
- package/src/core/assert.d.ts.map +1 -1
- package/src/core/assert.js +5 -1
- package/src/core/binary/hash/XXH128Hash.d.ts +1 -37
- package/src/core/binary/hash/XXH128Hash.d.ts.map +1 -1
- package/src/core/binary/hash/XXH128Hash.js +4 -55
- package/src/core/binary/hash/XXH3_SECRET.d.ts +1 -12
- package/src/core/binary/hash/XXH3_SECRET.d.ts.map +1 -1
- package/src/core/binary/hash/XXH3_SECRET.js +4 -25
- package/src/core/binary/hash/crc32.d.ts +1 -15
- package/src/core/binary/hash/crc32.d.ts.map +1 -1
- package/src/core/binary/hash/crc32.js +4 -96
- package/src/core/binary/hash/xxh3_128.d.ts +1 -9
- package/src/core/binary/hash/xxh3_128.d.ts.map +1 -1
- package/src/core/binary/hash/xxh3_128.js +4 -341
- package/src/core/binary/hash/xxh3_64.d.ts +1 -8
- package/src/core/binary/hash/xxh3_64.d.ts.map +1 -1
- package/src/core/binary/hash/xxh3_64.js +4 -241
- package/src/core/binary/hash/xxh3_common.d.ts +1 -223
- package/src/core/binary/hash/xxh3_common.d.ts.map +1 -1
- package/src/core/binary/hash/xxh3_common.js +90 -476
- 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/collection/array/combine_hash.d.ts +6 -0
- package/src/core/collection/array/combine_hash.d.ts.map +1 -1
- package/src/core/collection/array/combine_hash.js +6 -0
- package/src/core/function/FunctionCompiler.js +2 -2
- package/src/core/geom/3d/mat4/m4_multiply.d.ts +3 -0
- package/src/core/geom/3d/mat4/m4_multiply.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_multiply.js +3 -0
- package/src/core/geom/3d/mat4/m4_multiply_f64.d.ts +30 -0
- package/src/core/geom/3d/mat4/m4_multiply_f64.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_multiply_f64.js +106 -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/ConicRay.js +2 -2
- 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/core/geom/Vector4.d.ts.map +1 -1
- package/src/core/geom/Vector4.js +8 -5
- package/src/core/math/hash/XXH128Hash.d.ts +38 -0
- package/src/core/math/hash/XXH128Hash.d.ts.map +1 -0
- package/src/core/math/hash/XXH128Hash.js +55 -0
- package/src/core/math/hash/XXH3_SECRET.d.ts +13 -0
- package/src/core/math/hash/XXH3_SECRET.d.ts.map +1 -0
- package/src/core/math/hash/XXH3_SECRET.js +25 -0
- package/src/core/math/hash/crc32.d.ts +16 -0
- package/src/core/math/hash/crc32.d.ts.map +1 -0
- package/src/core/math/hash/crc32.js +96 -0
- package/src/core/math/hash/xxh3_128.d.ts +10 -0
- package/src/core/math/hash/xxh3_128.d.ts.map +1 -0
- package/src/core/math/hash/xxh3_128.js +341 -0
- package/src/core/math/hash/xxh3_64.d.ts +9 -0
- package/src/core/math/hash/xxh3_64.d.ts.map +1 -0
- package/src/core/math/hash/xxh3_64.js +241 -0
- package/src/core/math/hash/xxh3_common.d.ts +224 -0
- package/src/core/math/hash/xxh3_common.d.ts.map +1 -0
- package/src/core/math/hash/xxh3_common.js +476 -0
- package/src/core/math/lookup/ParameterLookupTable.js +2 -2
- package/src/core/model/node-graph/node/NodeInstancePortReference.js +2 -2
- package/src/core/model/reactive/model/ReactiveBinaryExpression.js +2 -2
- package/src/core/model/reactive/model/terminal/ReactiveReference.js +2 -2
- package/src/engine/Engine.d.ts.map +1 -1
- package/src/engine/Engine.js +9 -4
- package/src/engine/asset/AssetDescription.js +2 -2
- package/src/engine/ecs/animation/Animation.js +2 -2
- package/src/engine/ecs/animation/AnimationClip.d.ts.map +1 -1
- package/src/engine/ecs/animation/AnimationClip.js +7 -5
- package/src/engine/ecs/gui/GUIElement.d.ts.map +1 -1
- package/src/engine/ecs/gui/GUIElement.js +7 -5
- package/src/engine/ecs/gui/hud/HeadsUpDisplay.js +2 -2
- package/src/engine/ecs/gui/position/ViewportPosition.d.ts.map +1 -1
- package/src/engine/ecs/gui/position/ViewportPosition.js +11 -7
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +10 -0
- package/src/engine/ecs/transform/Transform64.d.ts +1 -1
- package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform64.js +5 -4
- 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/animation/animator/AnimationClip.d.ts.map +1 -1
- package/src/engine/graphics/ecs/animation/animator/AnimationClip.js +8 -5
- package/src/engine/graphics/ecs/animation/animator/AnimationClipDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/AnimationNotification.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/AnimationNotificationDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationStateDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.d.ts.map +1 -1
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.js +8 -5
- 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/decal/v2/Decal.d.ts.map +1 -1
- package/src/engine/graphics/ecs/decal/v2/Decal.js +9 -8
- package/src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.d.ts.map +1 -1
- package/src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.js +9 -6
- 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/ParticipatingMedia.js +204 -204
- package/src/engine/graphics3/animation/AnimationClips.d.ts +5 -0
- package/src/engine/graphics3/animation/AnimationClips.d.ts.map +1 -1
- package/src/engine/graphics3/animation/AnimationClips.js +5 -0
- package/src/engine/grid/obstacle/GridObstacle.js +2 -2
- 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/intelligence/behavior/selector/WeightedElement.js +2 -2
- package/src/engine/interpolation/Interpolated.js +2 -2
- 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 +31 -11
- package/src/engine/network/NetworkSession.d.ts.map +1 -1
- package/src/engine/network/NetworkSession.js +453 -286
- package/src/engine/network/README.md +77 -27
- 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 +20 -6
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +33 -8
- package/src/engine/network/replication/Replicator.d.ts.map +1 -1
- package/src/engine/network/replication/Replicator.js +7 -1
- 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/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/ecs/Cloth.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/Cloth.js +7 -5
- package/src/engine/physics/cloth/ecs/ClothCollider.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothCollider.js +7 -5
- package/src/engine/physics/cloth/ecs/ClothDynamics.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothDynamics.js +20 -11
- package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidField.js +7 -5
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidComponent.js +19 -11
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +2 -2
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +2 -2
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +11 -7
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +11 -7
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/WakeFluidEffector.js +16 -9
- 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 +47 -14
- 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/AudioEventTrigger.js +192 -191
- 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/simulation/core/AcousticMedium.js +2 -2
- package/src/engine/sound/simulation/definition/AcousticDirectivity.js +2 -2
- package/src/engine/sound/simulation/definition/AcousticMaterial.d.ts.map +1 -1
- package/src/engine/sound/simulation/definition/AcousticMaterial.js +11 -7
- 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/BusDefinition.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/BusDefinition.js +5 -4
- package/src/engine/sound/sopra/definition/DuckingRule.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/DuckingRule.js +7 -5
- 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 +77 -17
- 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/MixerSnapshot.js +2 -2
- package/src/engine/sound/sopra/definition/ParameterDefinition.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/ParameterDefinition.js +7 -5
- package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.js +2 -2
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +4 -3
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +2 -2
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +3 -3
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.js +16 -9
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.js +2 -2
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts +1 -1
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +2 -2
- 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 -120
- 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 -128
- 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 +8 -3
- package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -1
- package/src/engine/sound/sopra/legacy/SoundEmitter.js +357 -352
- package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -1
- package/src/engine/sound/sopra/legacy/SoundTrack.js +281 -278
- 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/format/image/png/PNGReader.js +644 -644
- package/src/format/image/png/crc32.d.ts +1 -1
- package/src/format/image/png/crc32.js +7 -8
- package/src/shade/RENDERER_CONTRACT.md +6 -3
- package/src/shade/descriptor/binding/BindGroupLayoutDescriptor.js +2 -2
- package/src/shade/descriptor/binding/BindGroupLayoutEntry.d.ts.map +1 -1
- package/src/shade/descriptor/binding/BindGroupLayoutEntry.js +12 -8
- package/src/shade/descriptor/binding/StorageTextureBindingLayout.js +2 -2
- package/src/shade/descriptor/binding/TextureBindingLayout.js +2 -2
- package/src/shade/descriptor/blend/BlendComponent.js +2 -2
- package/src/shade/descriptor/pipeline/PipelineDescriptorBase.js +2 -2
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +2 -2
- package/src/shade/descriptor/pipeline/ProgrammableStage.js +2 -2
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +2 -2
- package/src/shade/descriptor/pipeline/render/ColorTargetState.js +2 -2
- package/src/shade/descriptor/pipeline/render/FragmentState.js +2 -2
- package/src/shade/descriptor/pipeline/render/PrimitiveState.js +2 -2
- package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.js +8 -5
- package/src/shade/descriptor/pipeline/render/VertexAttribute.js +2 -2
- package/src/shade/descriptor/texture/SamplerDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/texture/SamplerDescriptor.js +20 -12
- package/src/shade/descriptor/texture/TextureDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/texture/TextureDescriptor.js +11 -7
- 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/graph/BufferResourceDescriptor.d.ts.map +1 -1
- package/src/shade/device/graph/BufferResourceDescriptor.js +196 -193
- package/src/shade/device/graph/TextureResourceDescriptor.d.ts.map +1 -1
- package/src/shade/device/graph/TextureResourceDescriptor.js +178 -173
- 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/device/timing/profile/sgpt_read_header.js +1 -1
- package/src/shade/device/timing/profile/sgpt_read_records.js +1 -1
- package/src/shade/device/timing/profile/sgpt_write_header.js +1 -1
- package/src/shade/device/timing/profile/sgpt_write_record.js +1 -1
- package/src/shade/renderer/Renderer.d.ts +2 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +29 -55
- package/src/shade/renderer/binding/BufferBinding.js +2 -2
- 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/camera/Camera.js +2 -2
- package/src/shade/renderer/geometry/Attribute.js +2 -2
- package/src/shade/renderer/geometry/Geometry.js +2 -2
- package/src/shade/renderer/geometry/geometry_deduplicate_vertices.js +2 -2
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +2 -2
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_asset_id.js +13 -13
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_directory_block_checksum.js +41 -41
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_frame_checksum.js +41 -41
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_header_checksum.js +25 -25
- 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/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/StandardShadeMaterial.d.ts.map +1 -1
- package/src/shade/renderer/material/StandardShadeMaterial.js +13 -8
- 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/scene/optimization/geometry/internal/triangle_fingerprint_stream.d.ts.map +1 -1
- package/src/shade/renderer/scene/optimization/geometry/internal/triangle_fingerprint_stream.js +14 -5
- package/src/shade/renderer/scene/optimization/sampler2d_from_image_bitmap.js +1 -1
- package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ComputeShader.js +18 -2
- package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ImageShader.js +230 -218
- package/src/shade/renderer/shader/type/WGSLStructField.js +2 -2
- package/src/shade/renderer/shader/type/WebGPUArray.js +2 -2
- package/src/shade/renderer/shader/type/WebGPUStruct.d.ts.map +1 -1
- package/src/shade/renderer/shader/type/WebGPUStruct.js +9 -6
- package/src/shade/renderer/texture/ShadeTexture.d.ts.map +1 -1
- package/src/shade/renderer/texture/ShadeTexture.js +17 -10
- package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.js +2 -2
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts +4 -4
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.js +6 -6
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +46 -55
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts +3 -3
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.js +14 -4
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts +10 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +82 -40
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts +4 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +8 -4
- package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts +98 -86
- package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/shader_water_particles.js +440 -298
- package/src/view/common/HTMLElementCacheKey.d.ts.map +1 -1
- package/src/view/common/HTMLElementCacheKey.js +4 -3
- 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/view/minimap/MinimapMarker.js +2 -2
- package/src/engine/network/transport/Channel.js +0 -336
- package/src/engine/network/transport/ReliableCommandPipeline.js +0 -335
- package/src/engine/network/transport/fragments/FragmentAssembler.js +0 -350
- package/src/engine/network/transport/fragments/FragmentRetention.js +0 -191
- package/src/engine/network/transport/fragments/fragment_send.js +0 -157
- package/src/engine/network/transport/fragments/packet_size.js +0 -107
|
@@ -42,6 +42,15 @@ export class GPUBufferAllocator extends TransientResourcePool {
|
|
|
42
42
|
return buffer_compare(a, b);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
/**
|
|
46
|
+
* The usage the buffer was made with, kept on its record beside the size the pool keeps: the order
|
|
47
|
+
* and the match read both, and a `GPUBuffer`'s are native reads.
|
|
48
|
+
* @param {import("../pool/TransientResourcePool.js").PoolRecord} record
|
|
49
|
+
*/
|
|
50
|
+
describeRecord(record) {
|
|
51
|
+
record.usage = record.resource.usage;
|
|
52
|
+
}
|
|
53
|
+
|
|
45
54
|
sizeOf(buffer) {
|
|
46
55
|
return buffer.size;
|
|
47
56
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Total order over `{usage, size}`-bearing specs
|
|
2
|
+
* Total order over `{usage, size}`-bearing specs: a request descriptor, or a pool record.
|
|
3
3
|
*
|
|
4
4
|
* Sorted by size first (so the binary search lands on the smallest fitting buffer), then by usage
|
|
5
5
|
* *bit-count* (so the narrowest-usage buffer is preferred — wide-usage buffers map to slower driver
|
|
@@ -16,29 +16,30 @@ export function compare_memory_spec(a: {
|
|
|
16
16
|
usage: number;
|
|
17
17
|
size: number;
|
|
18
18
|
}): number;
|
|
19
|
+
/**
|
|
20
|
+
* A pool record as {@link GPUBufferAllocator} keeps one: the buffer, and its `size` and `usage` as they
|
|
21
|
+
* were when it entered the pool. Ordering and matching read those, never the buffer, whose `size` and
|
|
22
|
+
* `usage` are native reads and are visited by the binary search and the scan many times a frame.
|
|
23
|
+
*
|
|
24
|
+
* @typedef {import("../pool/TransientResourcePool.js").PoolRecord & {usage: number}} BufferPoolRecord
|
|
25
|
+
*/
|
|
19
26
|
/**
|
|
20
27
|
* Record ordering for the pool's sorted insert.
|
|
21
28
|
*
|
|
22
|
-
* @param {
|
|
23
|
-
* @param {
|
|
29
|
+
* @param {BufferPoolRecord} a
|
|
30
|
+
* @param {BufferPoolRecord} b
|
|
24
31
|
* @returns {number}
|
|
25
32
|
*/
|
|
26
|
-
export function buffer_compare(a:
|
|
27
|
-
resource: GPUBuffer;
|
|
28
|
-
}, b: {
|
|
29
|
-
resource: GPUBuffer;
|
|
30
|
-
}): number;
|
|
33
|
+
export function buffer_compare(a: BufferPoolRecord, b: BufferPoolRecord): number;
|
|
31
34
|
/**
|
|
32
35
|
* Approximate first-fit: the smallest pooled buffer with `size >= request` and a usage *superset* of
|
|
33
36
|
* the request, bounded against handing out a much-larger buffer.
|
|
34
37
|
*
|
|
35
|
-
* @param {
|
|
38
|
+
* @param {BufferPoolRecord[]} records sorted under {@link buffer_compare}
|
|
36
39
|
* @param {{size:number, usage:number}} descriptor
|
|
37
40
|
* @returns {number} index of a satisfying record, or -1
|
|
38
41
|
*/
|
|
39
|
-
export function buffer_find(records: {
|
|
40
|
-
resource: GPUBuffer;
|
|
41
|
-
}[], descriptor: {
|
|
42
|
+
export function buffer_find(records: BufferPoolRecord[], descriptor: {
|
|
42
43
|
size: number;
|
|
43
44
|
usage: number;
|
|
44
45
|
}): number;
|
|
@@ -63,4 +64,12 @@ export const ALLOW_LARGER_LIMIT_SCALE: number;
|
|
|
63
64
|
* @type {number}
|
|
64
65
|
*/
|
|
65
66
|
export const ALLOW_LARGER_LIMIT_FIXED: number;
|
|
67
|
+
/**
|
|
68
|
+
* A pool record as {@link GPUBufferAllocator } keeps one: the buffer, and its `size` and `usage` as they
|
|
69
|
+
* were when it entered the pool. Ordering and matching read those, never the buffer, whose `size` and
|
|
70
|
+
* `usage` are native reads and are visited by the binary search and the scan many times a frame.
|
|
71
|
+
*/
|
|
72
|
+
export type BufferPoolRecord = import("../pool/TransientResourcePool.js").PoolRecord & {
|
|
73
|
+
usage: number;
|
|
74
|
+
};
|
|
66
75
|
//# sourceMappingURL=buffer_pool_ops.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer_pool_ops.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/buffer/buffer_pool_ops.js"],"names":[],"mappings":"AAqBA;;;;;;;;;;GAUG;AACH,uCAJW;IAAC,KAAK,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAM,CAAA;CAAC,KAC3B;IAAC,KAAK,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAM,CAAA;CAAC,GACzB,MAAM,CAqBlB;AAED;;;;;;GAMG;AACH,kCAJW
|
|
1
|
+
{"version":3,"file":"buffer_pool_ops.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/buffer/buffer_pool_ops.js"],"names":[],"mappings":"AAqBA;;;;;;;;;;GAUG;AACH,uCAJW;IAAC,KAAK,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAM,CAAA;CAAC,KAC3B;IAAC,KAAK,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAM,CAAA;CAAC,GACzB,MAAM,CAqBlB;AAED;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,kCAJW,gBAAgB,KAChB,gBAAgB,GACd,MAAM,CAIlB;AAED;;;;;;;GAOG;AACH,qCAJW,gBAAgB,EAAE,cAClB;IAAC,IAAI,EAAC,MAAM,CAAC;IAAC,KAAK,EAAC,MAAM,CAAA;CAAC,GACzB,MAAM,CAmClB;AAED;;;GAGG;AACH,mDAFa,MAAM,CAIlB;AAtHD;;;GAGG;AAEH;;;;GAIG;AACH,uCAFU,MAAM,CAE0B;AAC1C;;;;GAIG;AACH,uCAFU,MAAM,CAE6B;;;;;;+BAuChC,OAAO,kCAAkC,EAAE,UAAU,GAAG;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC"}
|
|
@@ -20,7 +20,7 @@ export const ALLOW_LARGER_LIMIT_SCALE = 2;
|
|
|
20
20
|
export const ALLOW_LARGER_LIMIT_FIXED = 1024;
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
|
-
* Total order over `{usage, size}`-bearing specs
|
|
23
|
+
* Total order over `{usage, size}`-bearing specs: a request descriptor, or a pool record.
|
|
24
24
|
*
|
|
25
25
|
* Sorted by size first (so the binary search lands on the smallest fitting buffer), then by usage
|
|
26
26
|
* *bit-count* (so the narrowest-usage buffer is preferred — wide-usage buffers map to slower driver
|
|
@@ -52,37 +52,36 @@ export function compare_memory_spec(a, b) {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
|
-
*
|
|
55
|
+
* A pool record as {@link GPUBufferAllocator} keeps one: the buffer, and its `size` and `usage` as they
|
|
56
|
+
* were when it entered the pool. Ordering and matching read those, never the buffer, whose `size` and
|
|
57
|
+
* `usage` are native reads and are visited by the binary search and the scan many times a frame.
|
|
56
58
|
*
|
|
57
|
-
* @
|
|
58
|
-
* @param {{resource:GPUBuffer}} b
|
|
59
|
-
* @returns {number}
|
|
59
|
+
* @typedef {import("../pool/TransientResourcePool.js").PoolRecord & {usage: number}} BufferPoolRecord
|
|
60
60
|
*/
|
|
61
|
-
export function buffer_compare(a, b) {
|
|
62
|
-
return compare_memory_spec(a.resource, b.resource);
|
|
63
|
-
}
|
|
64
61
|
|
|
65
62
|
/**
|
|
66
|
-
*
|
|
67
|
-
*
|
|
63
|
+
* Record ordering for the pool's sorted insert.
|
|
64
|
+
*
|
|
65
|
+
* @param {BufferPoolRecord} a
|
|
66
|
+
* @param {BufferPoolRecord} b
|
|
68
67
|
* @returns {number}
|
|
69
68
|
*/
|
|
70
|
-
function
|
|
71
|
-
return compare_memory_spec(
|
|
69
|
+
export function buffer_compare(a, b) {
|
|
70
|
+
return compare_memory_spec(a, b);
|
|
72
71
|
}
|
|
73
72
|
|
|
74
73
|
/**
|
|
75
74
|
* Approximate first-fit: the smallest pooled buffer with `size >= request` and a usage *superset* of
|
|
76
75
|
* the request, bounded against handing out a much-larger buffer.
|
|
77
76
|
*
|
|
78
|
-
* @param {
|
|
77
|
+
* @param {BufferPoolRecord[]} records sorted under {@link buffer_compare}
|
|
79
78
|
* @param {{size:number, usage:number}} descriptor
|
|
80
79
|
* @returns {number} index of a satisfying record, or -1
|
|
81
80
|
*/
|
|
82
81
|
export function buffer_find(records, descriptor) {
|
|
83
82
|
const count = records.length;
|
|
84
83
|
|
|
85
|
-
let index = binarySearchHighIndex(records, descriptor,
|
|
84
|
+
let index = binarySearchHighIndex(records, descriptor, compare_memory_spec);
|
|
86
85
|
|
|
87
86
|
if (index >= count) {
|
|
88
87
|
return -1;
|
|
@@ -93,19 +92,19 @@ export function buffer_find(records, descriptor) {
|
|
|
93
92
|
}
|
|
94
93
|
|
|
95
94
|
for (; index < count; index++) {
|
|
96
|
-
const
|
|
95
|
+
const record = records[index];
|
|
97
96
|
|
|
98
97
|
if (
|
|
99
|
-
|
|
100
|
-
&& (
|
|
98
|
+
record.size > descriptor.size * ALLOW_LARGER_LIMIT_SCALE
|
|
99
|
+
&& (record.size - descriptor.size) > ALLOW_LARGER_LIMIT_FIXED
|
|
101
100
|
) {
|
|
102
101
|
// records are sorted by size: everything from here on is too large
|
|
103
102
|
break;
|
|
104
103
|
}
|
|
105
104
|
|
|
106
105
|
if (
|
|
107
|
-
(
|
|
108
|
-
&&
|
|
106
|
+
(record.usage & descriptor.usage) === descriptor.usage
|
|
107
|
+
&& record.size >= descriptor.size
|
|
109
108
|
) {
|
|
110
109
|
return index;
|
|
111
110
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { assert } from "../../../core/assert.js";
|
|
2
|
-
import {
|
|
2
|
+
import { hash_mix3 } from "../../../core/math/hash/hash_mix3.js";
|
|
3
3
|
import { m4_allocate } from "../../../core/geom/3d/mat4/m4_allocate.js";
|
|
4
4
|
import { m4_multiply } from "../../../core/geom/3d/mat4/m4_multiply.js";
|
|
5
5
|
import { plane3_normalize } from "../../../core/geom/3d/plane/plane3_normalize.js";
|
|
@@ -189,7 +189,7 @@ export class Camera {
|
|
|
189
189
|
}
|
|
190
190
|
|
|
191
191
|
hash() {
|
|
192
|
-
return
|
|
192
|
+
return hash_mix3(
|
|
193
193
|
computeHashFloat(this.#near),
|
|
194
194
|
computeHashFloat(this.#far),
|
|
195
195
|
computeHashFloat(this.#aspect),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { assert } from "../../../core/assert.js";
|
|
2
|
-
import {
|
|
2
|
+
import { hash_mix3 } from "../../../core/math/hash/hash_mix3.js";
|
|
3
3
|
import {
|
|
4
4
|
compute_binary_data_type_from_typed_array
|
|
5
5
|
} from "../../../core/collection/array/typed/compute_binary_data_type_from_typed_array.js";
|
|
@@ -89,7 +89,7 @@ export class Attribute {
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
hash() {
|
|
92
|
-
return
|
|
92
|
+
return hash_mix3(
|
|
93
93
|
this.spec.hash(),
|
|
94
94
|
this.count,
|
|
95
95
|
sparse_typed_array_hash(this.data, 0, this.data.length)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { assert } from "../../../core/assert.js";
|
|
2
|
-
import {
|
|
2
|
+
import { hash_mix3 } from "../../../core/math/hash/hash_mix3.js";
|
|
3
3
|
import { computeHashArray } from "../../../core/collection/array/computeHashArray.js";
|
|
4
4
|
import { isArrayEqual } from "../../../core/collection/array/isArrayEqual.js";
|
|
5
5
|
import { aabb3_from_v3_array } from "../../../core/geom/3d/aabb/aabb3_from_v3_array.js";
|
|
@@ -178,7 +178,7 @@ export class Geometry {
|
|
|
178
178
|
|
|
179
179
|
hash() {
|
|
180
180
|
|
|
181
|
-
return
|
|
181
|
+
return hash_mix3(
|
|
182
182
|
computeStringHash(this.name),
|
|
183
183
|
optional_hash(this.index),
|
|
184
184
|
computeHashArray(this.attributes, invokeObjectHash)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { reinterpret_float32_as_int32 } from "../../../core/binary/reinterpret_float32_as_int32.js";
|
|
2
|
-
import {
|
|
2
|
+
import { hash_mix2 } from "../../../core/math/hash/hash_mix2.js";
|
|
3
3
|
import { Attribute } from "./Attribute.js";
|
|
4
4
|
import { Geometry } from "./Geometry.js";
|
|
5
5
|
import { StandardAttributes } from "./StandardAttributes.js";
|
|
@@ -125,7 +125,7 @@ function vertex_hash(datas, strides, num_attrs, vertex_index) {
|
|
|
125
125
|
// canonicalize -0 to +0: they compare `===` in vertices_equal but have
|
|
126
126
|
// different bit patterns, which would scatter equal vertices across buckets
|
|
127
127
|
const value = data[base + s];
|
|
128
|
-
h =
|
|
128
|
+
h = hash_mix2(h, reinterpret_float32_as_int32(value === 0 ? 0 : value));
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
return h | 0;
|
|
@@ -2,7 +2,7 @@ import { assert } from "../../../../core/assert.js";
|
|
|
2
2
|
import { BinaryBuffer } from "../../../../core/binary/BinaryBuffer.js";
|
|
3
3
|
import { platform_compute_endianness } from "../../../../core/binary/platform_compute_endianness.js";
|
|
4
4
|
import { BinaryDataType } from "../../../../core/binary/type/BinaryDataType.js";
|
|
5
|
-
import {
|
|
5
|
+
import { hash_mix2 } from "../../../../core/math/hash/hash_mix2.js";
|
|
6
6
|
import { array_buffer_hash } from "../../../../core/collection/array/typed/array_buffer_hash.js";
|
|
7
7
|
import { is_array_buffer_equals } from "../../../../core/collection/array/typed/is_array_buffer_equals.js";
|
|
8
8
|
import { RowFirstTable } from "../../../../core/collection/table/RowFirstTable.js";
|
|
@@ -119,7 +119,7 @@ export class MeshletBatch {
|
|
|
119
119
|
hash() {
|
|
120
120
|
const meta = this.#metadata;
|
|
121
121
|
|
|
122
|
-
return
|
|
122
|
+
return hash_mix2(
|
|
123
123
|
this.#count,
|
|
124
124
|
array_buffer_hash(meta, 0, meta.byteLength)
|
|
125
125
|
);
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { xxh3_128 } from "../../../../../../core/
|
|
2
|
-
import { vgeo_asset_id_preimage } from "./vgeo_asset_id_preimage.js";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @param {BinaryBuffer} buffer whole file
|
|
6
|
-
* @returns {XXH128Hash} the asset's identity
|
|
7
|
-
*
|
|
8
|
-
* @author Alex Goldring
|
|
9
|
-
* @copyright Company Named Limited (c) 2026
|
|
10
|
-
*/
|
|
11
|
-
export function vgeo_compute_asset_id(buffer) {
|
|
12
|
-
return xxh3_128(vgeo_asset_id_preimage(buffer).raw_bytes);
|
|
13
|
-
}
|
|
1
|
+
import { xxh3_128 } from "../../../../../../core/math/hash/xxh3_128.js";
|
|
2
|
+
import { vgeo_asset_id_preimage } from "./vgeo_asset_id_preimage.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @param {BinaryBuffer} buffer whole file
|
|
6
|
+
* @returns {XXH128Hash} the asset's identity
|
|
7
|
+
*
|
|
8
|
+
* @author Alex Goldring
|
|
9
|
+
* @copyright Company Named Limited (c) 2026
|
|
10
|
+
*/
|
|
11
|
+
export function vgeo_compute_asset_id(buffer) {
|
|
12
|
+
return xxh3_128(vgeo_asset_id_preimage(buffer).raw_bytes);
|
|
13
|
+
}
|
package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_directory_block_checksum.js
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
import { xxh3_64 } from "../../../../../../core/
|
|
2
|
-
import { VGEO_DIRECTORY_BLOCK_RECORDS } from "../directory/VGEO_DIRECTORY_BLOCK_RECORDS.js";
|
|
3
|
-
import { VGEO_DIRECTORY_RECORD_SIZE } from "../directory/VGEO_DIRECTORY_RECORD_SIZE.js";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* The checksum of one 4 KB directory block. The final block is short whenever the record count is
|
|
7
|
-
* not a multiple of {@link VGEO_DIRECTORY_BLOCK_RECORDS}, and covers only the records that exist.
|
|
8
|
-
*
|
|
9
|
-
* The seed is taken from `asset_id`, which is why {@link vgeo_asset_id_preimage} zeroes this region
|
|
10
|
-
* before hashing: the two would otherwise be defined in terms of each other.
|
|
11
|
-
*
|
|
12
|
-
* @param {BinaryBuffer} buffer whole file
|
|
13
|
-
* @param {number} directory_offset
|
|
14
|
-
* @param {number} total_pages
|
|
15
|
-
* @param {number} block_index
|
|
16
|
-
* @param {bigint} asset_id_high64
|
|
17
|
-
* @returns {bigint}
|
|
18
|
-
*
|
|
19
|
-
* @author Alex Goldring
|
|
20
|
-
* @copyright Company Named Limited (c) 2026
|
|
21
|
-
*/
|
|
22
|
-
export function vgeo_compute_directory_block_checksum(
|
|
23
|
-
buffer,
|
|
24
|
-
directory_offset,
|
|
25
|
-
total_pages,
|
|
26
|
-
block_index,
|
|
27
|
-
asset_id_high64
|
|
28
|
-
) {
|
|
29
|
-
const first_record = block_index * VGEO_DIRECTORY_BLOCK_RECORDS;
|
|
30
|
-
|
|
31
|
-
const record_count = Math.min(VGEO_DIRECTORY_BLOCK_RECORDS, total_pages - first_record);
|
|
32
|
-
|
|
33
|
-
const start = directory_offset + first_record * VGEO_DIRECTORY_RECORD_SIZE;
|
|
34
|
-
|
|
35
|
-
const seed = asset_id_high64 ^ BigInt(block_index);
|
|
36
|
-
|
|
37
|
-
return xxh3_64(
|
|
38
|
-
buffer.raw_bytes.subarray(start, start + record_count * VGEO_DIRECTORY_RECORD_SIZE),
|
|
39
|
-
seed
|
|
40
|
-
);
|
|
41
|
-
}
|
|
1
|
+
import { xxh3_64 } from "../../../../../../core/math/hash/xxh3_64.js";
|
|
2
|
+
import { VGEO_DIRECTORY_BLOCK_RECORDS } from "../directory/VGEO_DIRECTORY_BLOCK_RECORDS.js";
|
|
3
|
+
import { VGEO_DIRECTORY_RECORD_SIZE } from "../directory/VGEO_DIRECTORY_RECORD_SIZE.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The checksum of one 4 KB directory block. The final block is short whenever the record count is
|
|
7
|
+
* not a multiple of {@link VGEO_DIRECTORY_BLOCK_RECORDS}, and covers only the records that exist.
|
|
8
|
+
*
|
|
9
|
+
* The seed is taken from `asset_id`, which is why {@link vgeo_asset_id_preimage} zeroes this region
|
|
10
|
+
* before hashing: the two would otherwise be defined in terms of each other.
|
|
11
|
+
*
|
|
12
|
+
* @param {BinaryBuffer} buffer whole file
|
|
13
|
+
* @param {number} directory_offset
|
|
14
|
+
* @param {number} total_pages
|
|
15
|
+
* @param {number} block_index
|
|
16
|
+
* @param {bigint} asset_id_high64
|
|
17
|
+
* @returns {bigint}
|
|
18
|
+
*
|
|
19
|
+
* @author Alex Goldring
|
|
20
|
+
* @copyright Company Named Limited (c) 2026
|
|
21
|
+
*/
|
|
22
|
+
export function vgeo_compute_directory_block_checksum(
|
|
23
|
+
buffer,
|
|
24
|
+
directory_offset,
|
|
25
|
+
total_pages,
|
|
26
|
+
block_index,
|
|
27
|
+
asset_id_high64
|
|
28
|
+
) {
|
|
29
|
+
const first_record = block_index * VGEO_DIRECTORY_BLOCK_RECORDS;
|
|
30
|
+
|
|
31
|
+
const record_count = Math.min(VGEO_DIRECTORY_BLOCK_RECORDS, total_pages - first_record);
|
|
32
|
+
|
|
33
|
+
const start = directory_offset + first_record * VGEO_DIRECTORY_RECORD_SIZE;
|
|
34
|
+
|
|
35
|
+
const seed = asset_id_high64 ^ BigInt(block_index);
|
|
36
|
+
|
|
37
|
+
return xxh3_64(
|
|
38
|
+
buffer.raw_bytes.subarray(start, start + record_count * VGEO_DIRECTORY_RECORD_SIZE),
|
|
39
|
+
seed
|
|
40
|
+
);
|
|
41
|
+
}
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
import { xxh3_64 } from "../../../../../../core/
|
|
2
|
-
import { VGEO_FRAME_HEADER_SIZE } from "../frame/VGEO_FRAME_HEADER_SIZE.js";
|
|
3
|
-
import { VGEO_FRAME_OFFSET } from "../frame/VGEO_FRAME_OFFSET.js";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* The identity-seeded checksum of one frame: xxh3-64 over the frame's bytes with its own `checksum`
|
|
7
|
-
* field cut out, seeded so that a well-formed frame of the wrong page or the wrong asset fails to
|
|
8
|
-
* verify rather than installing silently.
|
|
9
|
-
*
|
|
10
|
-
* The seed is taken from `asset_id`, which is why {@link vgeo_asset_id_preimage} zeroes this field
|
|
11
|
-
* before hashing: the two would otherwise be defined in terms of each other.
|
|
12
|
-
*
|
|
13
|
-
* @param {BinaryBuffer} buffer whole file
|
|
14
|
-
* @param {VGeoFrameExtent} frame
|
|
15
|
-
* @param {bigint} asset_id_low64
|
|
16
|
-
* @returns {bigint}
|
|
17
|
-
*
|
|
18
|
-
* @author Alex Goldring
|
|
19
|
-
* @copyright Company Named Limited (c) 2026
|
|
20
|
-
*/
|
|
21
|
-
export function vgeo_compute_frame_checksum(buffer, frame, asset_id_low64) {
|
|
22
|
-
const seed = asset_id_low64 ^ BigInt(frame.page_index);
|
|
23
|
-
|
|
24
|
-
const bytes = buffer.raw_bytes;
|
|
25
|
-
|
|
26
|
-
const covered = new Uint8Array(frame.extent - 8);
|
|
27
|
-
|
|
28
|
-
// frame bytes [0, 16)
|
|
29
|
-
covered.set(
|
|
30
|
-
bytes.subarray(frame.frame_offset, frame.frame_offset + VGEO_FRAME_OFFSET.CHECKSUM),
|
|
31
|
-
0
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
// frame bytes [24, extent)
|
|
35
|
-
covered.set(
|
|
36
|
-
bytes.subarray(frame.frame_offset + VGEO_FRAME_HEADER_SIZE, frame.frame_offset + frame.extent),
|
|
37
|
-
VGEO_FRAME_OFFSET.CHECKSUM
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
return xxh3_64(covered, seed);
|
|
41
|
-
}
|
|
1
|
+
import { xxh3_64 } from "../../../../../../core/math/hash/xxh3_64.js";
|
|
2
|
+
import { VGEO_FRAME_HEADER_SIZE } from "../frame/VGEO_FRAME_HEADER_SIZE.js";
|
|
3
|
+
import { VGEO_FRAME_OFFSET } from "../frame/VGEO_FRAME_OFFSET.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The identity-seeded checksum of one frame: xxh3-64 over the frame's bytes with its own `checksum`
|
|
7
|
+
* field cut out, seeded so that a well-formed frame of the wrong page or the wrong asset fails to
|
|
8
|
+
* verify rather than installing silently.
|
|
9
|
+
*
|
|
10
|
+
* The seed is taken from `asset_id`, which is why {@link vgeo_asset_id_preimage} zeroes this field
|
|
11
|
+
* before hashing: the two would otherwise be defined in terms of each other.
|
|
12
|
+
*
|
|
13
|
+
* @param {BinaryBuffer} buffer whole file
|
|
14
|
+
* @param {VGeoFrameExtent} frame
|
|
15
|
+
* @param {bigint} asset_id_low64
|
|
16
|
+
* @returns {bigint}
|
|
17
|
+
*
|
|
18
|
+
* @author Alex Goldring
|
|
19
|
+
* @copyright Company Named Limited (c) 2026
|
|
20
|
+
*/
|
|
21
|
+
export function vgeo_compute_frame_checksum(buffer, frame, asset_id_low64) {
|
|
22
|
+
const seed = asset_id_low64 ^ BigInt(frame.page_index);
|
|
23
|
+
|
|
24
|
+
const bytes = buffer.raw_bytes;
|
|
25
|
+
|
|
26
|
+
const covered = new Uint8Array(frame.extent - 8);
|
|
27
|
+
|
|
28
|
+
// frame bytes [0, 16)
|
|
29
|
+
covered.set(
|
|
30
|
+
bytes.subarray(frame.frame_offset, frame.frame_offset + VGEO_FRAME_OFFSET.CHECKSUM),
|
|
31
|
+
0
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
// frame bytes [24, extent)
|
|
35
|
+
covered.set(
|
|
36
|
+
bytes.subarray(frame.frame_offset + VGEO_FRAME_HEADER_SIZE, frame.frame_offset + frame.extent),
|
|
37
|
+
VGEO_FRAME_OFFSET.CHECKSUM
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
return xxh3_64(covered, seed);
|
|
41
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { BinaryBuffer } from "../../../../../../core/binary/BinaryBuffer.js";
|
|
2
|
-
import { xxh3_64 } from "../../../../../../core/
|
|
3
|
-
import { VGEO_HEADER_OFFSET } from "../header/VGEO_HEADER_OFFSET.js";
|
|
4
|
-
import { VGEO_HEADER_SIZE } from "../header/VGEO_HEADER_SIZE.js";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* xxh3-64 of the header with `header_checksum` zeroed. `asset_id` must already be final: the
|
|
8
|
-
* ordering is what keeps the two non-circular.
|
|
9
|
-
*
|
|
10
|
-
* @param {BinaryBuffer} buffer whole file
|
|
11
|
-
* @returns {bigint}
|
|
12
|
-
*
|
|
13
|
-
* @author Alex Goldring
|
|
14
|
-
* @copyright Company Named Limited (c) 2026
|
|
15
|
-
*/
|
|
16
|
-
export function vgeo_compute_header_checksum(buffer) {
|
|
17
|
-
const header = new BinaryBuffer();
|
|
18
|
-
|
|
19
|
-
header.fromArrayBuffer(buffer.raw_bytes.slice(0, VGEO_HEADER_SIZE).buffer);
|
|
20
|
-
|
|
21
|
-
header.position = VGEO_HEADER_OFFSET.HEADER_CHECKSUM;
|
|
22
|
-
header.writeUint64(0n);
|
|
23
|
-
|
|
24
|
-
return xxh3_64(header.raw_bytes);
|
|
25
|
-
}
|
|
1
|
+
import { BinaryBuffer } from "../../../../../../core/binary/BinaryBuffer.js";
|
|
2
|
+
import { xxh3_64 } from "../../../../../../core/math/hash/xxh3_64.js";
|
|
3
|
+
import { VGEO_HEADER_OFFSET } from "../header/VGEO_HEADER_OFFSET.js";
|
|
4
|
+
import { VGEO_HEADER_SIZE } from "../header/VGEO_HEADER_SIZE.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* xxh3-64 of the header with `header_checksum` zeroed. `asset_id` must already be final: the
|
|
8
|
+
* ordering is what keeps the two non-circular.
|
|
9
|
+
*
|
|
10
|
+
* @param {BinaryBuffer} buffer whole file
|
|
11
|
+
* @returns {bigint}
|
|
12
|
+
*
|
|
13
|
+
* @author Alex Goldring
|
|
14
|
+
* @copyright Company Named Limited (c) 2026
|
|
15
|
+
*/
|
|
16
|
+
export function vgeo_compute_header_checksum(buffer) {
|
|
17
|
+
const header = new BinaryBuffer();
|
|
18
|
+
|
|
19
|
+
header.fromArrayBuffer(buffer.raw_bytes.slice(0, VGEO_HEADER_SIZE).buffer);
|
|
20
|
+
|
|
21
|
+
header.position = VGEO_HEADER_OFFSET.HEADER_CHECKSUM;
|
|
22
|
+
header.writeUint64(0n);
|
|
23
|
+
|
|
24
|
+
return xxh3_64(header.raw_bytes);
|
|
25
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gpu_test.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/test/gpu_test.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gpu_test.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/test/gpu_test.js"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,sCAJW,MAAM,cAEL,QAAQ,IAAI,CAAC,CAyDxB"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { WebGPUExtensionType } from "../../../descriptor/WebGPUExtensionType.js";
|
|
2
|
+
import { SHADE_DEVICE_FLOOR } from "../../../device/SHADE_DEVICE_FLOOR.js";
|
|
3
|
+
import { shade_device_floor_unmet } from "../../../device/shade_device_floor_unmet.js";
|
|
4
|
+
import { ShadeDeviceFailure } from "../../../device/ShadeDeviceFailure.js";
|
|
2
5
|
import { GraphicsContext } from "../../GraphicsContext.js";
|
|
3
6
|
|
|
4
7
|
/**
|
|
@@ -36,32 +39,26 @@ export async function gpu_test(description, body) {
|
|
|
36
39
|
//
|
|
37
40
|
// console.warn('adapter limits:', adapter.limits);
|
|
38
41
|
|
|
39
|
-
const
|
|
42
|
+
const unmet = shade_device_floor_unmet(adapter);
|
|
40
43
|
|
|
41
|
-
if (
|
|
42
|
-
throw
|
|
44
|
+
if (unmet.length > 0) {
|
|
45
|
+
throw ShadeDeviceFailure.below_floor(unmet);
|
|
43
46
|
}
|
|
44
47
|
|
|
45
48
|
const device = await adapter.requestDevice({
|
|
46
49
|
requiredLimits: {
|
|
47
|
-
|
|
48
|
-
maxColorAttachmentBytesPerSample: 32,
|
|
50
|
+
...SHADE_DEVICE_FLOOR.limits,
|
|
49
51
|
|
|
50
52
|
/*
|
|
51
53
|
grab the largest buffer limit we can get, default limits are super-low
|
|
52
54
|
*/
|
|
53
55
|
maxBufferSize: adapter.limits.maxBufferSize,
|
|
54
56
|
maxStorageBufferBindingSize: adapter.limits.maxStorageBufferBindingSize,
|
|
55
|
-
|
|
56
|
-
maxStorageBuffersPerShaderStage: 10,
|
|
57
57
|
},
|
|
58
58
|
requiredFeatures: [
|
|
59
|
+
...SHADE_DEVICE_FLOOR.features,
|
|
59
60
|
// required for timers
|
|
60
61
|
WebGPUExtensionType.TimestampQuery,
|
|
61
|
-
// required for indirect draw that's used extensively in Shade
|
|
62
|
-
WebGPUExtensionType.IndirectFirstInstance,
|
|
63
|
-
// required for OIT
|
|
64
|
-
WebGPUExtensionType.Float32Blendable,
|
|
65
62
|
]
|
|
66
63
|
});
|
|
67
64
|
|
|
@@ -13,7 +13,7 @@ export class TinyGltf {
|
|
|
13
13
|
* @readonly
|
|
14
14
|
* @type {TextureFormat}
|
|
15
15
|
*/
|
|
16
|
-
static readonly "__#
|
|
16
|
+
static readonly "__#267@#UNCOMPRESSED_TARGET": TextureFormat;
|
|
17
17
|
/**
|
|
18
18
|
* @param {AssetManager} assetManager
|
|
19
19
|
* @param {AssetRequestScope} [scope]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StandardShadeMaterial.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/material/StandardShadeMaterial.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StandardShadeMaterial.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/material/StandardShadeMaterial.js"],"names":[],"mappings":"AAQA;;;;GAIG;AAEH;IACI;;;OAGG;IACH,gBAFU,YAAY,CAEP;IAEf;;;OAGG;IACH,eAFU,KAAK,CAEsB;IAErC;;OAEG;IACH,gBAFU,YAAY,CAEP;IAEf;;;;;;OAMG;IACH,aAFU,YAAY,CAEV;IAEZ;;OAEG;IACH,kBAFU,YAAY,CAEL;IAEjB;;;;;;;;OAQG;IACH,UAFU,mBAAmB,GAAC,SAAS,CAE9B;IAET;;;OAGG;IACH,kBAFU,MAAM,CAEK;IAErB;;;OAGG;IACH,iBAFU,MAAM,CAEI;IAEpB;;;;;;;;OAQG;IACH,qBAFU,MAAM,CAEQ;IAExB;;;;;;OAMG;IACH,YAFU,MAAM,CAEC;IAEjB;;;;;;;;;;;OAWG;IACH,QAFU,mBAAmB,GAAC,IAAI,CAEpB;IAEd;;;OAGG;IACH,iBAFU,KAAK,CAE4B;IAE3C;;;OAGG;IACH,iBAFU,cAAc,CAEmB;IAW3C;;;;;OAKG;IACH,YAFW,qBAAqB,QAoB/B;IAED;;;OAGG;IACH,SAFa,qBAAqB,CAQjC;IAiBD;;;;OAIG;IACH,cAHW,qBAAqB,GACnB,OAAO,CA+BnB;IAGL;;;OAGG;IACH,kCAFU,OAAO,CAEsC;CANtD;2BA3MY,OAAO,4BAA4B,EAAE,YAAY;kCACjD,OAAO,2CAA2C,EAAE,mBAAmB;kCACvE,OAAO,kCAAkC,EAAE,mBAAmB;8BAL7C,oBAAoB;sBAJ5B,8BAA8B;2BACzB,4CAA4C"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hash_mix2 } from "../../../core/math/hash/hash_mix2.js";
|
|
2
|
+
import { hash_mix3 } from "../../../core/math/hash/hash_mix3.js";
|
|
2
3
|
import { Color } from "../../../core/color/Color.js";
|
|
3
4
|
import LinearModifier from "../../../core/model/stat/LinearModifier.js";
|
|
4
5
|
import { optional_equality } from "../../../core/model/object/optional_equality.js";
|
|
@@ -160,13 +161,17 @@ export class StandardShadeMaterial extends ShadeMaterial {
|
|
|
160
161
|
}
|
|
161
162
|
|
|
162
163
|
hash() {
|
|
163
|
-
return
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
164
|
+
return hash_mix2(
|
|
165
|
+
hash_mix3(
|
|
166
|
+
hash_mix3(
|
|
167
|
+
super.hash(),
|
|
168
|
+
this.diffuse_color.hash(),
|
|
169
|
+
optional_hash(this.texture_albedo)
|
|
170
|
+
),
|
|
171
|
+
optional_hash(this.texture_normal),
|
|
172
|
+
optional_hash(this.texture_orm)
|
|
173
|
+
),
|
|
174
|
+
optional_hash(this.texture_emissive)
|
|
170
175
|
);
|
|
171
176
|
}
|
|
172
177
|
|