@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
|
@@ -38,6 +38,13 @@ export class Renderer {
|
|
|
38
38
|
* @type {ShadeTransparencyMode}
|
|
39
39
|
*/
|
|
40
40
|
transparency_mode: ShadeTransparencyMode;
|
|
41
|
+
/**
|
|
42
|
+
* How the exposed scene colour becomes display colour, on every output. An SDR and an HDR display run the same
|
|
43
|
+
* mode, so a scene looks alike on both; see {@link ShadeToneMappingMode}. Read every frame, so it can be flipped
|
|
44
|
+
* at runtime. A mode not in use at {@link initialize} compiles its pass on the first frame that draws with it.
|
|
45
|
+
* @type {ShadeToneMappingMode}
|
|
46
|
+
*/
|
|
47
|
+
tone_mapping_mode: ShadeToneMappingMode;
|
|
41
48
|
/**
|
|
42
49
|
* Switches of the AVBOIT mode, read every frame while {@link transparency_mode} selects it.
|
|
43
50
|
* @type {AVBOITSettings}
|
|
@@ -83,6 +90,10 @@ export class Renderer {
|
|
|
83
90
|
* @type {boolean}
|
|
84
91
|
*/
|
|
85
92
|
feature_virtual_shadow_maps: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* @returns {ShaderSwitchSet} see {@link #shader_switches}
|
|
95
|
+
*/
|
|
96
|
+
get shader_switches(): ShaderSwitchSet;
|
|
86
97
|
set shadow_virtual_page_budget(v: number);
|
|
87
98
|
get shadow_virtual_page_budget(): number;
|
|
88
99
|
/**
|
|
@@ -421,6 +432,8 @@ export class Renderer {
|
|
|
421
432
|
*/
|
|
422
433
|
get nss(): NSS;
|
|
423
434
|
/**
|
|
435
|
+
* Rejects with a {@link ShadeDeviceFailure} when there is no usable device — no WebGPU, no
|
|
436
|
+
* adapter, an adapter below {@link SHADE_DEVICE_FLOOR}, or a refused device request.
|
|
424
437
|
*
|
|
425
438
|
* @param {Object} [options]
|
|
426
439
|
* @param {GPUCanvasContext} [options.context] Optional, if not provided - one will be created.
|
|
@@ -432,6 +445,22 @@ export class Renderer {
|
|
|
432
445
|
device?: GPUDevice;
|
|
433
446
|
pixelRatio?: number;
|
|
434
447
|
}): Promise<void>;
|
|
448
|
+
/**
|
|
449
|
+
* Offer the pipelines a frame draws with — see {@link PipelineEnquiry}. {@link initialize}
|
|
450
|
+
* compiles the answer off the main thread, and {@link render} draws nothing until it is in.
|
|
451
|
+
*
|
|
452
|
+
* Each subsystem is asked only when the feature flag that runs it is on, so the answer follows the
|
|
453
|
+
* features as they are set at that moment. It covers the default renderer: the opaque raster,
|
|
454
|
+
* shading, IBL, ambient occlusion, TAA, sharpening, bloom, exposure and the tonemap. Everything
|
|
455
|
+
* else is made the old way, by the first frame that draws with it: the features that are off by
|
|
456
|
+
* default (ReSTIR's passes, SSR, depth of field, motion blur, NSS, path tracing), the indirect
|
|
457
|
+
* lighting modes other than IBL, a feature turned on after {@link initialize}, and whatever a
|
|
458
|
+
* scene's content brings — shadow casters, transparent and alpha-tested materials, volumes,
|
|
459
|
+
* particles.
|
|
460
|
+
*
|
|
461
|
+
* @param {PipelineEnquiry} enquiry
|
|
462
|
+
*/
|
|
463
|
+
enquirePipelines(enquiry: PipelineEnquiry): void;
|
|
435
464
|
/**
|
|
436
465
|
* Release everything {@link initialize} built, in reverse.
|
|
437
466
|
*
|
|
@@ -472,9 +501,11 @@ export class Renderer {
|
|
|
472
501
|
* simulation, the animation tick and exposure adaptation all step by it. Zero by default, which
|
|
473
502
|
* draws the current state and moves nothing; a fixed fraction of a second here instead would run
|
|
474
503
|
* the simulation at that rate no matter what the caller's clock was doing.
|
|
475
|
-
* @returns {boolean} whether a frame was encoded and submitted. False
|
|
476
|
-
*
|
|
477
|
-
*
|
|
504
|
+
* @returns {boolean} whether a frame was encoded and submitted. False when there is nothing to
|
|
505
|
+
* draw with — the device was lost, or the renderer destroyed — and while a pipeline prepared
|
|
506
|
+
* ahead of use is still compiling: the ones {@link initialize} asked for, or a template
|
|
507
|
+
* prewarmed at a level load. Frames the GPU has not finished yet neither
|
|
508
|
+
* hold this one back nor make it return false.
|
|
478
509
|
*/
|
|
479
510
|
render(camera: PerspectiveCamera, scene: Scene, time_delta_seconds?: number): boolean;
|
|
480
511
|
/**
|
|
@@ -508,7 +539,9 @@ export type Scene = import("./scene/Scene.js").Scene;
|
|
|
508
539
|
import { SceneManager } from "./scene/SceneManager.js";
|
|
509
540
|
import { ShadeIndirectLightingMode } from "./ShadeIndirectLightingMode.js";
|
|
510
541
|
import { ShadeTransparencyMode } from "./ShadeTransparencyMode.js";
|
|
542
|
+
import { ShadeToneMappingMode } from "./ShadeToneMappingMode.js";
|
|
511
543
|
import { AVBOITSettings } from "./rasterize/native/avboit/AVBOITSettings.js";
|
|
544
|
+
import { ShaderSwitchSet } from "./shader/compiler/ShaderSwitchSet.js";
|
|
512
545
|
import { MotionBlur } from "./postprocess/motion_blur/MotionBlur.js";
|
|
513
546
|
import { DepthOfField } from "./postprocess/dof/raymarch/DepthOfField.js";
|
|
514
547
|
import { DepthOfFieldU } from "./postprocess/dof/gather/DepthOfFieldU.js";
|
|
@@ -523,5 +556,6 @@ import { ReSTIRDI } from "./restir/di/ReSTIRDI.js";
|
|
|
523
556
|
import { GPUParticleSystem } from "./particles/GPUParticleSystem.js";
|
|
524
557
|
import { ShadeUpscalerType } from "./ShadeUpscalerType.js";
|
|
525
558
|
import { NSS } from "./postprocess/nss/NSS.js";
|
|
559
|
+
import { PipelineEnquiry } from "../device/pipeline/PipelineEnquiry.js";
|
|
526
560
|
import { AccumulatingPathTracer } from "./path_tracer/accumulating/AccumulatingPathTracer.js";
|
|
527
561
|
//# sourceMappingURL=Renderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"AAsIA;IAOI,0BAEC;IAED;;OAEG;IACH,0BAAQ;IAER;;;;;;OAMG;IACH,kDAEC;IAED;;OAEG;IACH,kBAAO;IAYP;;;OAGG;IACH,2BAEC;IAaD,wCAGC;IAED,uCAEC;IAED;;;;OAIG;IACH,wBAFU,yBAAyB,CAEoB;IAEvD;;;;;;;OAOG;IACH,mBAFU,qBAAqB,CAEkB;IAEjD;;;;;OAKG;IACH,mBAFU,oBAAoB,CAEe;IAE7C;;;OAGG;IACH,QAFU,cAAc,CAEM;IAE9B;;;;;;;;;OASG;IACH,2BAFU,OAAO,CAEiB;IAElC,6BAA4B;IAC5B,8BAA4B;IAC5B;;;;OAIG;IACH,mCAAkC;IAClC;;;;;;;OAOG;IACH,mCAFU,OAAO,CAEyB;IAW1C,oCAIC;IAED,mCAEC;IAYD,oCAIC;IAED,mCAEC;IAED;;;;;;OAMG;IACH,6BAFU,OAAO,CAEmB;IAapC;;OAEG;IACH,uCAEC;IAmBD,0CAIC;IAED,yCAEC;IAED;;;;;OAKG;IACH,yBAFU,MAAM,CAEY;IAS5B,+CAKC;IAED,8CAEC;IAED,+BAA6B;IAC7B,4CAA0C;IAkB1C,qCAKC;IArBD;;;;;;;;;;OAUG;IACH,oCAGC;IASD;;;;;;;OAOG;IACH,0BAFU,OAAO,CAEe;IAQhC;;;;;OAKG;IACH,oCAOC;IAjBD,mCAEC;IAiBD;;;;;;;;;OASG;IACH,6BAFU,OAAO,CAEmB;IAWpC;;;;;OAKG;IACH,8BAA+C;IAE/C;;;;;;;;OAQG;IACH,6BAFU,OAAO,CAEmB;IAEpC;;;;;;;;;;;;;;OAcG;IACH,8BAFU,OAAO,CAEoB;IAErC;;;;;;;;;;OAUG;IACH,qBAFU,OAAO,CAEW;IAU5B;;;;;OAKG;IACH,wBAA0C;IAE1C;;;;;;;;OAQG;IACH,eAFU,UAAU,GAAC,QAAQ,CAEF;IAU3B;;;;OAIG;IACH,gCAAwD;IAExD;;;OAGG;IACH,4BAFU,OAAO,CAEiB;IAKlC;;;OAGG;IACH,yBAEC;IAOD;;;OAGG;IACH,gCAEC;IAcD;;;;;;;;;OASG;IACH,qBAA+B;IAE/B;;;;;;;;;;OAUG;IACH,qBAA+B;IAgB/B;;;OAGG;IACH,yCAeC;IAED;;;OAGG;IACH,wCAEC;IA0BD;;;OAGG;IACH,iCAEC;IAED;;;;OAIG;IACH,2BAEC;IAQD;;;OAGG;IACH,+CAIC;IAED;;;OAGG;IACH,gDAIC;IAwCD;;;OAGG;IACH,+BAcC;IA1BD;;;OAGG;IACH,0BAEC;IAsBD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,iBAFU,iBAAiB,GAAC,IAAI,CAET;IAEvB;;OAEG;IACH;;;;;;;;;;;;;;OAcG;IACH,yBAHW,eAAe,GACb,eAAe,CAI3B;IAED;;;;;OAKG;IACH,4BAHW,eAAe,GACb,OAAO,CAInB;IAED;;;OAGG;IACH,uBAHW,UAAU,GACR,MAAM,CAIlB;IAUD;;;;;;;;;;;;;;;;;OAiBG;IACH,kCAHW,iBAAiB,GACf,iBAAiB,CAsB7B;IAED;;;;;OAKG;IACH,qCAHW,iBAAiB,GACf,OAAO,CAYnB;IAED;;OAEG;IACH,8BAFa,MAAM,CAIlB;IAgBD;;;;OAIG;IACH,yBAHW,KAAK,GACJ,gBAAgB,CAW3B;IAED;;;OAGG;IACH,6BAYC;IAED;;;;OAIG;IACH,gCAHW,KAAK,GACH,2BAA2B,CAcvC;IAGD;;;OAGG;IACH,kBAFW,KAAK,QAyBf;IA8OD,oGAAoG;IACpG,kDAA2C;IAO3C;;;;OAIG;IACH,0BAEC;IAiBD;;;;;;OAMG;IACH,qBAHW,eAAe,GACb,iBAAiB,CAW7B;IAgBD;;;;;;OAMG;IACH,cAFU,iBAAiB,CAEU;IAErC;;;;;;OAMG;IACH,eAgBC;IAiFD;;;;;;;;OAQG;IACH;QAJsC,OAAO;QACd,MAAM;QACT,UAAU,GAA3B,MAAM;sBAuMhB;IAED;;;;;;;;;;;;;;OAcG;IACH,0BAFW,eAAe,QA6DzB;IAqDD;;;;;;;;;;;;;;;;;OAiBG;IACH,WAFa,IAAI,CAuChB;IAgCD,4BAwBC;IAqID;;;;;OAKG;IACH,UAHW,MAAM,KACN,MAAM,QAgBhB;IAoFD,0CAMC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,eAZW,iBAAiB,SACjB,KAAK,uBACL,MAAM,GAIJ,OAAO,CAuCnB;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,yBARW,iBAAiB,SACjB,KAAK,sBACL,MAAM,UACN,iBAAiB,GACf,OAAO,CAiBnB;;CA6iCJ;+BA9lGY,OAAO,8CAA8C,EAAE,gBAAgB;gCACvE,OAAO,+CAA+C,EAAE,iBAAiB;gCACzE,OAAO,+BAA+B,EAAE,iBAAiB;8BACzD,OAAO,gCAAgC,EAAE,eAAe;gCACxD,OAAO,gDAAgD,EAAE,iBAAiB;8BAC1E,OAAO,4BAA4B,EAAE,eAAe;oBACpD,OAAO,kBAAkB,EAAE,KAAK;6BA9BhB,yBAAyB;0CACZ,gCAAgC;sCAEpC,4BAA4B;qCAD7B,2BAA2B;+BAEjC,6CAA6C;gCAC5C,sCAAsC;2BAhC3C,yCAAyC;6BAFvC,4CAA4C;8BAD3C,2CAA2C;4BAmD7C,uBAAuB;gCA9DnB,sBAAsB;oBA3ClC,4BAA4B;kCAsGd,gCAAgC;2BA5EvC,2BAA2B;iCA0ErB,0CAA0C;4CA5D/B,+DAA+D;yBA0ClF,yBAAyB;kCAChB,kCAAkC;kCAUlC,wBAAwB;oBAnCtC,0BAA0B;gCA7Cd,uCAAuC;uCAmChC,sDAAsD"}
|
|
@@ -11,14 +11,21 @@ import {
|
|
|
11
11
|
import { FrameGraph } from "../../engine/graphics/render/frame_graph/FrameGraph.js";
|
|
12
12
|
import { TextureDescriptor } from "../descriptor/texture/TextureDescriptor.js";
|
|
13
13
|
import { WebGPUExtensionType } from "../descriptor/WebGPUExtensionType.js";
|
|
14
|
+
import { SHADE_DEVICE_FLOOR } from "../device/SHADE_DEVICE_FLOOR.js";
|
|
15
|
+
import { shade_device_floor_unmet } from "../device/shade_device_floor_unmet.js";
|
|
14
16
|
import { ShadeDeviceFailure } from "../device/ShadeDeviceFailure.js";
|
|
17
|
+
import { PipelineEnquiry } from "../device/pipeline/PipelineEnquiry.js";
|
|
15
18
|
import { ShadeGPUCommandContext } from "../device/ShadeGPUCommandContext.js";
|
|
16
19
|
import { CameraManager } from "./camera/CameraManager.js";
|
|
17
20
|
import { shader_background } from "./deferred/shader_background.js";
|
|
18
21
|
import { shader_composite_volumetrics } from "./deferred/shader_composite_volumetrics.js";
|
|
19
22
|
import { shader_deferred_main, shader_deferred_main_restir } from "./deferred/shader_deferred_main.js";
|
|
20
23
|
import { shader_tonemap_HDR } from "./deferred/shader_tonemap_HDR.js";
|
|
24
|
+
import { shader_tonemap_HDR_none } from "./deferred/shader_tonemap_HDR_none.js";
|
|
25
|
+
import { shader_tonemap_HDR_pbr_neutral } from "./deferred/shader_tonemap_HDR_pbr_neutral.js";
|
|
21
26
|
import { shader_tonemap_LDR } from "./deferred/shader_tonemap_LDR.js";
|
|
27
|
+
import { shader_tonemap_LDR_none } from "./deferred/shader_tonemap_LDR_none.js";
|
|
28
|
+
import { shader_tonemap_LDR_pbr_neutral } from "./deferred/shader_tonemap_LDR_pbr_neutral.js";
|
|
22
29
|
import { FrameContext } from "./extension/FrameContext.js";
|
|
23
30
|
import { FramePhase } from "./extension/FramePhase.js";
|
|
24
31
|
import { GBufferTextures } from "./extension/GBufferTextures.js";
|
|
@@ -38,9 +45,15 @@ import { GPULightProbeVolumeRenderer } from "./global_illumination/lpv/bake/GPUL
|
|
|
38
45
|
import { shader_diffuse_LPV } from "./global_illumination/lpv/shader_diffuse_LPV.js";
|
|
39
46
|
import { shader_resolve_indirect_lighting } from "./global_illumination/shader_resolve_indirect_lighting.js";
|
|
40
47
|
import { GraphicsContext } from "./GraphicsContext.js";
|
|
41
|
-
import {
|
|
48
|
+
import {
|
|
49
|
+
enquire_build_light_clusters_pipelines,
|
|
50
|
+
graph_build_light_clusters
|
|
51
|
+
} from "./light/cluster/graph_build_light_clusters.js";
|
|
42
52
|
import { AccumulatingPathTracer } from "./path_tracer/accumulating/AccumulatingPathTracer.js";
|
|
43
|
-
import {
|
|
53
|
+
import {
|
|
54
|
+
enquire_postprocess_bloom_pipelines,
|
|
55
|
+
graph_postprocess_bloom
|
|
56
|
+
} from "./postprocess/bloom/graph_postprocess_bloom.js";
|
|
44
57
|
import { shader_ffx_rcas } from "./postprocess/cas/shader_ffx_rcas.js";
|
|
45
58
|
import { DepthOfFieldU } from "./postprocess/dof/gather/DepthOfFieldU.js";
|
|
46
59
|
import { DepthOfField } from "./postprocess/dof/raymarch/DepthOfField.js";
|
|
@@ -50,7 +63,10 @@ import { NSS } from "./postprocess/nss/NSS.js";
|
|
|
50
63
|
import { PostProcess } from "./postprocess/PostProcess.js";
|
|
51
64
|
import { shader_depth_occlusion_clip } from "./postprocess/taa/shader_depth_occlusion_clip.js";
|
|
52
65
|
import { TAA } from "./postprocess/taa/TAA.js";
|
|
53
|
-
import {
|
|
66
|
+
import {
|
|
67
|
+
enquire_per_object_velocity_pipelines,
|
|
68
|
+
graph_add_per_object_velocity
|
|
69
|
+
} from "./postprocess/velocity/graph_add_per_object_velocity.js";
|
|
54
70
|
import { shader_debug_velocity } from "./postprocess/velocity/shader_debug_velocity.js";
|
|
55
71
|
import {
|
|
56
72
|
graph_rasterize_meshes_transparent_oit
|
|
@@ -64,19 +80,24 @@ import {
|
|
|
64
80
|
import {
|
|
65
81
|
viz_rasterization_opaque_pass_descriptor
|
|
66
82
|
} from "./rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js";
|
|
83
|
+
import { CullPolicy } from "./rasterize/bucket/construct_primitive_state.js";
|
|
67
84
|
import { RasterizationJob } from "./rasterize/RasterizationJob.js";
|
|
68
|
-
import { graph_rasterize_scene } from "./rasterize/standard/graph_rasterize_scene.js";
|
|
85
|
+
import { enquire_rasterize_scene_pipelines, graph_rasterize_scene } from "./rasterize/standard/graph_rasterize_scene.js";
|
|
69
86
|
import { ReSTIRDI } from "./restir/di/ReSTIRDI.js";
|
|
70
87
|
import { GPUParticleSystem } from "./particles/GPUParticleSystem.js";
|
|
71
88
|
import { SceneManager } from "./scene/SceneManager.js";
|
|
72
89
|
import { ShadeIndirectLightingMode } from "./ShadeIndirectLightingMode.js";
|
|
90
|
+
import { ShadeToneMappingMode } from "./ShadeToneMappingMode.js";
|
|
73
91
|
import { ShadeTransparencyMode } from "./ShadeTransparencyMode.js";
|
|
74
92
|
import { AVBOITSettings } from "./rasterize/native/avboit/AVBOITSettings.js";
|
|
93
|
+
import { ShaderSwitchSet } from "./shader/compiler/ShaderSwitchSet.js";
|
|
75
94
|
import { graph_image_pass } from "./shader/graph/graph_image_pass.js";
|
|
76
95
|
import { graph_import_buffer } from "./shader/graph/graph_import_buffer.js";
|
|
77
96
|
import { graph_import_texture } from "./shader/graph/graph_import_texture.js";
|
|
78
97
|
import { ShadeUpscalerType } from "./ShadeUpscalerType.js";
|
|
79
98
|
import { DEFAULT_SHADOWMAP_UPDATE_BUDGET } from "./shadow/map/DEFAULT_SHADOWMAP_UPDATE_BUDGET.js";
|
|
99
|
+
import { SHADOW_DIRECTIONAL_TECHNIQUE } from "./shadow/map/shader/SHADOW_DIRECTIONAL_TECHNIQUE.js";
|
|
100
|
+
import { ShadowDirectionalTechnique } from "./shadow/map/ShadowDirectionalTechnique.js";
|
|
80
101
|
import { SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT } from "./shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.js";
|
|
81
102
|
import { DEFAULT_VSM_FIRST_TEXEL_SIZE } from "./shadow/vsm/DEFAULT_VSM_FIRST_TEXEL_SIZE.js";
|
|
82
103
|
import { DEFAULT_VSM_PAGE_BUDGET } from "./shadow/vsm/DEFAULT_VSM_PAGE_BUDGET.js";
|
|
@@ -198,6 +219,14 @@ export class Renderer {
|
|
|
198
219
|
*/
|
|
199
220
|
transparency_mode = ShadeTransparencyMode.AVBOIT;
|
|
200
221
|
|
|
222
|
+
/**
|
|
223
|
+
* How the exposed scene colour becomes display colour, on every output. An SDR and an HDR display run the same
|
|
224
|
+
* mode, so a scene looks alike on both; see {@link ShadeToneMappingMode}. Read every frame, so it can be flipped
|
|
225
|
+
* at runtime. A mode not in use at {@link initialize} compiles its pass on the first frame that draws with it.
|
|
226
|
+
* @type {ShadeToneMappingMode}
|
|
227
|
+
*/
|
|
228
|
+
tone_mapping_mode = ShadeToneMappingMode.GT7;
|
|
229
|
+
|
|
201
230
|
/**
|
|
202
231
|
* Switches of the AVBOIT mode, read every frame while {@link transparency_mode} selects it.
|
|
203
232
|
* @type {AVBOITSettings}
|
|
@@ -282,6 +311,34 @@ export class Renderer {
|
|
|
282
311
|
*/
|
|
283
312
|
feature_virtual_shadow_maps = false;
|
|
284
313
|
|
|
314
|
+
/**
|
|
315
|
+
* The values of the shader switches, for every pass this renderer records: what its feature flags
|
|
316
|
+
* make of the switches its shaders decide ({@link SHADOW_DIRECTIONAL_TECHNIQUE} from
|
|
317
|
+
* {@link feature_virtual_shadow_maps}). A pass hands it to the shaders it draws with, which build
|
|
318
|
+
* their variant for it. Interned, so it stays the same object until a flag changes, and looking a
|
|
319
|
+
* variant up by it allocates nothing.
|
|
320
|
+
*
|
|
321
|
+
* @type {ShaderSwitchSet}
|
|
322
|
+
*/
|
|
323
|
+
#shader_switches = ShaderSwitchSet.EMPTY;
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* @returns {ShaderSwitchSet} see {@link #shader_switches}
|
|
327
|
+
*/
|
|
328
|
+
get shader_switches() {
|
|
329
|
+
return this.#shader_switches;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Bring {@link #shader_switches} up to the feature flags. Allocates nothing while they are unchanged.
|
|
334
|
+
*/
|
|
335
|
+
#update_shader_switches() {
|
|
336
|
+
this.#shader_switches = this.#shader_switches.with(
|
|
337
|
+
SHADOW_DIRECTIONAL_TECHNIQUE,
|
|
338
|
+
this.feature_virtual_shadow_maps ? ShadowDirectionalTechnique.Virtual : ShadowDirectionalTechnique.Cascades
|
|
339
|
+
);
|
|
340
|
+
}
|
|
341
|
+
|
|
285
342
|
/**
|
|
286
343
|
* Virtual shadow map pages a scene may render per frame, pushed to the scene's shadow context
|
|
287
344
|
* each frame; see {@link DEFAULT_VSM_PAGE_BUDGET} for what a page costs and what waits.
|
|
@@ -1375,6 +1432,8 @@ export class Renderer {
|
|
|
1375
1432
|
}
|
|
1376
1433
|
|
|
1377
1434
|
/**
|
|
1435
|
+
* Rejects with a {@link ShadeDeviceFailure} when there is no usable device — no WebGPU, no
|
|
1436
|
+
* adapter, an adapter below {@link SHADE_DEVICE_FLOOR}, or a refused device request.
|
|
1378
1437
|
*
|
|
1379
1438
|
* @param {Object} [options]
|
|
1380
1439
|
* @param {GPUCanvasContext} [options.context] Optional, if not provided - one will be created.
|
|
@@ -1387,8 +1446,8 @@ export class Renderer {
|
|
|
1387
1446
|
pixelRatio = window.devicePixelRatio,
|
|
1388
1447
|
} = {}) {
|
|
1389
1448
|
|
|
1390
|
-
if (
|
|
1391
|
-
throw
|
|
1449
|
+
if (navigator.gpu === undefined) {
|
|
1450
|
+
throw ShadeDeviceFailure.webgpu_unavailable();
|
|
1392
1451
|
}
|
|
1393
1452
|
|
|
1394
1453
|
this.#update_presentation_format();
|
|
@@ -1414,13 +1473,7 @@ export class Renderer {
|
|
|
1414
1473
|
if (device === undefined) {
|
|
1415
1474
|
// no device present, let's create one
|
|
1416
1475
|
|
|
1417
|
-
const
|
|
1418
|
-
|
|
1419
|
-
if (gpu === undefined) {
|
|
1420
|
-
throw ShadeDeviceFailure.webgpu_unavailable();
|
|
1421
|
-
}
|
|
1422
|
-
|
|
1423
|
-
const adapter = await gpu.requestAdapter({
|
|
1476
|
+
const adapter = await navigator.gpu.requestAdapter({
|
|
1424
1477
|
powerPreference: "high-performance",
|
|
1425
1478
|
});
|
|
1426
1479
|
|
|
@@ -1441,27 +1494,22 @@ export class Renderer {
|
|
|
1441
1494
|
//
|
|
1442
1495
|
// console.warn('adapter limits:', adapter.limits);
|
|
1443
1496
|
|
|
1444
|
-
|
|
1497
|
+
// The whole floor is checked before a device is asked for, so a refusal names every gap,
|
|
1498
|
+
// with the numbers this adapter offers, rather than whichever one requestDevice trips on.
|
|
1499
|
+
const unmet = shade_device_floor_unmet(adapter);
|
|
1445
1500
|
|
|
1446
|
-
if (
|
|
1447
|
-
throw ShadeDeviceFailure.below_floor(
|
|
1448
|
-
`requires at least 10 storage buffers per shader stage, adapter offers ${maxStorageBuffersPerShaderStage}`
|
|
1449
|
-
);
|
|
1501
|
+
if (unmet.length > 0) {
|
|
1502
|
+
throw ShadeDeviceFailure.below_floor(unmet);
|
|
1450
1503
|
}
|
|
1451
1504
|
|
|
1452
|
-
const requiredFeatures =
|
|
1453
|
-
// required for indirect draw that's used extensively in Shade
|
|
1454
|
-
WebGPUExtensionType.IndirectFirstInstance,
|
|
1455
|
-
// required for OIT (might be unavailable)
|
|
1456
|
-
WebGPUExtensionType.Float32Blendable,
|
|
1457
|
-
];
|
|
1505
|
+
const requiredFeatures = SHADE_DEVICE_FLOOR.features.slice();
|
|
1458
1506
|
|
|
1459
1507
|
// add features if they are available
|
|
1460
1508
|
const optional_desired = [
|
|
1461
1509
|
// Profiling only, and some browsers withhold it on hardware that is otherwise
|
|
1462
1510
|
// fine — so it is taken when offered and the timers go quiet when it is not
|
|
1463
1511
|
// (E7, sponsor 2026-08-16). Requiring it would refuse to start on those browsers
|
|
1464
|
-
// for the sake of a feature the
|
|
1512
|
+
// for the sake of a feature the renderer does not need to run.
|
|
1465
1513
|
WebGPUExtensionType.TimestampQuery,
|
|
1466
1514
|
WebGPUExtensionType.Subgroups,
|
|
1467
1515
|
WebGPUExtensionType.TextureFormatsTier1,
|
|
@@ -1475,35 +1523,28 @@ export class Renderer {
|
|
|
1475
1523
|
WebGPUExtensionType.TextureCompressionASTC,
|
|
1476
1524
|
];
|
|
1477
1525
|
|
|
1478
|
-
// valid required features
|
|
1479
|
-
for (const feature of requiredFeatures) {
|
|
1480
|
-
if (!adapter.features.has(feature)) {
|
|
1481
|
-
throw ShadeDeviceFailure.below_floor(`adapter does not support required feature '${feature}'`);
|
|
1482
|
-
}
|
|
1483
|
-
}
|
|
1484
|
-
|
|
1485
1526
|
for (const feature of optional_desired) {
|
|
1486
1527
|
if (adapter.features.has(feature)) {
|
|
1487
1528
|
requiredFeatures.push(feature);
|
|
1488
1529
|
}
|
|
1489
1530
|
}
|
|
1490
1531
|
|
|
1532
|
+
try {
|
|
1533
|
+
device = await adapter.requestDevice({
|
|
1534
|
+
requiredLimits: {
|
|
1535
|
+
...SHADE_DEVICE_FLOOR.limits,
|
|
1491
1536
|
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
maxStorageBuffersPerShaderStage: 10,
|
|
1504
|
-
},
|
|
1505
|
-
requiredFeatures
|
|
1506
|
-
});
|
|
1537
|
+
/*
|
|
1538
|
+
grab the largest buffer limit we can get, default limits are super-low
|
|
1539
|
+
*/
|
|
1540
|
+
maxBufferSize: adapter.limits.maxBufferSize,
|
|
1541
|
+
maxStorageBufferBindingSize: adapter.limits.maxStorageBufferBindingSize,
|
|
1542
|
+
},
|
|
1543
|
+
requiredFeatures
|
|
1544
|
+
});
|
|
1545
|
+
} catch (error) {
|
|
1546
|
+
throw ShadeDeviceFailure.device_request_failed(error.message);
|
|
1547
|
+
}
|
|
1507
1548
|
|
|
1508
1549
|
// NOTE: according to spec (as of 2025/09/19) - adapter can only be used to create one device, after which it becomes "consumed"
|
|
1509
1550
|
// see https://www.w3.org/TR/webgpu/#adapters
|
|
@@ -1515,18 +1556,6 @@ export class Renderer {
|
|
|
1515
1556
|
this.#handle_device_lost(info);
|
|
1516
1557
|
})
|
|
1517
1558
|
|
|
1518
|
-
if (context === undefined) {
|
|
1519
|
-
const canvas = document.createElement('canvas');
|
|
1520
|
-
canvas.width = window.innerWidth;
|
|
1521
|
-
canvas.height = window.innerHeight;
|
|
1522
|
-
|
|
1523
|
-
context = canvas.getContext('webgpu');
|
|
1524
|
-
|
|
1525
|
-
if (context === null) {
|
|
1526
|
-
throw new Error('Failed to bind GPUCanvasContext');
|
|
1527
|
-
}
|
|
1528
|
-
}
|
|
1529
|
-
|
|
1530
1559
|
assert.ok(device.features.has("indirect-first-instance"), '"indirect-first-instance" feature needs to be enabled for non-zero firstInstance values to be used.')
|
|
1531
1560
|
assert.isInstanceOf(context, GPUCanvasContext, 'context', 'GPUCanvasContext');
|
|
1532
1561
|
|
|
@@ -1607,6 +1636,126 @@ export class Renderer {
|
|
|
1607
1636
|
|
|
1608
1637
|
window.matchMedia("(dynamic-range: high)").addEventListener("change", this.#update_hdr_support);
|
|
1609
1638
|
|
|
1639
|
+
this.#prepare_pipelines();
|
|
1640
|
+
}
|
|
1641
|
+
|
|
1642
|
+
/**
|
|
1643
|
+
* Offer the pipelines a frame draws with — see {@link PipelineEnquiry}. {@link initialize}
|
|
1644
|
+
* compiles the answer off the main thread, and {@link render} draws nothing until it is in.
|
|
1645
|
+
*
|
|
1646
|
+
* Each subsystem is asked only when the feature flag that runs it is on, so the answer follows the
|
|
1647
|
+
* features as they are set at that moment. It covers the default renderer: the opaque raster,
|
|
1648
|
+
* shading, IBL, ambient occlusion, TAA, sharpening, bloom, exposure and the tonemap. Everything
|
|
1649
|
+
* else is made the old way, by the first frame that draws with it: the features that are off by
|
|
1650
|
+
* default (ReSTIR's passes, SSR, depth of field, motion blur, NSS, path tracing), the indirect
|
|
1651
|
+
* lighting modes other than IBL, a feature turned on after {@link initialize}, and whatever a
|
|
1652
|
+
* scene's content brings — shadow casters, transparent and alpha-tested materials, volumes,
|
|
1653
|
+
* particles.
|
|
1654
|
+
*
|
|
1655
|
+
* @param {PipelineEnquiry} enquiry
|
|
1656
|
+
*/
|
|
1657
|
+
enquirePipelines(enquiry) {
|
|
1658
|
+
const graphics = this.#graphics;
|
|
1659
|
+
|
|
1660
|
+
// The longest compile goes first. With everything else compiling beside it this one is the
|
|
1661
|
+
// whole wait (~1 s of a cold simple-cube's ~1.1 s), and where there are fewer compile
|
|
1662
|
+
// workers than pipelines, the order they are asked for is roughly the order they start.
|
|
1663
|
+
this.#update_shader_switches();
|
|
1664
|
+
|
|
1665
|
+
const deferred_shader = (this.feature_restir_di_enabled ? shader_deferred_main_restir : shader_deferred_main)
|
|
1666
|
+
.variant(this.#shader_switches);
|
|
1667
|
+
|
|
1668
|
+
enquiry.render.push(deferred_shader.pipeline);
|
|
1669
|
+
|
|
1670
|
+
// the scene colour target's format: the background and the indirect-lighting resolve draw into
|
|
1671
|
+
// the target the shading pass made
|
|
1672
|
+
const color_formats = [deferred_shader.pipeline.fragment.targets[0].format];
|
|
1673
|
+
|
|
1674
|
+
graphics.materials.enquirePipelines(enquiry);
|
|
1675
|
+
this.#scenes.enquirePipelines(enquiry);
|
|
1676
|
+
|
|
1677
|
+
enquire_rasterize_scene_pipelines(enquiry, viz_rasterization_opaque_pass_descriptor, CullPolicy.Standard);
|
|
1678
|
+
|
|
1679
|
+
enquire_per_object_velocity_pipelines(enquiry);
|
|
1680
|
+
enquiry.render.push(shader_depth_occlusion_clip.pipeline);
|
|
1681
|
+
enquire_build_light_clusters_pipelines(enquiry);
|
|
1682
|
+
|
|
1683
|
+
if (this.feature_ssao_enabled) {
|
|
1684
|
+
this.#postprocess.ssao.enquirePipelines(enquiry);
|
|
1685
|
+
}
|
|
1686
|
+
|
|
1687
|
+
enquiry.render.push(shader_background.pipeline_for(color_formats));
|
|
1688
|
+
|
|
1689
|
+
if (this.indirect_lighting_mode === ShadeIndirectLightingMode.IBL) {
|
|
1690
|
+
if (!this.feature_ssr_enabled) {
|
|
1691
|
+
// what SSR replaces
|
|
1692
|
+
enquiry.render.push(shader_specular_IBL.pipeline);
|
|
1693
|
+
}
|
|
1694
|
+
|
|
1695
|
+
enquiry.render.push(shader_diffuse_IBL.pipeline);
|
|
1696
|
+
enquiry.render.push(shader_resolve_indirect_lighting.pipeline_for(color_formats));
|
|
1697
|
+
}
|
|
1698
|
+
|
|
1699
|
+
if (this.feature_taa_enabled && this.upscale_type === ShadeUpscalerType.TAA) {
|
|
1700
|
+
this.#taa.enquirePipelines(enquiry, this.#textures_taa_history[0].descriptor.format);
|
|
1701
|
+
}
|
|
1702
|
+
|
|
1703
|
+
if (this.feature_sharpening_enabled) {
|
|
1704
|
+
enquiry.render.push(shader_ffx_rcas.pipeline);
|
|
1705
|
+
}
|
|
1706
|
+
|
|
1707
|
+
if (this.feature_bloom_enabled) {
|
|
1708
|
+
enquire_postprocess_bloom_pipelines(enquiry);
|
|
1709
|
+
}
|
|
1710
|
+
|
|
1711
|
+
if (this.feature_automatic_exposure_enabled) {
|
|
1712
|
+
this.#autoexposure.enquirePipelines(enquiry);
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1715
|
+
enquiry.render.push(this.#tonemap_shader().pipeline_for([this.#presentation_format]));
|
|
1716
|
+
}
|
|
1717
|
+
|
|
1718
|
+
/**
|
|
1719
|
+
* The pass that writes the canvas: the output's dynamic range picks the SDR or the HDR form, and
|
|
1720
|
+
* {@link tone_mapping_mode} picks the operator.
|
|
1721
|
+
*
|
|
1722
|
+
* @returns {import("./shader/ImageShader.js").ImageShader}
|
|
1723
|
+
*/
|
|
1724
|
+
#tonemap_shader() {
|
|
1725
|
+
assert.enum(this.tone_mapping_mode, ShadeToneMappingMode, 'tone_mapping_mode');
|
|
1726
|
+
|
|
1727
|
+
if (this.tone_mapping_mode === ShadeToneMappingMode.NONE) {
|
|
1728
|
+
return this.#hdr_supported ? shader_tonemap_HDR_none : shader_tonemap_LDR_none;
|
|
1729
|
+
}
|
|
1730
|
+
|
|
1731
|
+
if (this.tone_mapping_mode === ShadeToneMappingMode.PBR_NEUTRAL) {
|
|
1732
|
+
return this.#hdr_supported ? shader_tonemap_HDR_pbr_neutral : shader_tonemap_LDR_pbr_neutral;
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
return this.#hdr_supported ? shader_tonemap_HDR : shader_tonemap_LDR;
|
|
1736
|
+
}
|
|
1737
|
+
|
|
1738
|
+
/**
|
|
1739
|
+
* Compile what {@link enquirePipelines} offers, off the main thread — see {@link PipelineEnquiry}.
|
|
1740
|
+
*/
|
|
1741
|
+
#prepare_pipelines() {
|
|
1742
|
+
const enquiry = PipelineEnquiry.from(this.device);
|
|
1743
|
+
|
|
1744
|
+
this.enquirePipelines(enquiry);
|
|
1745
|
+
|
|
1746
|
+
const graphics = this.#graphics;
|
|
1747
|
+
|
|
1748
|
+
const render = enquiry.render;
|
|
1749
|
+
|
|
1750
|
+
for (let i = 0; i < render.length; i++) {
|
|
1751
|
+
graphics.render_pipelines.prepare(render[i]);
|
|
1752
|
+
}
|
|
1753
|
+
|
|
1754
|
+
const compute = enquiry.compute;
|
|
1755
|
+
|
|
1756
|
+
for (let i = 0; i < compute.length; i++) {
|
|
1757
|
+
graphics.compute_pipelines.prepare(compute[i]);
|
|
1758
|
+
}
|
|
1610
1759
|
}
|
|
1611
1760
|
|
|
1612
1761
|
/**
|
|
@@ -1985,9 +2134,11 @@ export class Renderer {
|
|
|
1985
2134
|
* simulation, the animation tick and exposure adaptation all step by it. Zero by default, which
|
|
1986
2135
|
* draws the current state and moves nothing; a fixed fraction of a second here instead would run
|
|
1987
2136
|
* the simulation at that rate no matter what the caller's clock was doing.
|
|
1988
|
-
* @returns {boolean} whether a frame was encoded and submitted. False
|
|
1989
|
-
*
|
|
1990
|
-
*
|
|
2137
|
+
* @returns {boolean} whether a frame was encoded and submitted. False when there is nothing to
|
|
2138
|
+
* draw with — the device was lost, or the renderer destroyed — and while a pipeline prepared
|
|
2139
|
+
* ahead of use is still compiling: the ones {@link initialize} asked for, or a template
|
|
2140
|
+
* prewarmed at a level load. Frames the GPU has not finished yet neither
|
|
2141
|
+
* hold this one back nor make it return false.
|
|
1991
2142
|
*/
|
|
1992
2143
|
render(
|
|
1993
2144
|
camera,
|
|
@@ -2000,6 +2151,18 @@ export class Renderer {
|
|
|
2000
2151
|
return false;
|
|
2001
2152
|
}
|
|
2002
2153
|
|
|
2154
|
+
const graphics = this.#graphics;
|
|
2155
|
+
|
|
2156
|
+
if (graphics.render_pipelines.pending_count > 0 || graphics.compute_pipelines.pending_count > 0) {
|
|
2157
|
+
/*
|
|
2158
|
+
Pipelines prepared ahead of use are still compiling. A frame encoded now would make
|
|
2159
|
+
each one it reaches again, synchronously — one after another on the thread that also
|
|
2160
|
+
presents the page, the very wait the asynchronous compile exists to avoid. Nothing is
|
|
2161
|
+
encoded and the canvas keeps what it had.
|
|
2162
|
+
*/
|
|
2163
|
+
return false;
|
|
2164
|
+
}
|
|
2165
|
+
|
|
2003
2166
|
this.#ensure_context_configured();
|
|
2004
2167
|
|
|
2005
2168
|
const canvas_texture = this.context.getCurrentTexture();
|
|
@@ -2173,6 +2336,8 @@ export class Renderer {
|
|
|
2173
2336
|
// Virtual shadow maps for directional lights, and what they may spend; a flip of the flag or
|
|
2174
2337
|
// of the first texel rebuilds the maps inside process_lights.
|
|
2175
2338
|
sm.use_virtual_shadow_maps = this.feature_virtual_shadow_maps;
|
|
2339
|
+
// and the shaders that sample those maps, built for the same technique, in the same frame
|
|
2340
|
+
this.#update_shader_switches();
|
|
2176
2341
|
sm.virtual_page_budget = this.#shadow_virtual_page_budget;
|
|
2177
2342
|
sm.virtual_lod_bias = this.shadow_virtual_lod_bias;
|
|
2178
2343
|
sm.virtual_first_texel_size = this.#shadow_virtual_first_texel_size;
|
|
@@ -2529,6 +2694,7 @@ export class Renderer {
|
|
|
2529
2694
|
light_cluster_parameters: light_clusters.parameters,
|
|
2530
2695
|
shadowmap_atlas: gr_shadowmap_atlas,
|
|
2531
2696
|
indirect_lighting_mode: this.indirect_lighting_mode,
|
|
2697
|
+
shader_switches: this.#shader_switches,
|
|
2532
2698
|
});
|
|
2533
2699
|
|
|
2534
2700
|
/**
|
|
@@ -2550,6 +2716,7 @@ export class Renderer {
|
|
|
2550
2716
|
gBufferNormal: gr_texture_normal,
|
|
2551
2717
|
gBufferAlbedo: gr_texture_material_albedo_ao,
|
|
2552
2718
|
gBufferEmissive: gr_texture_material_emissive,
|
|
2719
|
+
tSplitSum: STATIC_GRAPHICS_ENGINE_ASSETS.split_sum,
|
|
2553
2720
|
|
|
2554
2721
|
//
|
|
2555
2722
|
light_data: lights.buffer_data,
|
|
@@ -2591,7 +2758,7 @@ export class Renderer {
|
|
|
2591
2758
|
// Main shading pass
|
|
2592
2759
|
[current_color_out] = graph_image_pass({
|
|
2593
2760
|
graph,
|
|
2594
|
-
shader: deferred_shader,
|
|
2761
|
+
shader: deferred_shader.variant(this.#shader_switches),
|
|
2595
2762
|
input_depth: gr_texture_depth_current,
|
|
2596
2763
|
inputs: deferred_inputs,
|
|
2597
2764
|
output_resolution: view_ctx.resolution,
|
|
@@ -2790,6 +2957,7 @@ export class Renderer {
|
|
|
2790
2957
|
volumetrics_irradiance: volumetrics.irradiance,
|
|
2791
2958
|
|
|
2792
2959
|
indirect_lighting_mode: this.indirect_lighting_mode,
|
|
2960
|
+
shader_switches: this.#shader_switches,
|
|
2793
2961
|
avboit: this.avboit,
|
|
2794
2962
|
side_channels,
|
|
2795
2963
|
});
|
|
@@ -2987,15 +3155,17 @@ export class Renderer {
|
|
|
2987
3155
|
|
|
2988
3156
|
current_color_out = record_scene_color.color;
|
|
2989
3157
|
|
|
2990
|
-
|
|
3158
|
+
const tonemap = this.#tonemap_shader();
|
|
3159
|
+
|
|
3160
|
+
if (tonemap === shader_tonemap_HDR || tonemap === shader_tonemap_HDR_pbr_neutral) {
|
|
3161
|
+
// an operator on an HDR display is told the display's peak; the paper white is a constant
|
|
2991
3162
|
[current_color_out] = graph_image_pass({
|
|
2992
3163
|
graph,
|
|
2993
|
-
shader:
|
|
3164
|
+
shader: tonemap,
|
|
2994
3165
|
inputs: {
|
|
2995
3166
|
input_color: current_color_out,
|
|
2996
3167
|
settings: {
|
|
2997
3168
|
peak_nits: this.#display_peak_brightness_nits,
|
|
2998
|
-
paper_white_nits: 100, // SDR spec is 80, but 100 has been accepted as de-facto in recent years
|
|
2999
3169
|
},
|
|
3000
3170
|
exposure
|
|
3001
3171
|
},
|
|
@@ -3004,7 +3174,7 @@ export class Renderer {
|
|
|
3004
3174
|
} else {
|
|
3005
3175
|
[current_color_out] = graph_image_pass({
|
|
3006
3176
|
graph,
|
|
3007
|
-
shader:
|
|
3177
|
+
shader: tonemap,
|
|
3008
3178
|
inputs: {
|
|
3009
3179
|
input_color: current_color_out,
|
|
3010
3180
|
exposure
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How the exposed scene colour becomes display colour.
|
|
3
|
+
*
|
|
4
|
+
* One choice for every display. The same mode runs on an SDR and an HDR output, so a scene looks the same on both up
|
|
5
|
+
* to the SDR display's limits. That is the reason Polyphony give for GT7's operator, and there is no per-output
|
|
6
|
+
* setting on purpose.
|
|
7
|
+
*/
|
|
8
|
+
export type ShadeToneMappingMode = number;
|
|
9
|
+
export namespace ShadeToneMappingMode {
|
|
10
|
+
let GT7: number;
|
|
11
|
+
let NONE: number;
|
|
12
|
+
let PBR_NEUTRAL: number;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ShadeToneMappingMode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShadeToneMappingMode.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/ShadeToneMappingMode.js"],"names":[],"mappings":";;;;;;;mCAOU,MAAM"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How the exposed scene colour becomes display colour.
|
|
3
|
+
*
|
|
4
|
+
* One choice for every display. The same mode runs on an SDR and an HDR output, so a scene looks the same on both up
|
|
5
|
+
* to the SDR display's limits. That is the reason Polyphony give for GT7's operator, and there is no per-output
|
|
6
|
+
* setting on purpose.
|
|
7
|
+
*
|
|
8
|
+
* @enum {number}
|
|
9
|
+
*/
|
|
10
|
+
export const ShadeToneMappingMode = {
|
|
11
|
+
/**
|
|
12
|
+
* GT7 tone mapping (Polyphony Digital, SIGGRAPH 2025). An exposed 1.0 shows at a 250 cd/m² paper white on both
|
|
13
|
+
* outputs. SDR clips at that paper white, the curve's SDR mode, and HDR rolls off to the display's peak.
|
|
14
|
+
*/
|
|
15
|
+
GT7: 0,
|
|
16
|
+
/**
|
|
17
|
+
* No tone mapping: the exposed colour as it is, with 1.0 at SDR white. An SDR output clips everything above 1.0,
|
|
18
|
+
* and an HDR output shows it as far as the display reaches.
|
|
19
|
+
*/
|
|
20
|
+
NONE: 1,
|
|
21
|
+
/**
|
|
22
|
+
* Khronos PBR Neutral (Lalish, 2024). Base colours under 0.8 come out as they are, less a 0.04 Fresnel offset, and
|
|
23
|
+
* hues never shift: made for showing products. SDR is the specification, which rolls highlights off to SDR white
|
|
24
|
+
* and toward white. HDR puts the display's peak in place of the specification's 1, so everything below the
|
|
25
|
+
* compression start looks the same on both outputs, and a highlight rolls off to the display's peak instead.
|
|
26
|
+
*
|
|
27
|
+
* An exposed 0.18 shows at 0.14 of SDR white, where {@link GT7} shows it at 0.179.
|
|
28
|
+
*/
|
|
29
|
+
PBR_NEUTRAL: 2,
|
|
30
|
+
};
|