@codexo/exojs 0.13.0 → 0.14.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 +133 -6
- package/README.md +80 -63
- package/dist/esm/animation/Tween.js +1 -1
- package/dist/esm/animation/Tween.js.map +1 -1
- package/dist/esm/animation/TweenManager.d.ts +9 -5
- package/dist/esm/animation/TweenManager.d.ts.map +1 -1
- package/dist/esm/animation/TweenManager.js +14 -8
- package/dist/esm/animation/TweenManager.js.map +1 -1
- package/dist/esm/animation/index.d.ts +6 -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/{filters/WorkletFilter.d.ts → WorkletEffect.d.ts} +3 -3
- package/dist/esm/audio/WorkletEffect.d.ts.map +1 -0
- package/dist/esm/audio/{filters/WorkletFilter.js → WorkletEffect.js} +6 -6
- 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 +127 -10
- package/dist/esm/core/Application.d.ts.map +1 -1
- package/dist/esm/core/Application.js +226 -25
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/BuildInfo.js +2 -2
- 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/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 +69 -21
- package/dist/esm/core/Scene.d.ts.map +1 -1
- package/dist/esm/core/Scene.js +109 -16
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.d.ts +22 -60
- package/dist/esm/core/SceneManager.d.ts.map +1 -1
- package/dist/esm/core/SceneManager.js +68 -153
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +43 -2
- package/dist/esm/core/SceneNode.d.ts.map +1 -1
- package/dist/esm/core/SceneNode.js +101 -12
- 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 +42 -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 +35 -0
- package/dist/esm/core/SystemRegistry.d.ts.map +1 -0
- package/dist/esm/core/SystemRegistry.js +104 -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 +26 -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/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 +149 -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 +311 -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 +34 -59
- 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.map +1 -1
- package/dist/esm/input/Gamepad.js +8 -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 +35 -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/CallbackRenderPass.js +1 -1
- 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/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/RenderBackend.d.ts +15 -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 +113 -20
- package/dist/esm/rendering/RenderNode.js.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 +88 -4
- package/dist/esm/rendering/RenderingContext.d.ts.map +1 -1
- package/dist/esm/rendering/RenderingContext.js +107 -5
- package/dist/esm/rendering/RenderingContext.js.map +1 -1
- package/dist/esm/rendering/TransformBuffer.d.ts.map +1 -1
- package/dist/esm/rendering/TransformBuffer.js +2 -0
- package/dist/esm/rendering/TransformBuffer.js.map +1 -1
- package/dist/esm/rendering/View.d.ts +47 -15
- package/dist/esm/rendering/View.d.ts.map +1 -1
- package/dist/esm/rendering/View.js +44 -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 +3 -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/ShaderSource.js +6 -0
- package/dist/esm/rendering/material/ShaderSource.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 +1 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -1
- package/dist/esm/rendering/plan/RenderInstruction.d.ts +7 -37
- 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 +132 -46
- 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 +16 -10
- package/dist/esm/rendering/plan/RenderScope.d.ts.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.d.ts +6 -0
- package/dist/esm/rendering/primitives/Graphics.d.ts.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.js +17 -1
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/{index.d.ts → public.d.ts} +5 -35
- 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 +11 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/AnimatedSprite.js +24 -2
- 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 +4 -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 +1 -0
- 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 +7 -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 +11 -0
- package/dist/esm/rendering/types.d.ts.map +1 -1
- package/dist/esm/rendering/types.js +11 -0
- 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/WebGl2Backend.d.ts +21 -2
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +106 -6
- 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 +10 -4
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +18 -2
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +91 -10
- 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 +3 -0
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +13 -0
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +102 -24
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js +6 -1
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js +19 -9
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +8 -4
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +1 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +19 -7
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +13 -2
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +22 -2
- 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 +42 -2
- package/dist/esm/resources/Loader.d.ts.map +1 -1
- package/dist/esm/resources/Loader.js +92 -7
- 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/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/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 +13 -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/package.json +24 -13
- 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.map +0 -1
- 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/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,5 +1,7 @@
|
|
|
1
1
|
import { Color } from '#core/Color';
|
|
2
|
+
import { type MaterialKey } from '#rendering/plan/RenderCommand';
|
|
2
3
|
import type { RenderPlanBuilder } from '#rendering/plan/RenderPlanBuilder';
|
|
4
|
+
import type { RenderBackend } from '#rendering/RenderBackend';
|
|
3
5
|
import { type PixelSnapMode } from './pixelSnap';
|
|
4
6
|
import { RenderNode } from './RenderNode';
|
|
5
7
|
import { BlendModes } from './types';
|
|
@@ -14,6 +16,15 @@ export declare class Drawable extends RenderNode {
|
|
|
14
16
|
private _tint;
|
|
15
17
|
private _blendMode;
|
|
16
18
|
private _pixelSnapMode;
|
|
19
|
+
/**
|
|
20
|
+
* Cached material key (Slice 2b). `null` until first computed or after
|
|
21
|
+
* {@link invalidateCache}. Bound to {@link _materialKeyBackend} so a backend
|
|
22
|
+
* switch (multi-app / multi-backend) recomputes rather than returning stale
|
|
23
|
+
* renderer ids. Drawables that carry their own {@link Material} bypass this
|
|
24
|
+
* cache entirely (the material can mutate its keys without notifying us).
|
|
25
|
+
*/
|
|
26
|
+
private _materialKey;
|
|
27
|
+
private _materialKeyBackend;
|
|
17
28
|
get tint(): Color;
|
|
18
29
|
set tint(tint: Color);
|
|
19
30
|
get blendMode(): BlendModes;
|
|
@@ -55,6 +66,19 @@ export declare class Drawable extends RenderNode {
|
|
|
55
66
|
_isDrawableForRenderPlan(): boolean;
|
|
56
67
|
/** @internal */
|
|
57
68
|
_renderPlanGetBlendMode(): BlendModes;
|
|
69
|
+
/**
|
|
70
|
+
* Resolve this drawable's {@link MaterialKey}, reusing a cached key when valid
|
|
71
|
+
* (Slice 2b). The cache busts on any tint/blend/texture/material/shader/
|
|
72
|
+
* pixel-snap mutation via {@link invalidateCache}, and on a backend switch.
|
|
73
|
+
*
|
|
74
|
+
* Drawables that own a {@link Material} are never cached — the material can
|
|
75
|
+
* change its `pipelineKey`/`bindKey` internally without notifying the node —
|
|
76
|
+
* so they recompute into the held key (still zero per-frame allocation).
|
|
77
|
+
*
|
|
78
|
+
* @internal
|
|
79
|
+
*/
|
|
80
|
+
_getOrComputeMaterialKey(backend: RenderBackend): MaterialKey;
|
|
81
|
+
invalidateCache(): this;
|
|
58
82
|
destroy(): void;
|
|
59
83
|
}
|
|
60
84
|
//# sourceMappingURL=Drawable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawable.d.ts","sourceRoot":"","sources":["../../../src/rendering/Drawable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"Drawable.d.ts","sourceRoot":"","sources":["../../../src/rendering/Drawable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAA0B,KAAK,WAAW,EAAwB,MAAM,+BAA+B,CAAC;AAC/G,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;;;;;GAMG;AACH,qBAAa,QAAS,SAAQ,UAAU;IACtC,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,cAAc,CAAyB;IAE/C;;;;;;OAMG;IACH,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,mBAAmB,CAA8B;IAEzD,IAAW,IAAI,IAAI,KAAK,CAEvB;IAED,IAAW,IAAI,CAAC,IAAI,EAAE,KAAK,EAE1B;IAED,IAAW,SAAS,IAAI,UAAU,CAEjC;IAED,IAAW,SAAS,CAAC,SAAS,EAAE,UAAU,EAEzC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,IAAW,aAAa,IAAI,aAAa,CAExC;IAED,IAAW,aAAa,CAAC,IAAI,EAAE,aAAa,EAW3C;IAED;;;OAGG;IACI,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IASlC;;;OAGG;IACI,YAAY,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IAShD,gBAAgB;cACG,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAIpE,gBAAgB;IACA,wBAAwB,IAAI,OAAO;IAInD,gBAAgB;IACA,uBAAuB,IAAI,UAAU;IAIrD;;;;;;;;;;OAUG;IACI,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,WAAW;IAsCpD,eAAe,IAAI,IAAI;IASvB,OAAO,IAAI,IAAI;CAKhC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Color } from '../core/Color.js';
|
|
2
|
+
import { drawableHasOwnMaterial, writeMaterialKeyInto } from './plan/RenderCommand.js';
|
|
2
3
|
import { isPixelSnapMode } from './pixelSnap.js';
|
|
3
4
|
import { RenderNode } from './RenderNode.js';
|
|
4
5
|
import { BlendModes } from './types.js';
|
|
@@ -14,6 +15,15 @@ class Drawable extends RenderNode {
|
|
|
14
15
|
_tint = Color.white.clone();
|
|
15
16
|
_blendMode = BlendModes.Normal;
|
|
16
17
|
_pixelSnapMode = 'none';
|
|
18
|
+
/**
|
|
19
|
+
* Cached material key (Slice 2b). `null` until first computed or after
|
|
20
|
+
* {@link invalidateCache}. Bound to {@link _materialKeyBackend} so a backend
|
|
21
|
+
* switch (multi-app / multi-backend) recomputes rather than returning stale
|
|
22
|
+
* renderer ids. Drawables that carry their own {@link Material} bypass this
|
|
23
|
+
* cache entirely (the material can mutate its keys without notifying us).
|
|
24
|
+
*/
|
|
25
|
+
_materialKey = null;
|
|
26
|
+
_materialKeyBackend = null;
|
|
17
27
|
get tint() {
|
|
18
28
|
return this._tint;
|
|
19
29
|
}
|
|
@@ -92,6 +102,50 @@ class Drawable extends RenderNode {
|
|
|
92
102
|
_renderPlanGetBlendMode() {
|
|
93
103
|
return this._blendMode;
|
|
94
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Resolve this drawable's {@link MaterialKey}, reusing a cached key when valid
|
|
107
|
+
* (Slice 2b). The cache busts on any tint/blend/texture/material/shader/
|
|
108
|
+
* pixel-snap mutation via {@link invalidateCache}, and on a backend switch.
|
|
109
|
+
*
|
|
110
|
+
* Drawables that own a {@link Material} are never cached — the material can
|
|
111
|
+
* change its `pipelineKey`/`bindKey` internally without notifying the node —
|
|
112
|
+
* so they recompute into the held key (still zero per-frame allocation).
|
|
113
|
+
*
|
|
114
|
+
* @internal
|
|
115
|
+
*/
|
|
116
|
+
_getOrComputeMaterialKey(backend) {
|
|
117
|
+
const cached = this._materialKey;
|
|
118
|
+
if (cached !== null) {
|
|
119
|
+
if (drawableHasOwnMaterial(this)) {
|
|
120
|
+
// Own-material path: never trust the cache, but reuse the held object.
|
|
121
|
+
return writeMaterialKeyInto(cached, this, backend);
|
|
122
|
+
}
|
|
123
|
+
if (this._materialKeyBackend === backend) {
|
|
124
|
+
return cached;
|
|
125
|
+
}
|
|
126
|
+
// Backend switched: recompute into the held key, rebind to the backend.
|
|
127
|
+
this._materialKeyBackend = backend;
|
|
128
|
+
return writeMaterialKeyInto(cached, this, backend);
|
|
129
|
+
}
|
|
130
|
+
const key = writeMaterialKeyInto({
|
|
131
|
+
rendererId: 0,
|
|
132
|
+
blendMode: this._blendMode,
|
|
133
|
+
textureId: -1,
|
|
134
|
+
shaderId: -1,
|
|
135
|
+
pipelineKey: 0,
|
|
136
|
+
bindKey: 0,
|
|
137
|
+
}, this, backend);
|
|
138
|
+
this._materialKey = key;
|
|
139
|
+
this._materialKeyBackend = backend;
|
|
140
|
+
return key;
|
|
141
|
+
}
|
|
142
|
+
invalidateCache() {
|
|
143
|
+
super.invalidateCache();
|
|
144
|
+
// Bust the cached material key; next emitDraw recomputes it. The held object
|
|
145
|
+
// is kept and rewritten in place on the next miss (no re-allocation).
|
|
146
|
+
this._materialKeyBackend = null;
|
|
147
|
+
return this;
|
|
148
|
+
}
|
|
95
149
|
destroy() {
|
|
96
150
|
super.destroy();
|
|
97
151
|
this._tint.destroy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawable.js","sources":["../../../../src/rendering/Drawable.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Drawable.js","sources":["../../../../src/rendering/Drawable.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { RenderStats } from './RenderStats';
|
|
2
|
+
/**
|
|
3
|
+
* Per-backend GPU resource accountant (Slice 2g — Resource-Accounting).
|
|
4
|
+
*
|
|
5
|
+
* The GPU exposes no way to query VRAM usage (neither WebGL2 nor WebGPU report
|
|
6
|
+
* it — a deliberate security boundary), so the engine keeps its own running
|
|
7
|
+
* tally by booking every allocation (`+`) and every free (`−`) at the points
|
|
8
|
+
* where the backend creates or destroys a GPU texture / buffer. The same
|
|
9
|
+
* bookkeeping runs against the Node fake-context, so it is fully deterministic
|
|
10
|
+
* and CI-testable.
|
|
11
|
+
*
|
|
12
|
+
* The accountant owns the authoritative running total ({@link liveBytes}) and
|
|
13
|
+
* mirrors it into {@link RenderStats.gpuMemoryBytes}. Unlike the per-frame
|
|
14
|
+
* counters, that total is **not** zeroed by {@link resetRenderStats} — live
|
|
15
|
+
* resources outlive frames. The per-frame upload / download accumulators are
|
|
16
|
+
* written straight into the stats object and reset each tick.
|
|
17
|
+
*
|
|
18
|
+
* One accountant per backend instance (never module-global) so that multiple
|
|
19
|
+
* concurrent {@link Application}s keep independent tallies.
|
|
20
|
+
*
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
export declare class GpuResourceAccountant {
|
|
24
|
+
private readonly _stats;
|
|
25
|
+
private _liveBytes;
|
|
26
|
+
constructor(stats: RenderStats);
|
|
27
|
+
/** Current running total of live GPU resource bytes (textures + buffers). */
|
|
28
|
+
get liveBytes(): number;
|
|
29
|
+
/**
|
|
30
|
+
* Record an allocation of `bytes` GPU memory (texture storage or buffer).
|
|
31
|
+
* Pass a non-negative value; the running total and the mirrored
|
|
32
|
+
* `stats.gpuMemoryBytes` both increase.
|
|
33
|
+
*/
|
|
34
|
+
allocate(bytes: number): void;
|
|
35
|
+
/**
|
|
36
|
+
* Record a free of `bytes` GPU memory. Clamped at zero so a double-free or a
|
|
37
|
+
* missed allocation can never drive the tally negative. To avoid transient
|
|
38
|
+
* spikes on resize, book the free **before** the matching re-allocation.
|
|
39
|
+
*/
|
|
40
|
+
free(bytes: number): void;
|
|
41
|
+
/**
|
|
42
|
+
* Re-book a resource whose byte size changed in place (e.g. a texture resize):
|
|
43
|
+
* frees the previous size and allocates the next, never dipping below zero.
|
|
44
|
+
* Returns the new size so callers can stash it for the next free.
|
|
45
|
+
*/
|
|
46
|
+
reallocate(previousBytes: number, nextBytes: number): number;
|
|
47
|
+
/** Record `bytes` of content-texture pixel data uploaded this frame (CPU → GPU). */
|
|
48
|
+
recordTextureUpload(bytes: number): void;
|
|
49
|
+
/** Record `bytes` of buffer data uploaded this frame (CPU → GPU). */
|
|
50
|
+
recordBufferUpload(bytes: number): void;
|
|
51
|
+
/** Record a GPU → CPU readback of `bytes` this frame (e.g. `mapAsync`, `readPixels`). */
|
|
52
|
+
recordDownload(bytes: number): void;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Estimated bytes for a 2D texture of `width × height` at `bytesPerPixel`,
|
|
56
|
+
* including the mip chain when `mipLevelCount > 1`. A full mip chain adds
|
|
57
|
+
* roughly ¹⁄₃ over the base level; this sums the exact per-level footprint
|
|
58
|
+
* (each level a quarter of the previous, floored at 1×1).
|
|
59
|
+
*
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
62
|
+
export declare const estimateTextureBytes: (width: number, height: number, bytesPerPixel: number, mipLevelCount?: number) => number;
|
|
63
|
+
/** Bytes per pixel for the {@link DataTexture} formats (shared by both backends). @internal */
|
|
64
|
+
export declare const dataTextureBytesPerPixel: (format: "r8" | "r32f" | "rgba8" | "rgba32f") => number;
|
|
65
|
+
//# sourceMappingURL=GpuResourceAccountant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GpuResourceAccountant.d.ts","sourceRoot":"","sources":["../../../src/rendering/GpuResourceAccountant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,UAAU,CAAK;gBAEJ,KAAK,EAAE,WAAW;IAKrC,6EAA6E;IAC7E,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASpC;;;;OAIG;IACI,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAShC;;;;OAIG;IACI,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAOnE,oFAAoF;IAC7E,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ/C,qEAAqE;IAC9D,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ9C,yFAAyF;IAClF,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAQ3C;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,EAAE,QAAQ,MAAM,EAAE,eAAe,MAAM,EAAE,sBAAiB,KAAG,MAqB9G,CAAC;AAEF,+FAA+F;AAC/F,eAAO,MAAM,wBAAwB,GAAI,QAAQ,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,KAAG,MAWtF,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-backend GPU resource accountant (Slice 2g — Resource-Accounting).
|
|
3
|
+
*
|
|
4
|
+
* The GPU exposes no way to query VRAM usage (neither WebGL2 nor WebGPU report
|
|
5
|
+
* it — a deliberate security boundary), so the engine keeps its own running
|
|
6
|
+
* tally by booking every allocation (`+`) and every free (`−`) at the points
|
|
7
|
+
* where the backend creates or destroys a GPU texture / buffer. The same
|
|
8
|
+
* bookkeeping runs against the Node fake-context, so it is fully deterministic
|
|
9
|
+
* and CI-testable.
|
|
10
|
+
*
|
|
11
|
+
* The accountant owns the authoritative running total ({@link liveBytes}) and
|
|
12
|
+
* mirrors it into {@link RenderStats.gpuMemoryBytes}. Unlike the per-frame
|
|
13
|
+
* counters, that total is **not** zeroed by {@link resetRenderStats} — live
|
|
14
|
+
* resources outlive frames. The per-frame upload / download accumulators are
|
|
15
|
+
* written straight into the stats object and reset each tick.
|
|
16
|
+
*
|
|
17
|
+
* One accountant per backend instance (never module-global) so that multiple
|
|
18
|
+
* concurrent {@link Application}s keep independent tallies.
|
|
19
|
+
*
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
class GpuResourceAccountant {
|
|
23
|
+
_stats;
|
|
24
|
+
_liveBytes = 0;
|
|
25
|
+
constructor(stats) {
|
|
26
|
+
this._stats = stats;
|
|
27
|
+
this._stats.gpuMemoryBytes = 0;
|
|
28
|
+
}
|
|
29
|
+
/** Current running total of live GPU resource bytes (textures + buffers). */
|
|
30
|
+
get liveBytes() {
|
|
31
|
+
return this._liveBytes;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Record an allocation of `bytes` GPU memory (texture storage or buffer).
|
|
35
|
+
* Pass a non-negative value; the running total and the mirrored
|
|
36
|
+
* `stats.gpuMemoryBytes` both increase.
|
|
37
|
+
*/
|
|
38
|
+
allocate(bytes) {
|
|
39
|
+
if (bytes <= 0) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
this._liveBytes += bytes;
|
|
43
|
+
this._stats.gpuMemoryBytes = this._liveBytes;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Record a free of `bytes` GPU memory. Clamped at zero so a double-free or a
|
|
47
|
+
* missed allocation can never drive the tally negative. To avoid transient
|
|
48
|
+
* spikes on resize, book the free **before** the matching re-allocation.
|
|
49
|
+
*/
|
|
50
|
+
free(bytes) {
|
|
51
|
+
if (bytes <= 0) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this._liveBytes = Math.max(0, this._liveBytes - bytes);
|
|
55
|
+
this._stats.gpuMemoryBytes = this._liveBytes;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Re-book a resource whose byte size changed in place (e.g. a texture resize):
|
|
59
|
+
* frees the previous size and allocates the next, never dipping below zero.
|
|
60
|
+
* Returns the new size so callers can stash it for the next free.
|
|
61
|
+
*/
|
|
62
|
+
reallocate(previousBytes, nextBytes) {
|
|
63
|
+
this.free(previousBytes);
|
|
64
|
+
this.allocate(nextBytes);
|
|
65
|
+
return nextBytes;
|
|
66
|
+
}
|
|
67
|
+
/** Record `bytes` of content-texture pixel data uploaded this frame (CPU → GPU). */
|
|
68
|
+
recordTextureUpload(bytes) {
|
|
69
|
+
if (bytes <= 0) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this._stats.textureUploadBytes += bytes;
|
|
73
|
+
}
|
|
74
|
+
/** Record `bytes` of buffer data uploaded this frame (CPU → GPU). */
|
|
75
|
+
recordBufferUpload(bytes) {
|
|
76
|
+
if (bytes <= 0) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
this._stats.bufferUploadBytes += bytes;
|
|
80
|
+
}
|
|
81
|
+
/** Record a GPU → CPU readback of `bytes` this frame (e.g. `mapAsync`, `readPixels`). */
|
|
82
|
+
recordDownload(bytes) {
|
|
83
|
+
if (bytes <= 0) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
this._stats.downloadBytes += bytes;
|
|
87
|
+
this._stats.downloadCount++;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Estimated bytes for a 2D texture of `width × height` at `bytesPerPixel`,
|
|
92
|
+
* including the mip chain when `mipLevelCount > 1`. A full mip chain adds
|
|
93
|
+
* roughly ¹⁄₃ over the base level; this sums the exact per-level footprint
|
|
94
|
+
* (each level a quarter of the previous, floored at 1×1).
|
|
95
|
+
*
|
|
96
|
+
* @internal
|
|
97
|
+
*/
|
|
98
|
+
const estimateTextureBytes = (width, height, bytesPerPixel, mipLevelCount = 1) => {
|
|
99
|
+
const baseWidth = Math.max(1, Math.floor(width));
|
|
100
|
+
const baseHeight = Math.max(1, Math.floor(height));
|
|
101
|
+
const levels = Math.max(1, Math.floor(mipLevelCount));
|
|
102
|
+
let total = 0;
|
|
103
|
+
let levelWidth = baseWidth;
|
|
104
|
+
let levelHeight = baseHeight;
|
|
105
|
+
for (let level = 0; level < levels; level++) {
|
|
106
|
+
total += levelWidth * levelHeight * bytesPerPixel;
|
|
107
|
+
if (levelWidth === 1 && levelHeight === 1) {
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
levelWidth = Math.max(1, levelWidth >> 1);
|
|
111
|
+
levelHeight = Math.max(1, levelHeight >> 1);
|
|
112
|
+
}
|
|
113
|
+
return total;
|
|
114
|
+
};
|
|
115
|
+
/** Bytes per pixel for the {@link DataTexture} formats (shared by both backends). @internal */
|
|
116
|
+
const dataTextureBytesPerPixel = (format) => {
|
|
117
|
+
switch (format) {
|
|
118
|
+
case 'r8':
|
|
119
|
+
return 1;
|
|
120
|
+
case 'r32f':
|
|
121
|
+
return 4;
|
|
122
|
+
case 'rgba8':
|
|
123
|
+
return 4;
|
|
124
|
+
case 'rgba32f':
|
|
125
|
+
return 16;
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
export { GpuResourceAccountant, dataTextureBytesPerPixel, estimateTextureBytes };
|
|
130
|
+
//# sourceMappingURL=GpuResourceAccountant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GpuResourceAccountant.js","sources":["../../../../src/rendering/GpuResourceAccountant.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { Color } from '#core/Color';
|
|
|
2
2
|
import type { Matrix } from '#math/Matrix';
|
|
3
3
|
import type { Rectangle } from '#math/Rectangle';
|
|
4
4
|
import type { Geometry } from '#rendering/geometry/Geometry';
|
|
5
|
+
import type { Mesh } from '#rendering/mesh/Mesh';
|
|
5
6
|
import type { RenderTexture } from '#rendering/texture/RenderTexture';
|
|
6
7
|
import type { Texture } from '#rendering/texture/Texture';
|
|
7
8
|
import type { BackendRenderPass } from './BackendRenderPass';
|
|
@@ -28,7 +29,7 @@ import type { View } from './View';
|
|
|
28
29
|
*/
|
|
29
30
|
export interface RenderBackend {
|
|
30
31
|
readonly backendType: RenderBackendType;
|
|
31
|
-
readonly rendererRegistry: RendererRegistry<
|
|
32
|
+
readonly rendererRegistry: RendererRegistry<RenderBackend>;
|
|
32
33
|
readonly view: View;
|
|
33
34
|
readonly renderTarget: RenderTarget;
|
|
34
35
|
readonly stats: RenderStats;
|
|
@@ -75,6 +76,19 @@ export interface RenderBackend {
|
|
|
75
76
|
*/
|
|
76
77
|
composeWithAlphaMask(content: RenderTexture, mask: Texture | RenderTexture, x: number, y: number, width: number, height: number, blendMode: BlendModes): this;
|
|
77
78
|
draw(drawable: Drawable): this;
|
|
79
|
+
/**
|
|
80
|
+
* Submit an explicit instanced batch: draw `mesh`'s geometry once with `count`
|
|
81
|
+
* per-instance `(transform, tint)` pairs, written into fresh shared transform
|
|
82
|
+
* slots, as a single instanced draw call. `mesh` carries the geometry,
|
|
83
|
+
* material, texture and blend mode; its own transform and tint are ignored.
|
|
84
|
+
* Only the first `count` entries of `transforms` / `tints` are read.
|
|
85
|
+
*
|
|
86
|
+
* Used internally by {@link RenderingContext.drawBatch}. The geometry must use
|
|
87
|
+
* the `triangle-list` topology and the standard mesh attribute layout; a
|
|
88
|
+
* supplied material must be instancing-compatible (default mesh material, or a
|
|
89
|
+
* custom shader declaring `a_nodeIndex` + `u_transforms`).
|
|
90
|
+
*/
|
|
91
|
+
drawInstanced(mesh: Mesh, transforms: readonly Matrix[], tints: readonly Color[], count: number): this;
|
|
78
92
|
execute(pass: BackendRenderPass): this;
|
|
79
93
|
flush(): this;
|
|
80
94
|
destroy(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderBackend.d.ts","sourceRoot":"","sources":["../../../src/rendering/RenderBackend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"RenderBackend.d.ts","sourceRoot":"","sources":["../../../src/rendering/RenderBackend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Color } from '#core/Color';
|
|
2
|
+
import { Matrix } from '#math/Matrix';
|
|
3
|
+
import type { Geometry } from '#rendering/geometry/Geometry';
|
|
4
|
+
import type { MeshMaterial } from '#rendering/material/MeshMaterial';
|
|
5
|
+
/**
|
|
6
|
+
* Explicit instanced draw submission: **one** {@link Geometry} + {@link MeshMaterial}
|
|
7
|
+
* drawn **once** with **N** per-instance `(transform, tint)` pairs — the general
|
|
8
|
+
* form of the engine's mesh-instancing model, surfaced for data-driven rendering
|
|
9
|
+
* (thousands of tiles, bullets, grass blades, procedural items as a single draw).
|
|
10
|
+
*
|
|
11
|
+
* Build it up with {@link add}, hand it to {@link RenderingContext.drawBatch},
|
|
12
|
+
* and {@link clear} it to reuse the same instance across frames without
|
|
13
|
+
* reallocating — the per-instance transform/tint storage grows on demand and is
|
|
14
|
+
* retained across `clear()`, so a steady-state batch allocates nothing.
|
|
15
|
+
*
|
|
16
|
+
* Each {@link add} **copies** the transform and tint into internal storage, so
|
|
17
|
+
* the caller may mutate or reuse the passed `Matrix`/`Color` immediately
|
|
18
|
+
* afterwards without affecting the batch.
|
|
19
|
+
*
|
|
20
|
+
* This is the explicit instanced submission path — distinct from the internal
|
|
21
|
+
* automatic sprite batcher: every instance shares the one geometry and material,
|
|
22
|
+
* and the whole batch is a single instanced draw call.
|
|
23
|
+
* @stable
|
|
24
|
+
*/
|
|
25
|
+
export declare class RenderBatch {
|
|
26
|
+
/** The geometry every instance in this batch draws. */
|
|
27
|
+
readonly geometry: Geometry;
|
|
28
|
+
/** The shared mesh material, or `null` for the default mesh material. */
|
|
29
|
+
readonly material: MeshMaterial | null;
|
|
30
|
+
private readonly _transforms;
|
|
31
|
+
private readonly _tints;
|
|
32
|
+
private _count;
|
|
33
|
+
constructor(geometry: Geometry, material?: MeshMaterial | null);
|
|
34
|
+
/** Number of instances currently in the batch. */
|
|
35
|
+
get count(): number;
|
|
36
|
+
/**
|
|
37
|
+
* Append one instance. `transform` is the instance's world matrix (taken as
|
|
38
|
+
* the raw `a,b,c,d,tx,ty`), `tint` modulates the geometry's vertex colors
|
|
39
|
+
* (defaults to white). Both are copied into the batch.
|
|
40
|
+
*/
|
|
41
|
+
add(transform: Matrix, tint?: Color | null): this;
|
|
42
|
+
/** Reset to zero instances for reuse, retaining the pooled storage. */
|
|
43
|
+
clear(): this;
|
|
44
|
+
/**
|
|
45
|
+
* Release the pooled per-instance storage. After this the batch must not be
|
|
46
|
+
* reused. The {@link geometry} and {@link material} are owned by the caller and
|
|
47
|
+
* are not destroyed.
|
|
48
|
+
*/
|
|
49
|
+
destroy(): void;
|
|
50
|
+
/** Pooled per-instance transforms; only the first {@link count} are valid. @internal */
|
|
51
|
+
get _instanceTransforms(): readonly Matrix[];
|
|
52
|
+
/** Pooled per-instance tints; only the first {@link count} are valid. @internal */
|
|
53
|
+
get _instanceTints(): readonly Color[];
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=RenderBatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderBatch.d.ts","sourceRoot":"","sources":["../../../src/rendering/RenderBatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,WAAW;IACtB,uDAAuD;IACvD,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IAEnC,yEAAyE;IACzE,SAAgB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAI9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,MAAM,CAAK;gBAEA,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAE,YAAY,GAAG,IAAW;IAmB3E,kDAAkD;IAClD,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED;;;;OAIG;IACI,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,KAAK,GAAG,IAAW,GAAG,IAAI;IAwB9D,uEAAuE;IAChE,KAAK,IAAI,IAAI;IAMpB;;;;OAIG;IACI,OAAO,IAAI,IAAI;IActB,wFAAwF;IACxF,IAAW,mBAAmB,IAAI,SAAS,MAAM,EAAE,CAElD;IAED,mFAAmF;IACnF,IAAW,cAAc,IAAI,SAAS,KAAK,EAAE,CAE5C;CACF"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Color } from '../core/Color.js';
|
|
2
|
+
import { Matrix } from '../math/Matrix.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Explicit instanced draw submission: **one** {@link Geometry} + {@link MeshMaterial}
|
|
6
|
+
* drawn **once** with **N** per-instance `(transform, tint)` pairs — the general
|
|
7
|
+
* form of the engine's mesh-instancing model, surfaced for data-driven rendering
|
|
8
|
+
* (thousands of tiles, bullets, grass blades, procedural items as a single draw).
|
|
9
|
+
*
|
|
10
|
+
* Build it up with {@link add}, hand it to {@link RenderingContext.drawBatch},
|
|
11
|
+
* and {@link clear} it to reuse the same instance across frames without
|
|
12
|
+
* reallocating — the per-instance transform/tint storage grows on demand and is
|
|
13
|
+
* retained across `clear()`, so a steady-state batch allocates nothing.
|
|
14
|
+
*
|
|
15
|
+
* Each {@link add} **copies** the transform and tint into internal storage, so
|
|
16
|
+
* the caller may mutate or reuse the passed `Matrix`/`Color` immediately
|
|
17
|
+
* afterwards without affecting the batch.
|
|
18
|
+
*
|
|
19
|
+
* This is the explicit instanced submission path — distinct from the internal
|
|
20
|
+
* automatic sprite batcher: every instance shares the one geometry and material,
|
|
21
|
+
* and the whole batch is a single instanced draw call.
|
|
22
|
+
* @stable
|
|
23
|
+
*/
|
|
24
|
+
class RenderBatch {
|
|
25
|
+
/** The geometry every instance in this batch draws. */
|
|
26
|
+
geometry;
|
|
27
|
+
/** The shared mesh material, or `null` for the default mesh material. */
|
|
28
|
+
material;
|
|
29
|
+
// Per-instance storage grows with `add` and is reused after `clear` — only the
|
|
30
|
+
// logical `_count` resets, the pooled Matrix/Color instances are kept.
|
|
31
|
+
_transforms = [];
|
|
32
|
+
_tints = [];
|
|
33
|
+
_count = 0;
|
|
34
|
+
constructor(geometry, material = null) {
|
|
35
|
+
// The batch uploads its geometry to the GPU once and caches it by identity,
|
|
36
|
+
// so the geometry must be static (the default). dynamic/stream geometry has
|
|
37
|
+
// no persistent GPU buffer and is rejected.
|
|
38
|
+
if (geometry.usage !== 'static') {
|
|
39
|
+
throw new Error(`RenderBatch requires geometry with usage='static' (got '${geometry.usage}').`);
|
|
40
|
+
}
|
|
41
|
+
// v1 renders batches with the default mesh material; a custom material is not
|
|
42
|
+
// yet supported on the instanced path. The parameter is accepted (and stored)
|
|
43
|
+
// for the forthcoming custom-material batch support.
|
|
44
|
+
if (material !== null && material.target !== 'mesh') {
|
|
45
|
+
throw new Error(`RenderBatch material must target 'mesh' (got '${String(material.target)}').`);
|
|
46
|
+
}
|
|
47
|
+
this.geometry = geometry;
|
|
48
|
+
this.material = material;
|
|
49
|
+
}
|
|
50
|
+
/** Number of instances currently in the batch. */
|
|
51
|
+
get count() {
|
|
52
|
+
return this._count;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Append one instance. `transform` is the instance's world matrix (taken as
|
|
56
|
+
* the raw `a,b,c,d,tx,ty`), `tint` modulates the geometry's vertex colors
|
|
57
|
+
* (defaults to white). Both are copied into the batch.
|
|
58
|
+
*/
|
|
59
|
+
add(transform, tint = null) {
|
|
60
|
+
let matrix = this._transforms[this._count];
|
|
61
|
+
if (matrix === undefined) {
|
|
62
|
+
matrix = new Matrix();
|
|
63
|
+
this._transforms[this._count] = matrix;
|
|
64
|
+
}
|
|
65
|
+
matrix.copy(transform);
|
|
66
|
+
let color = this._tints[this._count];
|
|
67
|
+
if (color === undefined) {
|
|
68
|
+
color = new Color();
|
|
69
|
+
this._tints[this._count] = color;
|
|
70
|
+
}
|
|
71
|
+
color.copy(tint ?? Color.white);
|
|
72
|
+
this._count++;
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
/** Reset to zero instances for reuse, retaining the pooled storage. */
|
|
76
|
+
clear() {
|
|
77
|
+
this._count = 0;
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Release the pooled per-instance storage. After this the batch must not be
|
|
82
|
+
* reused. The {@link geometry} and {@link material} are owned by the caller and
|
|
83
|
+
* are not destroyed.
|
|
84
|
+
*/
|
|
85
|
+
destroy() {
|
|
86
|
+
for (const matrix of this._transforms) {
|
|
87
|
+
matrix.destroy();
|
|
88
|
+
}
|
|
89
|
+
for (const color of this._tints) {
|
|
90
|
+
color.destroy();
|
|
91
|
+
}
|
|
92
|
+
this._transforms.length = 0;
|
|
93
|
+
this._tints.length = 0;
|
|
94
|
+
this._count = 0;
|
|
95
|
+
}
|
|
96
|
+
/** Pooled per-instance transforms; only the first {@link count} are valid. @internal */
|
|
97
|
+
get _instanceTransforms() {
|
|
98
|
+
return this._transforms;
|
|
99
|
+
}
|
|
100
|
+
/** Pooled per-instance tints; only the first {@link count} are valid. @internal */
|
|
101
|
+
get _instanceTints() {
|
|
102
|
+
return this._tints;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export { RenderBatch };
|
|
107
|
+
//# sourceMappingURL=RenderBatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderBatch.js","sources":["../../../../src/rendering/RenderBatch.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAKA;;;;;;;;;;;;;;;;;;;AAmBG;MACU,WAAW,CAAA;;AAEN,IAAA,QAAQ;;AAGR,IAAA,QAAQ;;;IAIP,WAAW,GAAa,EAAE;IAC1B,MAAM,GAAY,EAAE;IAC7B,MAAM,GAAG,CAAC;IAElB,WAAA,CAAmB,QAAkB,EAAE,QAAA,GAAgC,IAAI,EAAA;;;;AAIzE,QAAA,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,CAAA,wDAAA,EAA2D,QAAQ,CAAC,KAAK,CAAA,GAAA,CAAK,CAAC;QACjG;;;;QAKA,IAAI,QAAQ,KAAK,IAAI,IAAK,QAAQ,CAAC,MAAiB,KAAK,MAAM,EAAE;AAC/D,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,8CAAA,EAAiD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA,GAAA,CAAK,CAAC;QAChG;AAEA,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAC1B;;AAGA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA;;;;AAIG;AACI,IAAA,GAAG,CAAC,SAAiB,EAAE,IAAA,GAAqB,IAAI,EAAA;QACrD,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AAE1C,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,YAAA,MAAM,GAAG,IAAI,MAAM,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM;QACxC;AAEA,QAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QAEtB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAEpC,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,KAAK,GAAG,IAAI,KAAK,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK;QAClC;QAEA,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC;QAE/B,IAAI,CAAC,MAAM,EAAE;AAEb,QAAA,OAAO,IAAI;IACb;;IAGO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC;AAEf,QAAA,OAAO,IAAI;IACb;AAEA;;;;AAIG;IACI,OAAO,GAAA;AACZ,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;YACrC,MAAM,CAAC,OAAO,EAAE;QAClB;AAEA,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAC/B,KAAK,CAAC,OAAO,EAAE;QACjB;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC;IACjB;;AAGA,IAAA,IAAW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,WAAW;IACzB;;AAGA,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,MAAM;IACpB;AACD;;;;"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Color } from '#core/Color';
|
|
2
2
|
import { SceneNode } from '#core/SceneNode';
|
|
3
3
|
import { Signal } from '#core/Signal';
|
|
4
|
-
import type { InteractionEvent } from '#input/InteractionEvent';
|
|
4
|
+
import type { InteractionEvent, InteractionEventType } from '#input/InteractionEvent';
|
|
5
|
+
import type { KeyEvent } from '#input/KeyEvent';
|
|
5
6
|
import { Rectangle } from '#math/Rectangle';
|
|
6
7
|
import type { Filter } from '#rendering/filters/Filter';
|
|
7
8
|
import type { Geometry } from '#rendering/geometry/Geometry';
|
|
@@ -117,18 +118,57 @@ export declare abstract class RenderNode extends SceneNode {
|
|
|
117
118
|
* @default null
|
|
118
119
|
*/
|
|
119
120
|
clipShape: Rectangle | Geometry | null;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
121
|
+
private _signals;
|
|
122
|
+
get onPointerDown(): Signal<[InteractionEvent]>;
|
|
123
|
+
get onPointerUp(): Signal<[InteractionEvent]>;
|
|
124
|
+
get onPointerMove(): Signal<[InteractionEvent]>;
|
|
125
|
+
get onPointerOver(): Signal<[InteractionEvent]>;
|
|
126
|
+
get onPointerOut(): Signal<[InteractionEvent]>;
|
|
127
|
+
get onPointerTap(): Signal<[InteractionEvent]>;
|
|
126
128
|
/** Fired once when a drag gesture begins on this node. Does not bubble. */
|
|
127
|
-
|
|
129
|
+
get onDragStart(): Signal<[InteractionEvent]>;
|
|
128
130
|
/** Fired on every pointer-move while this node is being dragged. Does not bubble. */
|
|
129
|
-
|
|
131
|
+
get onDrag(): Signal<[InteractionEvent]>;
|
|
130
132
|
/** Fired when the drag gesture ends (pointer-up or cancel). Does not bubble. */
|
|
131
|
-
|
|
133
|
+
get onDragEnd(): Signal<[InteractionEvent]>;
|
|
134
|
+
private _interactionSignal;
|
|
135
|
+
/** @internal — the signal for `type`, or `null` if never materialized (used by the dispatch peek). */
|
|
136
|
+
_peekInteractionSignal(type: InteractionEventType): Signal<[InteractionEvent]> | null;
|
|
137
|
+
/**
|
|
138
|
+
* When `true`, this node can receive keyboard focus — via {@link focus},
|
|
139
|
+
* Tab traversal, or `app.focus.focus(node)` — and is delivered key events
|
|
140
|
+
* through {@link onKeyDown} / {@link onKeyUp} while focused.
|
|
141
|
+
*
|
|
142
|
+
* @default false
|
|
143
|
+
*/
|
|
144
|
+
focusable: boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Tab-traversal order among focusable nodes in the same focus scope. Lower
|
|
147
|
+
* values are visited first; equal values keep document (tree) order.
|
|
148
|
+
*
|
|
149
|
+
* @default 0
|
|
150
|
+
*/
|
|
151
|
+
tabIndex: number;
|
|
152
|
+
private _onFocus;
|
|
153
|
+
private _onBlur;
|
|
154
|
+
private _onKeyDown;
|
|
155
|
+
private _onKeyUp;
|
|
156
|
+
/** Fired when this node gains keyboard focus. */
|
|
157
|
+
get onFocus(): Signal<[RenderNode]>;
|
|
158
|
+
/** Fired when this node loses keyboard focus. */
|
|
159
|
+
get onBlur(): Signal<[RenderNode]>;
|
|
160
|
+
/** Fired for each key pressed while this node holds focus. */
|
|
161
|
+
get onKeyDown(): Signal<[KeyEvent]>;
|
|
162
|
+
/** Fired for each key released while this node holds focus. */
|
|
163
|
+
get onKeyUp(): Signal<[KeyEvent]>;
|
|
164
|
+
/** @internal — the focus/blur signal if materialized, else `null` (dispatch peek). */
|
|
165
|
+
_peekFocusSignal(type: 'focus' | 'blur'): Signal<[RenderNode]> | null;
|
|
166
|
+
/** @internal — the keydown/keyup signal if materialized, else `null` (dispatch peek). */
|
|
167
|
+
_peekKeySignal(type: 'keydown' | 'keyup'): Signal<[KeyEvent]> | null;
|
|
168
|
+
/** Request keyboard focus for this node through its owning focus service. */
|
|
169
|
+
focus(): this;
|
|
170
|
+
/** Release keyboard focus from this node if it currently holds it. */
|
|
171
|
+
blur(): this;
|
|
132
172
|
private readonly _filters;
|
|
133
173
|
private readonly _cacheBounds;
|
|
134
174
|
private _cacheSprite;
|