@codexo/exojs 0.13.0 → 0.15.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/CHANGELOG.md +265 -6
- package/README.md +82 -67
- package/dist/esm/animation/Tween.d.ts.map +1 -1
- package/dist/esm/animation/Tween.js +1 -2
- package/dist/esm/animation/Tween.js.map +1 -1
- package/dist/esm/animation/TweenManager.d.ts +50 -7
- package/dist/esm/animation/TweenManager.d.ts.map +1 -1
- package/dist/esm/animation/TweenManager.js +68 -10
- package/dist/esm/animation/TweenManager.js.map +1 -1
- package/dist/esm/animation/TweenSequencer.d.ts +139 -0
- package/dist/esm/animation/TweenSequencer.d.ts.map +1 -0
- package/dist/esm/animation/TweenSequencer.js +305 -0
- package/dist/esm/animation/TweenSequencer.js.map +1 -0
- package/dist/esm/animation/index.d.ts +7 -4
- package/dist/esm/animation/index.d.ts.map +1 -1
- package/dist/esm/audio/AudioBus.d.ts +12 -12
- package/dist/esm/audio/AudioBus.js +29 -29
- package/dist/esm/audio/AudioEffect.d.ts +18 -0
- package/dist/esm/audio/AudioEffect.d.ts.map +1 -0
- package/dist/esm/audio/AudioEffect.js +16 -0
- package/dist/esm/audio/AudioEffect.js.map +1 -0
- package/dist/esm/audio/AudioGenerator.d.ts +91 -0
- package/dist/esm/audio/AudioGenerator.d.ts.map +1 -0
- package/dist/esm/audio/AudioGenerator.js +165 -0
- package/dist/esm/audio/AudioGenerator.js.map +1 -0
- package/dist/esm/audio/AudioGeneratorVoice.d.ts +52 -0
- package/dist/esm/audio/AudioGeneratorVoice.d.ts.map +1 -0
- package/dist/esm/audio/AudioGeneratorVoice.js +141 -0
- package/dist/esm/audio/AudioGeneratorVoice.js.map +1 -0
- package/dist/esm/audio/AudioInput.d.ts +39 -0
- package/dist/esm/audio/AudioInput.d.ts.map +1 -0
- package/dist/esm/audio/AudioInput.js +53 -0
- package/dist/esm/audio/AudioInput.js.map +1 -0
- package/dist/esm/audio/AudioManager.d.ts +72 -34
- package/dist/esm/audio/AudioManager.d.ts.map +1 -1
- package/dist/esm/audio/AudioManager.js +97 -51
- package/dist/esm/audio/AudioManager.js.map +1 -1
- package/dist/esm/audio/AudioStream.d.ts +49 -0
- package/dist/esm/audio/AudioStream.d.ts.map +1 -0
- package/dist/esm/audio/AudioStream.js +109 -0
- package/dist/esm/audio/AudioStream.js.map +1 -0
- package/dist/esm/audio/AudioStreamVoice.d.ts +61 -0
- package/dist/esm/audio/AudioStreamVoice.d.ts.map +1 -0
- package/dist/esm/audio/AudioStreamVoice.js +137 -0
- package/dist/esm/audio/AudioStreamVoice.js.map +1 -0
- package/dist/esm/audio/BaseVoice.d.ts +111 -0
- package/dist/esm/audio/BaseVoice.d.ts.map +1 -0
- package/dist/esm/audio/BaseVoice.js +298 -0
- package/dist/esm/audio/BaseVoice.js.map +1 -0
- package/dist/esm/audio/BiquadEffect.d.ts +53 -0
- package/dist/esm/audio/BiquadEffect.d.ts.map +1 -0
- package/dist/esm/audio/BiquadEffect.js +110 -0
- package/dist/esm/audio/BiquadEffect.js.map +1 -0
- package/dist/esm/audio/InputVoice.d.ts +41 -0
- package/dist/esm/audio/InputVoice.d.ts.map +1 -0
- package/dist/esm/audio/InputVoice.js +85 -0
- package/dist/esm/audio/InputVoice.js.map +1 -0
- package/dist/esm/audio/NoopVoice.d.ts +29 -0
- package/dist/esm/audio/NoopVoice.d.ts.map +1 -0
- package/dist/esm/audio/NoopVoice.js +52 -0
- package/dist/esm/audio/NoopVoice.js.map +1 -0
- package/dist/esm/audio/Playable.d.ts +135 -0
- package/dist/esm/audio/Playable.d.ts.map +1 -0
- package/dist/esm/audio/Sound.d.ts +64 -69
- package/dist/esm/audio/Sound.d.ts.map +1 -1
- package/dist/esm/audio/Sound.js +176 -377
- package/dist/esm/audio/Sound.js.map +1 -1
- package/dist/esm/audio/SoundVoice.d.ts +63 -0
- package/dist/esm/audio/SoundVoice.d.ts.map +1 -0
- package/dist/esm/audio/SoundVoice.js +168 -0
- package/dist/esm/audio/SoundVoice.js.map +1 -0
- package/dist/esm/audio/WorkletEffect.d.ts +68 -0
- package/dist/esm/audio/WorkletEffect.d.ts.map +1 -0
- package/dist/esm/audio/WorkletEffect.js +177 -0
- package/dist/esm/audio/WorkletEffect.js.map +1 -0
- package/dist/esm/audio/audio-context.js +1 -1
- package/dist/esm/audio/audio-context.js.map +1 -1
- package/dist/esm/audio/crossFade.d.ts +22 -13
- package/dist/esm/audio/crossFade.d.ts.map +1 -1
- package/dist/esm/audio/crossFade.js +21 -13
- package/dist/esm/audio/crossFade.js.map +1 -1
- package/dist/esm/audio/filters/HighpassFilter.d.ts +2 -2
- package/dist/esm/audio/filters/HighpassFilter.js +2 -2
- package/dist/esm/audio/filters/LowpassFilter.d.ts +2 -2
- package/dist/esm/audio/filters/LowpassFilter.js +2 -2
- package/dist/esm/audio/filters/index.d.ts +0 -10
- package/dist/esm/audio/filters/index.d.ts.map +1 -1
- package/dist/esm/audio/index.d.ts +13 -15
- package/dist/esm/audio/index.d.ts.map +1 -1
- package/dist/esm/core/Application.d.ts +169 -14
- package/dist/esm/core/Application.d.ts.map +1 -1
- package/dist/esm/core/Application.js +306 -31
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/BuildInfo.js +2 -2
- package/dist/esm/core/Codec.d.ts +41 -0
- package/dist/esm/core/Codec.d.ts.map +1 -0
- package/dist/esm/core/Codec.js +79 -0
- package/dist/esm/core/Codec.js.map +1 -0
- package/dist/esm/core/Color.d.ts +6 -4
- package/dist/esm/core/Color.d.ts.map +1 -1
- package/dist/esm/core/Color.js +19 -15
- package/dist/esm/core/Color.js.map +1 -1
- package/dist/esm/core/DisposalScope.d.ts +50 -0
- package/dist/esm/core/DisposalScope.d.ts.map +1 -0
- package/dist/esm/core/DisposalScope.js +86 -0
- package/dist/esm/core/DisposalScope.js.map +1 -0
- package/dist/esm/core/FixedTimestep.d.ts +28 -0
- package/dist/esm/core/FixedTimestep.d.ts.map +1 -0
- package/dist/esm/core/FixedTimestep.js +62 -0
- package/dist/esm/core/FixedTimestep.js.map +1 -0
- package/dist/esm/core/Perf.d.ts +10 -22
- package/dist/esm/core/Perf.d.ts.map +1 -1
- package/dist/esm/core/Perf.js +15 -8
- package/dist/esm/core/Perf.js.map +1 -1
- package/dist/esm/core/Registry.d.ts +64 -0
- package/dist/esm/core/Registry.d.ts.map +1 -0
- package/dist/esm/core/Registry.js +79 -0
- package/dist/esm/core/Registry.js.map +1 -0
- package/dist/esm/core/Scene.d.ts +83 -21
- package/dist/esm/core/Scene.d.ts.map +1 -1
- package/dist/esm/core/Scene.js +127 -16
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.d.ts +28 -59
- package/dist/esm/core/SceneManager.d.ts.map +1 -1
- package/dist/esm/core/SceneManager.js +86 -155
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +78 -7
- package/dist/esm/core/SceneNode.d.ts.map +1 -1
- package/dist/esm/core/SceneNode.js +162 -21
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/Signal.js.map +1 -1
- package/dist/esm/core/Stage.d.ts +49 -0
- package/dist/esm/core/Stage.d.ts.map +1 -0
- package/dist/esm/core/System.d.ts +22 -0
- package/dist/esm/core/System.d.ts.map +1 -0
- package/dist/esm/core/SystemRegistry.d.ts +40 -0
- package/dist/esm/core/SystemRegistry.d.ts.map +1 -0
- package/dist/esm/core/SystemRegistry.js +114 -0
- package/dist/esm/core/SystemRegistry.js.map +1 -0
- package/dist/esm/core/Time.d.ts +15 -0
- package/dist/esm/core/Time.d.ts.map +1 -1
- package/dist/esm/core/Time.js +25 -0
- package/dist/esm/core/Time.js.map +1 -1
- package/dist/esm/core/dev.d.ts +9 -4
- package/dist/esm/core/dev.d.ts.map +1 -1
- package/dist/esm/core/dev.js +5 -0
- package/dist/esm/core/dev.js.map +1 -1
- package/dist/esm/core/index.d.ts +30 -15
- package/dist/esm/core/index.d.ts.map +1 -1
- package/dist/esm/core/letterbox.d.ts +25 -0
- package/dist/esm/core/letterbox.d.ts.map +1 -0
- package/dist/esm/core/letterbox.js +26 -0
- package/dist/esm/core/letterbox.js.map +1 -0
- package/dist/esm/core/logging.d.ts +34 -0
- package/dist/esm/core/logging.d.ts.map +1 -0
- package/dist/esm/core/logging.js +59 -0
- package/dist/esm/core/logging.js.map +1 -0
- package/dist/esm/core/serialization/NodeSerializer.d.ts +71 -0
- package/dist/esm/core/serialization/NodeSerializer.d.ts.map +1 -0
- package/dist/esm/core/serialization/Prefab.d.ts +49 -0
- package/dist/esm/core/serialization/Prefab.d.ts.map +1 -0
- package/dist/esm/core/serialization/Prefab.js +61 -0
- package/dist/esm/core/serialization/Prefab.js.map +1 -0
- package/dist/esm/core/serialization/SerializationRegistry.d.ts +95 -0
- package/dist/esm/core/serialization/SerializationRegistry.d.ts.map +1 -0
- package/dist/esm/core/serialization/SerializationRegistry.js +108 -0
- package/dist/esm/core/serialization/SerializationRegistry.js.map +1 -0
- package/dist/esm/core/serialization/commonFields.d.ts +20 -0
- package/dist/esm/core/serialization/commonFields.d.ts.map +1 -0
- package/dist/esm/core/serialization/commonFields.js +155 -0
- package/dist/esm/core/serialization/commonFields.js.map +1 -0
- package/dist/esm/core/serialization/coreSerializers.d.ts +9 -0
- package/dist/esm/core/serialization/coreSerializers.d.ts.map +1 -0
- package/dist/esm/core/serialization/coreSerializers.js +101 -0
- package/dist/esm/core/serialization/coreSerializers.js.map +1 -0
- package/dist/esm/core/serialization/index.d.ts +6 -0
- package/dist/esm/core/serialization/index.d.ts.map +1 -0
- package/dist/esm/core/serialization/read.d.ts +65 -0
- package/dist/esm/core/serialization/read.d.ts.map +1 -0
- package/dist/esm/core/serialization/read.js +48 -0
- package/dist/esm/core/serialization/read.js.map +1 -0
- package/dist/esm/core/serialization/renderingSerializers.d.ts +7 -0
- package/dist/esm/core/serialization/renderingSerializers.d.ts.map +1 -0
- package/dist/esm/core/serialization/renderingSerializers.js +320 -0
- package/dist/esm/core/serialization/renderingSerializers.js.map +1 -0
- package/dist/esm/core/serialization/serialize.d.ts +56 -0
- package/dist/esm/core/serialization/serialize.d.ts.map +1 -0
- package/dist/esm/core/serialization/serialize.js +144 -0
- package/dist/esm/core/serialization/serialize.js.map +1 -0
- package/dist/esm/core/serialization/serializerHelpers.d.ts +46 -0
- package/dist/esm/core/serialization/serializerHelpers.d.ts.map +1 -0
- package/dist/esm/core/serialization/serializerHelpers.js +161 -0
- package/dist/esm/core/serialization/serializerHelpers.js.map +1 -0
- package/dist/esm/core/serialization/types.d.ts +49 -0
- package/dist/esm/core/serialization/types.d.ts.map +1 -0
- package/dist/esm/core/serialization/types.js +9 -0
- package/dist/esm/core/serialization/types.js.map +1 -0
- package/dist/esm/core/serialization/uiSerializers.d.ts +7 -0
- package/dist/esm/core/serialization/uiSerializers.d.ts.map +1 -0
- package/dist/esm/core/serialization/uiSerializers.js +206 -0
- package/dist/esm/core/serialization/uiSerializers.js.map +1 -0
- package/dist/esm/core/types.d.ts +1 -1
- package/dist/esm/core/types.d.ts.map +1 -1
- package/dist/esm/core/utils.d.ts +1 -16
- package/dist/esm/core/utils.d.ts.map +1 -1
- package/dist/esm/core/utils.js +2 -100
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/debug/PerformanceLayer.js +8 -9
- package/dist/esm/debug/PerformanceLayer.js.map +1 -1
- package/dist/esm/debug/PointerStackLayer.d.ts.map +1 -1
- package/dist/esm/debug/PointerStackLayer.js +9 -6
- package/dist/esm/debug/PointerStackLayer.js.map +1 -1
- package/dist/esm/debug/RenderPassInspectorLayer.d.ts.map +1 -1
- package/dist/esm/debug/RenderPassInspectorLayer.js +19 -12
- package/dist/esm/debug/RenderPassInspectorLayer.js.map +1 -1
- package/dist/esm/extensions/Extension.d.ts +39 -4
- package/dist/esm/extensions/Extension.d.ts.map +1 -1
- package/dist/esm/extensions/materialize.d.ts +9 -1
- package/dist/esm/extensions/materialize.d.ts.map +1 -1
- package/dist/esm/extensions/materialize.js +17 -2
- package/dist/esm/extensions/materialize.js.map +1 -1
- package/dist/esm/extensions/snapshot.d.ts +2 -1
- package/dist/esm/extensions/snapshot.d.ts.map +1 -1
- package/dist/esm/extensions/snapshot.js +8 -0
- package/dist/esm/extensions/snapshot.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +41 -61
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/input/FocusManager.d.ts +59 -0
- package/dist/esm/input/FocusManager.d.ts.map +1 -0
- package/dist/esm/input/FocusManager.js +175 -0
- package/dist/esm/input/FocusManager.js.map +1 -0
- package/dist/esm/input/Gamepad.d.ts +10 -0
- package/dist/esm/input/Gamepad.d.ts.map +1 -1
- package/dist/esm/input/Gamepad.js +20 -4
- package/dist/esm/input/Gamepad.js.map +1 -1
- package/dist/esm/input/GamepadAxis.js +2 -2
- package/dist/esm/input/GamepadDefinitions.d.ts.map +1 -1
- package/dist/esm/input/GamepadDefinitions.js +6 -2
- package/dist/esm/input/GamepadDefinitions.js.map +1 -1
- package/dist/esm/input/GestureRecognizer.d.ts +1 -2
- package/dist/esm/input/GestureRecognizer.d.ts.map +1 -1
- package/dist/esm/input/GestureRecognizer.js +1 -3
- package/dist/esm/input/GestureRecognizer.js.map +1 -1
- package/dist/esm/input/InputBinding.js +3 -3
- package/dist/esm/input/InputBinding.js.map +1 -1
- package/dist/esm/input/InputManager.d.ts +7 -2
- package/dist/esm/input/InputManager.d.ts.map +1 -1
- package/dist/esm/input/InputManager.js +40 -21
- package/dist/esm/input/InputManager.js.map +1 -1
- package/dist/esm/input/InteractionManager.d.ts +67 -2
- package/dist/esm/input/InteractionManager.d.ts.map +1 -1
- package/dist/esm/input/InteractionManager.js +165 -41
- package/dist/esm/input/InteractionManager.js.map +1 -1
- package/dist/esm/input/KeyEvent.d.ts +25 -0
- package/dist/esm/input/KeyEvent.d.ts.map +1 -0
- package/dist/esm/input/KeyEvent.js +32 -0
- package/dist/esm/input/KeyEvent.js.map +1 -0
- package/dist/esm/input/Pointer.d.ts +21 -4
- package/dist/esm/input/Pointer.d.ts.map +1 -1
- package/dist/esm/input/Pointer.js +54 -15
- package/dist/esm/input/Pointer.js.map +1 -1
- package/dist/esm/input/index.d.ts +3 -1
- package/dist/esm/input/index.d.ts.map +1 -1
- package/dist/esm/math/AbstractVector.d.ts.map +1 -1
- package/dist/esm/math/AbstractVector.js +7 -2
- package/dist/esm/math/AbstractVector.js.map +1 -1
- package/dist/esm/math/Circle.d.ts.map +1 -1
- package/dist/esm/math/Circle.js +5 -1
- package/dist/esm/math/Circle.js.map +1 -1
- package/dist/esm/math/Line.d.ts +1 -1
- package/dist/esm/math/Line.d.ts.map +1 -1
- package/dist/esm/math/Line.js +1 -1
- package/dist/esm/math/Line.js.map +1 -1
- package/dist/esm/math/Matrix.d.ts.map +1 -1
- package/dist/esm/math/Matrix.js +6 -1
- package/dist/esm/math/Matrix.js.map +1 -1
- package/dist/esm/math/ObservableVector.d.ts +26 -8
- package/dist/esm/math/ObservableVector.d.ts.map +1 -1
- package/dist/esm/math/ObservableVector.js +24 -16
- package/dist/esm/math/ObservableVector.js.map +1 -1
- package/dist/esm/math/Polygon.d.ts +5 -0
- package/dist/esm/math/Polygon.d.ts.map +1 -1
- package/dist/esm/math/Polygon.js +27 -3
- package/dist/esm/math/Polygon.js.map +1 -1
- package/dist/esm/math/Random.d.ts +9 -9
- package/dist/esm/math/Random.d.ts.map +1 -1
- package/dist/esm/math/Random.js +46 -46
- package/dist/esm/math/Random.js.map +1 -1
- package/dist/esm/math/Rectangle.d.ts +11 -4
- package/dist/esm/math/Rectangle.d.ts.map +1 -1
- package/dist/esm/math/Rectangle.js +12 -6
- package/dist/esm/math/Rectangle.js.map +1 -1
- package/dist/esm/math/Vector.d.ts +1 -1
- package/dist/esm/math/Vector.d.ts.map +1 -1
- package/dist/esm/math/Vector.js +1 -1
- package/dist/esm/math/Vector.js.map +1 -1
- package/dist/esm/math/collision-detection.d.ts +42 -0
- package/dist/esm/math/collision-detection.d.ts.map +1 -1
- package/dist/esm/math/collision-detection.js +54 -4
- package/dist/esm/math/collision-detection.js.map +1 -1
- package/dist/esm/math/collision-primitives.d.ts.map +1 -1
- package/dist/esm/math/collision-primitives.js +4 -0
- package/dist/esm/math/collision-primitives.js.map +1 -1
- package/dist/esm/math/geometry.d.ts +26 -0
- package/dist/esm/math/geometry.d.ts.map +1 -1
- package/dist/esm/math/geometry.js +89 -2
- package/dist/esm/math/geometry.js.map +1 -1
- package/dist/esm/math/index.d.ts +7 -5
- package/dist/esm/math/index.d.ts.map +1 -1
- package/dist/esm/math/swept-collision.d.ts +13 -0
- package/dist/esm/math/swept-collision.d.ts.map +1 -1
- package/dist/esm/math/swept-collision.js +15 -1
- package/dist/esm/math/swept-collision.js.map +1 -1
- package/dist/esm/math/triangulate.d.ts.map +1 -1
- package/dist/esm/math/triangulate.js +9 -1
- package/dist/esm/math/triangulate.js.map +1 -1
- package/dist/esm/math/utils.d.ts +20 -0
- package/dist/esm/math/utils.d.ts.map +1 -1
- package/dist/esm/math/utils.js +18 -15
- package/dist/esm/math/utils.js.map +1 -1
- package/dist/esm/renderer-sdk.d.ts +2 -0
- package/dist/esm/renderer-sdk.d.ts.map +1 -1
- package/dist/esm/{rendering.js → renderer-sdk.js} +1 -1
- package/dist/esm/renderer-sdk.js.map +1 -0
- package/dist/esm/rendering/BackendTargetPass.d.ts +1 -1
- package/dist/esm/rendering/BackendTargetPass.d.ts.map +1 -1
- package/dist/esm/rendering/CallbackRenderPass.d.ts +14 -10
- package/dist/esm/rendering/CallbackRenderPass.d.ts.map +1 -1
- package/dist/esm/rendering/CallbackRenderPass.js +17 -12
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
- package/dist/esm/rendering/Container.d.ts +3 -0
- package/dist/esm/rendering/Container.d.ts.map +1 -1
- package/dist/esm/rendering/Container.js +28 -5
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/DrawContext.d.ts +48 -0
- package/dist/esm/rendering/DrawContext.d.ts.map +1 -0
- package/dist/esm/rendering/Drawable.d.ts +24 -0
- package/dist/esm/rendering/Drawable.d.ts.map +1 -1
- package/dist/esm/rendering/Drawable.js +54 -0
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/GpuResourceAccountant.d.ts +65 -0
- package/dist/esm/rendering/GpuResourceAccountant.d.ts.map +1 -0
- package/dist/esm/rendering/GpuResourceAccountant.js +130 -0
- package/dist/esm/rendering/GpuResourceAccountant.js.map +1 -0
- package/dist/esm/rendering/PassContext.d.ts +42 -0
- package/dist/esm/rendering/PassContext.d.ts.map +1 -0
- package/dist/esm/rendering/PassContext.js +48 -0
- package/dist/esm/rendering/PassContext.js.map +1 -0
- package/dist/esm/rendering/RenderBackend.d.ts +29 -1
- package/dist/esm/rendering/RenderBackend.d.ts.map +1 -1
- package/dist/esm/rendering/RenderBatch.d.ts +55 -0
- package/dist/esm/rendering/RenderBatch.d.ts.map +1 -0
- package/dist/esm/rendering/RenderBatch.js +107 -0
- package/dist/esm/rendering/RenderBatch.js.map +1 -0
- package/dist/esm/rendering/RenderNode.d.ts +50 -10
- package/dist/esm/rendering/RenderNode.d.ts.map +1 -1
- package/dist/esm/rendering/RenderNode.js +115 -22
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderNodePass.d.ts +1 -1
- package/dist/esm/rendering/RenderNodePass.d.ts.map +1 -1
- package/dist/esm/rendering/RenderNodePass.js +2 -2
- package/dist/esm/rendering/RenderNodePass.js.map +1 -1
- package/dist/esm/rendering/RenderStats.d.ts +39 -0
- package/dist/esm/rendering/RenderStats.d.ts.map +1 -1
- package/dist/esm/rendering/RenderStats.js +14 -0
- package/dist/esm/rendering/RenderStats.js.map +1 -1
- package/dist/esm/rendering/RendererRegistry.d.ts.map +1 -1
- package/dist/esm/rendering/RendererRegistry.js +20 -23
- package/dist/esm/rendering/RendererRegistry.js.map +1 -1
- package/dist/esm/rendering/RenderingContext.d.ts +132 -17
- package/dist/esm/rendering/RenderingContext.d.ts.map +1 -1
- package/dist/esm/rendering/RenderingContext.js +228 -28
- package/dist/esm/rendering/RenderingContext.js.map +1 -1
- package/dist/esm/rendering/TransformBuffer.d.ts +23 -0
- package/dist/esm/rendering/TransformBuffer.d.ts.map +1 -1
- package/dist/esm/rendering/TransformBuffer.js +60 -0
- package/dist/esm/rendering/TransformBuffer.js.map +1 -1
- package/dist/esm/rendering/View.d.ts +85 -15
- package/dist/esm/rendering/View.d.ts.map +1 -1
- package/dist/esm/rendering/View.js +81 -27
- package/dist/esm/rendering/View.js.map +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts.map +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +10 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
- package/dist/esm/rendering/geometry/Geometry.d.ts.map +1 -1
- package/dist/esm/rendering/geometry/Geometry.js +4 -2
- package/dist/esm/rendering/geometry/Geometry.js.map +1 -1
- package/dist/esm/rendering/gradient/Gradient.d.ts.map +1 -1
- package/dist/esm/rendering/gradient/Gradient.js +7 -2
- package/dist/esm/rendering/gradient/Gradient.js.map +1 -1
- package/dist/esm/rendering/material/MaterialKey.d.ts.map +1 -1
- package/dist/esm/rendering/material/MaterialKey.js +2 -0
- package/dist/esm/rendering/material/MaterialKey.js.map +1 -1
- package/dist/esm/rendering/material/MeshMaterial.d.ts +20 -1
- package/dist/esm/rendering/material/MeshMaterial.d.ts.map +1 -1
- package/dist/esm/rendering/material/MeshMaterial.js +17 -0
- package/dist/esm/rendering/material/MeshMaterial.js.map +1 -1
- package/dist/esm/rendering/material/ShaderSource.js +6 -0
- package/dist/esm/rendering/material/ShaderSource.js.map +1 -1
- package/dist/esm/rendering/material/SpriteMaterial.d.ts +20 -1
- package/dist/esm/rendering/material/SpriteMaterial.d.ts.map +1 -1
- package/dist/esm/rendering/material/SpriteMaterial.js +17 -0
- package/dist/esm/rendering/material/SpriteMaterial.js.map +1 -1
- package/dist/esm/rendering/mesh/ImmediateMesh.d.ts +48 -0
- package/dist/esm/rendering/mesh/ImmediateMesh.d.ts.map +1 -0
- package/dist/esm/rendering/mesh/ImmediateMesh.js +85 -0
- package/dist/esm/rendering/mesh/ImmediateMesh.js.map +1 -0
- package/dist/esm/rendering/mesh/Mesh.d.ts +29 -6
- package/dist/esm/rendering/mesh/Mesh.d.ts.map +1 -1
- package/dist/esm/rendering/mesh/Mesh.js +40 -13
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/pixelSnap.d.ts.map +1 -1
- package/dist/esm/rendering/pixelSnap.js +1 -0
- package/dist/esm/rendering/pixelSnap.js.map +1 -1
- package/dist/esm/rendering/plan/RenderCommand.d.ts +31 -9
- package/dist/esm/rendering/plan/RenderCommand.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderCommand.js +23 -21
- package/dist/esm/rendering/plan/RenderCommand.js.map +1 -1
- package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderEffectExecutor.js +8 -2
- package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -1
- package/dist/esm/rendering/plan/RenderInstruction.d.ts +12 -39
- package/dist/esm/rendering/plan/RenderInstruction.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts +17 -2
- package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanBuilder.js +154 -50
- package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanOptimizer.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js +31 -4
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanPlayer.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanPlayer.js +54 -17
- package/dist/esm/rendering/plan/RenderPlanPlayer.js.map +1 -1
- package/dist/esm/rendering/plan/RenderScope.d.ts +23 -10
- package/dist/esm/rendering/plan/RenderScope.d.ts.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.d.ts +16 -1
- package/dist/esm/rendering/primitives/Graphics.d.ts.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.js +46 -9
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/{index.d.ts → public.d.ts} +9 -39
- package/dist/esm/rendering/public.d.ts.map +1 -0
- package/dist/esm/rendering/shader/ShaderAttribute.d.ts.map +1 -1
- package/dist/esm/rendering/shader/ShaderAttribute.js +2 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +60 -12
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/AnimatedSprite.js +142 -30
- package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/NineSliceSprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/NineSliceSprite.js +10 -11
- package/dist/esm/rendering/sprite/NineSliceSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/RepeatingSprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/RepeatingSprite.js +1 -3
- package/dist/esm/rendering/sprite/RepeatingSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.js +30 -3
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/nineSlice.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/nineSlice.js +12 -18
- package/dist/esm/rendering/sprite/nineSlice.js.map +1 -1
- package/dist/esm/rendering/sprite/repeatingSpritePlan.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/repeatingSpritePlan.js +2 -2
- package/dist/esm/rendering/sprite/repeatingSpritePlan.js.map +1 -1
- package/dist/esm/rendering/text/BitmapText.d.ts +2 -0
- package/dist/esm/rendering/text/BitmapText.d.ts.map +1 -1
- package/dist/esm/rendering/text/BitmapText.js +6 -0
- package/dist/esm/rendering/text/BitmapText.js.map +1 -1
- package/dist/esm/rendering/text/GlyphAtlas.d.ts.map +1 -1
- package/dist/esm/rendering/text/GlyphAtlas.js +2 -1
- package/dist/esm/rendering/text/GlyphAtlas.js.map +1 -1
- package/dist/esm/rendering/text/GlyphAtlasPool.d.ts +8 -1
- package/dist/esm/rendering/text/GlyphAtlasPool.d.ts.map +1 -1
- package/dist/esm/rendering/text/GlyphAtlasPool.js +9 -12
- package/dist/esm/rendering/text/GlyphAtlasPool.js.map +1 -1
- package/dist/esm/rendering/text/GlyphSdf.d.ts.map +1 -1
- package/dist/esm/rendering/text/GlyphSdf.js +5 -1
- package/dist/esm/rendering/text/GlyphSdf.js.map +1 -1
- package/dist/esm/rendering/text/HTMLText.d.ts.map +1 -1
- package/dist/esm/rendering/text/HTMLText.js +3 -2
- package/dist/esm/rendering/text/HTMLText.js.map +1 -1
- package/dist/esm/rendering/text/Text.d.ts +17 -6
- package/dist/esm/rendering/text/Text.d.ts.map +1 -1
- package/dist/esm/rendering/text/Text.js +9 -12
- package/dist/esm/rendering/text/Text.js.map +1 -1
- package/dist/esm/rendering/text/TextLayout.d.ts.map +1 -1
- package/dist/esm/rendering/text/TextLayout.js +4 -18
- package/dist/esm/rendering/text/TextLayout.js.map +1 -1
- package/dist/esm/rendering/texture/DataTexture.js +2 -2
- package/dist/esm/rendering/texture/DataTexture.js.map +1 -1
- package/dist/esm/rendering/texture/Texture.d.ts +6 -0
- package/dist/esm/rendering/texture/Texture.d.ts.map +1 -1
- package/dist/esm/rendering/texture/Texture.js +8 -0
- package/dist/esm/rendering/texture/Texture.js.map +1 -1
- package/dist/esm/rendering/texture/TextureRegion.d.ts.map +1 -1
- package/dist/esm/rendering/texture/TextureRegion.js.map +1 -1
- package/dist/esm/rendering/texture/repeat.d.ts.map +1 -1
- package/dist/esm/rendering/texture/repeat.js +2 -2
- package/dist/esm/rendering/texture/repeat.js.map +1 -1
- package/dist/esm/rendering/types.d.ts +37 -2
- package/dist/esm/rendering/types.d.ts.map +1 -1
- package/dist/esm/rendering/types.js +37 -2
- package/dist/esm/rendering/types.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +7 -3
- package/dist/esm/rendering/video/Video.d.ts.map +1 -1
- package/dist/esm/rendering/video/Video.js +7 -3
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +2 -2
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.d.ts +41 -0
- package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.d.ts.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.js +222 -0
- package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +55 -3
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +209 -61
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js +2 -2
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +17 -0
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +122 -38
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js +2 -1
- package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +16 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +32 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js +15 -11
- package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js +14 -3
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js +3 -3
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js +11 -2
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +7 -2
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js +3 -2
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +60 -15
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/glsl/backdrop-blend.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/backdrop-blend.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/backdrop-blend.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/backdrop-blend.vert.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/text.vert.js +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.d.ts +72 -0
- package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.d.ts.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.js +494 -0
- package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +45 -2
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +247 -69
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBlendState.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js +5 -26
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts +2 -0
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +2 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +17 -0
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +105 -25
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts +2 -0
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js +8 -2
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts +8 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js +20 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts +6 -0
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js +23 -10
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +2 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +10 -5
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts +2 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +3 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts +2 -0
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +22 -9
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +16 -3
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +50 -6
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -1
- package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js +1 -1
- package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js.map +1 -1
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts +7 -0
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js +8 -0
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js.map +1 -1
- package/dist/esm/resources/Asset.d.ts +1 -1
- package/dist/esm/resources/Asset.d.ts.map +1 -1
- package/dist/esm/resources/Asset.js +0 -2
- package/dist/esm/resources/Asset.js.map +1 -1
- package/dist/esm/resources/AssetContainer.d.ts +75 -0
- package/dist/esm/resources/AssetContainer.d.ts.map +1 -0
- package/dist/esm/resources/AssetContainer.js +100 -0
- package/dist/esm/resources/AssetContainer.js.map +1 -0
- package/dist/esm/resources/AssetDefinitions.d.ts +3 -3
- package/dist/esm/resources/AssetDefinitions.d.ts.map +1 -1
- package/dist/esm/resources/Assets.d.ts.map +1 -1
- package/dist/esm/resources/Assets.js +0 -1
- package/dist/esm/resources/Assets.js.map +1 -1
- package/dist/esm/resources/FactoryRegistry.d.ts.map +1 -1
- package/dist/esm/resources/FactoryRegistry.js +14 -23
- package/dist/esm/resources/FactoryRegistry.js.map +1 -1
- package/dist/esm/resources/IndexedDbDatabase.d.ts.map +1 -1
- package/dist/esm/resources/IndexedDbDatabase.js +8 -1
- package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
- package/dist/esm/resources/IndexedDbKeyValueStore.d.ts +37 -0
- package/dist/esm/resources/IndexedDbKeyValueStore.d.ts.map +1 -0
- package/dist/esm/resources/IndexedDbKeyValueStore.js +58 -0
- package/dist/esm/resources/IndexedDbKeyValueStore.js.map +1 -0
- package/dist/esm/resources/KeyValueStore.d.ts +31 -0
- package/dist/esm/resources/KeyValueStore.d.ts.map +1 -0
- package/dist/esm/resources/Loader.d.ts +55 -2
- package/dist/esm/resources/Loader.d.ts.map +1 -1
- package/dist/esm/resources/Loader.js +159 -14
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/esm/resources/MemoryStore.d.ts +17 -0
- package/dist/esm/resources/MemoryStore.d.ts.map +1 -0
- package/dist/esm/resources/MemoryStore.js +30 -0
- package/dist/esm/resources/MemoryStore.js.map +1 -0
- package/dist/esm/resources/WebStorageStore.d.ts +40 -0
- package/dist/esm/resources/WebStorageStore.d.ts.map +1 -0
- package/dist/esm/resources/WebStorageStore.js +84 -0
- package/dist/esm/resources/WebStorageStore.js.map +1 -0
- package/dist/esm/resources/coreAssetBindings.d.ts.map +1 -1
- package/dist/esm/resources/coreAssetBindings.js +16 -5
- package/dist/esm/resources/coreAssetBindings.js.map +1 -1
- package/dist/esm/resources/factories/BmFontFactory.js +4 -4
- package/dist/esm/resources/factories/BmFontFactory.js.map +1 -1
- package/dist/esm/resources/factories/MusicFactory.d.ts +9 -9
- package/dist/esm/resources/factories/MusicFactory.d.ts.map +1 -1
- package/dist/esm/resources/factories/MusicFactory.js +7 -7
- package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
- package/dist/esm/resources/factories/SoundFactory.js +2 -2
- package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
- package/dist/esm/resources/factories/SubtitleFactory.d.ts +11 -1
- package/dist/esm/resources/factories/SubtitleFactory.d.ts.map +1 -1
- package/dist/esm/resources/factories/SubtitleFactory.js +13 -9
- package/dist/esm/resources/factories/SubtitleFactory.js.map +1 -1
- package/dist/esm/resources/index.d.ts +51 -34
- package/dist/esm/resources/index.d.ts.map +1 -1
- package/dist/esm/resources/utils.js +4 -4
- package/dist/esm/resources/utils.js.map +1 -1
- package/dist/esm/ui/Button.d.ts +54 -0
- package/dist/esm/ui/Button.d.ts.map +1 -0
- package/dist/esm/ui/Button.js +139 -0
- package/dist/esm/ui/Button.js.map +1 -0
- package/dist/esm/ui/Label.d.ts +17 -0
- package/dist/esm/ui/Label.d.ts.map +1 -0
- package/dist/esm/ui/Label.js +37 -0
- package/dist/esm/ui/Label.js.map +1 -0
- package/dist/esm/ui/Panel.d.ts +38 -0
- package/dist/esm/ui/Panel.d.ts.map +1 -0
- package/dist/esm/ui/Panel.js +61 -0
- package/dist/esm/ui/Panel.js.map +1 -0
- package/dist/esm/ui/ProgressBar.d.ts +37 -0
- package/dist/esm/ui/ProgressBar.d.ts.map +1 -0
- package/dist/esm/ui/ProgressBar.js +76 -0
- package/dist/esm/ui/ProgressBar.js.map +1 -0
- package/dist/esm/ui/ScrollContainer.d.ts +63 -0
- package/dist/esm/ui/ScrollContainer.d.ts.map +1 -0
- package/dist/esm/ui/ScrollContainer.js +99 -0
- package/dist/esm/ui/ScrollContainer.js.map +1 -0
- package/dist/esm/ui/Stack.d.ts +34 -0
- package/dist/esm/ui/Stack.d.ts.map +1 -0
- package/dist/esm/ui/Stack.js +69 -0
- package/dist/esm/ui/Stack.js.map +1 -0
- package/dist/esm/ui/Tooltip.d.ts +67 -0
- package/dist/esm/ui/Tooltip.d.ts.map +1 -0
- package/dist/esm/ui/Tooltip.js +133 -0
- package/dist/esm/ui/Tooltip.js.map +1 -0
- package/dist/esm/ui/UIRoot.d.ts +31 -0
- package/dist/esm/ui/UIRoot.d.ts.map +1 -0
- package/dist/esm/ui/UIRoot.js +49 -0
- package/dist/esm/ui/UIRoot.js.map +1 -0
- package/dist/esm/ui/Widget.d.ts +45 -0
- package/dist/esm/ui/Widget.d.ts.map +1 -0
- package/dist/esm/ui/Widget.js +113 -0
- package/dist/esm/ui/Widget.js.map +1 -0
- package/dist/esm/ui/index.d.ts +17 -0
- package/dist/esm/ui/index.d.ts.map +1 -0
- package/dist/exo.debug.esm.js +1 -948
- package/dist/exo.debug.esm.js.map +1 -1
- package/dist/exo.esm.js +1 -40945
- package/dist/exo.esm.js.map +1 -1
- package/dist/exo.iife.js +45202 -0
- package/dist/exo.iife.js.map +1 -0
- package/dist/exo.iife.min.js +2 -0
- package/dist/exo.iife.min.js.map +1 -0
- package/package.json +37 -14
- package/dist/esm/audio/AbstractMedia.d.ts +0 -75
- package/dist/esm/audio/AbstractMedia.d.ts.map +0 -1
- package/dist/esm/audio/AbstractMedia.js +0 -179
- package/dist/esm/audio/AbstractMedia.js.map +0 -1
- package/dist/esm/audio/AudioAnalyser.d.ts +0 -128
- package/dist/esm/audio/AudioAnalyser.d.ts.map +0 -1
- package/dist/esm/audio/AudioAnalyser.js +0 -473
- package/dist/esm/audio/AudioAnalyser.js.map +0 -1
- package/dist/esm/audio/AudioFilter.d.ts +0 -17
- package/dist/esm/audio/AudioFilter.d.ts.map +0 -1
- package/dist/esm/audio/AudioFilter.js +0 -15
- package/dist/esm/audio/AudioFilter.js.map +0 -1
- package/dist/esm/audio/BeatDetector.d.ts +0 -207
- package/dist/esm/audio/BeatDetector.d.ts.map +0 -1
- package/dist/esm/audio/BeatDetector.js +0 -424
- package/dist/esm/audio/BeatDetector.js.map +0 -1
- package/dist/esm/audio/Media.d.ts +0 -37
- package/dist/esm/audio/Media.d.ts.map +0 -1
- package/dist/esm/audio/Music.d.ts +0 -42
- package/dist/esm/audio/Music.d.ts.map +0 -1
- package/dist/esm/audio/Music.js +0 -164
- package/dist/esm/audio/Music.js.map +0 -1
- package/dist/esm/audio/OscillatorSound.d.ts +0 -100
- package/dist/esm/audio/OscillatorSound.d.ts.map +0 -1
- package/dist/esm/audio/OscillatorSound.js +0 -346
- package/dist/esm/audio/OscillatorSound.js.map +0 -1
- package/dist/esm/audio/dsp/fft.d.ts +0 -23
- package/dist/esm/audio/dsp/fft.d.ts.map +0 -1
- package/dist/esm/audio/dsp/mel.d.ts +0 -44
- package/dist/esm/audio/dsp/mel.d.ts.map +0 -1
- package/dist/esm/audio/dsp/mel.js +0 -70
- package/dist/esm/audio/dsp/mel.js.map +0 -1
- package/dist/esm/audio/dsp/tempogram.d.ts +0 -52
- package/dist/esm/audio/dsp/tempogram.d.ts.map +0 -1
- package/dist/esm/audio/filters/ChorusFilter.d.ts +0 -54
- package/dist/esm/audio/filters/ChorusFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/ChorusFilter.js +0 -155
- package/dist/esm/audio/filters/ChorusFilter.js.map +0 -1
- package/dist/esm/audio/filters/CompressorFilter.d.ts +0 -54
- package/dist/esm/audio/filters/CompressorFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/CompressorFilter.js +0 -123
- package/dist/esm/audio/filters/CompressorFilter.js.map +0 -1
- package/dist/esm/audio/filters/DelayFilter.d.ts +0 -36
- package/dist/esm/audio/filters/DelayFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/DelayFilter.js +0 -114
- package/dist/esm/audio/filters/DelayFilter.js.map +0 -1
- package/dist/esm/audio/filters/DuckingFilter.d.ts +0 -45
- package/dist/esm/audio/filters/DuckingFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/DuckingFilter.js +0 -172
- package/dist/esm/audio/filters/DuckingFilter.js.map +0 -1
- package/dist/esm/audio/filters/EqualizerFilter.d.ts +0 -51
- package/dist/esm/audio/filters/EqualizerFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/EqualizerFilter.js +0 -138
- package/dist/esm/audio/filters/EqualizerFilter.js.map +0 -1
- package/dist/esm/audio/filters/GranularFilter.d.ts +0 -63
- package/dist/esm/audio/filters/GranularFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/GranularFilter.js +0 -107
- package/dist/esm/audio/filters/GranularFilter.js.map +0 -1
- package/dist/esm/audio/filters/PitchShiftFilter.d.ts +0 -45
- package/dist/esm/audio/filters/PitchShiftFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/PitchShiftFilter.js +0 -66
- package/dist/esm/audio/filters/PitchShiftFilter.js.map +0 -1
- package/dist/esm/audio/filters/ReverbFilter.d.ts +0 -38
- package/dist/esm/audio/filters/ReverbFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/ReverbFilter.js +0 -122
- package/dist/esm/audio/filters/ReverbFilter.js.map +0 -1
- package/dist/esm/audio/filters/VocoderFilter.d.ts +0 -50
- package/dist/esm/audio/filters/VocoderFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/VocoderFilter.js +0 -94
- package/dist/esm/audio/filters/VocoderFilter.js.map +0 -1
- package/dist/esm/audio/filters/WorkletFilter.d.ts +0 -54
- package/dist/esm/audio/filters/WorkletFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/WorkletFilter.js +0 -110
- package/dist/esm/audio/filters/WorkletFilter.js.map +0 -1
- package/dist/esm/audio/worklets/beat-detector.worklet.d.ts +0 -2
- package/dist/esm/audio/worklets/beat-detector.worklet.d.ts.map +0 -1
- package/dist/esm/audio/worklets/beat-detector.worklet.js +0 -647
- package/dist/esm/audio/worklets/beat-detector.worklet.js.map +0 -1
- package/dist/esm/audio/worklets/granular.worklet.d.ts +0 -2
- package/dist/esm/audio/worklets/granular.worklet.d.ts.map +0 -1
- package/dist/esm/audio/worklets/granular.worklet.js +0 -89
- package/dist/esm/audio/worklets/granular.worklet.js.map +0 -1
- package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts +0 -2
- package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts.map +0 -1
- package/dist/esm/audio/worklets/pitch-shift.worklet.js +0 -74
- package/dist/esm/audio/worklets/pitch-shift.worklet.js.map +0 -1
- package/dist/esm/audio/worklets/vocoder.worklet.d.ts +0 -2
- package/dist/esm/audio/worklets/vocoder.worklet.d.ts.map +0 -1
- package/dist/esm/audio/worklets/vocoder.worklet.js +0 -92
- package/dist/esm/audio/worklets/vocoder.worklet.js.map +0 -1
- package/dist/esm/input/internal/interactionManagerRegistry.d.ts +0 -10
- package/dist/esm/input/internal/interactionManagerRegistry.d.ts.map +0 -1
- package/dist/esm/input/internal/interactionManagerRegistry.js +0 -10
- package/dist/esm/input/internal/interactionManagerRegistry.js.map +0 -1
- package/dist/esm/rendering/Camera.d.ts +0 -34
- package/dist/esm/rendering/Camera.d.ts.map +0 -1
- package/dist/esm/rendering/Camera.js +0 -38
- package/dist/esm/rendering/Camera.js.map +0 -1
- package/dist/esm/rendering/index.d.ts.map +0 -1
- package/dist/esm/rendering/plan/RenderInstruction.js +0 -45
- package/dist/esm/rendering/plan/RenderInstruction.js.map +0 -1
- package/dist/esm/rendering.d.ts +0 -29
- package/dist/esm/rendering.d.ts.map +0 -1
- package/dist/esm/rendering.js.map +0 -1
- package/dist/esm/resources/JsonStore.d.ts +0 -19
- package/dist/esm/resources/JsonStore.d.ts.map +0 -1
- package/dist/esm/resources/JsonStore.js +0 -62
- package/dist/esm/resources/JsonStore.js.map +0 -1
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import type { Color } from '#core/Color';
|
|
2
|
+
import type { System } from '#core/System';
|
|
3
|
+
import type { Time } from '#core/Time';
|
|
4
|
+
import type { Matrix } from '#math/Matrix';
|
|
5
|
+
import type { Geometry } from '#rendering/geometry/Geometry';
|
|
6
|
+
import type { MeshMaterial } from '#rendering/material/MeshMaterial';
|
|
2
7
|
import { RenderTexture } from '#rendering/texture/RenderTexture';
|
|
3
|
-
import {
|
|
8
|
+
import type { DrawContext, RenderToOptions } from './DrawContext';
|
|
4
9
|
import { type RenderBackend } from './RenderBackend';
|
|
10
|
+
import { type RenderBatch } from './RenderBatch';
|
|
5
11
|
import { type RenderNode } from './RenderNode';
|
|
6
12
|
import { type RenderStats } from './RenderStats';
|
|
7
13
|
import { View } from './View';
|
|
8
|
-
|
|
14
|
+
/** Options for {@link RenderingContext.capture} — allocates a new RenderTexture. */
|
|
15
|
+
export interface CaptureOptions {
|
|
9
16
|
width: number;
|
|
10
17
|
height: number;
|
|
11
18
|
clearColor?: Color;
|
|
@@ -14,6 +21,24 @@ export interface RenderOptions {
|
|
|
14
21
|
/** Override the view used for this render call. Defaults to the context's active camera. */
|
|
15
22
|
view?: View;
|
|
16
23
|
}
|
|
24
|
+
/** Options for {@link RenderingContext.drawGeometry}. */
|
|
25
|
+
export interface DrawGeometryOptions {
|
|
26
|
+
/**
|
|
27
|
+
* Custom look (shader / uniforms / textures / blend mode) for this draw. Must
|
|
28
|
+
* target `'mesh'`. Defaults to the standard mesh material (vertex colors,
|
|
29
|
+
* optional texture), so an untextured colored geometry needs no material.
|
|
30
|
+
*/
|
|
31
|
+
material?: MeshMaterial;
|
|
32
|
+
/** Tint multiplied into the geometry's vertex colors. Defaults to white (no tint). */
|
|
33
|
+
tint?: Color;
|
|
34
|
+
/** Override the view used for this draw. Defaults to the context's active camera. */
|
|
35
|
+
view?: View;
|
|
36
|
+
}
|
|
37
|
+
/** Options for {@link RenderingContext.drawBatch}. */
|
|
38
|
+
export interface DrawBatchOptions {
|
|
39
|
+
/** Override the view used for this draw. Defaults to the context's active camera. */
|
|
40
|
+
view?: View;
|
|
41
|
+
}
|
|
17
42
|
/**
|
|
18
43
|
* Owns rendering orchestration: builds, optimizes and plays the internal
|
|
19
44
|
* RenderPlan for a RenderNode subtree, manages render-target/view state for
|
|
@@ -21,22 +46,33 @@ export interface RenderOptions {
|
|
|
21
46
|
*
|
|
22
47
|
* The conceptual model is "the context renders the node":
|
|
23
48
|
* context.render(node) // into the active target (canvas by default)
|
|
24
|
-
* context.render(node, { view }) // override view (
|
|
25
|
-
* context.renderTo(node,
|
|
49
|
+
* context.render(node, { view }) // override view (the world view, screenView, etc.)
|
|
50
|
+
* context.renderTo(node, { target }) // into a caller-owned off-screen target (per-frame)
|
|
51
|
+
* context.capture(node, { width, height }) // into a freshly allocated RenderTexture
|
|
26
52
|
* @stable
|
|
27
53
|
*/
|
|
28
|
-
export declare class RenderingContext {
|
|
54
|
+
export declare class RenderingContext implements System, DrawContext {
|
|
55
|
+
/** App-systems tick band — rendering last (camera + render-plan prep). @internal */
|
|
56
|
+
readonly order = 500;
|
|
29
57
|
private readonly _backend;
|
|
30
|
-
private
|
|
58
|
+
private _view;
|
|
31
59
|
private readonly _screenView;
|
|
60
|
+
/** Lazily-created pooled drawable reused by every {@link drawGeometry} call. */
|
|
61
|
+
private _immediateMesh;
|
|
62
|
+
/** Lazily-created pooled geometry/look source reused by every {@link drawBatch} call. */
|
|
63
|
+
private _batchMesh;
|
|
64
|
+
/** Views explicitly pinned for per-frame update via {@link trackView} (escape hatch for views ticked but never rendered). */
|
|
65
|
+
private readonly _trackedViews;
|
|
66
|
+
/** Views rendered since the last {@link update} — auto-advanced then cleared each frame, so a custom view's follow/shake ticks with no manual bookkeeping. */
|
|
67
|
+
private readonly _renderedViews;
|
|
32
68
|
constructor(backend: RenderBackend);
|
|
33
69
|
/**
|
|
34
|
-
* The active
|
|
35
|
-
* backend view. Replace with a custom `
|
|
36
|
-
* zoom, bounds, or split-screen viewport behavior.
|
|
70
|
+
* The active world {@link View} — the default for {@link render}. Defaults to
|
|
71
|
+
* a view matching the initial backend view. Replace with a custom `View` for
|
|
72
|
+
* follow, zoom, bounds, or split-screen viewport behavior.
|
|
37
73
|
*/
|
|
38
|
-
get
|
|
39
|
-
set
|
|
74
|
+
get view(): View;
|
|
75
|
+
set view(view: View);
|
|
40
76
|
/**
|
|
41
77
|
* A RenderingContext-managed screen-space {@link View} suitable for UI
|
|
42
78
|
* overlays. Center and size are reset to match canvas logical dimensions
|
|
@@ -46,13 +82,31 @@ export declare class RenderingContext {
|
|
|
46
82
|
* Never follows, shakes, or rotates by default.
|
|
47
83
|
*/
|
|
48
84
|
get screenView(): View;
|
|
49
|
-
/** Backward-compatible alias — returns the active {@link camera}. */
|
|
50
|
-
get view(): View;
|
|
51
85
|
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
86
|
+
* Register a custom {@link View} (e.g. a picture-in-picture or minimap view)
|
|
87
|
+
* so {@link update} advances its `follow`/`shake`/bounds each frame, alongside
|
|
88
|
+
* the active {@link view}. The active view and {@link screenView} are managed
|
|
89
|
+
* automatically and need not be tracked.
|
|
90
|
+
*
|
|
91
|
+
* The view is caller-owned: call {@link untrackView} before discarding it,
|
|
92
|
+
* otherwise a `follow` target keeps it (and its target node) referenced.
|
|
93
|
+
*/
|
|
94
|
+
trackView(view: View): void;
|
|
95
|
+
/** Stop advancing a previously {@link trackView}-ed view. No-op if absent. */
|
|
96
|
+
untrackView(view: View): void;
|
|
97
|
+
/**
|
|
98
|
+
* Advance follow, shake, and bounds-constraint animations on the active
|
|
99
|
+
* {@link view}, every view rendered last frame (automatic), and any
|
|
100
|
+
* {@link trackView}-ed view. Ticked once per frame via {@link Application.systems}.
|
|
54
101
|
*/
|
|
55
|
-
update(
|
|
102
|
+
update(delta: Time): void;
|
|
103
|
+
/**
|
|
104
|
+
* Destroy the resources this context owns — the active {@link View} and the
|
|
105
|
+
* screen-space {@link View}. The {@link RenderBackend} is owned by the
|
|
106
|
+
* Application and destroyed separately.
|
|
107
|
+
* @internal — invoked via Application.systems on teardown.
|
|
108
|
+
*/
|
|
109
|
+
destroy(): void;
|
|
56
110
|
/**
|
|
57
111
|
* Resize the camera and screen view to match new canvas dimensions.
|
|
58
112
|
* Preserves the camera's center and zoom; only the visible area size changes.
|
|
@@ -75,7 +129,68 @@ export declare class RenderingContext {
|
|
|
75
129
|
* Saves and restores the active render target and view so the caller's
|
|
76
130
|
* rendering state is undisturbed.
|
|
77
131
|
*/
|
|
78
|
-
|
|
132
|
+
capture(node: RenderNode, options: CaptureOptions): RenderTexture;
|
|
133
|
+
/**
|
|
134
|
+
* Clear the active render target to `color`. Routes through the pass
|
|
135
|
+
* coordinator so it respects the clear-vs-load policy and never leaks the
|
|
136
|
+
* clear onto another target. Falls back to a raw backend clear when no
|
|
137
|
+
* coordinator is present (test stubs).
|
|
138
|
+
*/
|
|
139
|
+
clear(color: Color): void;
|
|
140
|
+
/**
|
|
141
|
+
* Render `node` into a caller-owned {@link RenderTexture} that is reused across
|
|
142
|
+
* frames — the per-frame, allocation-free counterpart to {@link capture}. The
|
|
143
|
+
* target and view are supplied by the caller; the view defaults to the
|
|
144
|
+
* target's own view. Save/restore is handled by the pass coordinator.
|
|
145
|
+
*/
|
|
146
|
+
renderTo(node: RenderNode, options: RenderToOptions): void;
|
|
147
|
+
/**
|
|
148
|
+
* Immediately draw a single {@link Geometry} with `transform` as its world
|
|
149
|
+
* matrix — no retained {@link RenderNode} required. Useful for procedural or
|
|
150
|
+
* data-driven shapes that would be wasteful to wrap in a node.
|
|
151
|
+
*
|
|
152
|
+
* The draw is submitted through the mesh renderer and flushed at once, so it
|
|
153
|
+
* lands in call order relative to the surrounding {@link render} calls: a
|
|
154
|
+
* `drawGeometry` issued after a layer's `render` draws on top of it. All
|
|
155
|
+
* output is presented at the frame-end backend flush, as usual.
|
|
156
|
+
*
|
|
157
|
+
* `transform` is taken as the raw world matrix (`a, b, c, d, tx, ty`),
|
|
158
|
+
* bypassing the position / rotation / scale / origin composition a node would
|
|
159
|
+
* apply — build it with {@link Matrix} directly. The geometry must use the
|
|
160
|
+
* `triangle-list` topology and the standard mesh attribute layout (position,
|
|
161
|
+
* optional texcoord and color); custom per-vertex attributes are dropped.
|
|
162
|
+
*
|
|
163
|
+
* This is the single-draw convenience of the immediate API: each call is its
|
|
164
|
+
* own flush and draw call, and the geometry is repacked every call, so it is
|
|
165
|
+
* best for a handful of draws. An instanced batch path for drawing many like
|
|
166
|
+
* items as one upload + one draw follows in a later release.
|
|
167
|
+
*
|
|
168
|
+
* @param geometry Source geometry (interleaved vertex data + layout).
|
|
169
|
+
* @param transform World matrix applied to the geometry's local vertices.
|
|
170
|
+
* @param options Optional {@link DrawGeometryOptions.material material},
|
|
171
|
+
* {@link DrawGeometryOptions.tint tint}, and
|
|
172
|
+
* {@link DrawGeometryOptions.view view}.
|
|
173
|
+
*/
|
|
174
|
+
drawGeometry(geometry: Geometry, transform: Matrix, options?: DrawGeometryOptions): void;
|
|
175
|
+
/**
|
|
176
|
+
* Immediately draw an instanced {@link RenderBatch} — one geometry + material
|
|
177
|
+
* drawn once with the batch's N per-instance `(transform, tint)` pairs as a
|
|
178
|
+
* single instanced draw call. This is the high-throughput immediate path: use
|
|
179
|
+
* it for many like items (tiles, bullets, procedural instances) where
|
|
180
|
+
* {@link drawGeometry} would issue one draw call each.
|
|
181
|
+
*
|
|
182
|
+
* Like {@link drawGeometry}, the batch is flushed at once and lands in call
|
|
183
|
+
* order relative to the surrounding {@link render} calls. An empty batch is a
|
|
184
|
+
* no-op.
|
|
185
|
+
*
|
|
186
|
+
* v1 renders with the default mesh material (per-instance tint over the
|
|
187
|
+
* geometry's vertex colors); a custom {@link RenderBatch.material} is not yet
|
|
188
|
+
* supported on the instanced path.
|
|
189
|
+
*
|
|
190
|
+
* @param batch The instanced submission (geometry + per-instance transforms/tints).
|
|
191
|
+
* @param options Optional {@link DrawBatchOptions.view view} override.
|
|
192
|
+
*/
|
|
193
|
+
drawBatch(batch: RenderBatch, options?: DrawBatchOptions): void;
|
|
79
194
|
/** Per-frame render counters. Convenience over backend.stats. */
|
|
80
195
|
get stats(): RenderStats;
|
|
81
196
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderingContext.d.ts","sourceRoot":"","sources":["../../../src/rendering/RenderingContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"RenderingContext.d.ts","sourceRoot":"","sources":["../../../src/rendering/RenderingContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
+
import { ImmediateMesh } from './mesh/ImmediateMesh.js';
|
|
1
2
|
import { StencilAttachmentMode } from './pass/RenderPassDescriptor.js';
|
|
2
3
|
import { playRenderTree } from './plan/playRenderTree.js';
|
|
3
4
|
import { RenderTexture } from './texture/RenderTexture.js';
|
|
4
|
-
import { Camera } from './Camera.js';
|
|
5
5
|
import '../core/Color.js';
|
|
6
|
+
import '../math/Matrix.js';
|
|
6
7
|
import '../core/SceneNode.js';
|
|
7
8
|
import '../math/Size.js';
|
|
8
|
-
import '../core/Time.js';
|
|
9
9
|
import '../math/Rectangle.js';
|
|
10
|
+
import './types.js';
|
|
10
11
|
import './plan/RenderCommand.js';
|
|
11
12
|
import './plan/RenderScope.js';
|
|
12
|
-
import './types.js';
|
|
13
13
|
import { View } from './View.js';
|
|
14
14
|
|
|
15
15
|
/**
|
|
@@ -19,39 +19,50 @@ import { View } from './View.js';
|
|
|
19
19
|
*
|
|
20
20
|
* The conceptual model is "the context renders the node":
|
|
21
21
|
* context.render(node) // into the active target (canvas by default)
|
|
22
|
-
* context.render(node, { view }) // override view (
|
|
23
|
-
* context.renderTo(node,
|
|
22
|
+
* context.render(node, { view }) // override view (the world view, screenView, etc.)
|
|
23
|
+
* context.renderTo(node, { target }) // into a caller-owned off-screen target (per-frame)
|
|
24
|
+
* context.capture(node, { width, height }) // into a freshly allocated RenderTexture
|
|
24
25
|
* @stable
|
|
25
26
|
*/
|
|
26
27
|
class RenderingContext {
|
|
28
|
+
/** App-systems tick band — rendering last (camera + render-plan prep). @internal */
|
|
29
|
+
order = 500;
|
|
27
30
|
_backend;
|
|
28
|
-
|
|
31
|
+
_view;
|
|
29
32
|
_screenView;
|
|
33
|
+
/** Lazily-created pooled drawable reused by every {@link drawGeometry} call. */
|
|
34
|
+
_immediateMesh = null;
|
|
35
|
+
/** Lazily-created pooled geometry/look source reused by every {@link drawBatch} call. */
|
|
36
|
+
_batchMesh = null;
|
|
37
|
+
/** Views explicitly pinned for per-frame update via {@link trackView} (escape hatch for views ticked but never rendered). */
|
|
38
|
+
_trackedViews = new Set();
|
|
39
|
+
/** Views rendered since the last {@link update} — auto-advanced then cleared each frame, so a custom view's follow/shake ticks with no manual bookkeeping. */
|
|
40
|
+
_renderedViews = new Set();
|
|
30
41
|
constructor(backend) {
|
|
31
42
|
this._backend = backend;
|
|
32
43
|
const viewWidth = backend.view?.width ?? 0;
|
|
33
44
|
const viewHeight = backend.view?.height ?? 0;
|
|
34
45
|
const viewCenterX = backend.view?.center?.x ?? viewWidth / 2;
|
|
35
46
|
const viewCenterY = backend.view?.center?.y ?? viewHeight / 2;
|
|
36
|
-
this.
|
|
47
|
+
this._view = View.from({
|
|
37
48
|
center: { x: viewCenterX, y: viewCenterY },
|
|
38
49
|
size: { width: viewWidth, height: viewHeight },
|
|
39
50
|
});
|
|
40
51
|
this._screenView = new View(viewCenterX, viewCenterY, viewWidth, viewHeight);
|
|
41
52
|
}
|
|
42
53
|
/**
|
|
43
|
-
* The active
|
|
44
|
-
* backend view. Replace with a custom `
|
|
45
|
-
* zoom, bounds, or split-screen viewport behavior.
|
|
54
|
+
* The active world {@link View} — the default for {@link render}. Defaults to
|
|
55
|
+
* a view matching the initial backend view. Replace with a custom `View` for
|
|
56
|
+
* follow, zoom, bounds, or split-screen viewport behavior.
|
|
46
57
|
*/
|
|
47
|
-
get
|
|
48
|
-
return this.
|
|
49
|
-
}
|
|
50
|
-
set
|
|
51
|
-
const
|
|
52
|
-
this.
|
|
53
|
-
if (
|
|
54
|
-
|
|
58
|
+
get view() {
|
|
59
|
+
return this._view;
|
|
60
|
+
}
|
|
61
|
+
set view(view) {
|
|
62
|
+
const previousView = this._view;
|
|
63
|
+
this._view = view;
|
|
64
|
+
if (previousView !== view) {
|
|
65
|
+
previousView.destroy();
|
|
55
66
|
}
|
|
56
67
|
}
|
|
57
68
|
/**
|
|
@@ -65,23 +76,68 @@ class RenderingContext {
|
|
|
65
76
|
get screenView() {
|
|
66
77
|
return this._screenView;
|
|
67
78
|
}
|
|
68
|
-
/**
|
|
69
|
-
|
|
70
|
-
|
|
79
|
+
/**
|
|
80
|
+
* Register a custom {@link View} (e.g. a picture-in-picture or minimap view)
|
|
81
|
+
* so {@link update} advances its `follow`/`shake`/bounds each frame, alongside
|
|
82
|
+
* the active {@link view}. The active view and {@link screenView} are managed
|
|
83
|
+
* automatically and need not be tracked.
|
|
84
|
+
*
|
|
85
|
+
* The view is caller-owned: call {@link untrackView} before discarding it,
|
|
86
|
+
* otherwise a `follow` target keeps it (and its target node) referenced.
|
|
87
|
+
*/
|
|
88
|
+
trackView(view) {
|
|
89
|
+
this._trackedViews.add(view);
|
|
90
|
+
}
|
|
91
|
+
/** Stop advancing a previously {@link trackView}-ed view. No-op if absent. */
|
|
92
|
+
untrackView(view) {
|
|
93
|
+
this._trackedViews.delete(view);
|
|
71
94
|
}
|
|
72
95
|
/**
|
|
73
|
-
* Advance follow, shake, and bounds-constraint animations on the
|
|
74
|
-
*
|
|
96
|
+
* Advance follow, shake, and bounds-constraint animations on the active
|
|
97
|
+
* {@link view}, every view rendered last frame (automatic), and any
|
|
98
|
+
* {@link trackView}-ed view. Ticked once per frame via {@link Application.systems}.
|
|
75
99
|
*/
|
|
76
|
-
update(
|
|
77
|
-
|
|
100
|
+
update(delta) {
|
|
101
|
+
const ms = delta.milliseconds;
|
|
102
|
+
this._view.update(ms);
|
|
103
|
+
// Auto-advance every view rendered last frame (so a custom view's follow/shake
|
|
104
|
+
// ticks with no manual bookkeeping) plus any explicitly tracked view; each view
|
|
105
|
+
// updates at most once per frame.
|
|
106
|
+
for (const view of this._trackedViews) {
|
|
107
|
+
if (view !== this._view) {
|
|
108
|
+
view.update(ms);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
for (const view of this._renderedViews) {
|
|
112
|
+
if (view !== this._view && !this._trackedViews.has(view)) {
|
|
113
|
+
view.update(ms);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Render-usage is per-frame: clear so a view that stops being rendered stops ticking.
|
|
117
|
+
this._renderedViews.clear();
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Destroy the resources this context owns — the active {@link View} and the
|
|
121
|
+
* screen-space {@link View}. The {@link RenderBackend} is owned by the
|
|
122
|
+
* Application and destroyed separately.
|
|
123
|
+
* @internal — invoked via Application.systems on teardown.
|
|
124
|
+
*/
|
|
125
|
+
destroy() {
|
|
126
|
+
this._view.destroy();
|
|
127
|
+
this._screenView.destroy();
|
|
128
|
+
this._trackedViews.clear();
|
|
129
|
+
this._renderedViews.clear();
|
|
130
|
+
this._immediateMesh?.destroy();
|
|
131
|
+
this._immediateMesh = null;
|
|
132
|
+
this._batchMesh?.destroy();
|
|
133
|
+
this._batchMesh = null;
|
|
78
134
|
}
|
|
79
135
|
/**
|
|
80
136
|
* Resize the camera and screen view to match new canvas dimensions.
|
|
81
137
|
* Preserves the camera's center and zoom; only the visible area size changes.
|
|
82
138
|
*/
|
|
83
139
|
resize(width, height) {
|
|
84
|
-
this.
|
|
140
|
+
this._view.resize(width, height);
|
|
85
141
|
this._screenView.resize(width, height);
|
|
86
142
|
this._screenView.setCenter(width / 2, height / 2);
|
|
87
143
|
}
|
|
@@ -93,7 +149,8 @@ class RenderingContext {
|
|
|
93
149
|
* high-level rendering entry point.
|
|
94
150
|
*/
|
|
95
151
|
render(node, options = {}) {
|
|
96
|
-
const view = options.view ?? this.
|
|
152
|
+
const view = options.view ?? this._view;
|
|
153
|
+
this._renderedViews.add(view);
|
|
97
154
|
this._backend.setView(view);
|
|
98
155
|
playRenderTree(node, this._backend);
|
|
99
156
|
}
|
|
@@ -106,7 +163,7 @@ class RenderingContext {
|
|
|
106
163
|
* Saves and restores the active render target and view so the caller's
|
|
107
164
|
* rendering state is undisturbed.
|
|
108
165
|
*/
|
|
109
|
-
|
|
166
|
+
capture(node, options) {
|
|
110
167
|
const target = new RenderTexture(options.width, options.height);
|
|
111
168
|
const view = new View(options.width / 2, options.height / 2, options.width, options.height);
|
|
112
169
|
const coordinator = this._backend._passCoordinator;
|
|
@@ -139,6 +196,149 @@ class RenderingContext {
|
|
|
139
196
|
}
|
|
140
197
|
return target;
|
|
141
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Clear the active render target to `color`. Routes through the pass
|
|
201
|
+
* coordinator so it respects the clear-vs-load policy and never leaks the
|
|
202
|
+
* clear onto another target. Falls back to a raw backend clear when no
|
|
203
|
+
* coordinator is present (test stubs).
|
|
204
|
+
*/
|
|
205
|
+
clear(color) {
|
|
206
|
+
const coordinator = this._backend._passCoordinator;
|
|
207
|
+
if (coordinator) {
|
|
208
|
+
coordinator.withChildPass({
|
|
209
|
+
target: coordinator.activeTarget,
|
|
210
|
+
view: coordinator.activeView,
|
|
211
|
+
load: 'clear',
|
|
212
|
+
clearColor: color,
|
|
213
|
+
stencil: StencilAttachmentMode.None,
|
|
214
|
+
}, () => {
|
|
215
|
+
/* Clear is expressed entirely by the pass descriptor above; the pass body is intentionally empty. */
|
|
216
|
+
});
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
this._backend.clear(color);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Render `node` into a caller-owned {@link RenderTexture} that is reused across
|
|
223
|
+
* frames — the per-frame, allocation-free counterpart to {@link capture}. The
|
|
224
|
+
* target and view are supplied by the caller; the view defaults to the
|
|
225
|
+
* target's own view. Save/restore is handled by the pass coordinator.
|
|
226
|
+
*/
|
|
227
|
+
renderTo(node, options) {
|
|
228
|
+
const view = options.view ?? options.target.view;
|
|
229
|
+
this._renderedViews.add(view);
|
|
230
|
+
const coordinator = this._backend._passCoordinator;
|
|
231
|
+
if (coordinator) {
|
|
232
|
+
coordinator.withChildPass({
|
|
233
|
+
target: options.target,
|
|
234
|
+
view,
|
|
235
|
+
load: options.clear !== undefined ? 'clear' : 'load',
|
|
236
|
+
clearColor: options.clear ?? null,
|
|
237
|
+
stencil: StencilAttachmentMode.None,
|
|
238
|
+
}, () => {
|
|
239
|
+
playRenderTree(node, this._backend);
|
|
240
|
+
});
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
const previousTarget = this._backend.renderTarget;
|
|
244
|
+
const previousView = this._backend.view;
|
|
245
|
+
this._backend.setRenderTarget(options.target);
|
|
246
|
+
this._backend.setView(view);
|
|
247
|
+
if (options.clear !== undefined) {
|
|
248
|
+
this._backend.clear(options.clear);
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
playRenderTree(node, this._backend);
|
|
252
|
+
}
|
|
253
|
+
finally {
|
|
254
|
+
this._backend.setRenderTarget(previousTarget);
|
|
255
|
+
this._backend.setView(previousView);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Immediately draw a single {@link Geometry} with `transform` as its world
|
|
260
|
+
* matrix — no retained {@link RenderNode} required. Useful for procedural or
|
|
261
|
+
* data-driven shapes that would be wasteful to wrap in a node.
|
|
262
|
+
*
|
|
263
|
+
* The draw is submitted through the mesh renderer and flushed at once, so it
|
|
264
|
+
* lands in call order relative to the surrounding {@link render} calls: a
|
|
265
|
+
* `drawGeometry` issued after a layer's `render` draws on top of it. All
|
|
266
|
+
* output is presented at the frame-end backend flush, as usual.
|
|
267
|
+
*
|
|
268
|
+
* `transform` is taken as the raw world matrix (`a, b, c, d, tx, ty`),
|
|
269
|
+
* bypassing the position / rotation / scale / origin composition a node would
|
|
270
|
+
* apply — build it with {@link Matrix} directly. The geometry must use the
|
|
271
|
+
* `triangle-list` topology and the standard mesh attribute layout (position,
|
|
272
|
+
* optional texcoord and color); custom per-vertex attributes are dropped.
|
|
273
|
+
*
|
|
274
|
+
* This is the single-draw convenience of the immediate API: each call is its
|
|
275
|
+
* own flush and draw call, and the geometry is repacked every call, so it is
|
|
276
|
+
* best for a handful of draws. An instanced batch path for drawing many like
|
|
277
|
+
* items as one upload + one draw follows in a later release.
|
|
278
|
+
*
|
|
279
|
+
* @param geometry Source geometry (interleaved vertex data + layout).
|
|
280
|
+
* @param transform World matrix applied to the geometry's local vertices.
|
|
281
|
+
* @param options Optional {@link DrawGeometryOptions.material material},
|
|
282
|
+
* {@link DrawGeometryOptions.tint tint}, and
|
|
283
|
+
* {@link DrawGeometryOptions.view view}.
|
|
284
|
+
*/
|
|
285
|
+
drawGeometry(geometry, transform, options = {}) {
|
|
286
|
+
const material = options.material ?? null;
|
|
287
|
+
// Defensive guard for JS callers; the MeshMaterial type already enforces
|
|
288
|
+
// this for TypeScript callers (its `target` is the literal 'mesh').
|
|
289
|
+
if (material !== null && material.target !== 'mesh') {
|
|
290
|
+
throw new Error(`drawGeometry material must target 'mesh' (got '${String(material.target)}').`);
|
|
291
|
+
}
|
|
292
|
+
const view = options.view ?? this._view;
|
|
293
|
+
this._renderedViews.add(view);
|
|
294
|
+
const mesh = (this._immediateMesh ??= new ImmediateMesh());
|
|
295
|
+
// Set the view first: setView now only flushes when the view actually changes
|
|
296
|
+
// (not unconditionally). Correctness here rests on (a) the trailing flush()
|
|
297
|
+
// below — so a later drawGeometry cannot observe this pooled mesh through a
|
|
298
|
+
// still-deferred draw — and (b) any renderer switch flushing its pending batch.
|
|
299
|
+
this._backend.setView(view);
|
|
300
|
+
mesh.configure(geometry, transform, material, options.tint ?? null);
|
|
301
|
+
this._backend.draw(mesh);
|
|
302
|
+
this._backend.flush();
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Immediately draw an instanced {@link RenderBatch} — one geometry + material
|
|
306
|
+
* drawn once with the batch's N per-instance `(transform, tint)` pairs as a
|
|
307
|
+
* single instanced draw call. This is the high-throughput immediate path: use
|
|
308
|
+
* it for many like items (tiles, bullets, procedural instances) where
|
|
309
|
+
* {@link drawGeometry} would issue one draw call each.
|
|
310
|
+
*
|
|
311
|
+
* Like {@link drawGeometry}, the batch is flushed at once and lands in call
|
|
312
|
+
* order relative to the surrounding {@link render} calls. An empty batch is a
|
|
313
|
+
* no-op.
|
|
314
|
+
*
|
|
315
|
+
* v1 renders with the default mesh material (per-instance tint over the
|
|
316
|
+
* geometry's vertex colors); a custom {@link RenderBatch.material} is not yet
|
|
317
|
+
* supported on the instanced path.
|
|
318
|
+
*
|
|
319
|
+
* @param batch The instanced submission (geometry + per-instance transforms/tints).
|
|
320
|
+
* @param options Optional {@link DrawBatchOptions.view view} override.
|
|
321
|
+
*/
|
|
322
|
+
drawBatch(batch, options = {}) {
|
|
323
|
+
if (batch.material !== null) {
|
|
324
|
+
throw new Error('drawBatch custom materials are not supported yet — v1 renders batches with the default mesh material.');
|
|
325
|
+
}
|
|
326
|
+
if (batch.count === 0) {
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
const view = options.view ?? this._view;
|
|
330
|
+
this._renderedViews.add(view);
|
|
331
|
+
const mesh = (this._batchMesh ??= new ImmediateMesh());
|
|
332
|
+
// Set the view first (setView only flushes when the view actually changes;
|
|
333
|
+
// correctness rests on the trailing flush() below and on any renderer switch
|
|
334
|
+
// flushing its pending batch), configure the pooled geometry/look source,
|
|
335
|
+
// then submit a single instanced draw over the batch's per-instance
|
|
336
|
+
// transforms/tints and flush it immediately.
|
|
337
|
+
this._backend.setView(view);
|
|
338
|
+
mesh.configureBatchSource(batch.geometry, batch.material);
|
|
339
|
+
this._backend.drawInstanced(mesh, batch._instanceTransforms, batch._instanceTints, batch.count);
|
|
340
|
+
this._backend.flush();
|
|
341
|
+
}
|
|
142
342
|
/** Per-frame render counters. Convenience over backend.stats. */
|
|
143
343
|
get stats() {
|
|
144
344
|
return this._backend.stats;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderingContext.js","sources":["../../../../src/rendering/RenderingContext.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"RenderingContext.js","sources":["../../../../src/rendering/RenderingContext.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;AAqDA;;;;;;;;;;;AAWG;MACU,gBAAgB,CAAA;;IAEX,KAAK,GAAG,GAAG;AACV,IAAA,QAAQ;AACjB,IAAA,KAAK;AACI,IAAA,WAAW;;IAEpB,cAAc,GAAyB,IAAI;;IAE3C,UAAU,GAAyB,IAAI;;AAE9B,IAAA,aAAa,GAAG,IAAI,GAAG,EAAQ;;AAE/B,IAAA,cAAc,GAAG,IAAI,GAAG,EAAQ;AAEjD,IAAA,WAAA,CAAmB,OAAsB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;QAEvB,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;AAC5C,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,IAAI,SAAS,GAAG,CAAC;AAC5D,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,IAAI,UAAU,GAAG,CAAC;AAE7D,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;YACrB,MAAM,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE;YAC1C,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE;AAC/C,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC;IAC9E;AAEA;;;;AAIG;AACH,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;IACnB;IAEA,IAAW,IAAI,CAAC,IAAU,EAAA;AACxB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK;AAE/B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AAEjB,QAAA,IAAI,YAAY,KAAK,IAAI,EAAE;YACzB,YAAY,CAAC,OAAO,EAAE;QACxB;IACF;AAEA;;;;;;;AAOG;AACH,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW;IACzB;AAEA;;;;;;;;AAQG;AACI,IAAA,SAAS,CAAC,IAAU,EAAA;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B;;AAGO,IAAA,WAAW,CAAC,IAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;IACjC;AAEA;;;;AAIG;AACI,IAAA,MAAM,CAAC,KAAW,EAAA;AACvB,QAAA,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY;AAE7B,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;;;;AAKrB,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;AACrC,YAAA,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB;QACF;AACA,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AACtC,YAAA,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACxD,gBAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB;QACF;;AAGA,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;IAC7B;AAEA;;;;;AAKG;IACI,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,QAAA,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IACxB;AAEA;;;AAGG;IACI,MAAM,CAAC,KAAa,EAAE,MAAc,EAAA;QACzC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;QAChC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IACnD;AAEA;;;;;;AAMG;AACI,IAAA,MAAM,CAAC,IAAgB,EAAE,OAAA,GAAyB,EAAE,EAAA;QACzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;AAEvC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3B,QAAA,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;IACrC;AAEA;;;;;;;;AAQG;IACI,OAAO,CAAC,IAAgB,EAAE,OAAuB,EAAA;AACtD,QAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;QAC/D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;AAC3F,QAAA,MAAM,WAAW,GAAI,IAAI,CAAC,QAA+D,CAAC,gBAAgB;QAE1G,IAAI,WAAW,EAAE;YACf,WAAW,CAAC,aAAa,CACvB;gBACE,MAAM;gBACN,IAAI;AACJ,gBAAA,IAAI,EAAE,OAAO,CAAC,UAAU,KAAK,SAAS,GAAG,OAAO,GAAG,MAAM;AACzD,gBAAA,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;gBACtC,OAAO,EAAE,qBAAqB,CAAC,IAAI;AACpC,aAAA,EACD,MAAK;AACH,gBAAA,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;AACrC,YAAA,CAAC,CACF;AAED,YAAA,OAAO,MAAM;QACf;;AAGA,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY;AACjD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;AAEvC,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AAE3B,QAAA,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QACzC;AAEA,QAAA,IAAI;AACF,YAAA,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;QACrC;gBAAU;AACR,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;QACrC;AAEA,QAAA,OAAO,MAAM;IACf;AAEA;;;;;AAKG;AACI,IAAA,KAAK,CAAC,KAAY,EAAA;AACvB,QAAA,MAAM,WAAW,GAAI,IAAI,CAAC,QAA+D,CAAC,gBAAgB;QAE1G,IAAI,WAAW,EAAE;YACf,WAAW,CAAC,aAAa,CACvB;gBACE,MAAM,EAAE,WAAW,CAAC,YAAY;gBAChC,IAAI,EAAE,WAAW,CAAC,UAAU;AAC5B,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,qBAAqB,CAAC,IAAI;AACpC,aAAA,EACD,MAAK;;AAEL,YAAA,CAAC,CACF;YAED;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;IAC5B;AAEA;;;;;AAKG;IACI,QAAQ,CAAC,IAAgB,EAAE,OAAwB,EAAA;QACxD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI;AAEhD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAA,MAAM,WAAW,GAAI,IAAI,CAAC,QAA+D,CAAC,gBAAgB;QAE1G,IAAI,WAAW,EAAE;YACf,WAAW,CAAC,aAAa,CACvB;gBACE,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI;AACJ,gBAAA,IAAI,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,GAAG,OAAO,GAAG,MAAM;AACpD,gBAAA,UAAU,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;gBACjC,OAAO,EAAE,qBAAqB,CAAC,IAAI;AACpC,aAAA,EACD,MAAK;AACH,gBAAA,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;AACrC,YAAA,CAAC,CACF;YAED;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY;AACjD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;QAEvC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7C,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AAE3B,QAAA,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE;YAC/B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpC;AAEA,QAAA,IAAI;AACF,YAAA,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;QACrC;gBAAU;AACR,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;QACrC;IACF;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;AACI,IAAA,YAAY,CAAC,QAAkB,EAAE,SAAiB,EAAE,UAA+B,EAAE,EAAA;AAC1F,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI;;;QAIzC,IAAI,QAAQ,KAAK,IAAI,IAAK,QAAQ,CAAC,MAAiB,KAAK,MAAM,EAAE;AAC/D,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,+CAAA,EAAkD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA,GAAA,CAAK,CAAC;QACjG;QAEA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;AAEvC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7B,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,aAAa,EAAE,CAAC;;;;;AAM1D,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;AACnE,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACvB;AAEA;;;;;;;;;;;;;;;;;AAiBG;AACI,IAAA,SAAS,CAAC,KAAkB,EAAE,OAAA,GAA4B,EAAE,EAAA;AACjE,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CAAC,uGAAuG,CAAC;QAC1H;AAEA,QAAA,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE;YACrB;QACF;QAEA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;AAEvC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7B,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,aAAa,EAAE,CAAC;;;;;;AAOtD,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC;AAC/F,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACvB;;AAGA,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK;IAC5B;AAEA;;;;AAIG;AACH,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ;IACtB;AACD;;;;"}
|
|
@@ -28,6 +28,8 @@ export declare class TransformBuffer {
|
|
|
28
28
|
private _skippedWriteCount;
|
|
29
29
|
private _uploadCount;
|
|
30
30
|
private _uploadedRecordCount;
|
|
31
|
+
private _dirtyMin;
|
|
32
|
+
private _dirtyMax;
|
|
31
33
|
get count(): number;
|
|
32
34
|
/**
|
|
33
35
|
* Number of transform rows written into the buffer (via {@link write} /
|
|
@@ -59,8 +61,29 @@ export declare class TransformBuffer {
|
|
|
59
61
|
get capacity(): number;
|
|
60
62
|
get data(): Float32Array;
|
|
61
63
|
get version(): number;
|
|
64
|
+
/** Running content hash of the rows written since begin(). @internal */
|
|
65
|
+
get frameHash(): number;
|
|
62
66
|
begin(expectedCount?: number): this;
|
|
63
67
|
push(transform: Matrix, tint: Color): number;
|
|
68
|
+
/**
|
|
69
|
+
* Rewind the write cursor to `count`, freeing the rows above it for reuse, and
|
|
70
|
+
* (optionally) restore the running content hash to its pre-rewind value so the
|
|
71
|
+
* freed rows' writes don't linger in the hash and trigger spurious re-uploads.
|
|
72
|
+
* Used by nested draw plans (filters / cacheAsBitmap) to isolate their slots.
|
|
73
|
+
* @internal
|
|
74
|
+
*/
|
|
75
|
+
rewindTo(count: number, frameHash?: number): this;
|
|
76
|
+
/**
|
|
77
|
+
* Consume the dirty row range written since the last upload, clamped to
|
|
78
|
+
* `[0, maxCount)`, and clear it. Returns the contiguous `[firstRow, firstRow +
|
|
79
|
+
* rowCount)` a delta upload should push (`rowCount === 0` when nothing is
|
|
80
|
+
* dirty). The backend calls this at its upload boundary.
|
|
81
|
+
* @internal
|
|
82
|
+
*/
|
|
83
|
+
consumeDirtyRange(maxCount: number): {
|
|
84
|
+
firstRow: number;
|
|
85
|
+
rowCount: number;
|
|
86
|
+
};
|
|
64
87
|
write(slot: number, transform: Matrix, tint: Color): this;
|
|
65
88
|
/**
|
|
66
89
|
* Record that a draw command's transform write was intentionally skipped
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransformBuffer.d.ts","sourceRoot":"","sources":["../../../src/rendering/TransformBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAU3C,gBAAgB;AAChB,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAmE;IAChF,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,mBAAmB,CAAM;IACjC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,oBAAoB,CAAK;
|
|
1
|
+
{"version":3,"file":"TransformBuffer.d.ts","sourceRoot":"","sources":["../../../src/rendering/TransformBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAU3C,gBAAgB;AAChB,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAmE;IAChF,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,mBAAmB,CAAM;IACjC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,oBAAoB,CAAK;IAKjC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAM;IAEvB,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED;;;;;OAKG;IACH,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED;;;;;OAKG;IACH,IAAW,iBAAiB,IAAI,MAAM,CAErC;IAED;;;;;OAKG;IACH,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED;;;;OAIG;IACH,IAAW,mBAAmB,IAAI,MAAM,CAEvC;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED,IAAW,IAAI,IAAI,YAAY,CAE9B;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,wEAAwE;IACxE,IAAW,SAAS,IAAI,MAAM,CAE7B;IAEM,KAAK,CAAC,aAAa,SAAI,GAAG,IAAI;IAiB9B,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM;IAQnD;;;;;;OAMG;IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAYxD;;;;;;OAMG;IACI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAe3E,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI;IAiDhE;;;;;OAKG;IACI,kBAAkB,IAAI,IAAI;IAMjC;;;;OAIG;IACI,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAOvC,cAAc,CAAC,QAAQ,SAAI,GAAG,4BAA4B;IAmBjE,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,IAAI;CAGb"}
|