@codexo/exojs 0.6.12 → 0.7.12
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 +1424 -0
- package/dist/esm/animation/Tween.d.ts +60 -1
- package/dist/esm/animation/Tween.js +60 -1
- package/dist/esm/animation/Tween.js.map +1 -1
- package/dist/esm/animation/TweenManager.d.ts +10 -0
- package/dist/esm/animation/TweenManager.js +10 -0
- package/dist/esm/animation/TweenManager.js.map +1 -1
- package/dist/esm/animation/types.d.ts +15 -0
- package/dist/esm/animation/types.js +6 -0
- package/dist/esm/animation/types.js.map +1 -1
- package/dist/esm/audio/AbstractMedia.d.ts +29 -0
- package/dist/esm/audio/AbstractMedia.js +76 -0
- package/dist/esm/audio/AbstractMedia.js.map +1 -1
- package/dist/esm/audio/AudioAnalyser.d.ts +83 -23
- package/dist/esm/audio/AudioAnalyser.js +277 -57
- package/dist/esm/audio/AudioAnalyser.js.map +1 -1
- package/dist/esm/audio/AudioBus.d.ts +82 -0
- package/dist/esm/audio/AudioBus.js +255 -0
- package/dist/esm/audio/AudioBus.js.map +1 -0
- package/dist/esm/audio/AudioFilter.d.ts +16 -0
- package/dist/esm/audio/AudioFilter.js +13 -0
- package/dist/esm/audio/AudioFilter.js.map +1 -0
- package/dist/esm/audio/AudioListener.d.ts +39 -0
- package/dist/esm/audio/AudioListener.js +97 -0
- package/dist/esm/audio/AudioListener.js.map +1 -0
- package/dist/esm/audio/AudioManager.d.ts +68 -0
- package/dist/esm/audio/AudioManager.js +139 -0
- package/dist/esm/audio/AudioManager.js.map +1 -0
- package/dist/esm/audio/BeatDetector.d.ts +142 -0
- package/dist/esm/audio/BeatDetector.js +957 -0
- package/dist/esm/audio/BeatDetector.js.map +1 -0
- package/dist/esm/audio/Envelope.d.ts +44 -0
- package/dist/esm/audio/Envelope.js +60 -0
- package/dist/esm/audio/Envelope.js.map +1 -0
- package/dist/esm/audio/Media.d.ts +11 -0
- package/dist/esm/audio/Music.d.ts +20 -0
- package/dist/esm/audio/Music.js +45 -4
- package/dist/esm/audio/Music.js.map +1 -1
- package/dist/esm/audio/OscillatorSound.d.ts +98 -0
- package/dist/esm/audio/OscillatorSound.js +342 -0
- package/dist/esm/audio/OscillatorSound.js.map +1 -0
- package/dist/esm/audio/Sound.d.ts +119 -9
- package/dist/esm/audio/Sound.js +301 -117
- package/dist/esm/audio/Sound.js.map +1 -1
- package/dist/esm/audio/audio-context.d.ts +48 -0
- package/dist/esm/audio/audio-context.js +48 -5
- package/dist/esm/audio/audio-context.js.map +1 -1
- package/dist/esm/audio/crossFade.d.ts +19 -0
- package/dist/esm/audio/crossFade.js +26 -0
- package/dist/esm/audio/crossFade.js.map +1 -0
- package/dist/esm/audio/dsp/fft.d.ts +22 -0
- package/dist/esm/audio/dsp/mel.d.ts +43 -0
- package/dist/esm/audio/dsp/tempogram.d.ts +51 -0
- package/dist/esm/audio/filters/ChorusFilter.d.ts +52 -0
- package/dist/esm/audio/filters/ChorusFilter.js +143 -0
- package/dist/esm/audio/filters/ChorusFilter.js.map +1 -0
- package/dist/esm/audio/filters/CompressorFilter.d.ts +43 -0
- package/dist/esm/audio/filters/CompressorFilter.js +108 -0
- package/dist/esm/audio/filters/CompressorFilter.js.map +1 -0
- package/dist/esm/audio/filters/DelayFilter.d.ts +34 -0
- package/dist/esm/audio/filters/DelayFilter.js +110 -0
- package/dist/esm/audio/filters/DelayFilter.js.map +1 -0
- package/dist/esm/audio/filters/DuckingFilter.d.ts +44 -0
- package/dist/esm/audio/filters/DuckingFilter.js +164 -0
- package/dist/esm/audio/filters/DuckingFilter.js.map +1 -0
- package/dist/esm/audio/filters/EqualizerFilter.d.ts +49 -0
- package/dist/esm/audio/filters/EqualizerFilter.js +134 -0
- package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -0
- package/dist/esm/audio/filters/GranularFilter.d.ts +62 -0
- package/dist/esm/audio/filters/GranularFilter.js +176 -0
- package/dist/esm/audio/filters/GranularFilter.js.map +1 -0
- package/dist/esm/audio/filters/HighpassFilter.d.ts +29 -0
- package/dist/esm/audio/filters/HighpassFilter.js +71 -0
- package/dist/esm/audio/filters/HighpassFilter.js.map +1 -0
- package/dist/esm/audio/filters/LowpassFilter.d.ts +29 -0
- package/dist/esm/audio/filters/LowpassFilter.js +71 -0
- package/dist/esm/audio/filters/LowpassFilter.js.map +1 -0
- package/dist/esm/audio/filters/PitchShiftFilter.d.ts +44 -0
- package/dist/esm/audio/filters/PitchShiftFilter.js +132 -0
- package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -0
- package/dist/esm/audio/filters/ReverbFilter.d.ts +36 -0
- package/dist/esm/audio/filters/ReverbFilter.js +118 -0
- package/dist/esm/audio/filters/ReverbFilter.js.map +1 -0
- package/dist/esm/audio/filters/VocoderFilter.d.ts +49 -0
- package/dist/esm/audio/filters/VocoderFilter.js +174 -0
- package/dist/esm/audio/filters/VocoderFilter.js.map +1 -0
- package/dist/esm/audio/filters/WorkletFilter.d.ts +51 -0
- package/dist/esm/audio/filters/WorkletFilter.js +106 -0
- package/dist/esm/audio/filters/WorkletFilter.js.map +1 -0
- package/dist/esm/audio/filters/index.d.ts +12 -0
- package/dist/esm/audio/index.d.ts +15 -1
- package/dist/esm/audio/worklet/registerWorklet.d.ts +10 -0
- package/dist/esm/audio/worklet/registerWorklet.js +44 -0
- package/dist/esm/audio/worklet/registerWorklet.js.map +1 -0
- package/dist/esm/core/Application.d.ts +82 -0
- package/dist/esm/core/Application.js +137 -2
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/Bounds.d.ts +23 -0
- package/dist/esm/core/Bounds.js +23 -0
- package/dist/esm/core/Bounds.js.map +1 -1
- package/dist/esm/core/Clock.d.ts +21 -0
- package/dist/esm/core/Clock.js +21 -0
- package/dist/esm/core/Clock.js.map +1 -1
- package/dist/esm/core/Color.d.ts +35 -0
- package/dist/esm/core/Color.js +35 -0
- package/dist/esm/core/Color.js.map +1 -1
- package/dist/esm/core/Scene.d.ts +46 -0
- package/dist/esm/core/Scene.js +27 -0
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.d.ts +62 -0
- package/dist/esm/core/SceneManager.js +49 -0
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +40 -1
- package/dist/esm/core/SceneNode.js +75 -6
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/Signal.d.ts +44 -0
- package/dist/esm/core/Signal.js +39 -0
- package/dist/esm/core/Signal.js.map +1 -1
- package/dist/esm/core/Time.d.ts +21 -0
- package/dist/esm/core/Time.js +22 -1
- package/dist/esm/core/Time.js.map +1 -1
- package/dist/esm/core/Timer.d.ts +7 -0
- package/dist/esm/core/Timer.js +7 -0
- package/dist/esm/core/Timer.js.map +1 -1
- package/dist/esm/core/capabilities.d.ts +12 -0
- package/dist/esm/core/capabilities.js +12 -0
- package/dist/esm/core/capabilities.js.map +1 -1
- package/dist/esm/core/index.d.ts +0 -1
- package/dist/esm/core/types.d.ts +37 -0
- package/dist/esm/core/utils.d.ts +48 -0
- package/dist/esm/core/utils.js +48 -0
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/debug/BoundingBoxesLayer.d.ts +26 -0
- package/dist/esm/debug/BoundingBoxesLayer.js +136 -0
- package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -0
- package/dist/esm/debug/DebugLayer.d.ts +42 -0
- package/dist/esm/debug/DebugLayer.js +34 -0
- package/dist/esm/debug/DebugLayer.js.map +1 -0
- package/dist/esm/debug/DebugOverlay.d.ts +59 -0
- package/dist/esm/debug/DebugOverlay.js +123 -0
- package/dist/esm/debug/DebugOverlay.js.map +1 -0
- package/dist/esm/debug/HitTestLayer.d.ts +32 -0
- package/dist/esm/debug/HitTestLayer.js +118 -0
- package/dist/esm/debug/HitTestLayer.js.map +1 -0
- package/dist/esm/debug/PerformanceLayer.d.ts +37 -0
- package/dist/esm/debug/PerformanceLayer.js +193 -0
- package/dist/esm/debug/PerformanceLayer.js.map +1 -0
- package/dist/esm/debug/PointerStackLayer.d.ts +31 -0
- package/dist/esm/debug/PointerStackLayer.js +160 -0
- package/dist/esm/debug/PointerStackLayer.js.map +1 -0
- package/dist/esm/debug/index.d.ts +6 -0
- package/dist/esm/debug/index.js +7 -0
- package/dist/esm/debug/index.js.map +1 -0
- package/dist/esm/index.js +30 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/input/ArcadeStickGamepadMapping.d.ts +7 -0
- package/dist/esm/input/ArcadeStickGamepadMapping.js +7 -0
- package/dist/esm/input/ArcadeStickGamepadMapping.js.map +1 -1
- package/dist/esm/input/GameCubeGamepadMapping.d.ts +9 -0
- package/dist/esm/input/GameCubeGamepadMapping.js +9 -0
- package/dist/esm/input/GameCubeGamepadMapping.js.map +1 -1
- package/dist/esm/input/Gamepad.d.ts +48 -0
- package/dist/esm/input/Gamepad.js +43 -0
- package/dist/esm/input/Gamepad.js.map +1 -1
- package/dist/esm/input/GamepadChannels.d.ts +8 -0
- package/dist/esm/input/GamepadChannels.js +8 -0
- package/dist/esm/input/GamepadChannels.js.map +1 -1
- package/dist/esm/input/GamepadControl.d.ts +18 -0
- package/dist/esm/input/GamepadControl.js +13 -0
- package/dist/esm/input/GamepadControl.js.map +1 -1
- package/dist/esm/input/GamepadDefinitions.d.ts +64 -1
- package/dist/esm/input/GamepadDefinitions.js +40 -1
- package/dist/esm/input/GamepadDefinitions.js.map +1 -1
- package/dist/esm/input/GamepadMapping.d.ts +32 -2
- package/dist/esm/input/GamepadMapping.js +24 -0
- package/dist/esm/input/GamepadMapping.js.map +1 -1
- package/dist/esm/input/GamepadPromptLayouts.d.ts +32 -1
- package/dist/esm/input/GamepadPromptLayouts.js +25 -1
- package/dist/esm/input/GamepadPromptLayouts.js.map +1 -1
- package/dist/esm/input/GenericDualAnalogGamepadMapping.d.ts +10 -0
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js +10 -0
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js.map +1 -1
- package/dist/esm/input/GestureRecognizer.d.ts +11 -2
- package/dist/esm/input/GestureRecognizer.js +11 -2
- package/dist/esm/input/GestureRecognizer.js.map +1 -1
- package/dist/esm/input/Input.d.ts +24 -0
- package/dist/esm/input/Input.js +22 -0
- package/dist/esm/input/Input.js.map +1 -1
- package/dist/esm/input/InputManager.d.ts +43 -0
- package/dist/esm/input/InputManager.js +68 -5
- package/dist/esm/input/InputManager.js.map +1 -1
- package/dist/esm/input/InteractionEvent.d.ts +31 -0
- package/dist/esm/input/InteractionEvent.js +37 -0
- package/dist/esm/input/InteractionEvent.js.map +1 -0
- package/dist/esm/input/InteractionManager.d.ts +163 -0
- package/dist/esm/input/InteractionManager.js +575 -0
- package/dist/esm/input/InteractionManager.js.map +1 -0
- package/dist/esm/input/JoyConLeftGamepadMapping.d.ts +9 -0
- package/dist/esm/input/JoyConLeftGamepadMapping.js +9 -0
- package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -1
- package/dist/esm/input/JoyConRightGamepadMapping.d.ts +9 -0
- package/dist/esm/input/JoyConRightGamepadMapping.js +9 -0
- package/dist/esm/input/JoyConRightGamepadMapping.js.map +1 -1
- package/dist/esm/input/PlayStationGamepadMapping.d.ts +8 -0
- package/dist/esm/input/PlayStationGamepadMapping.js +8 -0
- package/dist/esm/input/PlayStationGamepadMapping.js.map +1 -1
- package/dist/esm/input/Pointer.d.ts +22 -0
- package/dist/esm/input/Pointer.js +22 -0
- package/dist/esm/input/Pointer.js.map +1 -1
- package/dist/esm/input/SteamControllerGamepadMapping.d.ts +8 -0
- package/dist/esm/input/SteamControllerGamepadMapping.js +8 -0
- package/dist/esm/input/SteamControllerGamepadMapping.js.map +1 -1
- package/dist/esm/input/SwitchProGamepadMapping.d.ts +9 -0
- package/dist/esm/input/SwitchProGamepadMapping.js +9 -0
- package/dist/esm/input/SwitchProGamepadMapping.js.map +1 -1
- package/dist/esm/input/XboxGamepadMapping.d.ts +8 -0
- package/dist/esm/input/XboxGamepadMapping.js +8 -0
- package/dist/esm/input/XboxGamepadMapping.js.map +1 -1
- package/dist/esm/input/index.d.ts +2 -0
- package/dist/esm/input/interaction-hooks.d.ts +34 -0
- package/dist/esm/input/interaction-hooks.js +35 -0
- package/dist/esm/input/interaction-hooks.js.map +1 -0
- package/dist/esm/input/types.d.ts +20 -0
- package/dist/esm/input/types.js +20 -0
- package/dist/esm/input/types.js.map +1 -1
- package/dist/esm/math/AbstractVector.d.ts +83 -0
- package/dist/esm/math/AbstractVector.js +83 -0
- package/dist/esm/math/AbstractVector.js.map +1 -1
- package/dist/esm/math/Circle.d.ts +44 -2
- package/dist/esm/math/Circle.js +116 -16
- package/dist/esm/math/Circle.js.map +1 -1
- package/dist/esm/math/CircleLike.d.ts +1 -0
- package/dist/esm/math/Collision.d.ts +39 -0
- package/dist/esm/math/Collision.js +5 -0
- package/dist/esm/math/Collision.js.map +1 -1
- package/dist/esm/math/Ellipse.d.ts +11 -0
- package/dist/esm/math/Ellipse.js +18 -2
- package/dist/esm/math/Ellipse.js.map +1 -1
- package/dist/esm/math/EllipseLike.d.ts +3 -0
- package/dist/esm/math/Flags.d.ts +31 -0
- package/dist/esm/math/Flags.js +31 -0
- package/dist/esm/math/Flags.js.map +1 -1
- package/dist/esm/math/Interval.d.ts +15 -0
- package/dist/esm/math/Interval.js +16 -1
- package/dist/esm/math/Interval.js.map +1 -1
- package/dist/esm/math/Line.d.ts +17 -1
- package/dist/esm/math/Line.js +17 -1
- package/dist/esm/math/Line.js.map +1 -1
- package/dist/esm/math/LineLike.d.ts +1 -0
- package/dist/esm/math/Matrix.d.ts +44 -3
- package/dist/esm/math/Matrix.js +44 -3
- package/dist/esm/math/Matrix.js.map +1 -1
- package/dist/esm/math/ObservableSize.d.ts +7 -0
- package/dist/esm/math/ObservableSize.js +7 -0
- package/dist/esm/math/ObservableSize.js.map +1 -1
- package/dist/esm/math/ObservableVector.d.ts +11 -2
- package/dist/esm/math/ObservableVector.js +13 -2
- package/dist/esm/math/ObservableVector.js.map +1 -1
- package/dist/esm/math/PointLike.d.ts +1 -0
- package/dist/esm/math/PolarVector.d.ts +15 -0
- package/dist/esm/math/PolarVector.js +16 -1
- package/dist/esm/math/PolarVector.js.map +1 -1
- package/dist/esm/math/Polygon.d.ts +35 -1
- package/dist/esm/math/Polygon.js +78 -6
- package/dist/esm/math/Polygon.js.map +1 -1
- package/dist/esm/math/PolygonLike.d.ts +4 -0
- package/dist/esm/math/Quadtree.d.ts +84 -0
- package/dist/esm/math/Quadtree.js +204 -0
- package/dist/esm/math/Quadtree.js.map +1 -0
- package/dist/esm/math/Random.d.ts +25 -0
- package/dist/esm/math/Random.js +26 -1
- package/dist/esm/math/Random.js.map +1 -1
- package/dist/esm/math/Rectangle.d.ts +15 -0
- package/dist/esm/math/Rectangle.js +17 -2
- package/dist/esm/math/Rectangle.js.map +1 -1
- package/dist/esm/math/RectangleLike.d.ts +1 -0
- package/dist/esm/math/Segment.d.ts +7 -0
- package/dist/esm/math/Segment.js +7 -0
- package/dist/esm/math/Segment.js.map +1 -1
- package/dist/esm/math/ShapeLike.d.ts +6 -0
- package/dist/esm/math/Size.d.ts +9 -0
- package/dist/esm/math/Size.js +10 -1
- package/dist/esm/math/Size.js.map +1 -1
- package/dist/esm/math/Vector.d.ts +16 -0
- package/dist/esm/math/Vector.js +17 -1
- package/dist/esm/math/Vector.js.map +1 -1
- package/dist/esm/math/collision-detection.d.ts +47 -1
- package/dist/esm/math/collision-detection.js +231 -17
- package/dist/esm/math/collision-detection.js.map +1 -1
- package/dist/esm/math/collision-primitives.d.ts +23 -0
- package/dist/esm/math/collision-primitives.js +23 -0
- package/dist/esm/math/collision-primitives.js.map +1 -1
- package/dist/esm/math/geometry.d.ts +42 -0
- package/dist/esm/math/geometry.js +37 -0
- package/dist/esm/math/geometry.js.map +1 -1
- package/dist/esm/math/index.d.ts +1 -0
- package/dist/esm/math/utils.d.ts +41 -0
- package/dist/esm/math/utils.js +41 -0
- package/dist/esm/math/utils.js.map +1 -1
- package/dist/esm/particles/Particle.d.ts +37 -0
- package/dist/esm/particles/Particle.js +37 -0
- package/dist/esm/particles/Particle.js.map +1 -1
- package/dist/esm/particles/ParticleProperties.d.ts +15 -0
- package/dist/esm/particles/ParticleSystem.d.ts +69 -0
- package/dist/esm/particles/ParticleSystem.js +70 -0
- package/dist/esm/particles/ParticleSystem.js.map +1 -1
- package/dist/esm/particles/affectors/ColorAffector.d.ts +13 -0
- package/dist/esm/particles/affectors/ColorAffector.js +13 -0
- package/dist/esm/particles/affectors/ColorAffector.js.map +1 -1
- package/dist/esm/particles/affectors/ForceAffector.d.ts +11 -0
- package/dist/esm/particles/affectors/ForceAffector.js +11 -0
- package/dist/esm/particles/affectors/ForceAffector.js.map +1 -1
- package/dist/esm/particles/affectors/ParticleAffector.d.ts +13 -0
- package/dist/esm/particles/affectors/ScaleAffector.d.ts +10 -0
- package/dist/esm/particles/affectors/ScaleAffector.js +10 -0
- package/dist/esm/particles/affectors/ScaleAffector.js.map +1 -1
- package/dist/esm/particles/affectors/TorqueAffector.d.ts +11 -0
- package/dist/esm/particles/affectors/TorqueAffector.js +12 -1
- package/dist/esm/particles/affectors/TorqueAffector.js.map +1 -1
- package/dist/esm/particles/emitters/ParticleEmitter.d.ts +13 -0
- package/dist/esm/particles/emitters/ParticleOptions.d.ts +16 -0
- package/dist/esm/particles/emitters/ParticleOptions.js +16 -0
- package/dist/esm/particles/emitters/ParticleOptions.js.map +1 -1
- package/dist/esm/particles/emitters/UniversalEmitter.d.ts +23 -0
- package/dist/esm/particles/emitters/UniversalEmitter.js +23 -0
- package/dist/esm/particles/emitters/UniversalEmitter.js.map +1 -1
- package/dist/esm/rendering/CallbackRenderPass.d.ts +12 -0
- package/dist/esm/rendering/CallbackRenderPass.js +12 -0
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
- package/dist/esm/rendering/Container.d.ts +44 -0
- package/dist/esm/rendering/Container.js +62 -0
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/Drawable.d.ts +22 -0
- package/dist/esm/rendering/Drawable.js +22 -0
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/RenderBackend.d.ts +13 -0
- package/dist/esm/rendering/RenderBackendType.d.ts +4 -0
- package/dist/esm/rendering/RenderBackendType.js +4 -0
- package/dist/esm/rendering/RenderBackendType.js.map +1 -1
- package/dist/esm/rendering/RenderNode.d.ts +45 -0
- package/dist/esm/rendering/RenderNode.js +62 -0
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderPass.d.ts +8 -0
- package/dist/esm/rendering/RenderStats.d.ts +19 -0
- package/dist/esm/rendering/RenderStats.js +7 -0
- package/dist/esm/rendering/RenderStats.js.map +1 -1
- package/dist/esm/rendering/RenderTarget.d.ts +17 -0
- package/dist/esm/rendering/RenderTarget.js +17 -0
- package/dist/esm/rendering/RenderTarget.js.map +1 -1
- package/dist/esm/rendering/RenderTargetPass.d.ts +11 -0
- package/dist/esm/rendering/RenderTargetPass.js +7 -0
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
- package/dist/esm/rendering/Renderer.d.ts +15 -0
- package/dist/esm/rendering/RendererRegistry.d.ts +7 -0
- package/dist/esm/rendering/RendererRegistry.js +7 -0
- package/dist/esm/rendering/RendererRegistry.js.map +1 -1
- package/dist/esm/rendering/View.d.ts +73 -6
- package/dist/esm/rendering/View.js +69 -2
- package/dist/esm/rendering/View.js.map +1 -1
- package/dist/esm/rendering/filters/BlurFilter.d.ts +9 -0
- package/dist/esm/rendering/filters/BlurFilter.js +8 -0
- package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
- package/dist/esm/rendering/filters/ColorFilter.d.ts +7 -0
- package/dist/esm/rendering/filters/ColorFilter.js +7 -0
- package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
- package/dist/esm/rendering/filters/Filter.d.ts +23 -0
- package/dist/esm/rendering/filters/Filter.js +20 -0
- package/dist/esm/rendering/filters/Filter.js.map +1 -1
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.d.ts +114 -0
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js +273 -0
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js.map +1 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts +116 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +402 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -0
- package/dist/esm/rendering/index.d.ts +3 -0
- package/dist/esm/rendering/mesh/Mesh.d.ts +2 -0
- package/dist/esm/rendering/mesh/Mesh.js +3 -0
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.d.ts +34 -0
- package/dist/esm/rendering/primitives/Graphics.js +34 -0
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/shader/Shader.d.ts +36 -0
- package/dist/esm/rendering/shader/Shader.js +26 -0
- package/dist/esm/rendering/shader/Shader.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderAttribute.d.ts +13 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js +13 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderUniform.d.ts +27 -0
- package/dist/esm/rendering/shader/ShaderUniform.js +28 -1
- package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
- package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.d.ts +34 -0
- package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js +60 -0
- package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js.map +1 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +38 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.js +36 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.d.ts +62 -1
- package/dist/esm/rendering/sprite/Sprite.js +97 -19
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Spritesheet.d.ts +25 -0
- package/dist/esm/rendering/sprite/Spritesheet.js +20 -0
- package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -1
- package/dist/esm/rendering/text/Text.d.ts +2 -0
- package/dist/esm/rendering/text/Text.js +2 -0
- package/dist/esm/rendering/text/Text.js.map +1 -1
- package/dist/esm/rendering/text/TextStyle.d.ts +29 -0
- package/dist/esm/rendering/text/TextStyle.js +24 -0
- package/dist/esm/rendering/text/TextStyle.js.map +1 -1
- package/dist/esm/rendering/text/types.d.ts +1 -0
- package/dist/esm/rendering/texture/RenderTexture.d.ts +16 -0
- package/dist/esm/rendering/texture/RenderTexture.js +16 -0
- package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
- package/dist/esm/rendering/texture/Sampler.d.ts +23 -0
- package/dist/esm/rendering/texture/Sampler.js +13 -0
- package/dist/esm/rendering/texture/Sampler.js.map +1 -1
- package/dist/esm/rendering/texture/Texture.d.ts +30 -0
- package/dist/esm/rendering/texture/Texture.js +30 -0
- package/dist/esm/rendering/texture/Texture.js.map +1 -1
- package/dist/esm/rendering/types.d.ts +29 -0
- package/dist/esm/rendering/types.js +29 -0
- package/dist/esm/rendering/types.js.map +1 -1
- package/dist/esm/rendering/utils.d.ts +20 -0
- package/dist/esm/rendering/utils.js +10 -0
- package/dist/esm/rendering/utils.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +39 -1
- package/dist/esm/rendering/video/Video.js +68 -6
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +7 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +7 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +17 -4
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +20 -16
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +8 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +8 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +45 -8
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +160 -40
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/resources/AbstractAssetFactory.d.ts +20 -0
- package/dist/esm/resources/AbstractAssetFactory.js +20 -0
- package/dist/esm/resources/AbstractAssetFactory.js.map +1 -1
- package/dist/esm/resources/AssetFactory.d.ts +26 -0
- package/dist/esm/resources/AssetManifest.d.ts +45 -0
- package/dist/esm/resources/AssetManifest.js +25 -0
- package/dist/esm/resources/AssetManifest.js.map +1 -1
- package/dist/esm/resources/CacheFirstStrategy.d.ts +12 -0
- package/dist/esm/resources/CacheFirstStrategy.js +12 -0
- package/dist/esm/resources/CacheFirstStrategy.js.map +1 -1
- package/dist/esm/resources/CacheStore.d.ts +23 -0
- package/dist/esm/resources/CacheStrategy.d.ts +20 -0
- package/dist/esm/resources/Database.d.ts +45 -0
- package/dist/esm/resources/FactoryRegistry.d.ts +28 -0
- package/dist/esm/resources/FactoryRegistry.js +24 -0
- package/dist/esm/resources/FactoryRegistry.js.map +1 -1
- package/dist/esm/resources/IndexedDbDatabase.d.ts +22 -1
- package/dist/esm/resources/IndexedDbDatabase.js +21 -0
- package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
- package/dist/esm/resources/IndexedDbStore.d.ts +20 -0
- package/dist/esm/resources/IndexedDbStore.js +12 -0
- package/dist/esm/resources/IndexedDbStore.js.map +1 -1
- package/dist/esm/resources/Loader.d.ts +167 -0
- package/dist/esm/resources/Loader.js +110 -0
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/esm/resources/NetworkOnlyStrategy.d.ts +8 -0
- package/dist/esm/resources/NetworkOnlyStrategy.js +8 -0
- package/dist/esm/resources/NetworkOnlyStrategy.js.map +1 -1
- package/dist/esm/resources/factories/BinaryFactory.d.ts +13 -0
- package/dist/esm/resources/factories/BinaryFactory.js +13 -0
- package/dist/esm/resources/factories/BinaryFactory.js.map +1 -1
- package/dist/esm/resources/factories/FontFactory.d.ts +37 -0
- package/dist/esm/resources/factories/FontFactory.js +26 -0
- package/dist/esm/resources/factories/FontFactory.js.map +1 -1
- package/dist/esm/resources/factories/ImageFactory.d.ts +24 -0
- package/dist/esm/resources/factories/ImageFactory.js +19 -0
- package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
- package/dist/esm/resources/factories/JsonFactory.d.ts +13 -0
- package/dist/esm/resources/factories/JsonFactory.js +13 -0
- package/dist/esm/resources/factories/JsonFactory.js.map +1 -1
- package/dist/esm/resources/factories/MusicFactory.d.ts +36 -0
- package/dist/esm/resources/factories/MusicFactory.js +44 -4
- package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
- package/dist/esm/resources/factories/SoundFactory.d.ts +29 -0
- package/dist/esm/resources/factories/SoundFactory.js +18 -0
- package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
- package/dist/esm/resources/factories/SvgFactory.d.ts +19 -0
- package/dist/esm/resources/factories/SvgFactory.js +19 -0
- package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextFactory.d.ts +11 -0
- package/dist/esm/resources/factories/TextFactory.js +11 -0
- package/dist/esm/resources/factories/TextFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextureFactory.d.ts +25 -0
- package/dist/esm/resources/factories/TextureFactory.js +20 -0
- package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
- package/dist/esm/resources/factories/VideoFactory.d.ts +37 -0
- package/dist/esm/resources/factories/VideoFactory.js +48 -5
- package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
- package/dist/esm/resources/factories/VttFactory.d.ts +18 -0
- package/dist/esm/resources/factories/VttFactory.js +24 -0
- package/dist/esm/resources/factories/VttFactory.js.map +1 -1
- package/dist/esm/resources/factories/WasmFactory.d.ts +16 -0
- package/dist/esm/resources/factories/WasmFactory.js +16 -0
- package/dist/esm/resources/factories/WasmFactory.js.map +1 -1
- package/dist/esm/resources/utils.d.ts +10 -0
- package/dist/esm/resources/utils.js +10 -0
- package/dist/esm/resources/utils.js.map +1 -1
- package/dist/exo.esm.js +11182 -2538
- package/dist/exo.esm.js.map +1 -1
- package/package.json +20 -9
- package/dist/esm/core/Quadtree.d.ts +0 -20
- package/dist/esm/core/Quadtree.js +0 -86
- package/dist/esm/core/Quadtree.js.map +0 -1
|
@@ -1,12 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-frame rendering counters collected by the backend each tick.
|
|
3
|
+
* Expose live performance data for debugging and profiling tools.
|
|
4
|
+
*/
|
|
1
5
|
export interface RenderStats {
|
|
6
|
+
/** Monotonically increasing frame index, incremented by {@link resetRenderStats}. */
|
|
2
7
|
frame: number;
|
|
8
|
+
/** Total scene nodes submitted for rendering before culling. */
|
|
3
9
|
submittedNodes: number;
|
|
10
|
+
/** Nodes skipped because they fell outside the view frustum. */
|
|
4
11
|
culledNodes: number;
|
|
12
|
+
/** Number of GPU draw calls issued this frame. */
|
|
5
13
|
drawCalls: number;
|
|
14
|
+
/** Number of draw batches flushed this frame. */
|
|
6
15
|
batches: number;
|
|
16
|
+
/** Number of render passes executed this frame. */
|
|
7
17
|
renderPasses: number;
|
|
18
|
+
/** Number of render-target switches this frame. */
|
|
8
19
|
renderTargetChanges: number;
|
|
20
|
+
/** Wall-clock duration of the frame in milliseconds. */
|
|
9
21
|
frameTimeMs: number;
|
|
10
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Allocate a zeroed {@link RenderStats} object for the first frame.
|
|
25
|
+
*/
|
|
11
26
|
export declare const createRenderStats: () => RenderStats;
|
|
27
|
+
/**
|
|
28
|
+
* Advance the frame counter and zero all per-frame accumulators in place.
|
|
29
|
+
* Call once at the start of each render tick before recording new data.
|
|
30
|
+
*/
|
|
12
31
|
export declare const resetRenderStats: (stats: RenderStats) => RenderStats;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Allocate a zeroed {@link RenderStats} object for the first frame.
|
|
3
|
+
*/
|
|
1
4
|
const createRenderStats = () => ({
|
|
2
5
|
frame: 0,
|
|
3
6
|
submittedNodes: 0,
|
|
@@ -8,6 +11,10 @@ const createRenderStats = () => ({
|
|
|
8
11
|
renderTargetChanges: 0,
|
|
9
12
|
frameTimeMs: 0,
|
|
10
13
|
});
|
|
14
|
+
/**
|
|
15
|
+
* Advance the frame counter and zero all per-frame accumulators in place.
|
|
16
|
+
* Call once at the start of each render tick before recording new data.
|
|
17
|
+
*/
|
|
11
18
|
const resetRenderStats = (stats) => {
|
|
12
19
|
stats.frame++;
|
|
13
20
|
stats.submittedNodes = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderStats.js","sources":["../../../../src/rendering/RenderStats.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RenderStats.js","sources":["../../../../src/rendering/RenderStats.ts"],"sourcesContent":[null],"names":[],"mappings":"AAuBA;;AAEG;AACI,MAAM,iBAAiB,GAAG,OAAoB;AACjD,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,cAAc,EAAE,CAAC;AACjB,IAAA,WAAW,EAAE,CAAC;AACd,IAAA,SAAS,EAAE,CAAC;AACZ,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,mBAAmB,EAAE,CAAC;AACtB,IAAA,WAAW,EAAE,CAAC;AACjB,CAAA;AAED;;;AAGG;AACI,MAAM,gBAAgB,GAAG,CAAC,KAAkB,KAAiB;IAChE,KAAK,CAAC,KAAK,EAAE;AACb,IAAA,KAAK,CAAC,cAAc,GAAG,CAAC;AACxB,IAAA,KAAK,CAAC,WAAW,GAAG,CAAC;AACrB,IAAA,KAAK,CAAC,SAAS,GAAG,CAAC;AACnB,IAAA,KAAK,CAAC,OAAO,GAAG,CAAC;AACjB,IAAA,KAAK,CAAC,YAAY,GAAG,CAAC;AACtB,IAAA,KAAK,CAAC,mBAAmB,GAAG,CAAC;AAC7B,IAAA,KAAK,CAAC,WAAW,GAAG,CAAC;AAErB,IAAA,OAAO,KAAK;AAChB;;;;"}
|
|
@@ -2,6 +2,16 @@ import { Size } from '@/math/Size';
|
|
|
2
2
|
import { View } from './View';
|
|
3
3
|
import { Rectangle } from '@/math/Rectangle';
|
|
4
4
|
import { Vector } from '@/math/Vector';
|
|
5
|
+
/**
|
|
6
|
+
* Renderable destination — either the on-screen canvas (the `root`
|
|
7
|
+
* target owned by the backend) or an offscreen texture (a
|
|
8
|
+
* {@link RenderTexture}). Owns a {@link View} that controls the
|
|
9
|
+
* camera transform and viewport, and emits a destroy event so backends
|
|
10
|
+
* can release backing GPU resources.
|
|
11
|
+
*
|
|
12
|
+
* Set `view` to swap cameras for this target; call `resize(w, h)` when
|
|
13
|
+
* the underlying canvas / texture dimensions change.
|
|
14
|
+
*/
|
|
5
15
|
export declare class RenderTarget {
|
|
6
16
|
private readonly _root;
|
|
7
17
|
private readonly _destroyListeners;
|
|
@@ -21,7 +31,14 @@ export declare class RenderTarget {
|
|
|
21
31
|
set height(height: number);
|
|
22
32
|
get root(): boolean;
|
|
23
33
|
get version(): number;
|
|
34
|
+
/**
|
|
35
|
+
* Subscribe to the moment this target (or any subclass — including
|
|
36
|
+
* {@link RenderTexture}) is destroyed. Backends use this to release
|
|
37
|
+
* GPU-side resources (framebuffer + attached texture) tied to the
|
|
38
|
+
* target. Listeners fire exactly once.
|
|
39
|
+
*/
|
|
24
40
|
addDestroyListener(listener: () => void): this;
|
|
41
|
+
/** Remove a previously registered destroy listener. No-op if absent. */
|
|
25
42
|
removeDestroyListener(listener: () => void): this;
|
|
26
43
|
setView(view: View | null): this;
|
|
27
44
|
resize(width: number, height: number): this;
|
|
@@ -3,6 +3,16 @@ import { View } from './View.js';
|
|
|
3
3
|
import { Rectangle } from '../math/Rectangle.js';
|
|
4
4
|
import { Vector } from '../math/Vector.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Renderable destination — either the on-screen canvas (the `root`
|
|
8
|
+
* target owned by the backend) or an offscreen texture (a
|
|
9
|
+
* {@link RenderTexture}). Owns a {@link View} that controls the
|
|
10
|
+
* camera transform and viewport, and emits a destroy event so backends
|
|
11
|
+
* can release backing GPU resources.
|
|
12
|
+
*
|
|
13
|
+
* Set `view` to swap cameras for this target; call `resize(w, h)` when
|
|
14
|
+
* the underlying canvas / texture dimensions change.
|
|
15
|
+
*/
|
|
6
16
|
class RenderTarget {
|
|
7
17
|
_root;
|
|
8
18
|
_destroyListeners = new Set();
|
|
@@ -47,10 +57,17 @@ class RenderTarget {
|
|
|
47
57
|
get version() {
|
|
48
58
|
return this._version;
|
|
49
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Subscribe to the moment this target (or any subclass — including
|
|
62
|
+
* {@link RenderTexture}) is destroyed. Backends use this to release
|
|
63
|
+
* GPU-side resources (framebuffer + attached texture) tied to the
|
|
64
|
+
* target. Listeners fire exactly once.
|
|
65
|
+
*/
|
|
50
66
|
addDestroyListener(listener) {
|
|
51
67
|
this._destroyListeners.add(listener);
|
|
52
68
|
return this;
|
|
53
69
|
}
|
|
70
|
+
/** Remove a previously registered destroy listener. No-op if absent. */
|
|
54
71
|
removeDestroyListener(listener) {
|
|
55
72
|
this._destroyListeners.delete(listener);
|
|
56
73
|
return this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderTarget.js","sources":["../../../../src/rendering/RenderTarget.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"RenderTarget.js","sources":["../../../../src/rendering/RenderTarget.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,22 @@ import type { View } from './View';
|
|
|
3
3
|
import type { RenderTarget } from './RenderTarget';
|
|
4
4
|
import type { RenderPass } from './RenderPass';
|
|
5
5
|
import type { RenderBackend } from './RenderBackend';
|
|
6
|
+
/** Configuration options for {@link RenderTargetPass}. */
|
|
6
7
|
export interface RenderTargetPassOptions {
|
|
8
|
+
/** Render target to draw into. `null` or omitted redirects output to the default framebuffer. */
|
|
7
9
|
readonly target?: RenderTarget | null;
|
|
10
|
+
/** Camera {@link View} to use while executing this pass. Falls back to the backend's active view when omitted. */
|
|
8
11
|
readonly view?: View | null;
|
|
12
|
+
/** If provided, the target is cleared to this colour before the callback runs. */
|
|
9
13
|
readonly clearColor?: Color;
|
|
10
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* A {@link RenderPass} that redirects rendering into an off-screen {@link RenderTarget}.
|
|
17
|
+
*
|
|
18
|
+
* Saves the current render target and view before executing the callback, then
|
|
19
|
+
* restores them afterwards — even if the callback throws. This makes it safe to
|
|
20
|
+
* nest passes or use in try/finally chains without manual cleanup.
|
|
21
|
+
*/
|
|
11
22
|
export declare class RenderTargetPass implements RenderPass {
|
|
12
23
|
private readonly _callback;
|
|
13
24
|
private readonly _target;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A {@link RenderPass} that redirects rendering into an off-screen {@link RenderTarget}.
|
|
3
|
+
*
|
|
4
|
+
* Saves the current render target and view before executing the callback, then
|
|
5
|
+
* restores them afterwards — even if the callback throws. This makes it safe to
|
|
6
|
+
* nest passes or use in try/finally chains without manual cleanup.
|
|
7
|
+
*/
|
|
1
8
|
class RenderTargetPass {
|
|
2
9
|
_callback;
|
|
3
10
|
_target;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderTargetPass.js","sources":["../../../../src/rendering/RenderTargetPass.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RenderTargetPass.js","sources":["../../../../src/rendering/RenderTargetPass.ts"],"sourcesContent":[null],"names":[],"mappings":"AAgBA;;;;;;AAMG;MACU,gBAAgB,CAAA;AAER,IAAA,SAAS;AACT,IAAA,OAAO;AACP,IAAA,KAAK;AACL,IAAA,WAAW;IAE5B,WAAA,CACI,QAA0C,EAC1C,OAAA,GAAmC,EAAE,EAAA;AAErC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI;QACjC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI;IACjD;AAEO,IAAA,OAAO,CAAC,OAAsB,EAAA;AACjC,QAAA,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY;AAC3C,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI;AAEjC,QAAA,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;AACrC,QAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;AAC3B,YAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;QACnC;AAEA,QAAA,IAAI;AACA,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAC3B;gBAAU;AACN,YAAA,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC;AACvC,YAAA,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;QACjC;IACJ;AACH;;;;"}
|
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
import type { RenderBackendType } from './RenderBackendType';
|
|
2
2
|
import type { Drawable } from './Drawable';
|
|
3
3
|
import type { RenderBackend } from './RenderBackend';
|
|
4
|
+
/**
|
|
5
|
+
* Contract for a type-specific GPU renderer.
|
|
6
|
+
*
|
|
7
|
+
* One renderer instance exists per drawable type (e.g. `SpriteRenderer`,
|
|
8
|
+
* `MeshRenderer`). Renderers are registered with {@link RendererRegistry} and
|
|
9
|
+
* resolved at draw time. They manage their own GPU resources and expose a
|
|
10
|
+
* `flush` method to submit batched draw calls.
|
|
11
|
+
*
|
|
12
|
+
* @typeParam Runtime - The concrete {@link RenderBackend} the renderer targets.
|
|
13
|
+
* @typeParam Target - The {@link Drawable} subtype this renderer handles.
|
|
14
|
+
*/
|
|
4
15
|
export interface Renderer<Runtime extends RenderBackend = RenderBackend, Target extends Drawable = Drawable> {
|
|
5
16
|
readonly backendType: RenderBackendType;
|
|
17
|
+
/** Acquire GPU resources from `backend` and prepare for rendering. */
|
|
6
18
|
connect(backend: Runtime): void;
|
|
19
|
+
/** Release all GPU resources held by this renderer. */
|
|
7
20
|
disconnect(): void;
|
|
21
|
+
/** Record a single drawable into the current batch. */
|
|
8
22
|
render(drawable: Target): void;
|
|
23
|
+
/** Submit all batched draw calls to the GPU. */
|
|
9
24
|
flush(): void;
|
|
10
25
|
}
|
|
11
26
|
/**
|
|
@@ -33,6 +33,13 @@ export declare class RendererRegistry<Runtime extends RenderBackend> {
|
|
|
33
33
|
* renderers expose them.
|
|
34
34
|
*/
|
|
35
35
|
renderers(): Iterable<Renderer<Runtime, Drawable>>;
|
|
36
|
+
/**
|
|
37
|
+
* Find the renderer responsible for `drawable`.
|
|
38
|
+
* Walks the prototype chain so subclasses inherit their parent's renderer
|
|
39
|
+
* without requiring an explicit registration.
|
|
40
|
+
*
|
|
41
|
+
* @throws Error if no renderer is found for the drawable's type.
|
|
42
|
+
*/
|
|
36
43
|
resolve(drawable: Drawable): Renderer<Runtime, Drawable>;
|
|
37
44
|
/**
|
|
38
45
|
* Connect all registered renderers to the given backend.
|
|
@@ -42,6 +42,13 @@ class RendererRegistry {
|
|
|
42
42
|
renderers() {
|
|
43
43
|
return this._renderers.values();
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Find the renderer responsible for `drawable`.
|
|
47
|
+
* Walks the prototype chain so subclasses inherit their parent's renderer
|
|
48
|
+
* without requiring an explicit registration.
|
|
49
|
+
*
|
|
50
|
+
* @throws Error if no renderer is found for the drawable's type.
|
|
51
|
+
*/
|
|
45
52
|
resolve(drawable) {
|
|
46
53
|
let constructor = drawable.constructor;
|
|
47
54
|
let renderer = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RendererRegistry.js","sources":["../../../../src/rendering/RendererRegistry.ts"],"sourcesContent":[null],"names":[],"mappings":"AAIA;;;;;;;;;;;;AAYG;MACU,gBAAgB,CAAA;AAER,IAAA,UAAU,GAAG,IAAI,GAAG,EAAoD;IACjF,QAAQ,GAAmB,IAAI;AAEvC;;;;;;;;AAQG;IACI,gBAAgB,CACnB,YAAyC,EACzC,QAAmC,EAAA;QAEnC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACnC,MAAM,IAAI,KAAK,CAAC,CAAA,qCAAA,EAAwC,YAAY,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;QACjF;;;QAIA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,QAAuC,CAAC;AAE1E,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;AACvB,YAAA,QAAwC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpE;IACJ;AAEA;;;;AAIG;IACI,SAAS,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;IACnC;
|
|
1
|
+
{"version":3,"file":"RendererRegistry.js","sources":["../../../../src/rendering/RendererRegistry.ts"],"sourcesContent":[null],"names":[],"mappings":"AAIA;;;;;;;;;;;;AAYG;MACU,gBAAgB,CAAA;AAER,IAAA,UAAU,GAAG,IAAI,GAAG,EAAoD;IACjF,QAAQ,GAAmB,IAAI;AAEvC;;;;;;;;AAQG;IACI,gBAAgB,CACnB,YAAyC,EACzC,QAAmC,EAAA;QAEnC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACnC,MAAM,IAAI,KAAK,CAAC,CAAA,qCAAA,EAAwC,YAAY,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;QACjF;;;QAIA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,QAAuC,CAAC;AAE1E,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;AACvB,YAAA,QAAwC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpE;IACJ;AAEA;;;;AAIG;IACI,SAAS,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;IACnC;AAEA;;;;;;AAMG;AACI,IAAA,OAAO,CAAC,QAAkB,EAAA;AAC7B,QAAA,IAAI,WAAW,GAAG,QAAQ,CAAC,WAAyC;QACpE,IAAI,QAAQ,GAA4C,SAAS;AAEjE,QAAA,OAAO,WAAW,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;YACtC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;YAE3C,IAAI,CAAC,QAAQ,EAAE;gBACX,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAiD;AAE9G,gBAAA,WAAW,GAAG,SAAS,EAAE,WAAW,IAAI,IAAI;YAChD;QACJ;QAEA,IAAI,CAAC,QAAQ,EAAE;YACX,MAAM,IAAI,KAAK,CACX,CAAA,2BAAA,EAA8B,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAA,EAAA;AACrD,kBAAA,2EAA2E,CAChF;QACL;AAEA,QAAA,OAAO,QAAQ;IACnB;AAEA;;AAEG;AACI,IAAA,OAAO,CAAC,OAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;QAEvB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;AAC7C,YAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;QAC7B;IACJ;AAEA;;AAEG;IACI,UAAU,GAAA;QACb,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;YAC7C,QAAQ,CAAC,UAAU,EAAE;QACzB;AAEA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;IACxB;AAEA;;AAEG;IACI,OAAO,GAAA;QACV,IAAI,CAAC,UAAU,EAAE;QAEjB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;YAC7C,IAAI,SAAS,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE;gBAChE,QAA+D,CAAC,OAAO,EAAE;YAC9E;QACJ;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IAC3B;AACH;;;;"}
|
|
@@ -2,6 +2,11 @@ import { ObservableVector } from '@/math/ObservableVector';
|
|
|
2
2
|
import { Rectangle } from '@/math/Rectangle';
|
|
3
3
|
import { Matrix } from '@/math/Matrix';
|
|
4
4
|
import { ObservableSize } from '@/math/ObservableSize';
|
|
5
|
+
import { SceneNode } from '@/core/SceneNode';
|
|
6
|
+
/**
|
|
7
|
+
* Dirty-flag bits for lazy {@link View} transform and bounds recalculation.
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
5
10
|
export declare enum ViewFlags {
|
|
6
11
|
None = 0,
|
|
7
12
|
Translation = 1,
|
|
@@ -14,15 +19,36 @@ export declare enum ViewFlags {
|
|
|
14
19
|
TextureCoords = 64,
|
|
15
20
|
VertexTint = 128
|
|
16
21
|
}
|
|
22
|
+
/** A target that a {@link View} can track — either a {@link SceneNode} or any `{x, y}` position object. */
|
|
23
|
+
export type ViewFollowTarget = SceneNode | {
|
|
24
|
+
x: number;
|
|
25
|
+
y: number;
|
|
26
|
+
} | null;
|
|
27
|
+
/** Options for {@link View.follow}. */
|
|
17
28
|
export interface ViewFollowOptions {
|
|
29
|
+
/** Interpolation factor in [0, 1]. `1` snaps instantly; lower values smooth the camera. Defaults to `1`. */
|
|
18
30
|
lerp?: number;
|
|
31
|
+
/** Horizontal offset in world units applied after following the target. */
|
|
19
32
|
offsetX?: number;
|
|
33
|
+
/** Vertical offset in world units applied after following the target. */
|
|
20
34
|
offsetY?: number;
|
|
21
35
|
}
|
|
36
|
+
/** Options for {@link View.shake}. */
|
|
22
37
|
export interface ViewShakeOptions {
|
|
38
|
+
/** Oscillation frequency in Hz. Higher values produce more rapid shaking. Defaults to `16`. */
|
|
23
39
|
frequency?: number;
|
|
40
|
+
/** When `true` the amplitude decays linearly to zero over the shake duration. Defaults to `true`. */
|
|
24
41
|
decay?: boolean;
|
|
25
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* 2D camera that defines what region of the world is visible on screen.
|
|
45
|
+
*
|
|
46
|
+
* Maintains a center position, a visible area size, a rotation, and an optional
|
|
47
|
+
* zoom level. Provides lazy-evaluated world-to-clip and clip-to-world transform
|
|
48
|
+
* matrices, a follow-target system for tracking scene nodes, and a procedural
|
|
49
|
+
* screen-shake effect. Call {@link update} once per frame to advance follow and
|
|
50
|
+
* shake animations.
|
|
51
|
+
*/
|
|
26
52
|
export declare class View {
|
|
27
53
|
private readonly _center;
|
|
28
54
|
private readonly _size;
|
|
@@ -64,33 +90,74 @@ export declare class View {
|
|
|
64
90
|
set rotation(rotation: number);
|
|
65
91
|
get viewport(): Rectangle;
|
|
66
92
|
set viewport(viewport: Rectangle);
|
|
93
|
+
/**
|
|
94
|
+
* Monotonically increasing counter incremented whenever the view's transform
|
|
95
|
+
* is invalidated. Backends use this to detect when to re-upload the projection matrix.
|
|
96
|
+
*/
|
|
67
97
|
get updateId(): number;
|
|
68
98
|
get zoomLevel(): number;
|
|
69
99
|
setCenter(x: number, y: number): this;
|
|
100
|
+
/**
|
|
101
|
+
* Resize the view to the given dimensions and reset zoom to `1`.
|
|
102
|
+
* Use this when the canvas or window is resized.
|
|
103
|
+
*/
|
|
70
104
|
resize(width: number, height: number): this;
|
|
71
105
|
setRotation(degrees: number): this;
|
|
72
106
|
move(x: number, y: number): this;
|
|
73
107
|
zoom(factor: number): this;
|
|
108
|
+
/**
|
|
109
|
+
* Set an absolute zoom level.
|
|
110
|
+
* A zoom of `2` halves the visible area; `0.5` doubles it.
|
|
111
|
+
* Values are clamped to a minimum of `0.0001` to prevent division by zero.
|
|
112
|
+
*/
|
|
74
113
|
setZoom(zoom: number): this;
|
|
75
114
|
zoomIn(amount?: number): this;
|
|
76
115
|
zoomOut(amount?: number): this;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
116
|
+
/**
|
|
117
|
+
* Track a scene node or world position each frame.
|
|
118
|
+
* The view center is interpolated towards the target using the `lerp` factor.
|
|
119
|
+
* Call {@link clearFollow} to stop tracking.
|
|
120
|
+
*/
|
|
121
|
+
follow(target: ViewFollowTarget, options?: ViewFollowOptions): this;
|
|
81
122
|
clearFollow(): this;
|
|
123
|
+
/**
|
|
124
|
+
* Constrain the camera center so the visible area never extends outside `bounds`.
|
|
125
|
+
* When the view is larger than the constraint rectangle the camera is clamped to
|
|
126
|
+
* the geometric centre of the rectangle. Pass `null` to remove the constraint.
|
|
127
|
+
*/
|
|
82
128
|
setBounds(bounds: Rectangle | null): this;
|
|
83
129
|
clearBounds(): this;
|
|
130
|
+
/**
|
|
131
|
+
* Start a procedural camera shake effect.
|
|
132
|
+
* The shake applies a sinusoidal offset to the view's center position, then
|
|
133
|
+
* stops automatically when `durationMs` elapses. Call {@link stopShake} to
|
|
134
|
+
* cancel early.
|
|
135
|
+
*
|
|
136
|
+
* @param intensity - Maximum pixel displacement at peak amplitude.
|
|
137
|
+
* @param durationMs - How long the shake lasts in milliseconds.
|
|
138
|
+
*/
|
|
84
139
|
shake(intensity: number, durationMs: number, options?: ViewShakeOptions): this;
|
|
85
140
|
stopShake(): this;
|
|
86
141
|
update(deltaMilliseconds: number): this;
|
|
87
142
|
rotate(degrees: number): this;
|
|
88
143
|
reset(centerX: number, centerY: number, width: number, height: number): this;
|
|
144
|
+
/**
|
|
145
|
+
* Return the cached world-to-clip projection matrix, recalculating it if dirty.
|
|
146
|
+
* The returned matrix is owned by this view — do not store a reference across frames.
|
|
147
|
+
*/
|
|
89
148
|
getTransform(): Matrix;
|
|
90
|
-
updateTransform(): this;
|
|
149
|
+
protected updateTransform(): this;
|
|
150
|
+
/**
|
|
151
|
+
* Return the cached clip-to-world inverse matrix, recalculating it if dirty.
|
|
152
|
+
* Use this to convert screen-space coordinates (e.g. mouse position) to world space.
|
|
153
|
+
*/
|
|
91
154
|
getInverseTransform(): Matrix;
|
|
155
|
+
/**
|
|
156
|
+
* Return the world-space bounding rectangle of the currently visible area, recalculating if dirty.
|
|
157
|
+
* Used for frustum culling by {@link Drawable.render}.
|
|
158
|
+
*/
|
|
92
159
|
getBounds(): Rectangle;
|
|
93
|
-
updateBounds(): this;
|
|
160
|
+
protected updateBounds(): this;
|
|
94
161
|
destroy(): void;
|
|
95
162
|
private _setDirty;
|
|
96
163
|
private _setPositionDirty;
|
|
@@ -5,7 +5,12 @@ import { clamp, degreesToRadians, trimRotation } from '../math/utils.js';
|
|
|
5
5
|
import { ObservableSize } from '../math/ObservableSize.js';
|
|
6
6
|
import { Bounds } from '../core/Bounds.js';
|
|
7
7
|
import { Flags } from '../math/Flags.js';
|
|
8
|
+
import { SceneNode } from '../core/SceneNode.js';
|
|
8
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Dirty-flag bits for lazy {@link View} transform and bounds recalculation.
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
9
14
|
var ViewFlags;
|
|
10
15
|
(function (ViewFlags) {
|
|
11
16
|
ViewFlags[ViewFlags["None"] = 0] = "None";
|
|
@@ -19,6 +24,15 @@ var ViewFlags;
|
|
|
19
24
|
ViewFlags[ViewFlags["TextureCoords"] = 64] = "TextureCoords";
|
|
20
25
|
ViewFlags[ViewFlags["VertexTint"] = 128] = "VertexTint";
|
|
21
26
|
})(ViewFlags || (ViewFlags = {}));
|
|
27
|
+
/**
|
|
28
|
+
* 2D camera that defines what region of the world is visible on screen.
|
|
29
|
+
*
|
|
30
|
+
* Maintains a center position, a visible area size, a rotation, and an optional
|
|
31
|
+
* zoom level. Provides lazy-evaluated world-to-clip and clip-to-world transform
|
|
32
|
+
* matrices, a follow-target system for tracking scene nodes, and a procedural
|
|
33
|
+
* screen-shake effect. Call {@link update} once per frame to advance follow and
|
|
34
|
+
* shake animations.
|
|
35
|
+
*/
|
|
22
36
|
class View {
|
|
23
37
|
_center;
|
|
24
38
|
_size;
|
|
@@ -93,6 +107,10 @@ class View {
|
|
|
93
107
|
this._setDirty();
|
|
94
108
|
}
|
|
95
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Monotonically increasing counter incremented whenever the view's transform
|
|
112
|
+
* is invalidated. Backends use this to detect when to re-upload the projection matrix.
|
|
113
|
+
*/
|
|
96
114
|
get updateId() {
|
|
97
115
|
return this._updateId;
|
|
98
116
|
}
|
|
@@ -103,6 +121,10 @@ class View {
|
|
|
103
121
|
this._center.set(x, y);
|
|
104
122
|
return this;
|
|
105
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Resize the view to the given dimensions and reset zoom to `1`.
|
|
126
|
+
* Use this when the canvas or window is resized.
|
|
127
|
+
*/
|
|
106
128
|
resize(width, height) {
|
|
107
129
|
this._zoomBaseWidth = width;
|
|
108
130
|
this._zoomBaseHeight = height;
|
|
@@ -126,6 +148,11 @@ class View {
|
|
|
126
148
|
this.resize(this._size.width * factor, this._size.height * factor);
|
|
127
149
|
return this;
|
|
128
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Set an absolute zoom level.
|
|
153
|
+
* A zoom of `2` halves the visible area; `0.5` doubles it.
|
|
154
|
+
* Values are clamped to a minimum of `0.0001` to prevent division by zero.
|
|
155
|
+
*/
|
|
129
156
|
setZoom(zoom) {
|
|
130
157
|
const normalizedZoom = Math.max(0.0001, zoom);
|
|
131
158
|
this._zoomLevel = normalizedZoom;
|
|
@@ -138,6 +165,11 @@ class View {
|
|
|
138
165
|
zoomOut(amount = 0.1) {
|
|
139
166
|
return this.setZoom(Math.max(0.0001, this._zoomLevel - amount));
|
|
140
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Track a scene node or world position each frame.
|
|
170
|
+
* The view center is interpolated towards the target using the `lerp` factor.
|
|
171
|
+
* Call {@link clearFollow} to stop tracking.
|
|
172
|
+
*/
|
|
141
173
|
follow(target, options = {}) {
|
|
142
174
|
this._followTarget = target;
|
|
143
175
|
this._followLerp = clamp(options.lerp ?? 1, 0, 1);
|
|
@@ -152,6 +184,11 @@ class View {
|
|
|
152
184
|
this._followOffsetY = 0;
|
|
153
185
|
return this;
|
|
154
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* Constrain the camera center so the visible area never extends outside `bounds`.
|
|
189
|
+
* When the view is larger than the constraint rectangle the camera is clamped to
|
|
190
|
+
* the geometric centre of the rectangle. Pass `null` to remove the constraint.
|
|
191
|
+
*/
|
|
155
192
|
setBounds(bounds) {
|
|
156
193
|
if (bounds === null) {
|
|
157
194
|
if (this._boundsConstraint) {
|
|
@@ -172,6 +209,15 @@ class View {
|
|
|
172
209
|
clearBounds() {
|
|
173
210
|
return this.setBounds(null);
|
|
174
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Start a procedural camera shake effect.
|
|
214
|
+
* The shake applies a sinusoidal offset to the view's center position, then
|
|
215
|
+
* stops automatically when `durationMs` elapses. Call {@link stopShake} to
|
|
216
|
+
* cancel early.
|
|
217
|
+
*
|
|
218
|
+
* @param intensity - Maximum pixel displacement at peak amplitude.
|
|
219
|
+
* @param durationMs - How long the shake lasts in milliseconds.
|
|
220
|
+
*/
|
|
175
221
|
shake(intensity, durationMs, options = {}) {
|
|
176
222
|
this._shakeIntensity = Math.max(0, intensity);
|
|
177
223
|
this._shakeDurationMs = Math.max(0, durationMs);
|
|
@@ -219,6 +265,10 @@ class View {
|
|
|
219
265
|
this._flags.push(ViewFlags.Transform);
|
|
220
266
|
return this;
|
|
221
267
|
}
|
|
268
|
+
/**
|
|
269
|
+
* Return the cached world-to-clip projection matrix, recalculating it if dirty.
|
|
270
|
+
* The returned matrix is owned by this view — do not store a reference across frames.
|
|
271
|
+
*/
|
|
222
272
|
getTransform() {
|
|
223
273
|
if (this._flags.has(ViewFlags.Transform)) {
|
|
224
274
|
this.updateTransform();
|
|
@@ -245,6 +295,10 @@ class View {
|
|
|
245
295
|
this._transform.y = (x * -this._transform.c) - (y * this._transform.d) + (-y * centerY);
|
|
246
296
|
return this;
|
|
247
297
|
}
|
|
298
|
+
/**
|
|
299
|
+
* Return the cached clip-to-world inverse matrix, recalculating it if dirty.
|
|
300
|
+
* Use this to convert screen-space coordinates (e.g. mouse position) to world space.
|
|
301
|
+
*/
|
|
248
302
|
getInverseTransform() {
|
|
249
303
|
if (this._flags.has(ViewFlags.TransformInverse)) {
|
|
250
304
|
this.getTransform()
|
|
@@ -253,6 +307,10 @@ class View {
|
|
|
253
307
|
}
|
|
254
308
|
return this._inverseTransform;
|
|
255
309
|
}
|
|
310
|
+
/**
|
|
311
|
+
* Return the world-space bounding rectangle of the currently visible area, recalculating if dirty.
|
|
312
|
+
* Used for frustum culling by {@link Drawable.render}.
|
|
313
|
+
*/
|
|
256
314
|
getBounds() {
|
|
257
315
|
if (this._flags.has(ViewFlags.BoundingBox)) {
|
|
258
316
|
this.updateBounds();
|
|
@@ -305,8 +363,17 @@ class View {
|
|
|
305
363
|
if (!this._followTarget) {
|
|
306
364
|
return;
|
|
307
365
|
}
|
|
308
|
-
|
|
309
|
-
|
|
366
|
+
let targetX = 0;
|
|
367
|
+
let targetY = 0;
|
|
368
|
+
if (this._followTarget instanceof SceneNode) {
|
|
369
|
+
const m = this._followTarget.getGlobalTransform();
|
|
370
|
+
targetX = m.x + this._followOffsetX;
|
|
371
|
+
targetY = m.y + this._followOffsetY;
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
targetX = this._followTarget.x + this._followOffsetX;
|
|
375
|
+
targetY = this._followTarget.y + this._followOffsetY;
|
|
376
|
+
}
|
|
310
377
|
if (this._followLerp >= 1) {
|
|
311
378
|
this.setCenter(targetX, targetY);
|
|
312
379
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"View.js","sources":["../../../../src/rendering/View.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"View.js","sources":["../../../../src/rendering/View.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import type { RenderTexture } from '@/rendering/texture/RenderTexture';
|
|
2
2
|
import type { RenderBackend } from '@/rendering/RenderBackend';
|
|
3
3
|
import { Filter } from './Filter';
|
|
4
|
+
/** Construction-time options for a {@link BlurFilter}. */
|
|
4
5
|
export interface BlurFilterOptions {
|
|
5
6
|
readonly radius?: number;
|
|
6
7
|
readonly quality?: number;
|
|
7
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Box-blur {@link Filter} implemented as multiple additive sprite passes.
|
|
11
|
+
*
|
|
12
|
+
* The blur is approximated by rendering the input texture `quality * 2 + 1`
|
|
13
|
+
* times offset symmetrically along each axis by up to ±`radius` pixels and
|
|
14
|
+
* blending them additively. Higher `quality` values add more samples and
|
|
15
|
+
* produce a smoother result at the cost of additional draw calls.
|
|
16
|
+
*/
|
|
8
17
|
export declare class BlurFilter extends Filter {
|
|
9
18
|
private readonly _sprite;
|
|
10
19
|
private readonly _sampleTint;
|
|
@@ -4,6 +4,14 @@ import { Sprite } from '../sprite/Sprite.js';
|
|
|
4
4
|
import { RenderTargetPass } from '../RenderTargetPass.js';
|
|
5
5
|
import { Filter } from './Filter.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Box-blur {@link Filter} implemented as multiple additive sprite passes.
|
|
9
|
+
*
|
|
10
|
+
* The blur is approximated by rendering the input texture `quality * 2 + 1`
|
|
11
|
+
* times offset symmetrically along each axis by up to ±`radius` pixels and
|
|
12
|
+
* blending them additively. Higher `quality` values add more samples and
|
|
13
|
+
* produce a smoother result at the cost of additional draw calls.
|
|
14
|
+
*/
|
|
7
15
|
class BlurFilter extends Filter {
|
|
8
16
|
_sprite = new Sprite(null);
|
|
9
17
|
_sampleTint = Color.white.clone();
|