@codexo/exojs 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +265 -6
- package/README.md +82 -67
- package/dist/esm/animation/Tween.d.ts.map +1 -1
- package/dist/esm/animation/Tween.js +1 -2
- package/dist/esm/animation/Tween.js.map +1 -1
- package/dist/esm/animation/TweenManager.d.ts +50 -7
- package/dist/esm/animation/TweenManager.d.ts.map +1 -1
- package/dist/esm/animation/TweenManager.js +68 -10
- package/dist/esm/animation/TweenManager.js.map +1 -1
- package/dist/esm/animation/TweenSequencer.d.ts +139 -0
- package/dist/esm/animation/TweenSequencer.d.ts.map +1 -0
- package/dist/esm/animation/TweenSequencer.js +305 -0
- package/dist/esm/animation/TweenSequencer.js.map +1 -0
- package/dist/esm/animation/index.d.ts +7 -4
- package/dist/esm/animation/index.d.ts.map +1 -1
- package/dist/esm/audio/AudioBus.d.ts +12 -12
- package/dist/esm/audio/AudioBus.js +29 -29
- package/dist/esm/audio/AudioEffect.d.ts +18 -0
- package/dist/esm/audio/AudioEffect.d.ts.map +1 -0
- package/dist/esm/audio/AudioEffect.js +16 -0
- package/dist/esm/audio/AudioEffect.js.map +1 -0
- package/dist/esm/audio/AudioGenerator.d.ts +91 -0
- package/dist/esm/audio/AudioGenerator.d.ts.map +1 -0
- package/dist/esm/audio/AudioGenerator.js +165 -0
- package/dist/esm/audio/AudioGenerator.js.map +1 -0
- package/dist/esm/audio/AudioGeneratorVoice.d.ts +52 -0
- package/dist/esm/audio/AudioGeneratorVoice.d.ts.map +1 -0
- package/dist/esm/audio/AudioGeneratorVoice.js +141 -0
- package/dist/esm/audio/AudioGeneratorVoice.js.map +1 -0
- package/dist/esm/audio/AudioInput.d.ts +39 -0
- package/dist/esm/audio/AudioInput.d.ts.map +1 -0
- package/dist/esm/audio/AudioInput.js +53 -0
- package/dist/esm/audio/AudioInput.js.map +1 -0
- package/dist/esm/audio/AudioManager.d.ts +72 -34
- package/dist/esm/audio/AudioManager.d.ts.map +1 -1
- package/dist/esm/audio/AudioManager.js +97 -51
- package/dist/esm/audio/AudioManager.js.map +1 -1
- package/dist/esm/audio/AudioStream.d.ts +49 -0
- package/dist/esm/audio/AudioStream.d.ts.map +1 -0
- package/dist/esm/audio/AudioStream.js +109 -0
- package/dist/esm/audio/AudioStream.js.map +1 -0
- package/dist/esm/audio/AudioStreamVoice.d.ts +61 -0
- package/dist/esm/audio/AudioStreamVoice.d.ts.map +1 -0
- package/dist/esm/audio/AudioStreamVoice.js +137 -0
- package/dist/esm/audio/AudioStreamVoice.js.map +1 -0
- package/dist/esm/audio/BaseVoice.d.ts +111 -0
- package/dist/esm/audio/BaseVoice.d.ts.map +1 -0
- package/dist/esm/audio/BaseVoice.js +298 -0
- package/dist/esm/audio/BaseVoice.js.map +1 -0
- package/dist/esm/audio/BiquadEffect.d.ts +53 -0
- package/dist/esm/audio/BiquadEffect.d.ts.map +1 -0
- package/dist/esm/audio/BiquadEffect.js +110 -0
- package/dist/esm/audio/BiquadEffect.js.map +1 -0
- package/dist/esm/audio/InputVoice.d.ts +41 -0
- package/dist/esm/audio/InputVoice.d.ts.map +1 -0
- package/dist/esm/audio/InputVoice.js +85 -0
- package/dist/esm/audio/InputVoice.js.map +1 -0
- package/dist/esm/audio/NoopVoice.d.ts +29 -0
- package/dist/esm/audio/NoopVoice.d.ts.map +1 -0
- package/dist/esm/audio/NoopVoice.js +52 -0
- package/dist/esm/audio/NoopVoice.js.map +1 -0
- package/dist/esm/audio/Playable.d.ts +135 -0
- package/dist/esm/audio/Playable.d.ts.map +1 -0
- package/dist/esm/audio/Sound.d.ts +64 -69
- package/dist/esm/audio/Sound.d.ts.map +1 -1
- package/dist/esm/audio/Sound.js +176 -377
- package/dist/esm/audio/Sound.js.map +1 -1
- package/dist/esm/audio/SoundVoice.d.ts +63 -0
- package/dist/esm/audio/SoundVoice.d.ts.map +1 -0
- package/dist/esm/audio/SoundVoice.js +168 -0
- package/dist/esm/audio/SoundVoice.js.map +1 -0
- package/dist/esm/audio/WorkletEffect.d.ts +68 -0
- package/dist/esm/audio/WorkletEffect.d.ts.map +1 -0
- package/dist/esm/audio/WorkletEffect.js +177 -0
- package/dist/esm/audio/WorkletEffect.js.map +1 -0
- package/dist/esm/audio/audio-context.js +1 -1
- package/dist/esm/audio/audio-context.js.map +1 -1
- package/dist/esm/audio/crossFade.d.ts +22 -13
- package/dist/esm/audio/crossFade.d.ts.map +1 -1
- package/dist/esm/audio/crossFade.js +21 -13
- package/dist/esm/audio/crossFade.js.map +1 -1
- package/dist/esm/audio/filters/HighpassFilter.d.ts +2 -2
- package/dist/esm/audio/filters/HighpassFilter.js +2 -2
- package/dist/esm/audio/filters/LowpassFilter.d.ts +2 -2
- package/dist/esm/audio/filters/LowpassFilter.js +2 -2
- package/dist/esm/audio/filters/index.d.ts +0 -10
- package/dist/esm/audio/filters/index.d.ts.map +1 -1
- package/dist/esm/audio/index.d.ts +13 -15
- package/dist/esm/audio/index.d.ts.map +1 -1
- package/dist/esm/core/Application.d.ts +169 -14
- package/dist/esm/core/Application.d.ts.map +1 -1
- package/dist/esm/core/Application.js +306 -31
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/BuildInfo.js +2 -2
- package/dist/esm/core/Codec.d.ts +41 -0
- package/dist/esm/core/Codec.d.ts.map +1 -0
- package/dist/esm/core/Codec.js +79 -0
- package/dist/esm/core/Codec.js.map +1 -0
- package/dist/esm/core/Color.d.ts +6 -4
- package/dist/esm/core/Color.d.ts.map +1 -1
- package/dist/esm/core/Color.js +19 -15
- package/dist/esm/core/Color.js.map +1 -1
- package/dist/esm/core/DisposalScope.d.ts +50 -0
- package/dist/esm/core/DisposalScope.d.ts.map +1 -0
- package/dist/esm/core/DisposalScope.js +86 -0
- package/dist/esm/core/DisposalScope.js.map +1 -0
- package/dist/esm/core/FixedTimestep.d.ts +28 -0
- package/dist/esm/core/FixedTimestep.d.ts.map +1 -0
- package/dist/esm/core/FixedTimestep.js +62 -0
- package/dist/esm/core/FixedTimestep.js.map +1 -0
- package/dist/esm/core/Perf.d.ts +10 -22
- package/dist/esm/core/Perf.d.ts.map +1 -1
- package/dist/esm/core/Perf.js +15 -8
- package/dist/esm/core/Perf.js.map +1 -1
- package/dist/esm/core/Registry.d.ts +64 -0
- package/dist/esm/core/Registry.d.ts.map +1 -0
- package/dist/esm/core/Registry.js +79 -0
- package/dist/esm/core/Registry.js.map +1 -0
- package/dist/esm/core/Scene.d.ts +83 -21
- package/dist/esm/core/Scene.d.ts.map +1 -1
- package/dist/esm/core/Scene.js +127 -16
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.d.ts +28 -59
- package/dist/esm/core/SceneManager.d.ts.map +1 -1
- package/dist/esm/core/SceneManager.js +86 -155
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +78 -7
- package/dist/esm/core/SceneNode.d.ts.map +1 -1
- package/dist/esm/core/SceneNode.js +162 -21
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/Signal.js.map +1 -1
- package/dist/esm/core/Stage.d.ts +49 -0
- package/dist/esm/core/Stage.d.ts.map +1 -0
- package/dist/esm/core/System.d.ts +22 -0
- package/dist/esm/core/System.d.ts.map +1 -0
- package/dist/esm/core/SystemRegistry.d.ts +40 -0
- package/dist/esm/core/SystemRegistry.d.ts.map +1 -0
- package/dist/esm/core/SystemRegistry.js +114 -0
- package/dist/esm/core/SystemRegistry.js.map +1 -0
- package/dist/esm/core/Time.d.ts +15 -0
- package/dist/esm/core/Time.d.ts.map +1 -1
- package/dist/esm/core/Time.js +25 -0
- package/dist/esm/core/Time.js.map +1 -1
- package/dist/esm/core/dev.d.ts +9 -4
- package/dist/esm/core/dev.d.ts.map +1 -1
- package/dist/esm/core/dev.js +5 -0
- package/dist/esm/core/dev.js.map +1 -1
- package/dist/esm/core/index.d.ts +30 -15
- package/dist/esm/core/index.d.ts.map +1 -1
- package/dist/esm/core/letterbox.d.ts +25 -0
- package/dist/esm/core/letterbox.d.ts.map +1 -0
- package/dist/esm/core/letterbox.js +26 -0
- package/dist/esm/core/letterbox.js.map +1 -0
- package/dist/esm/core/logging.d.ts +34 -0
- package/dist/esm/core/logging.d.ts.map +1 -0
- package/dist/esm/core/logging.js +59 -0
- package/dist/esm/core/logging.js.map +1 -0
- package/dist/esm/core/serialization/NodeSerializer.d.ts +71 -0
- package/dist/esm/core/serialization/NodeSerializer.d.ts.map +1 -0
- package/dist/esm/core/serialization/Prefab.d.ts +49 -0
- package/dist/esm/core/serialization/Prefab.d.ts.map +1 -0
- package/dist/esm/core/serialization/Prefab.js +61 -0
- package/dist/esm/core/serialization/Prefab.js.map +1 -0
- package/dist/esm/core/serialization/SerializationRegistry.d.ts +95 -0
- package/dist/esm/core/serialization/SerializationRegistry.d.ts.map +1 -0
- package/dist/esm/core/serialization/SerializationRegistry.js +108 -0
- package/dist/esm/core/serialization/SerializationRegistry.js.map +1 -0
- package/dist/esm/core/serialization/commonFields.d.ts +20 -0
- package/dist/esm/core/serialization/commonFields.d.ts.map +1 -0
- package/dist/esm/core/serialization/commonFields.js +155 -0
- package/dist/esm/core/serialization/commonFields.js.map +1 -0
- package/dist/esm/core/serialization/coreSerializers.d.ts +9 -0
- package/dist/esm/core/serialization/coreSerializers.d.ts.map +1 -0
- package/dist/esm/core/serialization/coreSerializers.js +101 -0
- package/dist/esm/core/serialization/coreSerializers.js.map +1 -0
- package/dist/esm/core/serialization/index.d.ts +6 -0
- package/dist/esm/core/serialization/index.d.ts.map +1 -0
- package/dist/esm/core/serialization/read.d.ts +65 -0
- package/dist/esm/core/serialization/read.d.ts.map +1 -0
- package/dist/esm/core/serialization/read.js +48 -0
- package/dist/esm/core/serialization/read.js.map +1 -0
- package/dist/esm/core/serialization/renderingSerializers.d.ts +7 -0
- package/dist/esm/core/serialization/renderingSerializers.d.ts.map +1 -0
- package/dist/esm/core/serialization/renderingSerializers.js +320 -0
- package/dist/esm/core/serialization/renderingSerializers.js.map +1 -0
- package/dist/esm/core/serialization/serialize.d.ts +56 -0
- package/dist/esm/core/serialization/serialize.d.ts.map +1 -0
- package/dist/esm/core/serialization/serialize.js +144 -0
- package/dist/esm/core/serialization/serialize.js.map +1 -0
- package/dist/esm/core/serialization/serializerHelpers.d.ts +46 -0
- package/dist/esm/core/serialization/serializerHelpers.d.ts.map +1 -0
- package/dist/esm/core/serialization/serializerHelpers.js +161 -0
- package/dist/esm/core/serialization/serializerHelpers.js.map +1 -0
- package/dist/esm/core/serialization/types.d.ts +49 -0
- package/dist/esm/core/serialization/types.d.ts.map +1 -0
- package/dist/esm/core/serialization/types.js +9 -0
- package/dist/esm/core/serialization/types.js.map +1 -0
- package/dist/esm/core/serialization/uiSerializers.d.ts +7 -0
- package/dist/esm/core/serialization/uiSerializers.d.ts.map +1 -0
- package/dist/esm/core/serialization/uiSerializers.js +206 -0
- package/dist/esm/core/serialization/uiSerializers.js.map +1 -0
- package/dist/esm/core/types.d.ts +1 -1
- package/dist/esm/core/types.d.ts.map +1 -1
- package/dist/esm/core/utils.d.ts +1 -16
- package/dist/esm/core/utils.d.ts.map +1 -1
- package/dist/esm/core/utils.js +2 -100
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/debug/PerformanceLayer.js +8 -9
- package/dist/esm/debug/PerformanceLayer.js.map +1 -1
- package/dist/esm/debug/PointerStackLayer.d.ts.map +1 -1
- package/dist/esm/debug/PointerStackLayer.js +9 -6
- package/dist/esm/debug/PointerStackLayer.js.map +1 -1
- package/dist/esm/debug/RenderPassInspectorLayer.d.ts.map +1 -1
- package/dist/esm/debug/RenderPassInspectorLayer.js +19 -12
- package/dist/esm/debug/RenderPassInspectorLayer.js.map +1 -1
- package/dist/esm/extensions/Extension.d.ts +39 -4
- package/dist/esm/extensions/Extension.d.ts.map +1 -1
- package/dist/esm/extensions/materialize.d.ts +9 -1
- package/dist/esm/extensions/materialize.d.ts.map +1 -1
- package/dist/esm/extensions/materialize.js +17 -2
- package/dist/esm/extensions/materialize.js.map +1 -1
- package/dist/esm/extensions/snapshot.d.ts +2 -1
- package/dist/esm/extensions/snapshot.d.ts.map +1 -1
- package/dist/esm/extensions/snapshot.js +8 -0
- package/dist/esm/extensions/snapshot.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +41 -61
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/input/FocusManager.d.ts +59 -0
- package/dist/esm/input/FocusManager.d.ts.map +1 -0
- package/dist/esm/input/FocusManager.js +175 -0
- package/dist/esm/input/FocusManager.js.map +1 -0
- package/dist/esm/input/Gamepad.d.ts +10 -0
- package/dist/esm/input/Gamepad.d.ts.map +1 -1
- package/dist/esm/input/Gamepad.js +20 -4
- package/dist/esm/input/Gamepad.js.map +1 -1
- package/dist/esm/input/GamepadAxis.js +2 -2
- package/dist/esm/input/GamepadDefinitions.d.ts.map +1 -1
- package/dist/esm/input/GamepadDefinitions.js +6 -2
- package/dist/esm/input/GamepadDefinitions.js.map +1 -1
- package/dist/esm/input/GestureRecognizer.d.ts +1 -2
- package/dist/esm/input/GestureRecognizer.d.ts.map +1 -1
- package/dist/esm/input/GestureRecognizer.js +1 -3
- package/dist/esm/input/GestureRecognizer.js.map +1 -1
- package/dist/esm/input/InputBinding.js +3 -3
- package/dist/esm/input/InputBinding.js.map +1 -1
- package/dist/esm/input/InputManager.d.ts +7 -2
- package/dist/esm/input/InputManager.d.ts.map +1 -1
- package/dist/esm/input/InputManager.js +40 -21
- package/dist/esm/input/InputManager.js.map +1 -1
- package/dist/esm/input/InteractionManager.d.ts +67 -2
- package/dist/esm/input/InteractionManager.d.ts.map +1 -1
- package/dist/esm/input/InteractionManager.js +165 -41
- package/dist/esm/input/InteractionManager.js.map +1 -1
- package/dist/esm/input/KeyEvent.d.ts +25 -0
- package/dist/esm/input/KeyEvent.d.ts.map +1 -0
- package/dist/esm/input/KeyEvent.js +32 -0
- package/dist/esm/input/KeyEvent.js.map +1 -0
- package/dist/esm/input/Pointer.d.ts +21 -4
- package/dist/esm/input/Pointer.d.ts.map +1 -1
- package/dist/esm/input/Pointer.js +54 -15
- package/dist/esm/input/Pointer.js.map +1 -1
- package/dist/esm/input/index.d.ts +3 -1
- package/dist/esm/input/index.d.ts.map +1 -1
- package/dist/esm/math/AbstractVector.d.ts.map +1 -1
- package/dist/esm/math/AbstractVector.js +7 -2
- package/dist/esm/math/AbstractVector.js.map +1 -1
- package/dist/esm/math/Circle.d.ts.map +1 -1
- package/dist/esm/math/Circle.js +5 -1
- package/dist/esm/math/Circle.js.map +1 -1
- package/dist/esm/math/Line.d.ts +1 -1
- package/dist/esm/math/Line.d.ts.map +1 -1
- package/dist/esm/math/Line.js +1 -1
- package/dist/esm/math/Line.js.map +1 -1
- package/dist/esm/math/Matrix.d.ts.map +1 -1
- package/dist/esm/math/Matrix.js +6 -1
- package/dist/esm/math/Matrix.js.map +1 -1
- package/dist/esm/math/ObservableVector.d.ts +26 -8
- package/dist/esm/math/ObservableVector.d.ts.map +1 -1
- package/dist/esm/math/ObservableVector.js +24 -16
- package/dist/esm/math/ObservableVector.js.map +1 -1
- package/dist/esm/math/Polygon.d.ts +5 -0
- package/dist/esm/math/Polygon.d.ts.map +1 -1
- package/dist/esm/math/Polygon.js +27 -3
- package/dist/esm/math/Polygon.js.map +1 -1
- package/dist/esm/math/Random.d.ts +9 -9
- package/dist/esm/math/Random.d.ts.map +1 -1
- package/dist/esm/math/Random.js +46 -46
- package/dist/esm/math/Random.js.map +1 -1
- package/dist/esm/math/Rectangle.d.ts +11 -4
- package/dist/esm/math/Rectangle.d.ts.map +1 -1
- package/dist/esm/math/Rectangle.js +12 -6
- package/dist/esm/math/Rectangle.js.map +1 -1
- package/dist/esm/math/Vector.d.ts +1 -1
- package/dist/esm/math/Vector.d.ts.map +1 -1
- package/dist/esm/math/Vector.js +1 -1
- package/dist/esm/math/Vector.js.map +1 -1
- package/dist/esm/math/collision-detection.d.ts +42 -0
- package/dist/esm/math/collision-detection.d.ts.map +1 -1
- package/dist/esm/math/collision-detection.js +54 -4
- package/dist/esm/math/collision-detection.js.map +1 -1
- package/dist/esm/math/collision-primitives.d.ts.map +1 -1
- package/dist/esm/math/collision-primitives.js +4 -0
- package/dist/esm/math/collision-primitives.js.map +1 -1
- package/dist/esm/math/geometry.d.ts +26 -0
- package/dist/esm/math/geometry.d.ts.map +1 -1
- package/dist/esm/math/geometry.js +89 -2
- package/dist/esm/math/geometry.js.map +1 -1
- package/dist/esm/math/index.d.ts +7 -5
- package/dist/esm/math/index.d.ts.map +1 -1
- package/dist/esm/math/swept-collision.d.ts +13 -0
- package/dist/esm/math/swept-collision.d.ts.map +1 -1
- package/dist/esm/math/swept-collision.js +15 -1
- package/dist/esm/math/swept-collision.js.map +1 -1
- package/dist/esm/math/triangulate.d.ts.map +1 -1
- package/dist/esm/math/triangulate.js +9 -1
- package/dist/esm/math/triangulate.js.map +1 -1
- package/dist/esm/math/utils.d.ts +20 -0
- package/dist/esm/math/utils.d.ts.map +1 -1
- package/dist/esm/math/utils.js +18 -15
- package/dist/esm/math/utils.js.map +1 -1
- package/dist/esm/renderer-sdk.d.ts +2 -0
- package/dist/esm/renderer-sdk.d.ts.map +1 -1
- package/dist/esm/{rendering.js → renderer-sdk.js} +1 -1
- package/dist/esm/renderer-sdk.js.map +1 -0
- package/dist/esm/rendering/BackendTargetPass.d.ts +1 -1
- package/dist/esm/rendering/BackendTargetPass.d.ts.map +1 -1
- package/dist/esm/rendering/CallbackRenderPass.d.ts +14 -10
- package/dist/esm/rendering/CallbackRenderPass.d.ts.map +1 -1
- package/dist/esm/rendering/CallbackRenderPass.js +17 -12
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
- package/dist/esm/rendering/Container.d.ts +3 -0
- package/dist/esm/rendering/Container.d.ts.map +1 -1
- package/dist/esm/rendering/Container.js +28 -5
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/DrawContext.d.ts +48 -0
- package/dist/esm/rendering/DrawContext.d.ts.map +1 -0
- package/dist/esm/rendering/Drawable.d.ts +24 -0
- package/dist/esm/rendering/Drawable.d.ts.map +1 -1
- package/dist/esm/rendering/Drawable.js +54 -0
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/GpuResourceAccountant.d.ts +65 -0
- package/dist/esm/rendering/GpuResourceAccountant.d.ts.map +1 -0
- package/dist/esm/rendering/GpuResourceAccountant.js +130 -0
- package/dist/esm/rendering/GpuResourceAccountant.js.map +1 -0
- package/dist/esm/rendering/PassContext.d.ts +42 -0
- package/dist/esm/rendering/PassContext.d.ts.map +1 -0
- package/dist/esm/rendering/PassContext.js +48 -0
- package/dist/esm/rendering/PassContext.js.map +1 -0
- package/dist/esm/rendering/RenderBackend.d.ts +29 -1
- package/dist/esm/rendering/RenderBackend.d.ts.map +1 -1
- package/dist/esm/rendering/RenderBatch.d.ts +55 -0
- package/dist/esm/rendering/RenderBatch.d.ts.map +1 -0
- package/dist/esm/rendering/RenderBatch.js +107 -0
- package/dist/esm/rendering/RenderBatch.js.map +1 -0
- package/dist/esm/rendering/RenderNode.d.ts +50 -10
- package/dist/esm/rendering/RenderNode.d.ts.map +1 -1
- package/dist/esm/rendering/RenderNode.js +115 -22
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderNodePass.d.ts +1 -1
- package/dist/esm/rendering/RenderNodePass.d.ts.map +1 -1
- package/dist/esm/rendering/RenderNodePass.js +2 -2
- package/dist/esm/rendering/RenderNodePass.js.map +1 -1
- package/dist/esm/rendering/RenderStats.d.ts +39 -0
- package/dist/esm/rendering/RenderStats.d.ts.map +1 -1
- package/dist/esm/rendering/RenderStats.js +14 -0
- package/dist/esm/rendering/RenderStats.js.map +1 -1
- package/dist/esm/rendering/RendererRegistry.d.ts.map +1 -1
- package/dist/esm/rendering/RendererRegistry.js +20 -23
- package/dist/esm/rendering/RendererRegistry.js.map +1 -1
- package/dist/esm/rendering/RenderingContext.d.ts +132 -17
- package/dist/esm/rendering/RenderingContext.d.ts.map +1 -1
- package/dist/esm/rendering/RenderingContext.js +228 -28
- package/dist/esm/rendering/RenderingContext.js.map +1 -1
- package/dist/esm/rendering/TransformBuffer.d.ts +23 -0
- package/dist/esm/rendering/TransformBuffer.d.ts.map +1 -1
- package/dist/esm/rendering/TransformBuffer.js +60 -0
- package/dist/esm/rendering/TransformBuffer.js.map +1 -1
- package/dist/esm/rendering/View.d.ts +85 -15
- package/dist/esm/rendering/View.d.ts.map +1 -1
- package/dist/esm/rendering/View.js +81 -27
- package/dist/esm/rendering/View.js.map +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts.map +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +10 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
- package/dist/esm/rendering/geometry/Geometry.d.ts.map +1 -1
- package/dist/esm/rendering/geometry/Geometry.js +4 -2
- package/dist/esm/rendering/geometry/Geometry.js.map +1 -1
- package/dist/esm/rendering/gradient/Gradient.d.ts.map +1 -1
- package/dist/esm/rendering/gradient/Gradient.js +7 -2
- package/dist/esm/rendering/gradient/Gradient.js.map +1 -1
- package/dist/esm/rendering/material/MaterialKey.d.ts.map +1 -1
- package/dist/esm/rendering/material/MaterialKey.js +2 -0
- package/dist/esm/rendering/material/MaterialKey.js.map +1 -1
- package/dist/esm/rendering/material/MeshMaterial.d.ts +20 -1
- package/dist/esm/rendering/material/MeshMaterial.d.ts.map +1 -1
- package/dist/esm/rendering/material/MeshMaterial.js +17 -0
- package/dist/esm/rendering/material/MeshMaterial.js.map +1 -1
- package/dist/esm/rendering/material/ShaderSource.js +6 -0
- package/dist/esm/rendering/material/ShaderSource.js.map +1 -1
- package/dist/esm/rendering/material/SpriteMaterial.d.ts +20 -1
- package/dist/esm/rendering/material/SpriteMaterial.d.ts.map +1 -1
- package/dist/esm/rendering/material/SpriteMaterial.js +17 -0
- package/dist/esm/rendering/material/SpriteMaterial.js.map +1 -1
- package/dist/esm/rendering/mesh/ImmediateMesh.d.ts +48 -0
- package/dist/esm/rendering/mesh/ImmediateMesh.d.ts.map +1 -0
- package/dist/esm/rendering/mesh/ImmediateMesh.js +85 -0
- package/dist/esm/rendering/mesh/ImmediateMesh.js.map +1 -0
- package/dist/esm/rendering/mesh/Mesh.d.ts +29 -6
- package/dist/esm/rendering/mesh/Mesh.d.ts.map +1 -1
- package/dist/esm/rendering/mesh/Mesh.js +40 -13
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/pixelSnap.d.ts.map +1 -1
- package/dist/esm/rendering/pixelSnap.js +1 -0
- package/dist/esm/rendering/pixelSnap.js.map +1 -1
- package/dist/esm/rendering/plan/RenderCommand.d.ts +31 -9
- package/dist/esm/rendering/plan/RenderCommand.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderCommand.js +23 -21
- package/dist/esm/rendering/plan/RenderCommand.js.map +1 -1
- package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderEffectExecutor.js +8 -2
- package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -1
- package/dist/esm/rendering/plan/RenderInstruction.d.ts +12 -39
- package/dist/esm/rendering/plan/RenderInstruction.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts +17 -2
- package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanBuilder.js +154 -50
- package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanOptimizer.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js +31 -4
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanPlayer.d.ts.map +1 -1
- package/dist/esm/rendering/plan/RenderPlanPlayer.js +54 -17
- package/dist/esm/rendering/plan/RenderPlanPlayer.js.map +1 -1
- package/dist/esm/rendering/plan/RenderScope.d.ts +23 -10
- package/dist/esm/rendering/plan/RenderScope.d.ts.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.d.ts +16 -1
- package/dist/esm/rendering/primitives/Graphics.d.ts.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.js +46 -9
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/{index.d.ts → public.d.ts} +9 -39
- package/dist/esm/rendering/public.d.ts.map +1 -0
- package/dist/esm/rendering/shader/ShaderAttribute.d.ts.map +1 -1
- package/dist/esm/rendering/shader/ShaderAttribute.js +2 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +60 -12
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/AnimatedSprite.js +142 -30
- package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/NineSliceSprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/NineSliceSprite.js +10 -11
- package/dist/esm/rendering/sprite/NineSliceSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/RepeatingSprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/RepeatingSprite.js +1 -3
- package/dist/esm/rendering/sprite/RepeatingSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.js +30 -3
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/nineSlice.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/nineSlice.js +12 -18
- package/dist/esm/rendering/sprite/nineSlice.js.map +1 -1
- package/dist/esm/rendering/sprite/repeatingSpritePlan.d.ts.map +1 -1
- package/dist/esm/rendering/sprite/repeatingSpritePlan.js +2 -2
- package/dist/esm/rendering/sprite/repeatingSpritePlan.js.map +1 -1
- package/dist/esm/rendering/text/BitmapText.d.ts +2 -0
- package/dist/esm/rendering/text/BitmapText.d.ts.map +1 -1
- package/dist/esm/rendering/text/BitmapText.js +6 -0
- package/dist/esm/rendering/text/BitmapText.js.map +1 -1
- package/dist/esm/rendering/text/GlyphAtlas.d.ts.map +1 -1
- package/dist/esm/rendering/text/GlyphAtlas.js +2 -1
- package/dist/esm/rendering/text/GlyphAtlas.js.map +1 -1
- package/dist/esm/rendering/text/GlyphAtlasPool.d.ts +8 -1
- package/dist/esm/rendering/text/GlyphAtlasPool.d.ts.map +1 -1
- package/dist/esm/rendering/text/GlyphAtlasPool.js +9 -12
- package/dist/esm/rendering/text/GlyphAtlasPool.js.map +1 -1
- package/dist/esm/rendering/text/GlyphSdf.d.ts.map +1 -1
- package/dist/esm/rendering/text/GlyphSdf.js +5 -1
- package/dist/esm/rendering/text/GlyphSdf.js.map +1 -1
- package/dist/esm/rendering/text/HTMLText.d.ts.map +1 -1
- package/dist/esm/rendering/text/HTMLText.js +3 -2
- package/dist/esm/rendering/text/HTMLText.js.map +1 -1
- package/dist/esm/rendering/text/Text.d.ts +17 -6
- package/dist/esm/rendering/text/Text.d.ts.map +1 -1
- package/dist/esm/rendering/text/Text.js +9 -12
- package/dist/esm/rendering/text/Text.js.map +1 -1
- package/dist/esm/rendering/text/TextLayout.d.ts.map +1 -1
- package/dist/esm/rendering/text/TextLayout.js +4 -18
- package/dist/esm/rendering/text/TextLayout.js.map +1 -1
- package/dist/esm/rendering/texture/DataTexture.js +2 -2
- package/dist/esm/rendering/texture/DataTexture.js.map +1 -1
- package/dist/esm/rendering/texture/Texture.d.ts +6 -0
- package/dist/esm/rendering/texture/Texture.d.ts.map +1 -1
- package/dist/esm/rendering/texture/Texture.js +8 -0
- package/dist/esm/rendering/texture/Texture.js.map +1 -1
- package/dist/esm/rendering/texture/TextureRegion.d.ts.map +1 -1
- package/dist/esm/rendering/texture/TextureRegion.js.map +1 -1
- package/dist/esm/rendering/texture/repeat.d.ts.map +1 -1
- package/dist/esm/rendering/texture/repeat.js +2 -2
- package/dist/esm/rendering/texture/repeat.js.map +1 -1
- package/dist/esm/rendering/types.d.ts +37 -2
- package/dist/esm/rendering/types.d.ts.map +1 -1
- package/dist/esm/rendering/types.js +37 -2
- package/dist/esm/rendering/types.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +7 -3
- package/dist/esm/rendering/video/Video.d.ts.map +1 -1
- package/dist/esm/rendering/video/Video.js +7 -3
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +2 -2
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.d.ts +41 -0
- package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.d.ts.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.js +222 -0
- package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +55 -3
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +209 -61
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js +2 -2
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +17 -0
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +122 -38
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js +2 -1
- package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +16 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +32 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js +15 -11
- package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js +14 -3
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js +3 -3
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js +11 -2
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +7 -2
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js +3 -2
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +60 -15
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/glsl/backdrop-blend.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/backdrop-blend.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/backdrop-blend.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/backdrop-blend.vert.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/text.vert.js +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.d.ts +72 -0
- package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.d.ts.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.js +494 -0
- package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +45 -2
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +247 -69
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBlendState.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js +5 -26
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts +2 -0
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +2 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +17 -0
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +105 -25
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts +2 -0
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js +8 -2
- package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts +8 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js +20 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts +6 -0
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js +23 -10
- package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +2 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +10 -5
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts +2 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +3 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts +2 -0
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +22 -9
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +16 -3
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +50 -6
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -1
- package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js +1 -1
- package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js.map +1 -1
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts +7 -0
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts.map +1 -1
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js +8 -0
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js.map +1 -1
- package/dist/esm/resources/Asset.d.ts +1 -1
- package/dist/esm/resources/Asset.d.ts.map +1 -1
- package/dist/esm/resources/Asset.js +0 -2
- package/dist/esm/resources/Asset.js.map +1 -1
- package/dist/esm/resources/AssetContainer.d.ts +75 -0
- package/dist/esm/resources/AssetContainer.d.ts.map +1 -0
- package/dist/esm/resources/AssetContainer.js +100 -0
- package/dist/esm/resources/AssetContainer.js.map +1 -0
- package/dist/esm/resources/AssetDefinitions.d.ts +3 -3
- package/dist/esm/resources/AssetDefinitions.d.ts.map +1 -1
- package/dist/esm/resources/Assets.d.ts.map +1 -1
- package/dist/esm/resources/Assets.js +0 -1
- package/dist/esm/resources/Assets.js.map +1 -1
- package/dist/esm/resources/FactoryRegistry.d.ts.map +1 -1
- package/dist/esm/resources/FactoryRegistry.js +14 -23
- package/dist/esm/resources/FactoryRegistry.js.map +1 -1
- package/dist/esm/resources/IndexedDbDatabase.d.ts.map +1 -1
- package/dist/esm/resources/IndexedDbDatabase.js +8 -1
- package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
- package/dist/esm/resources/IndexedDbKeyValueStore.d.ts +37 -0
- package/dist/esm/resources/IndexedDbKeyValueStore.d.ts.map +1 -0
- package/dist/esm/resources/IndexedDbKeyValueStore.js +58 -0
- package/dist/esm/resources/IndexedDbKeyValueStore.js.map +1 -0
- package/dist/esm/resources/KeyValueStore.d.ts +31 -0
- package/dist/esm/resources/KeyValueStore.d.ts.map +1 -0
- package/dist/esm/resources/Loader.d.ts +55 -2
- package/dist/esm/resources/Loader.d.ts.map +1 -1
- package/dist/esm/resources/Loader.js +159 -14
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/esm/resources/MemoryStore.d.ts +17 -0
- package/dist/esm/resources/MemoryStore.d.ts.map +1 -0
- package/dist/esm/resources/MemoryStore.js +30 -0
- package/dist/esm/resources/MemoryStore.js.map +1 -0
- package/dist/esm/resources/WebStorageStore.d.ts +40 -0
- package/dist/esm/resources/WebStorageStore.d.ts.map +1 -0
- package/dist/esm/resources/WebStorageStore.js +84 -0
- package/dist/esm/resources/WebStorageStore.js.map +1 -0
- package/dist/esm/resources/coreAssetBindings.d.ts.map +1 -1
- package/dist/esm/resources/coreAssetBindings.js +16 -5
- package/dist/esm/resources/coreAssetBindings.js.map +1 -1
- package/dist/esm/resources/factories/BmFontFactory.js +4 -4
- package/dist/esm/resources/factories/BmFontFactory.js.map +1 -1
- package/dist/esm/resources/factories/MusicFactory.d.ts +9 -9
- package/dist/esm/resources/factories/MusicFactory.d.ts.map +1 -1
- package/dist/esm/resources/factories/MusicFactory.js +7 -7
- package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
- package/dist/esm/resources/factories/SoundFactory.js +2 -2
- package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
- package/dist/esm/resources/factories/SubtitleFactory.d.ts +11 -1
- package/dist/esm/resources/factories/SubtitleFactory.d.ts.map +1 -1
- package/dist/esm/resources/factories/SubtitleFactory.js +13 -9
- package/dist/esm/resources/factories/SubtitleFactory.js.map +1 -1
- package/dist/esm/resources/index.d.ts +51 -34
- package/dist/esm/resources/index.d.ts.map +1 -1
- package/dist/esm/resources/utils.js +4 -4
- package/dist/esm/resources/utils.js.map +1 -1
- package/dist/esm/ui/Button.d.ts +54 -0
- package/dist/esm/ui/Button.d.ts.map +1 -0
- package/dist/esm/ui/Button.js +139 -0
- package/dist/esm/ui/Button.js.map +1 -0
- package/dist/esm/ui/Label.d.ts +17 -0
- package/dist/esm/ui/Label.d.ts.map +1 -0
- package/dist/esm/ui/Label.js +37 -0
- package/dist/esm/ui/Label.js.map +1 -0
- package/dist/esm/ui/Panel.d.ts +38 -0
- package/dist/esm/ui/Panel.d.ts.map +1 -0
- package/dist/esm/ui/Panel.js +61 -0
- package/dist/esm/ui/Panel.js.map +1 -0
- package/dist/esm/ui/ProgressBar.d.ts +37 -0
- package/dist/esm/ui/ProgressBar.d.ts.map +1 -0
- package/dist/esm/ui/ProgressBar.js +76 -0
- package/dist/esm/ui/ProgressBar.js.map +1 -0
- package/dist/esm/ui/ScrollContainer.d.ts +63 -0
- package/dist/esm/ui/ScrollContainer.d.ts.map +1 -0
- package/dist/esm/ui/ScrollContainer.js +99 -0
- package/dist/esm/ui/ScrollContainer.js.map +1 -0
- package/dist/esm/ui/Stack.d.ts +34 -0
- package/dist/esm/ui/Stack.d.ts.map +1 -0
- package/dist/esm/ui/Stack.js +69 -0
- package/dist/esm/ui/Stack.js.map +1 -0
- package/dist/esm/ui/Tooltip.d.ts +67 -0
- package/dist/esm/ui/Tooltip.d.ts.map +1 -0
- package/dist/esm/ui/Tooltip.js +133 -0
- package/dist/esm/ui/Tooltip.js.map +1 -0
- package/dist/esm/ui/UIRoot.d.ts +31 -0
- package/dist/esm/ui/UIRoot.d.ts.map +1 -0
- package/dist/esm/ui/UIRoot.js +49 -0
- package/dist/esm/ui/UIRoot.js.map +1 -0
- package/dist/esm/ui/Widget.d.ts +45 -0
- package/dist/esm/ui/Widget.d.ts.map +1 -0
- package/dist/esm/ui/Widget.js +113 -0
- package/dist/esm/ui/Widget.js.map +1 -0
- package/dist/esm/ui/index.d.ts +17 -0
- package/dist/esm/ui/index.d.ts.map +1 -0
- package/dist/exo.debug.esm.js +1 -948
- package/dist/exo.debug.esm.js.map +1 -1
- package/dist/exo.esm.js +1 -40945
- package/dist/exo.esm.js.map +1 -1
- package/dist/exo.iife.js +45202 -0
- package/dist/exo.iife.js.map +1 -0
- package/dist/exo.iife.min.js +2 -0
- package/dist/exo.iife.min.js.map +1 -0
- package/package.json +37 -14
- package/dist/esm/audio/AbstractMedia.d.ts +0 -75
- package/dist/esm/audio/AbstractMedia.d.ts.map +0 -1
- package/dist/esm/audio/AbstractMedia.js +0 -179
- package/dist/esm/audio/AbstractMedia.js.map +0 -1
- package/dist/esm/audio/AudioAnalyser.d.ts +0 -128
- package/dist/esm/audio/AudioAnalyser.d.ts.map +0 -1
- package/dist/esm/audio/AudioAnalyser.js +0 -473
- package/dist/esm/audio/AudioAnalyser.js.map +0 -1
- package/dist/esm/audio/AudioFilter.d.ts +0 -17
- package/dist/esm/audio/AudioFilter.d.ts.map +0 -1
- package/dist/esm/audio/AudioFilter.js +0 -15
- package/dist/esm/audio/AudioFilter.js.map +0 -1
- package/dist/esm/audio/BeatDetector.d.ts +0 -207
- package/dist/esm/audio/BeatDetector.d.ts.map +0 -1
- package/dist/esm/audio/BeatDetector.js +0 -424
- package/dist/esm/audio/BeatDetector.js.map +0 -1
- package/dist/esm/audio/Media.d.ts +0 -37
- package/dist/esm/audio/Media.d.ts.map +0 -1
- package/dist/esm/audio/Music.d.ts +0 -42
- package/dist/esm/audio/Music.d.ts.map +0 -1
- package/dist/esm/audio/Music.js +0 -164
- package/dist/esm/audio/Music.js.map +0 -1
- package/dist/esm/audio/OscillatorSound.d.ts +0 -100
- package/dist/esm/audio/OscillatorSound.d.ts.map +0 -1
- package/dist/esm/audio/OscillatorSound.js +0 -346
- package/dist/esm/audio/OscillatorSound.js.map +0 -1
- package/dist/esm/audio/dsp/fft.d.ts +0 -23
- package/dist/esm/audio/dsp/fft.d.ts.map +0 -1
- package/dist/esm/audio/dsp/mel.d.ts +0 -44
- package/dist/esm/audio/dsp/mel.d.ts.map +0 -1
- package/dist/esm/audio/dsp/mel.js +0 -70
- package/dist/esm/audio/dsp/mel.js.map +0 -1
- package/dist/esm/audio/dsp/tempogram.d.ts +0 -52
- package/dist/esm/audio/dsp/tempogram.d.ts.map +0 -1
- package/dist/esm/audio/filters/ChorusFilter.d.ts +0 -54
- package/dist/esm/audio/filters/ChorusFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/ChorusFilter.js +0 -155
- package/dist/esm/audio/filters/ChorusFilter.js.map +0 -1
- package/dist/esm/audio/filters/CompressorFilter.d.ts +0 -54
- package/dist/esm/audio/filters/CompressorFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/CompressorFilter.js +0 -123
- package/dist/esm/audio/filters/CompressorFilter.js.map +0 -1
- package/dist/esm/audio/filters/DelayFilter.d.ts +0 -36
- package/dist/esm/audio/filters/DelayFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/DelayFilter.js +0 -114
- package/dist/esm/audio/filters/DelayFilter.js.map +0 -1
- package/dist/esm/audio/filters/DuckingFilter.d.ts +0 -45
- package/dist/esm/audio/filters/DuckingFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/DuckingFilter.js +0 -172
- package/dist/esm/audio/filters/DuckingFilter.js.map +0 -1
- package/dist/esm/audio/filters/EqualizerFilter.d.ts +0 -51
- package/dist/esm/audio/filters/EqualizerFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/EqualizerFilter.js +0 -138
- package/dist/esm/audio/filters/EqualizerFilter.js.map +0 -1
- package/dist/esm/audio/filters/GranularFilter.d.ts +0 -63
- package/dist/esm/audio/filters/GranularFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/GranularFilter.js +0 -107
- package/dist/esm/audio/filters/GranularFilter.js.map +0 -1
- package/dist/esm/audio/filters/PitchShiftFilter.d.ts +0 -45
- package/dist/esm/audio/filters/PitchShiftFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/PitchShiftFilter.js +0 -66
- package/dist/esm/audio/filters/PitchShiftFilter.js.map +0 -1
- package/dist/esm/audio/filters/ReverbFilter.d.ts +0 -38
- package/dist/esm/audio/filters/ReverbFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/ReverbFilter.js +0 -122
- package/dist/esm/audio/filters/ReverbFilter.js.map +0 -1
- package/dist/esm/audio/filters/VocoderFilter.d.ts +0 -50
- package/dist/esm/audio/filters/VocoderFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/VocoderFilter.js +0 -94
- package/dist/esm/audio/filters/VocoderFilter.js.map +0 -1
- package/dist/esm/audio/filters/WorkletFilter.d.ts +0 -54
- package/dist/esm/audio/filters/WorkletFilter.d.ts.map +0 -1
- package/dist/esm/audio/filters/WorkletFilter.js +0 -110
- package/dist/esm/audio/filters/WorkletFilter.js.map +0 -1
- package/dist/esm/audio/worklets/beat-detector.worklet.d.ts +0 -2
- package/dist/esm/audio/worklets/beat-detector.worklet.d.ts.map +0 -1
- package/dist/esm/audio/worklets/beat-detector.worklet.js +0 -647
- package/dist/esm/audio/worklets/beat-detector.worklet.js.map +0 -1
- package/dist/esm/audio/worklets/granular.worklet.d.ts +0 -2
- package/dist/esm/audio/worklets/granular.worklet.d.ts.map +0 -1
- package/dist/esm/audio/worklets/granular.worklet.js +0 -89
- package/dist/esm/audio/worklets/granular.worklet.js.map +0 -1
- package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts +0 -2
- package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts.map +0 -1
- package/dist/esm/audio/worklets/pitch-shift.worklet.js +0 -74
- package/dist/esm/audio/worklets/pitch-shift.worklet.js.map +0 -1
- package/dist/esm/audio/worklets/vocoder.worklet.d.ts +0 -2
- package/dist/esm/audio/worklets/vocoder.worklet.d.ts.map +0 -1
- package/dist/esm/audio/worklets/vocoder.worklet.js +0 -92
- package/dist/esm/audio/worklets/vocoder.worklet.js.map +0 -1
- package/dist/esm/input/internal/interactionManagerRegistry.d.ts +0 -10
- package/dist/esm/input/internal/interactionManagerRegistry.d.ts.map +0 -1
- package/dist/esm/input/internal/interactionManagerRegistry.js +0 -10
- package/dist/esm/input/internal/interactionManagerRegistry.js.map +0 -1
- package/dist/esm/rendering/Camera.d.ts +0 -34
- package/dist/esm/rendering/Camera.d.ts.map +0 -1
- package/dist/esm/rendering/Camera.js +0 -38
- package/dist/esm/rendering/Camera.js.map +0 -1
- package/dist/esm/rendering/index.d.ts.map +0 -1
- package/dist/esm/rendering/plan/RenderInstruction.js +0 -45
- package/dist/esm/rendering/plan/RenderInstruction.js.map +0 -1
- package/dist/esm/rendering.d.ts +0 -29
- package/dist/esm/rendering.d.ts.map +0 -1
- package/dist/esm/rendering.js.map +0 -1
- package/dist/esm/resources/JsonStore.d.ts +0 -19
- package/dist/esm/resources/JsonStore.d.ts.map +0 -1
- package/dist/esm/resources/JsonStore.js +0 -62
- package/dist/esm/resources/JsonStore.js.map +0 -1
|
@@ -2,8 +2,9 @@ import { Color } from '../../core/Color.js';
|
|
|
2
2
|
import { Signal } from '../../core/Signal.js';
|
|
3
3
|
import { Matrix } from '../../math/Matrix.js';
|
|
4
4
|
import { Vector } from '../../math/Vector.js';
|
|
5
|
+
import { GpuResourceAccountant, estimateTextureBytes, dataTextureBytesPerPixel } from '../GpuResourceAccountant.js';
|
|
5
6
|
import { resolveUploadTransform } from '../pixelSnap.js';
|
|
6
|
-
import { drawCommandUsesSharedTransform } from '../plan/RenderCommand.js';
|
|
7
|
+
import { RenderEntryKind, drawCommandUsesSharedTransform } from '../plan/RenderCommand.js';
|
|
7
8
|
import { RenderBackendType } from '../RenderBackendType.js';
|
|
8
9
|
import { RendererRegistry } from '../RendererRegistry.js';
|
|
9
10
|
import { createRenderStats, resetRenderStats } from '../RenderStats.js';
|
|
@@ -12,45 +13,12 @@ import { DataTexture } from '../texture/DataTexture.js';
|
|
|
12
13
|
import { RenderTexture } from '../texture/RenderTexture.js';
|
|
13
14
|
import { TransformBuffer } from '../TransformBuffer.js';
|
|
14
15
|
import { BlendModes } from '../types.js';
|
|
16
|
+
import { WebGl2BackdropBlendCompositor } from './WebGl2BackdropBlendCompositor.js';
|
|
15
17
|
import { WebGl2MaskCompositor } from './WebGl2MaskCompositor.js';
|
|
18
|
+
import { WebGl2MeshRenderer } from './WebGl2MeshRenderer.js';
|
|
16
19
|
import { WebGl2PassCoordinator } from './WebGl2PassCoordinator.js';
|
|
17
20
|
import { WebGl2StencilClipper } from './WebGl2StencilClipper.js';
|
|
18
21
|
|
|
19
|
-
// Inline GL debug helpers — replaces the webgl-debug vendor lib.
|
|
20
|
-
// Used only when renderingOptions.debug = true.
|
|
21
|
-
const glEnumToString = (gl, value) => {
|
|
22
|
-
const ctor = gl.constructor;
|
|
23
|
-
for (const key of Object.getOwnPropertyNames(ctor)) {
|
|
24
|
-
if (ctor[key] === value)
|
|
25
|
-
return key;
|
|
26
|
-
}
|
|
27
|
-
return `0x${value.toString(16).padStart(4, '0').toUpperCase()}`;
|
|
28
|
-
};
|
|
29
|
-
const glArgsToString = (gl, args) => args.map(a => (typeof a === 'number' ? glEnumToString(gl, a) : String(a))).join(', ');
|
|
30
|
-
const makeWebGl2DebugContext = (gl) => new Proxy(gl, {
|
|
31
|
-
get(target, prop, receiver) {
|
|
32
|
-
const value = Reflect.get(target, prop, receiver);
|
|
33
|
-
if (typeof value !== 'function')
|
|
34
|
-
return value;
|
|
35
|
-
const name = String(prop);
|
|
36
|
-
return (...args) => {
|
|
37
|
-
console.log(`gl.${name}(${glArgsToString(target, args)})`);
|
|
38
|
-
for (const arg of args) {
|
|
39
|
-
if (arg === undefined) {
|
|
40
|
-
console.error(`undefined passed to gl.${name}(${glArgsToString(target, args)})`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
const result = Reflect.apply(value, target, args);
|
|
44
|
-
if (name !== 'getError') {
|
|
45
|
-
const err = target.getError();
|
|
46
|
-
if (err !== target.NO_ERROR) {
|
|
47
|
-
throw new Error(`${glEnumToString(target, err)} was caused by call to: ${name}`);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return result;
|
|
51
|
-
};
|
|
52
|
-
},
|
|
53
|
-
});
|
|
54
22
|
const renderTargetTextureSyncUnit = 15;
|
|
55
23
|
/**
|
|
56
24
|
* WebGL 2.0 implementation of {@link RenderBackend}. Manages the GL
|
|
@@ -85,6 +53,8 @@ class WebGl2Backend {
|
|
|
85
53
|
_clipPointB = new Vector();
|
|
86
54
|
_maskCompositor = new WebGl2MaskCompositor();
|
|
87
55
|
_maskCompositorConnected = false;
|
|
56
|
+
_backdropBlendCompositor = new WebGl2BackdropBlendCompositor();
|
|
57
|
+
_backdropBlendCompositorConnected = false;
|
|
88
58
|
_stencilClipper = new WebGl2StencilClipper();
|
|
89
59
|
_stencilStates = new Map();
|
|
90
60
|
_stencilClipperConnected = false;
|
|
@@ -102,12 +72,15 @@ class WebGl2Backend {
|
|
|
102
72
|
_clearColor = new Color();
|
|
103
73
|
_boundFramebuffer = null;
|
|
104
74
|
_stats = createRenderStats();
|
|
75
|
+
_accountant = new GpuResourceAccountant(this._stats);
|
|
105
76
|
_transformBuffer = new TransformBuffer();
|
|
106
77
|
_transformTexture = null;
|
|
107
78
|
_transformTextureHash = 0;
|
|
108
79
|
_transformTextureCount = -1;
|
|
109
80
|
_activeDrawCommand = null;
|
|
110
81
|
_drawPlanDepth = 0;
|
|
82
|
+
_planBaseStack = [];
|
|
83
|
+
_planHashStack = [];
|
|
111
84
|
constructor(app) {
|
|
112
85
|
const canvasOptions = app.options.canvas ?? {};
|
|
113
86
|
const renderingOptions = app.options.rendering ?? {};
|
|
@@ -115,13 +88,13 @@ class WebGl2Backend {
|
|
|
115
88
|
const height = canvasOptions.height ?? 600;
|
|
116
89
|
const clearColor = app.options.clearColor;
|
|
117
90
|
const webglAttributes = renderingOptions.webglAttributes;
|
|
118
|
-
|
|
91
|
+
renderingOptions.debug ?? false;
|
|
119
92
|
this._canvas = app.canvas;
|
|
120
93
|
const gl = this._createContext(webglAttributes);
|
|
121
94
|
if (!gl) {
|
|
122
95
|
throw new Error('This browser or hardware does not support WebGL.');
|
|
123
96
|
}
|
|
124
|
-
this._context =
|
|
97
|
+
this._context = gl;
|
|
125
98
|
this._contextLost = this._context.isContextLost();
|
|
126
99
|
if (this._contextLost) {
|
|
127
100
|
this._restoreContext();
|
|
@@ -157,6 +130,15 @@ class WebGl2Backend {
|
|
|
157
130
|
get stats() {
|
|
158
131
|
return this._stats;
|
|
159
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Per-backend GPU resource accountant (VRAM / upload / download bookkeeping).
|
|
135
|
+
* Used by this backend's renderers (e.g. batched vertex/index buffers) to
|
|
136
|
+
* book their own allocations and uploads. Not part of any public surface.
|
|
137
|
+
* @internal
|
|
138
|
+
*/
|
|
139
|
+
get accountant() {
|
|
140
|
+
return this._accountant;
|
|
141
|
+
}
|
|
160
142
|
/** @internal */
|
|
161
143
|
get activeDrawCommand() {
|
|
162
144
|
return this._activeDrawCommand;
|
|
@@ -175,16 +157,29 @@ class WebGl2Backend {
|
|
|
175
157
|
}
|
|
176
158
|
resetStats() {
|
|
177
159
|
resetRenderStats(this._stats);
|
|
160
|
+
// The transform buffer is frame-scoped: reset it once per frame here (was
|
|
161
|
+
// previously reset per render() call in _beginDrawPlan).
|
|
162
|
+
this._transformBuffer.begin();
|
|
178
163
|
return this;
|
|
179
164
|
}
|
|
165
|
+
/** Frame-global slot base the plan builder indexes from. @internal */
|
|
166
|
+
get transformBufferCount() {
|
|
167
|
+
return this._transformBuffer.count;
|
|
168
|
+
}
|
|
180
169
|
/** @internal */
|
|
181
|
-
_beginDrawPlan(
|
|
182
|
-
|
|
170
|
+
_beginDrawPlan(_nodeCount) {
|
|
171
|
+
// Do NOT reset the transform buffer here — it is frame-scoped (reset in
|
|
172
|
+
// resetStats). The builder already based this plan's node indices at the
|
|
173
|
+
// current buffer count, so writes land in fresh frame-global slots and
|
|
174
|
+
// batches survive across render() calls. Remember this plan's base so a
|
|
175
|
+
// nested plan can free its rows on end.
|
|
176
|
+
this._planBaseStack.push(this._transformBuffer.count);
|
|
177
|
+
this._planHashStack.push(this._transformBuffer.frameHash);
|
|
183
178
|
this._activeDrawCommand = null;
|
|
184
179
|
this._drawPlanDepth++;
|
|
185
180
|
}
|
|
186
181
|
/** @internal */
|
|
187
|
-
_prepareRenderGroupUpload(
|
|
182
|
+
_prepareRenderGroupUpload(entries, startIndex, count) {
|
|
188
183
|
// Pack the whole render group's world transforms (+ tint) into the shared
|
|
189
184
|
// transform buffer at the group's upload boundary, keyed by each draw
|
|
190
185
|
// command's stable nodeIndex. Every draw the player will submit for this
|
|
@@ -192,12 +187,20 @@ class WebGl2Backend {
|
|
|
192
187
|
// write previously done in `_prepareDrawCommand` is no longer needed and
|
|
193
188
|
// the buffer is filled one contiguous group slice at a time.
|
|
194
189
|
//
|
|
190
|
+
// The group is the entries range `[startIndex, startIndex + count)`; every
|
|
191
|
+
// entry in it is a draw, so the player no longer materializes a group array.
|
|
192
|
+
//
|
|
195
193
|
// Renderers that pack their own per-node data (Text, Particle) never read
|
|
196
194
|
// the shared buffer, so their commands are skipped — no consuming draw ever
|
|
197
195
|
// references their slots (nodeIndex is unique per command).
|
|
198
|
-
const
|
|
199
|
-
for (let i =
|
|
200
|
-
const
|
|
196
|
+
const end = startIndex + count;
|
|
197
|
+
for (let i = startIndex; i < end; i++) {
|
|
198
|
+
const entry = entries[i];
|
|
199
|
+
// Every entry in a group run is a draw; narrow to read its command.
|
|
200
|
+
if (entry.kind !== RenderEntryKind.Draw) {
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
const command = entry.command;
|
|
201
204
|
if (drawCommandUsesSharedTransform(command, this)) {
|
|
202
205
|
this._writeTransformCommand(command);
|
|
203
206
|
}
|
|
@@ -267,12 +270,20 @@ class WebGl2Backend {
|
|
|
267
270
|
/** @internal */
|
|
268
271
|
_endDrawPlan() {
|
|
269
272
|
this._activeDrawCommand = null;
|
|
273
|
+
const planBase = this._planBaseStack.pop() ?? 0;
|
|
274
|
+
const planHash = this._planHashStack.pop() ?? 0;
|
|
270
275
|
if (this._drawPlanDepth > 0) {
|
|
271
276
|
this._drawPlanDepth--;
|
|
272
277
|
}
|
|
273
|
-
//
|
|
274
|
-
//
|
|
275
|
-
//
|
|
278
|
+
// A nested plan (filter / cacheAsBitmap) just ended: flush its draws, then
|
|
279
|
+
// free its transform rows so the frame-scoped buffer only grows with
|
|
280
|
+
// top-level render() calls. Top-level plans (depth back to 0) keep their rows
|
|
281
|
+
// so cross-call batching survives to the frame-end flush.
|
|
282
|
+
if (this._drawPlanDepth > 0) {
|
|
283
|
+
this._flushActiveRenderer();
|
|
284
|
+
this._transformBuffer.rewindTo(planBase, planHash);
|
|
285
|
+
}
|
|
286
|
+
// Only assert balance at the outermost plan.
|
|
276
287
|
if (this._drawPlanDepth === 0) {
|
|
277
288
|
this._assertBalancedStencil();
|
|
278
289
|
}
|
|
@@ -304,6 +315,31 @@ class WebGl2Backend {
|
|
|
304
315
|
this._stats.submittedNodes++;
|
|
305
316
|
return this;
|
|
306
317
|
}
|
|
318
|
+
drawInstanced(mesh, transforms, tints, count) {
|
|
319
|
+
if (count <= 0 || mesh.vertexCount === 0) {
|
|
320
|
+
return this;
|
|
321
|
+
}
|
|
322
|
+
if (transforms.length < count || tints.length < count) {
|
|
323
|
+
throw new Error(`drawInstanced requires ${count} transforms and tints (got ${transforms.length}/${tints.length}).`);
|
|
324
|
+
}
|
|
325
|
+
const renderer = this.rendererRegistry.resolve(mesh);
|
|
326
|
+
if (!(renderer instanceof WebGl2MeshRenderer)) {
|
|
327
|
+
throw new Error('drawInstanced requires a mesh handled by the WebGL2 mesh renderer.');
|
|
328
|
+
}
|
|
329
|
+
this._setActiveRenderer(renderer);
|
|
330
|
+
// Write each instance's (transform, tint) into a fresh, contiguous transform
|
|
331
|
+
// slot — before the renderer's draw uploads the buffer (write-before-bind) —
|
|
332
|
+
// then draw the geometry once over [startNodeIndex, startNodeIndex + count).
|
|
333
|
+
// In-bounds: `i < count <= transforms.length` and `<= tints.length` (guarded above).
|
|
334
|
+
const startNodeIndex = this._transformBuffer.push(transforms[0], tints[0]);
|
|
335
|
+
for (let i = 1; i < count; i++) {
|
|
336
|
+
this._transformBuffer.push(transforms[i], tints[i]);
|
|
337
|
+
}
|
|
338
|
+
renderer.drawInstancedBatch(mesh, startNodeIndex, count);
|
|
339
|
+
this._activeDrawCommand = null;
|
|
340
|
+
this._stats.submittedNodes += count;
|
|
341
|
+
return this;
|
|
342
|
+
}
|
|
307
343
|
execute(pass) {
|
|
308
344
|
this._flushActiveRenderer();
|
|
309
345
|
this._stats.renderPasses++;
|
|
@@ -423,8 +459,40 @@ class WebGl2Backend {
|
|
|
423
459
|
this._maskCompositor.compose(this, content, mask, x, y, width, height, blendMode);
|
|
424
460
|
return this;
|
|
425
461
|
}
|
|
462
|
+
composeWithBackdropBlend(source, x, y, width, height, mode) {
|
|
463
|
+
if (width <= 0 || height <= 0) {
|
|
464
|
+
return this;
|
|
465
|
+
}
|
|
466
|
+
this._flushActiveRenderer();
|
|
467
|
+
this._setActiveRenderer(null);
|
|
468
|
+
if (!this._backdropBlendCompositorConnected) {
|
|
469
|
+
this._backdropBlendCompositor.connect(this);
|
|
470
|
+
this._backdropBlendCompositorConnected = true;
|
|
471
|
+
}
|
|
472
|
+
this._backdropBlendCompositor.compose(this, source, x, y, width, height, mode);
|
|
473
|
+
return this;
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Return the GL framebuffer for `target`, preparing the render-target state so
|
|
477
|
+
* the texture is attached. Used internally by {@link WebGl2BackdropBlendCompositor}
|
|
478
|
+
* for framebuffer blits. Null for the root (default) framebuffer.
|
|
479
|
+
* @internal
|
|
480
|
+
*/
|
|
481
|
+
_renderTargetFramebuffer(target) {
|
|
482
|
+
return this._prepareRenderTarget(target).framebuffer;
|
|
483
|
+
}
|
|
484
|
+
/**
|
|
485
|
+
* Re-bind the currently active render target as the GL DRAW framebuffer and
|
|
486
|
+
* restore the viewport. Called by {@link WebGl2BackdropBlendCompositor} after
|
|
487
|
+
* it unbinds the framebuffer for a blit operation.
|
|
488
|
+
* @internal
|
|
489
|
+
*/
|
|
490
|
+
_rebindActiveTarget() {
|
|
491
|
+
this._bindRenderTarget(this._renderTarget);
|
|
492
|
+
}
|
|
426
493
|
acquireRenderTexture(width, height) {
|
|
427
494
|
for (let index = 0; index < this._temporaryRenderTextures.length; index++) {
|
|
495
|
+
// In-bounds: `index` ranges over `0..length-1`.
|
|
428
496
|
const texture = this._temporaryRenderTextures[index];
|
|
429
497
|
if (texture.width === width && texture.height === height) {
|
|
430
498
|
this._temporaryRenderTextures.splice(index, 1);
|
|
@@ -442,7 +510,12 @@ class WebGl2Backend {
|
|
|
442
510
|
return this;
|
|
443
511
|
}
|
|
444
512
|
setView(view) {
|
|
445
|
-
|
|
513
|
+
// Only flush the open batch when the view actually changes. The unconditional
|
|
514
|
+
// flush forced one draw call per render() call (each render() re-applies the
|
|
515
|
+
// same camera view), defeating cross-call batching.
|
|
516
|
+
if (this._renderTarget.view !== view) {
|
|
517
|
+
this._flushActiveRenderer();
|
|
518
|
+
}
|
|
446
519
|
this._renderTarget.setView(view);
|
|
447
520
|
this._bindRenderTarget(this._renderTarget);
|
|
448
521
|
return this;
|
|
@@ -492,6 +565,21 @@ class WebGl2Backend {
|
|
|
492
565
|
this._texture = texture;
|
|
493
566
|
return this;
|
|
494
567
|
}
|
|
568
|
+
/**
|
|
569
|
+
* Make `unit` the active texture unit through the backend's unit cache.
|
|
570
|
+
*
|
|
571
|
+
* Renderers that bind a *raw* `WebGLTexture` to a unit (e.g. the text
|
|
572
|
+
* renderer's private node-data texture) must route the unit switch through
|
|
573
|
+
* here instead of calling `gl.activeTexture` directly — otherwise the cache
|
|
574
|
+
* goes stale and a later {@link bindTexture} can skip its own `activeTexture`
|
|
575
|
+
* call, binding to the wrong unit. After this returns the caller may issue its
|
|
576
|
+
* own raw `gl.bindTexture` on the now-active unit.
|
|
577
|
+
* @internal
|
|
578
|
+
*/
|
|
579
|
+
setActiveTextureUnit(unit) {
|
|
580
|
+
this._setTextureUnit(unit);
|
|
581
|
+
return this;
|
|
582
|
+
}
|
|
495
583
|
/** @internal */
|
|
496
584
|
bindTransformBufferTexture(unit, minCount) {
|
|
497
585
|
const requiredCount = Math.max(1, minCount);
|
|
@@ -512,11 +600,21 @@ class WebGl2Backend {
|
|
|
512
600
|
if (nextTransformTexture === null) {
|
|
513
601
|
throw new Error('Transform texture must be initialized before binding.');
|
|
514
602
|
}
|
|
603
|
+
// A skipped flush (all three guards false) leaves the dirty range uncleared
|
|
604
|
+
// until the next begin(). Safe: every write() mixes its slot into _frameHash,
|
|
605
|
+
// so a non-empty dirty range always coincides with snapshot.changed = true —
|
|
606
|
+
// the upload branch is always taken before any dirty rows could be stale.
|
|
515
607
|
if (snapshot.changed || snapshot.count !== this._transformTextureCount || snapshot.hash !== this._transformTextureHash) {
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
608
|
+
// Upload only the rows actually written since the last upload (delta), so
|
|
609
|
+
// barrier-heavy frames don't re-upload the whole growing buffer. A reused
|
|
610
|
+
// slot below the high-water mark is in the dirty range, so it re-uploads.
|
|
611
|
+
const { firstRow, rowCount } = this._transformBuffer.consumeDirtyRange(snapshot.count);
|
|
612
|
+
if (rowCount > 0) {
|
|
613
|
+
nextTransformTexture.commitRect(0, firstRow, 3, rowCount);
|
|
614
|
+
this._transformBuffer.recordUpload(rowCount);
|
|
615
|
+
}
|
|
519
616
|
this._transformTextureCount = snapshot.count;
|
|
617
|
+
this._transformTextureHash = snapshot.hash;
|
|
520
618
|
}
|
|
521
619
|
return this.bindTexture(nextTransformTexture, unit);
|
|
522
620
|
}
|
|
@@ -541,14 +639,6 @@ class WebGl2Backend {
|
|
|
541
639
|
gl.blendEquation(gl.FUNC_ADD);
|
|
542
640
|
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_COLOR);
|
|
543
641
|
break;
|
|
544
|
-
case BlendModes.Darken:
|
|
545
|
-
gl.blendEquation(gl.MIN);
|
|
546
|
-
gl.blendFunc(gl.ONE, gl.ONE);
|
|
547
|
-
break;
|
|
548
|
-
case BlendModes.Lighten:
|
|
549
|
-
gl.blendEquation(gl.MAX);
|
|
550
|
-
gl.blendFunc(gl.ONE, gl.ONE);
|
|
551
|
-
break;
|
|
552
642
|
default:
|
|
553
643
|
gl.blendEquation(gl.FUNC_ADD);
|
|
554
644
|
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
@@ -614,6 +704,10 @@ class WebGl2Backend {
|
|
|
614
704
|
this._maskCompositor.disconnect();
|
|
615
705
|
this._maskCompositorConnected = false;
|
|
616
706
|
}
|
|
707
|
+
if (this._backdropBlendCompositorConnected) {
|
|
708
|
+
this._backdropBlendCompositor.disconnect();
|
|
709
|
+
this._backdropBlendCompositorConnected = false;
|
|
710
|
+
}
|
|
617
711
|
if (this._stencilClipperConnected) {
|
|
618
712
|
this._stencilClipper.disconnect();
|
|
619
713
|
this._stencilClipperConnected = false;
|
|
@@ -690,6 +784,26 @@ class WebGl2Backend {
|
|
|
690
784
|
}
|
|
691
785
|
return texture;
|
|
692
786
|
}
|
|
787
|
+
/**
|
|
788
|
+
* Re-book a managed texture's GPU storage with the resource accountant after a
|
|
789
|
+
* full `texImage2D` (re)allocation: frees the previously booked size (if any —
|
|
790
|
+
* e.g. on resize) and allocates the new `width · height · bytesPerPixel`
|
|
791
|
+
* footprint, including the mip chain when the texture generates mips.
|
|
792
|
+
*/
|
|
793
|
+
_bookTextureStorage(state, texture, bytesPerPixel) {
|
|
794
|
+
const nextBytes = estimateTextureBytes(texture.width, texture.height, bytesPerPixel, this._textureMipLevelCount(texture));
|
|
795
|
+
state.accountedBytes = this._accountant.reallocate(state.accountedBytes, nextBytes);
|
|
796
|
+
}
|
|
797
|
+
_textureMipLevelCount(texture) {
|
|
798
|
+
if (!texture.generateMipMap) {
|
|
799
|
+
return 1;
|
|
800
|
+
}
|
|
801
|
+
const maxSize = Math.max(texture.width, texture.height);
|
|
802
|
+
if (maxSize <= 1) {
|
|
803
|
+
return 1;
|
|
804
|
+
}
|
|
805
|
+
return Math.floor(Math.log2(maxSize)) + 1;
|
|
806
|
+
}
|
|
693
807
|
_destroyManagedResources() {
|
|
694
808
|
for (const renderTarget of [...this._renderTargetStates.keys()]) {
|
|
695
809
|
this._evictRenderTarget(renderTarget, false);
|
|
@@ -733,6 +847,7 @@ class WebGl2Backend {
|
|
|
733
847
|
version: -1,
|
|
734
848
|
width: 0,
|
|
735
849
|
height: 0,
|
|
850
|
+
accountedBytes: 0,
|
|
736
851
|
};
|
|
737
852
|
this._textureStates.set(texture, state);
|
|
738
853
|
}
|
|
@@ -788,6 +903,8 @@ class WebGl2Backend {
|
|
|
788
903
|
this._texture = null;
|
|
789
904
|
}
|
|
790
905
|
this._context.deleteTexture(state.handle);
|
|
906
|
+
this._accountant.free(state.accountedBytes);
|
|
907
|
+
state.accountedBytes = 0;
|
|
791
908
|
this._textureStates.delete(texture);
|
|
792
909
|
}
|
|
793
910
|
if (this._texture === texture) {
|
|
@@ -805,9 +922,14 @@ class WebGl2Backend {
|
|
|
805
922
|
const scaleX = target.root && target.width > 0 ? this._canvas.width / target.width : 1;
|
|
806
923
|
const scaleY = target.root && target.height > 0 ? this._canvas.height / target.height : 1;
|
|
807
924
|
const x = Math.floor(viewport.x * scaleX);
|
|
808
|
-
const y = Math.floor(viewport.y * scaleY);
|
|
809
925
|
const width = Math.max(0, Math.round(viewport.width * scaleX));
|
|
810
926
|
const height = Math.max(0, Math.round(viewport.height * scaleY));
|
|
927
|
+
// `viewport.y` is top-left (the View / RenderTarget convention); GL's viewport
|
|
928
|
+
// origin is bottom-left, so flip it. A full viewport (y = 0, height = full) maps
|
|
929
|
+
// to y = 0 unchanged — only partial viewports (split-screen / pip / minimap) were
|
|
930
|
+
// affected, landing at the wrong edge before this flip.
|
|
931
|
+
const backingHeight = target.root ? this._canvas.height : target.height;
|
|
932
|
+
const y = backingHeight - (Math.floor(viewport.y * scaleY) + height);
|
|
811
933
|
gl.bindFramebuffer(gl.FRAMEBUFFER, state.framebuffer);
|
|
812
934
|
gl.viewport(x, y, width, height);
|
|
813
935
|
this._boundFramebuffer = state.framebuffer;
|
|
@@ -926,11 +1048,27 @@ class WebGl2Backend {
|
|
|
926
1048
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, texture.wrapMode);
|
|
927
1049
|
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha);
|
|
928
1050
|
if (texture instanceof DataTexture) {
|
|
929
|
-
|
|
1051
|
+
// `instanceof DataTexture` narrows to `DataTexture<any>` (the generic is
|
|
1052
|
+
// erased), so `texture.format` widens to `any`; the class invariant
|
|
1053
|
+
// guarantees it is a `DataTextureFormat`, so restore that type here.
|
|
1054
|
+
const format = texture.format;
|
|
1055
|
+
const formatInfo = webgl2DataTextureFormat(format);
|
|
930
1056
|
const region = texture._consumeDirtyRegion();
|
|
931
1057
|
const needsAlloc = state.version === -1 || state.width !== texture.width || state.height !== texture.height;
|
|
1058
|
+
// Our DataTexture buffers are tightly packed (no per-row padding), but
|
|
1059
|
+
// WebGL defaults UNPACK_ALIGNMENT to 4. For single-byte (r8) data a
|
|
1060
|
+
// sub-region upload whose width isn't a multiple of 4 would be misread
|
|
1061
|
+
// — or rejected with INVALID_OPERATION for height > 1 — leaving the
|
|
1062
|
+
// region un-uploaded. That is exactly what corrupts a partial glyph-
|
|
1063
|
+
// atlas upload when new glyphs first appear after the initial full
|
|
1064
|
+
// upload (e.g. switching to a scene with new characters). Force tight
|
|
1065
|
+
// packing for the upload, then restore the GL default.
|
|
1066
|
+
gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);
|
|
1067
|
+
const bytesPerPixel = dataTextureBytesPerPixel(format);
|
|
932
1068
|
if (needsAlloc || region === null || region.full) {
|
|
933
1069
|
gl.texImage2D(gl.TEXTURE_2D, 0, formatInfo.internalFormat, texture.width, texture.height, 0, formatInfo.format, formatInfo.type, texture.buffer);
|
|
1070
|
+
this._bookTextureStorage(state, texture, bytesPerPixel);
|
|
1071
|
+
this._accountant.recordTextureUpload(texture.width * texture.height * bytesPerPixel);
|
|
934
1072
|
}
|
|
935
1073
|
else {
|
|
936
1074
|
// Partial upload: pack a contiguous sub-region from the row-major
|
|
@@ -947,23 +1085,30 @@ class WebGl2Backend {
|
|
|
947
1085
|
subView.set(texture.buffer.subarray(sourceStart, sourceStart + subFloats), targetStart);
|
|
948
1086
|
}
|
|
949
1087
|
gl.texSubImage2D(gl.TEXTURE_2D, 0, region.x, region.y, region.width, region.height, formatInfo.format, formatInfo.type, subView);
|
|
1088
|
+
this._accountant.recordTextureUpload(region.width * region.height * bytesPerPixel);
|
|
950
1089
|
}
|
|
1090
|
+
gl.pixelStorei(gl.UNPACK_ALIGNMENT, 4);
|
|
951
1091
|
}
|
|
952
1092
|
else if (texture instanceof RenderTexture) {
|
|
953
1093
|
if (state.version === -1 || state.width !== texture.width || state.height !== texture.height || texture.source === null) {
|
|
954
1094
|
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, texture.width, texture.height, 0, gl.RGBA, gl.UNSIGNED_BYTE, texture.source);
|
|
1095
|
+
this._bookTextureStorage(state, texture, RGBA8_BYTES_PER_PIXEL);
|
|
1096
|
+
this._accountant.recordTextureUpload(texture.width * texture.height * RGBA8_BYTES_PER_PIXEL);
|
|
955
1097
|
}
|
|
956
1098
|
else {
|
|
957
1099
|
gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, texture.width, texture.height, gl.RGBA, gl.UNSIGNED_BYTE, texture.source);
|
|
1100
|
+
this._accountant.recordTextureUpload(texture.width * texture.height * RGBA8_BYTES_PER_PIXEL);
|
|
958
1101
|
}
|
|
959
1102
|
}
|
|
960
1103
|
else if (texture.source) {
|
|
961
1104
|
if (state.version === -1 || state.width !== texture.width || state.height !== texture.height) {
|
|
962
1105
|
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.source);
|
|
1106
|
+
this._bookTextureStorage(state, texture, RGBA8_BYTES_PER_PIXEL);
|
|
963
1107
|
}
|
|
964
1108
|
else {
|
|
965
1109
|
gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, texture.source);
|
|
966
1110
|
}
|
|
1111
|
+
this._accountant.recordTextureUpload(texture.width * texture.height * RGBA8_BYTES_PER_PIXEL);
|
|
967
1112
|
}
|
|
968
1113
|
if (texture.generateMipMap && (texture instanceof RenderTexture || texture.source !== null)) {
|
|
969
1114
|
gl.generateMipmap(gl.TEXTURE_2D);
|
|
@@ -1015,6 +1160,7 @@ class WebGl2Backend {
|
|
|
1015
1160
|
gl.disable(gl.SCISSOR_TEST);
|
|
1016
1161
|
return;
|
|
1017
1162
|
}
|
|
1163
|
+
// In-bounds: the empty-stack case returned above, so the top entry exists.
|
|
1018
1164
|
const clip = this._clipPixelStack[this._clipPixelStack.length - 1];
|
|
1019
1165
|
const scaleX = this._renderTarget.root && this._renderTarget.width > 0 ? this._canvas.width / this._renderTarget.width : 1;
|
|
1020
1166
|
const scaleY = this._renderTarget.root && this._renderTarget.height > 0 ? this._canvas.height / this._renderTarget.height : 1;
|
|
@@ -1026,6 +1172,8 @@ class WebGl2Backend {
|
|
|
1026
1172
|
gl.scissor(x, y, width, height);
|
|
1027
1173
|
}
|
|
1028
1174
|
}
|
|
1175
|
+
// Content + render textures upload as gl.RGBA / gl.UNSIGNED_BYTE = 4 bytes/px.
|
|
1176
|
+
const RGBA8_BYTES_PER_PIXEL = 4;
|
|
1029
1177
|
// WebGL2RenderingContext is not defined in jsdom; resolve constants from
|
|
1030
1178
|
// the live gl context instead of the global class so test environments
|
|
1031
1179
|
// without WebGL2 still load this module.
|