@codexo/exojs 0.12.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 +258 -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 +78 -11
- package/dist/esm/extensions/Extension.d.ts.map +1 -1
- package/dist/esm/extensions/ExtensionRegistry.d.ts.map +1 -1
- package/dist/esm/extensions/ExtensionRegistry.js.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 +14 -3
- package/dist/esm/extensions/snapshot.d.ts.map +1 -1
- package/dist/esm/extensions/snapshot.js +51 -14
- 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 +37 -54
- 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 +47 -0
- package/dist/esm/rendering/Drawable.d.ts.map +1 -1
- package/dist/esm/rendering/Drawable.js +88 -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/coreRendererBindings.d.ts.map +1 -1
- package/dist/esm/rendering/coreRendererBindings.js +22 -0
- package/dist/esm/rendering/coreRendererBindings.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 +219 -0
- package/dist/esm/rendering/pixelSnap.d.ts.map +1 -0
- package/dist/esm/rendering/pixelSnap.js +187 -0
- package/dist/esm/rendering/pixelSnap.js.map +1 -0
- 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 +70 -13
- 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} +13 -30
- 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 +69 -0
- package/dist/esm/rendering/sprite/NineSliceSprite.d.ts.map +1 -0
- package/dist/esm/rendering/sprite/NineSliceSprite.js +206 -0
- package/dist/esm/rendering/sprite/NineSliceSprite.js.map +1 -0
- package/dist/esm/rendering/sprite/RepeatingSprite.d.ts +120 -0
- package/dist/esm/rendering/sprite/RepeatingSprite.d.ts.map +1 -0
- package/dist/esm/rendering/sprite/RepeatingSprite.js +277 -0
- package/dist/esm/rendering/sprite/RepeatingSprite.js.map +1 -0
- package/dist/esm/rendering/sprite/Sprite.d.ts +13 -0
- package/dist/esm/rendering/sprite/Sprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.js +53 -3
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/nineSlice.d.ts +53 -0
- package/dist/esm/rendering/sprite/nineSlice.d.ts.map +1 -0
- package/dist/esm/rendering/sprite/nineSlice.js +334 -0
- package/dist/esm/rendering/sprite/nineSlice.js.map +1 -0
- package/dist/esm/rendering/sprite/repeatingSpritePlan.d.ts +57 -0
- package/dist/esm/rendering/sprite/repeatingSpritePlan.d.ts.map +1 -0
- package/dist/esm/rendering/sprite/repeatingSpritePlan.js +156 -0
- package/dist/esm/rendering/sprite/repeatingSpritePlan.js.map +1 -0
- 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 +100 -0
- package/dist/esm/rendering/texture/TextureRegion.d.ts.map +1 -0
- package/dist/esm/rendering/texture/TextureRegion.js +144 -0
- package/dist/esm/rendering/texture/TextureRegion.js.map +1 -0
- package/dist/esm/rendering/texture/repeat.d.ts +96 -0
- package/dist/esm/rendering/texture/repeat.d.ts.map +1 -0
- package/dist/esm/rendering/texture/repeat.js +158 -0
- package/dist/esm/rendering/texture/repeat.js.map +1 -0
- 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 +41 -2
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +137 -8
- 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 +32 -0
- package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.d.ts.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js +309 -0
- package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js.map +1 -0
- 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 +49 -0
- package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.d.ts.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js +539 -0
- package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js.map +1 -0
- 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 +9 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +29 -4
- 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 +39 -3
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +120 -12
- 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 +36 -0
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js +363 -0
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts +52 -0
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js +566 -0
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +9 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +30 -6
- 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 +16 -4
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +26 -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 +78 -10
- package/dist/esm/resources/Loader.d.ts.map +1 -1
- package/dist/esm/resources/Loader.js +119 -15
- 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 -37555
- package/dist/exo.esm.js.map +1 -1
- package/package.json +31 -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 -28
- 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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../src/rendering/Container.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../src/rendering/Container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,SAAU,SAAQ,UAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAE9C,IAAW,QAAQ,IAAI,UAAU,EAAE,CAElC;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAE7B;IAED,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAE9B;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED;;;OAGG;IACI,QAAQ,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI;IAQhD;;;;OAIG;IACI,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IA0BlD,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,GAAG,IAAI;IAanE,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IAUxC,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAarD,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAS5C,gEAAgE;IACzD,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAUpC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAoBzC;;;OAGG;IACI,cAAc,CAAC,KAAK,SAAI,EAAE,GAAG,GAAE,MAA8B,GAAG,IAAI;IA8B3E,qEAAqE;IACrD,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI;IAYpD,gBAAgB;cACG,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAWpD,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;cAapC,4BAA4B,IAAI,IAAI;IAMvC,YAAY,IAAI,IAAI;IAYpB,OAAO,IAAI,IAAI;CAKhC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { removeArrayItems } from '../core/utils.js';
|
|
2
|
-
import { getActiveInteractionManager } from '../input/internal/interactionManagerRegistry.js';
|
|
3
2
|
import { RenderNode } from './RenderNode.js';
|
|
4
3
|
|
|
5
4
|
/**
|
|
@@ -79,7 +78,8 @@ class Container extends RenderNode {
|
|
|
79
78
|
this.invalidateCache();
|
|
80
79
|
child._invalidateSubtreeTransform();
|
|
81
80
|
this._invalidateBoundsCascade();
|
|
82
|
-
|
|
81
|
+
child._setStage(this._stage);
|
|
82
|
+
this._stage?.interaction._notifyNodeAdded(child);
|
|
83
83
|
return this;
|
|
84
84
|
}
|
|
85
85
|
swapChildren(firstChild, secondChild) {
|
|
@@ -112,6 +112,7 @@ class Container extends RenderNode {
|
|
|
112
112
|
if (index < 0 || index >= this._children.length) {
|
|
113
113
|
throw new Error(`getChildAt: Index (${index}) does not exist.`);
|
|
114
114
|
}
|
|
115
|
+
// Bounds-checked above.
|
|
115
116
|
return this._children[index];
|
|
116
117
|
}
|
|
117
118
|
/** Remove `child` from this container. No-op if not present. */
|
|
@@ -130,7 +131,9 @@ class Container extends RenderNode {
|
|
|
130
131
|
this._invalidateBoundsCascade();
|
|
131
132
|
child.parent = null;
|
|
132
133
|
child._invalidateSubtreeTransform();
|
|
133
|
-
|
|
134
|
+
this._stage?.interaction._notifyNodeRemoved(child);
|
|
135
|
+
this._stage?.focus._notifyNodeRemoved(child);
|
|
136
|
+
child._setStage(null);
|
|
134
137
|
}
|
|
135
138
|
this.invalidateCache();
|
|
136
139
|
return this;
|
|
@@ -153,24 +156,44 @@ class Container extends RenderNode {
|
|
|
153
156
|
if (child?.parent === this) {
|
|
154
157
|
child.parent = null;
|
|
155
158
|
child._invalidateSubtreeTransform();
|
|
156
|
-
|
|
159
|
+
this._stage?.interaction._notifyNodeRemoved(child);
|
|
160
|
+
this._stage?.focus._notifyNodeRemoved(child);
|
|
161
|
+
child._setStage(null);
|
|
157
162
|
}
|
|
158
163
|
}
|
|
159
164
|
removeArrayItems(this._children, begin, range);
|
|
160
165
|
this.invalidateCache();
|
|
161
166
|
return this;
|
|
162
167
|
}
|
|
168
|
+
/** @internal — propagate the owning stage down the whole subtree. */
|
|
169
|
+
_setStage(stage) {
|
|
170
|
+
if (this._stage === stage) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
this._stage = stage;
|
|
174
|
+
for (const child of this._children) {
|
|
175
|
+
child._setStage(stage);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
163
178
|
/** @internal */
|
|
164
179
|
_collectContent(builder) {
|
|
165
180
|
if (this._children.length === 0) {
|
|
166
181
|
return;
|
|
167
182
|
}
|
|
168
183
|
for (let index = 0; index < this._children.length; index++) {
|
|
184
|
+
// In-bounds: index < length.
|
|
169
185
|
this._children[index]._collect(builder, index);
|
|
170
186
|
}
|
|
171
187
|
}
|
|
172
188
|
contains(x, y) {
|
|
173
|
-
|
|
189
|
+
const children = this._children;
|
|
190
|
+
for (let i = 0; i < children.length; i++) {
|
|
191
|
+
// In-bounds: i < length.
|
|
192
|
+
if (children[i].contains(x, y)) {
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return false;
|
|
174
197
|
}
|
|
175
198
|
_invalidateChildrenTransform() {
|
|
176
199
|
for (const child of this._children) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.js","sources":["../../../../src/rendering/Container.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Container.js","sources":["../../../../src/rendering/Container.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
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';
|
|
5
|
+
import { type PixelSnapMode } from './pixelSnap';
|
|
3
6
|
import { RenderNode } from './RenderNode';
|
|
4
7
|
import { BlendModes } from './types';
|
|
5
8
|
/**
|
|
@@ -12,10 +15,41 @@ import { BlendModes } from './types';
|
|
|
12
15
|
export declare class Drawable extends RenderNode {
|
|
13
16
|
private _tint;
|
|
14
17
|
private _blendMode;
|
|
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;
|
|
15
28
|
get tint(): Color;
|
|
16
29
|
set tint(tint: Color);
|
|
17
30
|
get blendMode(): BlendModes;
|
|
18
31
|
set blendMode(blendMode: BlendModes);
|
|
32
|
+
/**
|
|
33
|
+
* Render-only pixel-snapping policy for this drawable. Aligns the rendered
|
|
34
|
+
* origin (`'position'`) or origin plus shared geometry boundaries
|
|
35
|
+
* (`'geometry'`) to the active render target's device-pixel grid. Purely
|
|
36
|
+
* visual: logical `x`/`y`, transforms, bounds, collision, tween and physics
|
|
37
|
+
* state are never affected, and {@link getBounds}/{@link getGlobalTransform}
|
|
38
|
+
* keep returning logical values.
|
|
39
|
+
*
|
|
40
|
+
* `'geometry'` is guaranteed only for axis-aligned transforms; rotation or
|
|
41
|
+
* skew (on this node, an ancestor, or the view) downgrade it to `'position'`
|
|
42
|
+
* for the affected frame, with no logical-state change. Snapping targets
|
|
43
|
+
* device pixels (× view scale × pixel ratio), not integer world units.
|
|
44
|
+
*
|
|
45
|
+
* Setting the current value is a no-op. Setting a value outside the
|
|
46
|
+
* {@link PixelSnapMode} union throws and leaves the prior mode unchanged.
|
|
47
|
+
*
|
|
48
|
+
* @default 'none'
|
|
49
|
+
* @stable
|
|
50
|
+
*/
|
|
51
|
+
get pixelSnapMode(): PixelSnapMode;
|
|
52
|
+
set pixelSnapMode(mode: PixelSnapMode);
|
|
19
53
|
/**
|
|
20
54
|
* Set the tint colour by copying `color` into the internal {@link Color} instance.
|
|
21
55
|
* Invalidates the render cache so the change is picked up on the next frame.
|
|
@@ -32,6 +66,19 @@ export declare class Drawable extends RenderNode {
|
|
|
32
66
|
_isDrawableForRenderPlan(): boolean;
|
|
33
67
|
/** @internal */
|
|
34
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;
|
|
35
82
|
destroy(): void;
|
|
36
83
|
}
|
|
37
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,6 @@
|
|
|
1
1
|
import { Color } from '../core/Color.js';
|
|
2
|
+
import { drawableHasOwnMaterial, writeMaterialKeyInto } from './plan/RenderCommand.js';
|
|
3
|
+
import { isPixelSnapMode } from './pixelSnap.js';
|
|
2
4
|
import { RenderNode } from './RenderNode.js';
|
|
3
5
|
import { BlendModes } from './types.js';
|
|
4
6
|
|
|
@@ -12,6 +14,16 @@ import { BlendModes } from './types.js';
|
|
|
12
14
|
class Drawable extends RenderNode {
|
|
13
15
|
_tint = Color.white.clone();
|
|
14
16
|
_blendMode = BlendModes.Normal;
|
|
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;
|
|
15
27
|
get tint() {
|
|
16
28
|
return this._tint;
|
|
17
29
|
}
|
|
@@ -24,6 +36,38 @@ class Drawable extends RenderNode {
|
|
|
24
36
|
set blendMode(blendMode) {
|
|
25
37
|
this.setBlendMode(blendMode);
|
|
26
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Render-only pixel-snapping policy for this drawable. Aligns the rendered
|
|
41
|
+
* origin (`'position'`) or origin plus shared geometry boundaries
|
|
42
|
+
* (`'geometry'`) to the active render target's device-pixel grid. Purely
|
|
43
|
+
* visual: logical `x`/`y`, transforms, bounds, collision, tween and physics
|
|
44
|
+
* state are never affected, and {@link getBounds}/{@link getGlobalTransform}
|
|
45
|
+
* keep returning logical values.
|
|
46
|
+
*
|
|
47
|
+
* `'geometry'` is guaranteed only for axis-aligned transforms; rotation or
|
|
48
|
+
* skew (on this node, an ancestor, or the view) downgrade it to `'position'`
|
|
49
|
+
* for the affected frame, with no logical-state change. Snapping targets
|
|
50
|
+
* device pixels (× view scale × pixel ratio), not integer world units.
|
|
51
|
+
*
|
|
52
|
+
* Setting the current value is a no-op. Setting a value outside the
|
|
53
|
+
* {@link PixelSnapMode} union throws and leaves the prior mode unchanged.
|
|
54
|
+
*
|
|
55
|
+
* @default 'none'
|
|
56
|
+
* @stable
|
|
57
|
+
*/
|
|
58
|
+
get pixelSnapMode() {
|
|
59
|
+
return this._pixelSnapMode;
|
|
60
|
+
}
|
|
61
|
+
set pixelSnapMode(mode) {
|
|
62
|
+
if (mode === this._pixelSnapMode) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (!isPixelSnapMode(mode)) {
|
|
66
|
+
throw new Error(`Drawable.pixelSnapMode must be 'none', 'position', or 'geometry' (got ${String(mode)}).`);
|
|
67
|
+
}
|
|
68
|
+
this._pixelSnapMode = mode;
|
|
69
|
+
this.invalidateCache();
|
|
70
|
+
}
|
|
27
71
|
/**
|
|
28
72
|
* Set the tint colour by copying `color` into the internal {@link Color} instance.
|
|
29
73
|
* Invalidates the render cache so the change is picked up on the next frame.
|
|
@@ -58,6 +102,50 @@ class Drawable extends RenderNode {
|
|
|
58
102
|
_renderPlanGetBlendMode() {
|
|
59
103
|
return this._blendMode;
|
|
60
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
|
+
}
|
|
61
149
|
destroy() {
|
|
62
150
|
super.destroy();
|
|
63
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":";;;;;;AASA;;;;;;AAMG;AACG,MAAO,QAAS,SAAQ,UAAU,CAAA;AAC9B,IAAA,KAAK,GAAU,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAClC,IAAA,UAAU,GAAe,UAAU,CAAC,MAAM;IAC1C,cAAc,GAAkB,MAAM;AAE9C;;;;;;AAMG;IACK,YAAY,GAAuB,IAAI;IACvC,mBAAmB,GAAyB,IAAI;AAExD,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;IACnB;IAEA,IAAW,IAAI,CAAC,IAAW,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACpB;AAEA,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU;IACxB;IAEA,IAAW,SAAS,CAAC,SAAqB,EAAA;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;IAC9B;AAEA;;;;;;;;;;;;;;;;;;AAkBG;AACH,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,cAAc;IAC5B;IAEA,IAAW,aAAa,CAAC,IAAmB,EAAA;AAC1C,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,cAAc,EAAE;YAChC;QACF;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,CAAA,sEAAA,EAAyE,MAAM,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI,CAAC;QAC5G;AAEA,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC1B,IAAI,CAAC,eAAe,EAAE;IACxB;AAEA;;;AAGG;AACI,IAAA,OAAO,CAAC,KAAY,EAAA;QACzB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,eAAe,EAAE;QACxB;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACI,IAAA,YAAY,CAAC,SAAqB,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC3B,IAAI,CAAC,eAAe,EAAE;QACxB;AAEA,QAAA,OAAO,IAAI;IACb;;AAGmB,IAAA,eAAe,CAAC,OAA0B,EAAA;AAC3D,QAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACxB;;IAGgB,wBAAwB,GAAA;AACtC,QAAA,OAAO,IAAI;IACb;;IAGgB,uBAAuB,GAAA;QACrC,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA;;;;;;;;;;AAUG;AACI,IAAA,wBAAwB,CAAC,OAAsB,EAAA;AACpD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY;AAEhC,QAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,YAAA,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE;;gBAEhC,OAAO,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;YACpD;AAEA,YAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,OAAO,EAAE;AACxC,gBAAA,OAAO,MAAM;YACf;;AAGA,YAAA,IAAI,CAAC,mBAAmB,GAAG,OAAO;YAElC,OAAO,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;QACpD;QAEA,MAAM,GAAG,GAAG,oBAAoB,CAC9B;AACE,YAAA,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;AACZ,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,OAAO,EAAE,CAAC;AACX,SAAA,EACD,IAAI,EACJ,OAAO,CACR;AAED,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACvB,QAAA,IAAI,CAAC,mBAAmB,GAAG,OAAO;AAElC,QAAA,OAAO,GAAG;IACZ;IAEgB,eAAe,GAAA;QAC7B,KAAK,CAAC,eAAe,EAAE;;;AAGvB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAE/B,QAAA,OAAO,IAAI;IACb;IAEgB,OAAO,GAAA;QACrB,KAAK,CAAC,OAAO,EAAE;AAEf,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;IACtB;AACD;;;;"}
|
|
@@ -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":"AAEA;;;;;;;;;;;;;;;;;;;;AAoBG;MACU,qBAAqB,CAAA;AACf,IAAA,MAAM;IACf,UAAU,GAAG,CAAC;AAEtB,IAAA,WAAA,CAAmB,KAAkB,EAAA;AACnC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC;IAChC;;AAGA,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA;;;;AAIG;AACI,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;YACd;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,IAAI,KAAK;QACxB,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU;IAC9C;AAEA;;;;AAIG;AACI,IAAA,IAAI,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;YACd;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU;IAC9C;AAEA;;;;AAIG;IACI,UAAU,CAAC,aAAqB,EAAE,SAAiB,EAAA;AACxD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AAExB,QAAA,OAAO,SAAS;IAClB;;AAGO,IAAA,mBAAmB,CAAC,KAAa,EAAA;AACtC,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;YACd;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,KAAK;IACzC;;AAGO,IAAA,kBAAkB,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;YACd;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,KAAK;IACxC;;AAGO,IAAA,cAAc,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;YACd;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,KAAK;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;IAC7B;AACD;AAED;;;;;;;AAOG;AACI,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAE,MAAc,EAAE,aAAqB,EAAE,aAAa,GAAG,CAAC,KAAY;AACtH,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAChD,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAClD,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAErD,IAAI,KAAK,GAAG,CAAC;IACb,IAAI,UAAU,GAAG,SAAS;IAC1B,IAAI,WAAW,GAAG,UAAU;AAE5B,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AAC3C,QAAA,KAAK,IAAI,UAAU,GAAG,WAAW,GAAG,aAAa;QAEjD,IAAI,UAAU,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,EAAE;YACzC;QACF;QAEA,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,IAAI,CAAC,CAAC;QACzC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,CAAC;IAC7C;AAEA,IAAA,OAAO,KAAK;AACd;AAEA;AACO,MAAM,wBAAwB,GAAG,CAAC,MAA2C,KAAY;IAC9F,QAAQ,MAAM;AACZ,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,CAAC;AACV,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,CAAC;AACV,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,CAAC;AACV,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,EAAE;;AAEf;;;;"}
|
|
@@ -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"}
|