@codexo/exojs 0.7.13 → 0.8.2
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 +637 -124
- package/README.md +19 -19
- package/dist/esm/animation/Easing.js +13 -21
- package/dist/esm/animation/Easing.js.map +1 -1
- package/dist/esm/animation/Tween.d.ts +3 -3
- package/dist/esm/animation/Tween.js +7 -5
- package/dist/esm/animation/Tween.js.map +1 -1
- package/dist/esm/animation/TweenManager.js +1 -1
- package/dist/esm/animation/TweenManager.js.map +1 -1
- package/dist/esm/animation/types.js.map +1 -1
- package/dist/esm/audio/AbstractMedia.d.ts +1 -1
- package/dist/esm/audio/AbstractMedia.js +1 -1
- package/dist/esm/audio/AbstractMedia.js.map +1 -1
- package/dist/esm/audio/AudioAnalyser.d.ts +1 -1
- package/dist/esm/audio/AudioAnalyser.js +2 -2
- package/dist/esm/audio/AudioAnalyser.js.map +1 -1
- package/dist/esm/audio/AudioBus.d.ts +1 -1
- package/dist/esm/audio/AudioBus.js.map +1 -1
- package/dist/esm/audio/AudioFilter.js +3 -1
- package/dist/esm/audio/AudioFilter.js.map +1 -1
- package/dist/esm/audio/AudioListener.d.ts +1 -1
- package/dist/esm/audio/AudioListener.js +5 -3
- package/dist/esm/audio/AudioListener.js.map +1 -1
- package/dist/esm/audio/AudioManager.js.map +1 -1
- package/dist/esm/audio/BeatDetector.d.ts +4 -4
- package/dist/esm/audio/BeatDetector.js +68 -44
- package/dist/esm/audio/BeatDetector.js.map +1 -1
- package/dist/esm/audio/Envelope.d.ts +1 -1
- package/dist/esm/audio/Envelope.js +2 -2
- package/dist/esm/audio/Envelope.js.map +1 -1
- package/dist/esm/audio/Music.d.ts +1 -1
- package/dist/esm/audio/Music.js +1 -1
- package/dist/esm/audio/Music.js.map +1 -1
- package/dist/esm/audio/OscillatorSound.d.ts +2 -2
- package/dist/esm/audio/OscillatorSound.js.map +1 -1
- package/dist/esm/audio/Sound.d.ts +40 -2
- package/dist/esm/audio/Sound.js +69 -9
- package/dist/esm/audio/Sound.js.map +1 -1
- package/dist/esm/audio/audio-context.js +1 -1
- package/dist/esm/audio/audio-context.js.map +1 -1
- package/dist/esm/audio/crossFade.js +1 -1
- package/dist/esm/audio/crossFade.js.map +1 -1
- package/dist/esm/audio/dsp/mel.d.ts +2 -2
- package/dist/esm/audio/dsp/tempogram.d.ts +2 -2
- package/dist/esm/audio/filters/ChorusFilter.js +12 -4
- package/dist/esm/audio/filters/ChorusFilter.js.map +1 -1
- package/dist/esm/audio/filters/CompressorFilter.d.ts +9 -0
- package/dist/esm/audio/filters/CompressorFilter.js +11 -0
- package/dist/esm/audio/filters/CompressorFilter.js.map +1 -1
- package/dist/esm/audio/filters/DelayFilter.js.map +1 -1
- package/dist/esm/audio/filters/DuckingFilter.d.ts +1 -1
- package/dist/esm/audio/filters/DuckingFilter.js +13 -5
- package/dist/esm/audio/filters/DuckingFilter.js.map +1 -1
- package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -1
- package/dist/esm/audio/filters/GranularFilter.js +30 -14
- package/dist/esm/audio/filters/GranularFilter.js.map +1 -1
- package/dist/esm/audio/filters/HighpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/LowpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/PitchShiftFilter.js +14 -10
- package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -1
- package/dist/esm/audio/filters/ReverbFilter.js.map +1 -1
- package/dist/esm/audio/filters/VocoderFilter.d.ts +2 -2
- package/dist/esm/audio/filters/VocoderFilter.js +20 -12
- package/dist/esm/audio/filters/VocoderFilter.js.map +1 -1
- package/dist/esm/audio/filters/WorkletFilter.js +5 -6
- package/dist/esm/audio/filters/WorkletFilter.js.map +1 -1
- package/dist/esm/audio/filters/index.d.ts +7 -7
- package/dist/esm/audio/index.d.ts +9 -9
- package/dist/esm/audio/worklet/registerWorklet.js +7 -3
- package/dist/esm/audio/worklet/registerWorklet.js.map +1 -1
- package/dist/esm/core/Application.d.ts +13 -13
- package/dist/esm/core/Application.js +24 -16
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/Bounds.d.ts +1 -1
- package/dist/esm/core/Bounds.js +1 -3
- package/dist/esm/core/Bounds.js.map +1 -1
- package/dist/esm/core/Clock.js +1 -1
- package/dist/esm/core/Clock.js.map +1 -1
- package/dist/esm/core/Color.js +2 -5
- package/dist/esm/core/Color.js.map +1 -1
- package/dist/esm/core/Scene.d.ts +10 -10
- package/dist/esm/core/Scene.js +1 -1
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.d.ts +4 -4
- package/dist/esm/core/SceneManager.js +39 -33
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +8 -8
- package/dist/esm/core/SceneNode.js +39 -29
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/Signal.d.ts +3 -3
- package/dist/esm/core/Signal.js +3 -3
- package/dist/esm/core/Signal.js.map +1 -1
- package/dist/esm/core/Time.js +6 -6
- package/dist/esm/core/Time.js.map +1 -1
- package/dist/esm/core/Timer.d.ts +1 -1
- package/dist/esm/core/Timer.js +1 -1
- package/dist/esm/core/Timer.js.map +1 -1
- package/dist/esm/core/capabilities.js +2 -4
- package/dist/esm/core/capabilities.js.map +1 -1
- package/dist/esm/core/index.d.ts +2 -2
- package/dist/esm/core/utils.d.ts +4 -4
- package/dist/esm/core/utils.js +10 -10
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/debug/BoundingBoxesLayer.d.ts +3 -3
- package/dist/esm/debug/BoundingBoxesLayer.js +6 -13
- package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -1
- package/dist/esm/debug/DebugLayer.d.ts +1 -1
- package/dist/esm/debug/DebugLayer.js.map +1 -1
- package/dist/esm/debug/DebugOverlay.d.ts +2 -2
- package/dist/esm/debug/DebugOverlay.js +2 -2
- package/dist/esm/debug/DebugOverlay.js.map +1 -1
- package/dist/esm/debug/HitTestLayer.d.ts +3 -3
- package/dist/esm/debug/HitTestLayer.js +3 -10
- package/dist/esm/debug/HitTestLayer.js.map +1 -1
- package/dist/esm/debug/PerformanceLayer.d.ts +2 -2
- package/dist/esm/debug/PerformanceLayer.js +6 -6
- package/dist/esm/debug/PerformanceLayer.js.map +1 -1
- package/dist/esm/debug/PointerStackLayer.d.ts +3 -3
- package/dist/esm/debug/PointerStackLayer.js +3 -3
- package/dist/esm/debug/PointerStackLayer.js.map +1 -1
- package/dist/esm/debug/index.d.ts +3 -3
- package/dist/esm/debug/index.js +3 -3
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +106 -84
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/input/ArcadeStickGamepadMapping.js.map +1 -1
- package/dist/esm/input/GameCubeGamepadMapping.d.ts +1 -1
- package/dist/esm/input/GameCubeGamepadMapping.js +1 -1
- package/dist/esm/input/GameCubeGamepadMapping.js.map +1 -1
- package/dist/esm/input/Gamepad.d.ts +7 -7
- package/dist/esm/input/Gamepad.js +10 -6
- package/dist/esm/input/Gamepad.js.map +1 -1
- package/dist/esm/input/GamepadAxis.js +1 -1
- package/dist/esm/input/GamepadAxis.js.map +1 -1
- package/dist/esm/input/GamepadButton.js +1 -1
- package/dist/esm/input/GamepadButton.js.map +1 -1
- package/dist/esm/input/GamepadDefinitions.d.ts +4 -4
- package/dist/esm/input/GamepadDefinitions.js +12 -14
- package/dist/esm/input/GamepadDefinitions.js.map +1 -1
- package/dist/esm/input/GamepadMapping.d.ts +5 -5
- package/dist/esm/input/GamepadMapping.js.map +1 -1
- package/dist/esm/input/GamepadPromptLayouts.d.ts +2 -2
- package/dist/esm/input/GamepadPromptLayouts.js +8 -8
- package/dist/esm/input/GamepadPromptLayouts.js.map +1 -1
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js.map +1 -1
- package/dist/esm/input/GestureRecognizer.d.ts +1 -1
- package/dist/esm/input/GestureRecognizer.js.map +1 -1
- package/dist/esm/input/InputBinding.d.ts +3 -3
- package/dist/esm/input/InputBinding.js.map +1 -1
- package/dist/esm/input/InputManager.d.ts +9 -9
- package/dist/esm/input/InputManager.js +25 -16
- package/dist/esm/input/InputManager.js.map +1 -1
- package/dist/esm/input/InteractionEvent.d.ts +1 -1
- package/dist/esm/input/InteractionEvent.js.map +1 -1
- package/dist/esm/input/InteractionManager.d.ts +2 -2
- package/dist/esm/input/InteractionManager.js +25 -16
- package/dist/esm/input/InteractionManager.js.map +1 -1
- package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -1
- package/dist/esm/input/JoyConRightGamepadMapping.js.map +1 -1
- package/dist/esm/input/PlayStationGamepadMapping.d.ts +1 -1
- package/dist/esm/input/PlayStationGamepadMapping.js +1 -1
- package/dist/esm/input/PlayStationGamepadMapping.js.map +1 -1
- package/dist/esm/input/Pointer.d.ts +2 -2
- package/dist/esm/input/Pointer.js +6 -6
- package/dist/esm/input/Pointer.js.map +1 -1
- package/dist/esm/input/SteamControllerGamepadMapping.d.ts +1 -1
- package/dist/esm/input/SteamControllerGamepadMapping.js +1 -1
- package/dist/esm/input/SteamControllerGamepadMapping.js.map +1 -1
- package/dist/esm/input/SteamDeckGamepadMapping.js.map +1 -1
- package/dist/esm/input/SwitchProGamepadMapping.d.ts +1 -1
- package/dist/esm/input/SwitchProGamepadMapping.js +1 -1
- package/dist/esm/input/SwitchProGamepadMapping.js.map +1 -1
- package/dist/esm/input/XboxGamepadMapping.d.ts +1 -1
- package/dist/esm/input/XboxGamepadMapping.js +1 -1
- package/dist/esm/input/XboxGamepadMapping.js.map +1 -1
- package/dist/esm/input/index.d.ts +16 -16
- package/dist/esm/input/interaction-hooks.js.map +1 -1
- package/dist/esm/input/types.js.map +1 -1
- package/dist/esm/math/AbstractVector.js +8 -9
- package/dist/esm/math/AbstractVector.js.map +1 -1
- package/dist/esm/math/Circle.d.ts +5 -5
- package/dist/esm/math/Circle.js +33 -21
- package/dist/esm/math/Circle.js.map +1 -1
- package/dist/esm/math/Collision.d.ts +2 -2
- package/dist/esm/math/Collision.js.map +1 -1
- package/dist/esm/math/Ellipse.d.ts +5 -5
- package/dist/esm/math/Ellipse.js +28 -19
- package/dist/esm/math/Ellipse.js.map +1 -1
- package/dist/esm/math/Flags.d.ts +4 -4
- package/dist/esm/math/Flags.js.map +1 -1
- package/dist/esm/math/Interval.js.map +1 -1
- package/dist/esm/math/Line.d.ts +5 -5
- package/dist/esm/math/Line.js +23 -15
- package/dist/esm/math/Line.js.map +1 -1
- package/dist/esm/math/Matrix.js +14 -16
- package/dist/esm/math/Matrix.js.map +1 -1
- package/dist/esm/math/ObservableSize.js.map +1 -1
- package/dist/esm/math/ObservableVector.d.ts +1 -1
- package/dist/esm/math/ObservableVector.js.map +1 -1
- package/dist/esm/math/PolarVector.js.map +1 -1
- package/dist/esm/math/Polygon.d.ts +11 -11
- package/dist/esm/math/Polygon.js +37 -26
- package/dist/esm/math/Polygon.js.map +1 -1
- package/dist/esm/math/PolygonLike.d.ts +1 -1
- package/dist/esm/math/Quadtree.js +2 -8
- package/dist/esm/math/Quadtree.js.map +1 -1
- package/dist/esm/math/Random.js +5 -5
- package/dist/esm/math/Random.js.map +1 -1
- package/dist/esm/math/Rectangle.d.ts +4 -4
- package/dist/esm/math/Rectangle.js +59 -41
- package/dist/esm/math/Rectangle.js.map +1 -1
- package/dist/esm/math/Segment.d.ts +1 -1
- package/dist/esm/math/Segment.js +4 -4
- package/dist/esm/math/Segment.js.map +1 -1
- package/dist/esm/math/ShapeLike.d.ts +1 -1
- package/dist/esm/math/Size.js +1 -2
- package/dist/esm/math/Size.js.map +1 -1
- package/dist/esm/math/Vector.d.ts +4 -4
- package/dist/esm/math/Vector.js +19 -13
- package/dist/esm/math/Vector.js.map +1 -1
- package/dist/esm/math/collision-detection.d.ts +3 -3
- package/dist/esm/math/collision-detection.js +49 -49
- package/dist/esm/math/collision-detection.js.map +1 -1
- package/dist/esm/math/collision-primitives.d.ts +8 -8
- package/dist/esm/math/collision-primitives.js +27 -33
- package/dist/esm/math/collision-primitives.js.map +1 -1
- package/dist/esm/math/geometry.d.ts +3 -3
- package/dist/esm/math/geometry.js +55 -48
- package/dist/esm/math/geometry.js.map +1 -1
- package/dist/esm/math/index.d.ts +16 -16
- package/dist/esm/math/swept-collision.d.ts +3 -3
- package/dist/esm/math/swept-collision.js +5 -8
- package/dist/esm/math/swept-collision.js.map +1 -1
- package/dist/esm/math/triangulate.js +34 -24
- package/dist/esm/math/triangulate.js.map +1 -1
- package/dist/esm/math/utils.d.ts +2 -2
- package/dist/esm/math/utils.js +7 -7
- package/dist/esm/math/utils.js.map +1 -1
- package/dist/esm/particles/ParticleSystem.d.ts +181 -84
- package/dist/esm/particles/ParticleSystem.js +460 -147
- package/dist/esm/particles/ParticleSystem.js.map +1 -1
- package/dist/esm/particles/distributions/BoxArea.d.ts +17 -0
- package/dist/esm/particles/distributions/BoxArea.js +48 -0
- package/dist/esm/particles/distributions/BoxArea.js.map +1 -0
- package/dist/esm/particles/distributions/CircleArea.d.ts +19 -0
- package/dist/esm/particles/distributions/CircleArea.js +33 -0
- package/dist/esm/particles/distributions/CircleArea.js.map +1 -0
- package/dist/esm/particles/distributions/ConeDirection.d.ts +28 -0
- package/dist/esm/particles/distributions/ConeDirection.js +44 -0
- package/dist/esm/particles/distributions/ConeDirection.js.map +1 -0
- package/dist/esm/particles/distributions/Constant.d.ts +17 -0
- package/dist/esm/particles/distributions/Constant.js +35 -0
- package/dist/esm/particles/distributions/Constant.js.map +1 -0
- package/dist/esm/particles/distributions/Curve.d.ts +30 -0
- package/dist/esm/particles/distributions/Curve.js +53 -0
- package/dist/esm/particles/distributions/Curve.js.map +1 -0
- package/dist/esm/particles/distributions/Distribution.d.ts +45 -0
- package/dist/esm/particles/distributions/Gradient.d.ts +40 -0
- package/dist/esm/particles/distributions/Gradient.js +72 -0
- package/dist/esm/particles/distributions/Gradient.js.map +1 -0
- package/dist/esm/particles/distributions/LineSegment.d.ts +15 -0
- package/dist/esm/particles/distributions/LineSegment.js +27 -0
- package/dist/esm/particles/distributions/LineSegment.js.map +1 -0
- package/dist/esm/particles/distributions/Range.d.ts +12 -0
- package/dist/esm/particles/distributions/Range.js +19 -0
- package/dist/esm/particles/distributions/Range.js.map +1 -0
- package/dist/esm/particles/distributions/VectorRange.d.ts +20 -0
- package/dist/esm/particles/distributions/VectorRange.js +31 -0
- package/dist/esm/particles/distributions/VectorRange.js.map +1 -0
- package/dist/esm/particles/distributions/index.d.ts +12 -0
- package/dist/esm/particles/gpu/ParticleGpuState.d.ts +57 -0
- package/dist/esm/particles/gpu/ParticleGpuState.js +535 -0
- package/dist/esm/particles/gpu/ParticleGpuState.js.map +1 -0
- package/dist/esm/particles/index.d.ts +2 -10
- package/dist/esm/particles/modules/AlphaFadeOverLifetime.d.ts +24 -0
- package/dist/esm/particles/modules/AlphaFadeOverLifetime.js +60 -0
- package/dist/esm/particles/modules/AlphaFadeOverLifetime.js.map +1 -0
- package/dist/esm/particles/modules/ApplyForce.d.ts +20 -0
- package/dist/esm/particles/modules/ApplyForce.js +48 -0
- package/dist/esm/particles/modules/ApplyForce.js.map +1 -0
- package/dist/esm/particles/modules/AttractToPoint.d.ts +27 -0
- package/dist/esm/particles/modules/AttractToPoint.js +73 -0
- package/dist/esm/particles/modules/AttractToPoint.js.map +1 -0
- package/dist/esm/particles/modules/BurstSpawn.d.ts +53 -0
- package/dist/esm/particles/modules/BurstSpawn.js +94 -0
- package/dist/esm/particles/modules/BurstSpawn.js.map +1 -0
- package/dist/esm/particles/modules/ColorOverLifetime.d.ts +22 -0
- package/dist/esm/particles/modules/ColorOverLifetime.js +65 -0
- package/dist/esm/particles/modules/ColorOverLifetime.js.map +1 -0
- package/dist/esm/particles/modules/ColorOverSpeed.d.ts +27 -0
- package/dist/esm/particles/modules/ColorOverSpeed.js +86 -0
- package/dist/esm/particles/modules/ColorOverSpeed.js.map +1 -0
- package/dist/esm/particles/modules/DeathModule.d.ts +24 -0
- package/dist/esm/particles/modules/DeathModule.js +25 -0
- package/dist/esm/particles/modules/DeathModule.js.map +1 -0
- package/dist/esm/particles/modules/Drag.d.ts +20 -0
- package/dist/esm/particles/modules/Drag.js +43 -0
- package/dist/esm/particles/modules/Drag.js.map +1 -0
- package/dist/esm/particles/modules/OrbitalForce.d.ts +28 -0
- package/dist/esm/particles/modules/OrbitalForce.js +65 -0
- package/dist/esm/particles/modules/OrbitalForce.js.map +1 -0
- package/dist/esm/particles/modules/RateSpawn.d.ts +41 -0
- package/dist/esm/particles/modules/RateSpawn.js +76 -0
- package/dist/esm/particles/modules/RateSpawn.js.map +1 -0
- package/dist/esm/particles/modules/RepelFromPoint.d.ts +24 -0
- package/dist/esm/particles/modules/RepelFromPoint.js +76 -0
- package/dist/esm/particles/modules/RepelFromPoint.js.map +1 -0
- package/dist/esm/particles/modules/RotateOverLifetime.d.ts +20 -0
- package/dist/esm/particles/modules/RotateOverLifetime.js +41 -0
- package/dist/esm/particles/modules/RotateOverLifetime.js.map +1 -0
- package/dist/esm/particles/modules/ScaleOverLifetime.d.ts +26 -0
- package/dist/esm/particles/modules/ScaleOverLifetime.js +59 -0
- package/dist/esm/particles/modules/ScaleOverLifetime.js.map +1 -0
- package/dist/esm/particles/modules/SpawnModule.d.ts +30 -0
- package/dist/esm/particles/modules/SpawnModule.js +31 -0
- package/dist/esm/particles/modules/SpawnModule.js.map +1 -0
- package/dist/esm/particles/modules/SpawnOnDeath.d.ts +24 -0
- package/dist/esm/particles/modules/SpawnOnDeath.js +47 -0
- package/dist/esm/particles/modules/SpawnOnDeath.js.map +1 -0
- package/dist/esm/particles/modules/Turbulence.d.ts +30 -0
- package/dist/esm/particles/modules/Turbulence.js +122 -0
- package/dist/esm/particles/modules/Turbulence.js.map +1 -0
- package/dist/esm/particles/modules/UpdateModule.d.ts +95 -0
- package/dist/esm/particles/modules/UpdateModule.js +66 -0
- package/dist/esm/particles/modules/UpdateModule.js.map +1 -0
- package/dist/esm/particles/modules/VelocityOverLifetime.d.ts +30 -0
- package/dist/esm/particles/modules/VelocityOverLifetime.js +84 -0
- package/dist/esm/particles/modules/VelocityOverLifetime.js.map +1 -0
- package/dist/esm/particles/modules/WgslContribution.d.ts +81 -0
- package/dist/esm/particles/modules/WgslContribution.js +34 -0
- package/dist/esm/particles/modules/WgslContribution.js.map +1 -0
- package/dist/esm/particles/modules/index.d.ts +22 -0
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
- package/dist/esm/rendering/Container.d.ts +2 -2
- package/dist/esm/rendering/Container.js +10 -11
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/RenderBackend.d.ts +6 -6
- package/dist/esm/rendering/RenderBackendType.js.map +1 -1
- package/dist/esm/rendering/RenderNode.d.ts +10 -10
- package/dist/esm/rendering/RenderNode.js +31 -31
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderStats.js.map +1 -1
- package/dist/esm/rendering/RenderTarget.d.ts +2 -2
- package/dist/esm/rendering/RenderTarget.js +5 -5
- package/dist/esm/rendering/RenderTarget.js.map +1 -1
- package/dist/esm/rendering/RenderTargetPass.d.ts +3 -3
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
- package/dist/esm/rendering/Renderer.d.ts +2 -2
- package/dist/esm/rendering/RendererRegistry.d.ts +3 -3
- package/dist/esm/rendering/RendererRegistry.js +2 -3
- package/dist/esm/rendering/RendererRegistry.js.map +1 -1
- package/dist/esm/rendering/View.d.ts +3 -3
- package/dist/esm/rendering/View.js +17 -20
- package/dist/esm/rendering/View.js.map +1 -1
- package/dist/esm/rendering/filters/BlurFilter.d.ts +1 -1
- package/dist/esm/rendering/filters/BlurFilter.js +4 -9
- package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
- package/dist/esm/rendering/filters/ColorFilter.d.ts +1 -1
- package/dist/esm/rendering/filters/ColorFilter.js +3 -9
- package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
- package/dist/esm/rendering/filters/Filter.d.ts +1 -1
- package/dist/esm/rendering/filters/Filter.js.map +1 -1
- package/dist/esm/rendering/filters/LutFilter.d.ts +87 -0
- package/dist/esm/rendering/filters/LutFilter.js +261 -0
- package/dist/esm/rendering/filters/LutFilter.js.map +1 -0
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.d.ts +2 -2
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js +7 -14
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js.map +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +11 -10
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
- package/dist/esm/rendering/index.d.ts +28 -27
- package/dist/esm/rendering/mesh/Mesh.d.ts +49 -1
- package/dist/esm/rendering/mesh/Mesh.js +3 -1
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.d.ts +3 -3
- package/dist/esm/rendering/primitives/Graphics.js +12 -12
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/shader/Shader.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
- package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js +6 -8
- package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js.map +1 -1
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +3 -3
- package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.d.ts +4 -4
- package/dist/esm/rendering/sprite/Sprite.js +51 -35
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Spritesheet.d.ts +5 -9
- package/dist/esm/rendering/sprite/Spritesheet.js +1 -1
- package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -1
- package/dist/esm/rendering/text/DynamicGlyphAtlas.js +3 -9
- package/dist/esm/rendering/text/DynamicGlyphAtlas.js.map +1 -1
- package/dist/esm/rendering/text/Text.js +9 -9
- package/dist/esm/rendering/text/Text.js.map +1 -1
- package/dist/esm/rendering/text/TextLayout.d.ts +2 -2
- package/dist/esm/rendering/text/TextLayout.js.map +1 -1
- package/dist/esm/rendering/text/TextStyle.js.map +1 -1
- package/dist/esm/rendering/text/atlas-singleton.js.map +1 -1
- package/dist/esm/rendering/texture/RenderTexture.d.ts +1 -1
- package/dist/esm/rendering/texture/RenderTexture.js +4 -1
- package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
- package/dist/esm/rendering/texture/Sampler.js.map +1 -1
- package/dist/esm/rendering/texture/Texture.d.ts +2 -2
- package/dist/esm/rendering/texture/Texture.js +8 -5
- package/dist/esm/rendering/texture/Texture.js.map +1 -1
- package/dist/esm/rendering/types.js.map +1 -1
- package/dist/esm/rendering/utils.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +3 -3
- package/dist/esm/rendering/video/Video.js +7 -6
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +6 -6
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +7 -10
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.d.ts +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js +1 -2
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +11 -11
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +19 -21
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.d.ts +2 -2
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js +6 -8
- package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +7 -4
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +110 -43
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.d.ts +10 -15
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js +100 -79
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js +54 -22
- package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +1 -1
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +11 -14
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.d.ts +1 -1
- package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js.map +1 -1
- package/dist/esm/rendering/webgl2/glsl/particle.vert.js +1 -1
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.d.ts +1 -1
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js +1 -2
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +7 -7
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +44 -30
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts +2 -2
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +1 -3
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +2 -2
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +25 -23
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.d.ts +10 -1
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +204 -76
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +2 -2
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +45 -45
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.d.ts +52 -0
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts +29 -0
- package/dist/esm/rendering/webgpu/compute/index.d.ts +3 -0
- package/dist/esm/resources/AbstractAssetFactory.d.ts +1 -1
- package/dist/esm/resources/AbstractAssetFactory.js.map +1 -1
- package/dist/esm/resources/AssetManifest.d.ts +1 -1
- package/dist/esm/resources/AssetManifest.js +2 -2
- package/dist/esm/resources/AssetManifest.js.map +1 -1
- package/dist/esm/resources/CacheFirstStrategy.d.ts +2 -2
- package/dist/esm/resources/CacheFirstStrategy.js.map +1 -1
- package/dist/esm/resources/CacheStrategy.d.ts +1 -1
- package/dist/esm/resources/FactoryRegistry.d.ts +1 -1
- package/dist/esm/resources/FactoryRegistry.js +2 -3
- package/dist/esm/resources/FactoryRegistry.js.map +1 -1
- package/dist/esm/resources/IndexedDbDatabase.d.ts +1 -1
- package/dist/esm/resources/IndexedDbDatabase.js +11 -14
- package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
- package/dist/esm/resources/IndexedDbStore.d.ts +1 -1
- package/dist/esm/resources/IndexedDbStore.js +2 -7
- package/dist/esm/resources/IndexedDbStore.js.map +1 -1
- package/dist/esm/resources/Loader.d.ts +9 -9
- package/dist/esm/resources/Loader.js +48 -35
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/esm/resources/NetworkOnlyStrategy.d.ts +2 -2
- package/dist/esm/resources/NetworkOnlyStrategy.js.map +1 -1
- package/dist/esm/resources/factories/BinaryFactory.js.map +1 -1
- package/dist/esm/resources/factories/FontFactory.js +1 -1
- package/dist/esm/resources/factories/FontFactory.js.map +1 -1
- package/dist/esm/resources/factories/ImageFactory.js +4 -4
- package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
- package/dist/esm/resources/factories/JsonFactory.d.ts +1 -1
- package/dist/esm/resources/factories/JsonFactory.js +1 -1
- package/dist/esm/resources/factories/JsonFactory.js.map +1 -1
- package/dist/esm/resources/factories/MusicFactory.d.ts +1 -1
- package/dist/esm/resources/factories/MusicFactory.js +4 -4
- package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
- package/dist/esm/resources/factories/SoundFactory.d.ts +1 -1
- package/dist/esm/resources/factories/SoundFactory.js +3 -3
- package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
- package/dist/esm/resources/factories/SvgFactory.js +3 -3
- package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextFactory.js +1 -1
- package/dist/esm/resources/factories/TextFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextureFactory.d.ts +1 -1
- package/dist/esm/resources/factories/TextureFactory.js +3 -3
- package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
- package/dist/esm/resources/factories/VideoFactory.d.ts +2 -2
- package/dist/esm/resources/factories/VideoFactory.js +5 -5
- package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
- package/dist/esm/resources/factories/VttFactory.d.ts +2 -2
- package/dist/esm/resources/factories/VttFactory.js +6 -6
- package/dist/esm/resources/factories/VttFactory.js.map +1 -1
- package/dist/esm/resources/factories/WasmFactory.js.map +1 -1
- package/dist/esm/resources/index.d.ts +11 -11
- package/dist/esm/resources/utils.js +30 -25
- package/dist/esm/resources/utils.js.map +1 -1
- package/dist/exo.esm.js +26438 -23869
- package/dist/exo.esm.js.map +1 -1
- package/package.json +15 -4
- package/dist/esm/particles/Particle.d.ts +0 -77
- package/dist/esm/particles/Particle.js +0 -143
- package/dist/esm/particles/Particle.js.map +0 -1
- package/dist/esm/particles/ParticleProperties.d.ts +0 -29
- package/dist/esm/particles/affectors/ColorAffector.d.ts +0 -30
- package/dist/esm/particles/affectors/ColorAffector.js +0 -55
- package/dist/esm/particles/affectors/ColorAffector.js.map +0 -1
- package/dist/esm/particles/affectors/ForceAffector.d.ts +0 -24
- package/dist/esm/particles/affectors/ForceAffector.js +0 -39
- package/dist/esm/particles/affectors/ForceAffector.js.map +0 -1
- package/dist/esm/particles/affectors/ParticleAffector.d.ts +0 -19
- package/dist/esm/particles/affectors/ScaleAffector.d.ts +0 -23
- package/dist/esm/particles/affectors/ScaleAffector.js +0 -38
- package/dist/esm/particles/affectors/ScaleAffector.js.map +0 -1
- package/dist/esm/particles/affectors/TorqueAffector.d.ts +0 -23
- package/dist/esm/particles/affectors/TorqueAffector.js +0 -37
- package/dist/esm/particles/affectors/TorqueAffector.js.map +0 -1
- package/dist/esm/particles/emitters/ParticleEmitter.d.ts +0 -19
- package/dist/esm/particles/emitters/ParticleOptions.d.ts +0 -62
- package/dist/esm/particles/emitters/ParticleOptions.js +0 -120
- package/dist/esm/particles/emitters/ParticleOptions.js.map +0 -1
- package/dist/esm/particles/emitters/UniversalEmitter.d.ts +0 -40
- package/dist/esm/particles/emitters/UniversalEmitter.js +0 -68
- package/dist/esm/particles/emitters/UniversalEmitter.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Matrix } from '../../math/Matrix.js';
|
|
2
|
-
import { AbstractWebGpuRenderer } from './AbstractWebGpuRenderer.js';
|
|
3
|
-
import { BlendModes } from '../types.js';
|
|
4
2
|
import { Texture } from '../texture/Texture.js';
|
|
3
|
+
import { BlendModes } from '../types.js';
|
|
4
|
+
import { AbstractWebGpuRenderer } from './AbstractWebGpuRenderer.js';
|
|
5
5
|
import { getWebGpuBlendState } from './WebGpuBlendState.js';
|
|
6
6
|
|
|
7
7
|
/// <reference types="@webgpu/types" />
|
|
@@ -81,6 +81,9 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
|
|
|
81
81
|
if (backend === null) {
|
|
82
82
|
throw new Error('WebGpuMeshRenderer is not connected to a backend.');
|
|
83
83
|
}
|
|
84
|
+
if (mesh.shader !== null) {
|
|
85
|
+
throw new Error('Mesh custom shaders are currently WebGL2-only. WebGPU support is planned for a future release; in the meantime use the WebGL2 backend or omit `shader` from the Mesh options.');
|
|
86
|
+
}
|
|
84
87
|
const vertexCount = mesh.vertexCount;
|
|
85
88
|
if (vertexCount === 0) {
|
|
86
89
|
return;
|
|
@@ -227,21 +230,14 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
|
|
|
227
230
|
if (typeof device.createRenderPipelineAsync !== 'function') {
|
|
228
231
|
return;
|
|
229
232
|
}
|
|
230
|
-
const blendModes = [
|
|
231
|
-
BlendModes.Normal,
|
|
232
|
-
BlendModes.Additive,
|
|
233
|
-
BlendModes.Subtract,
|
|
234
|
-
BlendModes.Multiply,
|
|
235
|
-
BlendModes.Screen,
|
|
236
|
-
];
|
|
233
|
+
const blendModes = [BlendModes.Normal, BlendModes.Additive, BlendModes.Subtract, BlendModes.Multiply, BlendModes.Screen];
|
|
237
234
|
const promises = [];
|
|
238
235
|
for (const blendMode of blendModes) {
|
|
239
236
|
for (const format of formats) {
|
|
240
237
|
const key = `${blendMode}:${format}`;
|
|
241
238
|
if (this._pipelines.has(key))
|
|
242
239
|
continue;
|
|
243
|
-
promises.push(device.createRenderPipelineAsync(this._buildPipelineDescriptor(blendMode, format))
|
|
244
|
-
.then((pipeline) => {
|
|
240
|
+
promises.push(device.createRenderPipelineAsync(this._buildPipelineDescriptor(blendMode, format)).then(pipeline => {
|
|
245
241
|
this._pipelines.set(key, pipeline);
|
|
246
242
|
}));
|
|
247
243
|
}
|
|
@@ -255,11 +251,13 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
|
|
|
255
251
|
this._device = backend.device;
|
|
256
252
|
this._shaderModule = this._device.createShaderModule({ code: meshShaderSource });
|
|
257
253
|
this._uniformBindGroupLayout = this._device.createBindGroupLayout({
|
|
258
|
-
entries: [
|
|
254
|
+
entries: [
|
|
255
|
+
{
|
|
259
256
|
binding: 0,
|
|
260
257
|
visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,
|
|
261
258
|
buffer: { type: 'uniform', hasDynamicOffset: true },
|
|
262
|
-
}
|
|
259
|
+
},
|
|
260
|
+
],
|
|
263
261
|
});
|
|
264
262
|
this._textureBindGroupLayout = this._device.createBindGroupLayout({
|
|
265
263
|
entries: [
|
|
@@ -304,9 +302,7 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
|
|
|
304
302
|
_writeMeshVertices(backend, mesh, vertexStart) {
|
|
305
303
|
// Bake (view * globalTransform) into vertex positions on the CPU,
|
|
306
304
|
// matching the primitive renderer's no-uniforms approach.
|
|
307
|
-
const matrix = this._combinedTransform
|
|
308
|
-
.copy(mesh.getGlobalTransform())
|
|
309
|
-
.combine(backend.view.getTransform());
|
|
305
|
+
const matrix = this._combinedTransform.copy(mesh.getGlobalTransform()).combine(backend.view.getTransform());
|
|
310
306
|
const a = matrix.a;
|
|
311
307
|
const b = matrix.b;
|
|
312
308
|
const c = matrix.c;
|
|
@@ -326,7 +322,7 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
|
|
|
326
322
|
this._float32View[targetIndex + 1] = c * px + d * py + ty;
|
|
327
323
|
this._float32View[targetIndex + 2] = uvs !== null ? uvs[sourceIndex] : 0;
|
|
328
324
|
this._float32View[targetIndex + 3] = uvs !== null ? uvs[sourceIndex + 1] : 0;
|
|
329
|
-
this._uint32View[targetIndex + 4] = colors !== null ? colors[i] :
|
|
325
|
+
this._uint32View[targetIndex + 4] = colors !== null ? colors[i] : 0xffffffff;
|
|
330
326
|
}
|
|
331
327
|
}
|
|
332
328
|
_getPipeline(key) {
|
|
@@ -344,7 +340,8 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
|
|
|
344
340
|
vertex: {
|
|
345
341
|
module: this._shaderModule,
|
|
346
342
|
entryPoint: 'vertexMain',
|
|
347
|
-
buffers: [
|
|
343
|
+
buffers: [
|
|
344
|
+
{
|
|
348
345
|
arrayStride: vertexStrideBytes,
|
|
349
346
|
stepMode: 'vertex',
|
|
350
347
|
attributes: [
|
|
@@ -352,16 +349,19 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
|
|
|
352
349
|
{ shaderLocation: 1, offset: 8, format: 'float32x2' },
|
|
353
350
|
{ shaderLocation: 2, offset: 16, format: 'unorm8x4' },
|
|
354
351
|
],
|
|
355
|
-
}
|
|
352
|
+
},
|
|
353
|
+
],
|
|
356
354
|
},
|
|
357
355
|
fragment: {
|
|
358
356
|
module: this._shaderModule,
|
|
359
357
|
entryPoint: 'fragmentMain',
|
|
360
|
-
targets: [
|
|
358
|
+
targets: [
|
|
359
|
+
{
|
|
361
360
|
format,
|
|
362
361
|
blend: getWebGpuBlendState(blendMode),
|
|
363
362
|
writeMask: GPUColorWrite.ALL,
|
|
364
|
-
}
|
|
363
|
+
},
|
|
364
|
+
],
|
|
365
365
|
},
|
|
366
366
|
primitive: {
|
|
367
367
|
topology: 'triangle-list',
|
|
@@ -426,10 +426,12 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
|
|
|
426
426
|
});
|
|
427
427
|
this._uniformBindGroup = this._device.createBindGroup({
|
|
428
428
|
layout: this._uniformBindGroupLayout,
|
|
429
|
-
entries: [
|
|
429
|
+
entries: [
|
|
430
|
+
{
|
|
430
431
|
binding: 0,
|
|
431
432
|
resource: { buffer: this._uniformBuffer, size: tintByteLength },
|
|
432
|
-
}
|
|
433
|
+
},
|
|
434
|
+
],
|
|
433
435
|
});
|
|
434
436
|
}
|
|
435
437
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebGpuMeshRenderer.js","sources":["../../../../../src/rendering/webgpu/WebGpuMeshRenderer.ts"],"sourcesContent":[null],"names":["TextureClass"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WebGpuMeshRenderer.js","sources":["../../../../../src/rendering/webgpu/WebGpuMeshRenderer.ts"],"sourcesContent":[null],"names":["TextureClass"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import type { ParticleSystem } from '@/particles/ParticleSystem';
|
|
1
2
|
import { AbstractWebGpuRenderer } from '@/rendering/webgpu/AbstractWebGpuRenderer';
|
|
2
3
|
import type { WebGpuBackend } from '@/rendering/webgpu/WebGpuBackend';
|
|
3
|
-
import type { ParticleSystem } from '@/particles/ParticleSystem';
|
|
4
4
|
export declare class WebGpuParticleRenderer extends AbstractWebGpuRenderer<ParticleSystem> {
|
|
5
5
|
private readonly _drawCalls;
|
|
6
6
|
private _drawCallCount;
|
|
@@ -28,5 +28,14 @@ export declare class WebGpuParticleRenderer extends AbstractWebGpuRenderer<Parti
|
|
|
28
28
|
private _ensureCapacity;
|
|
29
29
|
private _writeUniformData;
|
|
30
30
|
private _writeInstanceData;
|
|
31
|
+
/**
|
|
32
|
+
* Same atlas/UV-resolution as the WebGL2 path. Returns the per-frame
|
|
33
|
+
* (uvMin, uvMax) pairs derived from `system.frames` (or fallback to
|
|
34
|
+
* `system.textureFrame` when no atlas is declared), already flipY-
|
|
35
|
+
* adjusted for the current texture.
|
|
36
|
+
*/
|
|
37
|
+
private _uvMinsScratch;
|
|
38
|
+
private _uvMaxsScratch;
|
|
39
|
+
private _computeFrameUvs;
|
|
31
40
|
private _getPipeline;
|
|
32
41
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AbstractWebGpuRenderer } from './AbstractWebGpuRenderer.js';
|
|
2
1
|
import { Texture } from '../texture/Texture.js';
|
|
2
|
+
import { AbstractWebGpuRenderer } from './AbstractWebGpuRenderer.js';
|
|
3
3
|
import { getWebGpuBlendState } from './WebGpuBlendState.js';
|
|
4
4
|
|
|
5
5
|
/// <reference types="@webgpu/types" />
|
|
@@ -21,13 +21,15 @@ var particleTexture: texture_2d<f32>;
|
|
|
21
21
|
@group(1) @binding(1)
|
|
22
22
|
var particleSampler: sampler;
|
|
23
23
|
|
|
24
|
-
// Per-instance attributes (one entry per particle,
|
|
24
|
+
// Per-instance attributes (one entry per particle, 40 bytes total).
|
|
25
25
|
struct VertexInput {
|
|
26
26
|
@location(0) unitPosition: vec2<f32>, // per-vertex (static unit quad)
|
|
27
27
|
@location(1) translation: vec2<f32>,
|
|
28
28
|
@location(2) scale: vec2<f32>,
|
|
29
29
|
@location(3) rotation: f32,
|
|
30
30
|
@location(4) color: vec4<f32>,
|
|
31
|
+
@location(5) uvMin: vec2<f32>, // pre-resolved frame UV (top-left)
|
|
32
|
+
@location(6) uvMax: vec2<f32>, // pre-resolved frame UV (bottom-right)
|
|
31
33
|
};
|
|
32
34
|
|
|
33
35
|
struct VertexOutput {
|
|
@@ -40,8 +42,6 @@ struct VertexOutput {
|
|
|
40
42
|
fn vertexMain(input: VertexInput) -> VertexOutput {
|
|
41
43
|
let quadMin = uniforms.localBounds.xy;
|
|
42
44
|
let quadSize = uniforms.localBounds.zw;
|
|
43
|
-
let uvMin = uniforms.uvBounds.xy;
|
|
44
|
-
let uvMax = uniforms.uvBounds.zw;
|
|
45
45
|
|
|
46
46
|
let localPosition = quadMin + (input.unitPosition * quadSize);
|
|
47
47
|
let radians = radians(input.rotation);
|
|
@@ -55,7 +55,7 @@ fn vertexMain(input: VertexInput) -> VertexOutput {
|
|
|
55
55
|
var output: VertexOutput;
|
|
56
56
|
|
|
57
57
|
output.position = uniforms.projection * uniforms.translation * vec4<f32>(rotated, 0.0, 1.0);
|
|
58
|
-
output.texcoord = uvMin + ((uvMax - uvMin) * input.unitPosition);
|
|
58
|
+
output.texcoord = input.uvMin + ((input.uvMax - input.uvMin) * input.unitPosition);
|
|
59
59
|
output.color = vec4(input.color.rgb * input.color.a, input.color.a);
|
|
60
60
|
|
|
61
61
|
return output;
|
|
@@ -70,21 +70,13 @@ fn fragmentMain(input: VertexOutput) -> @location(0) vec4<f32> {
|
|
|
70
70
|
}
|
|
71
71
|
`;
|
|
72
72
|
const staticVertexStrideBytes = 8;
|
|
73
|
-
const instanceWords =
|
|
74
|
-
const instanceStrideBytes =
|
|
73
|
+
const instanceWords = 10;
|
|
74
|
+
const instanceStrideBytes = 40;
|
|
75
75
|
const indicesPerParticle = 6;
|
|
76
76
|
const uniformByteLength = 176;
|
|
77
77
|
const initialParticleCapacity = 1;
|
|
78
|
-
const staticVertexData = new Float32Array([
|
|
79
|
-
|
|
80
|
-
1, 0,
|
|
81
|
-
1, 1,
|
|
82
|
-
0, 1,
|
|
83
|
-
]);
|
|
84
|
-
const staticIndexData = new Uint16Array([
|
|
85
|
-
0, 1, 2,
|
|
86
|
-
0, 2, 3,
|
|
87
|
-
]);
|
|
78
|
+
const staticVertexData = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);
|
|
79
|
+
const staticIndexData = new Uint16Array([0, 1, 2, 0, 2, 3]);
|
|
88
80
|
class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
|
|
89
81
|
_drawCalls = [];
|
|
90
82
|
_drawCallCount = 0;
|
|
@@ -107,12 +99,7 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
|
|
|
107
99
|
render(system) {
|
|
108
100
|
const backend = this._backend;
|
|
109
101
|
const texture = system.texture;
|
|
110
|
-
if (backend === null
|
|
111
|
-
|| !(texture instanceof Texture)
|
|
112
|
-
|| texture.source === null
|
|
113
|
-
|| texture.width === 0
|
|
114
|
-
|| texture.height === 0
|
|
115
|
-
|| system.particles.length === 0) {
|
|
102
|
+
if (backend === null || !(texture instanceof Texture) || texture.source === null || texture.width === 0 || texture.height === 0 || system.liveCount === 0) {
|
|
116
103
|
return;
|
|
117
104
|
}
|
|
118
105
|
backend.setBlendMode(system.blendMode);
|
|
@@ -174,7 +161,7 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
|
|
|
174
161
|
for (let drawCallIndex = 0; drawCallIndex < this._drawCallCount; drawCallIndex++) {
|
|
175
162
|
const drawCall = this._drawCalls[drawCallIndex];
|
|
176
163
|
const system = drawCall.system;
|
|
177
|
-
const particleCount = system.
|
|
164
|
+
const particleCount = system.liveCount;
|
|
178
165
|
if (particleCount === 0) {
|
|
179
166
|
continue;
|
|
180
167
|
}
|
|
@@ -182,18 +169,32 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
|
|
|
182
169
|
const textureBinding = backend.getTextureBinding(drawCall.texture);
|
|
183
170
|
const textureBindGroup = device.createBindGroup({
|
|
184
171
|
layout: this._textureBindGroupLayout,
|
|
185
|
-
entries: [
|
|
172
|
+
entries: [
|
|
173
|
+
{
|
|
186
174
|
binding: 0,
|
|
187
175
|
resource: textureBinding.view,
|
|
188
|
-
},
|
|
176
|
+
},
|
|
177
|
+
{
|
|
189
178
|
binding: 1,
|
|
190
179
|
resource: textureBinding.sampler,
|
|
191
|
-
}
|
|
180
|
+
},
|
|
181
|
+
],
|
|
192
182
|
});
|
|
193
|
-
this._ensureCapacity(particleCount);
|
|
194
|
-
this._writeInstanceData(system.vertices, system.texCoords, system.particles);
|
|
195
183
|
this._writeUniformData(backend, system, drawCall.texture);
|
|
196
|
-
|
|
184
|
+
// GPU mode: the system's compute pipeline already wrote the
|
|
185
|
+
// interleaved instance data into its own buffer. Bind it
|
|
186
|
+
// directly — no CPU pack, no writeBuffer for instance data.
|
|
187
|
+
// CPU mode: pack from CPU SoA into our owned instance buffer.
|
|
188
|
+
let drawInstanceCount = particleCount;
|
|
189
|
+
const instanceBuffer = (() => {
|
|
190
|
+
if (system.gpuMode && system.gpuState !== null) {
|
|
191
|
+
return system.gpuState.instanceBuffer;
|
|
192
|
+
}
|
|
193
|
+
this._ensureCapacity(particleCount);
|
|
194
|
+
drawInstanceCount = this._writeInstanceData(system);
|
|
195
|
+
device.queue.writeBuffer(this._instanceBuffer, 0, this._instanceData, 0, drawInstanceCount * instanceStrideBytes);
|
|
196
|
+
return this._instanceBuffer;
|
|
197
|
+
})();
|
|
197
198
|
device.queue.writeBuffer(uniformBuffer, 0, this._uniformData.buffer, this._uniformData.byteOffset, this._uniformData.byteLength);
|
|
198
199
|
const encoder = device.createCommandEncoder();
|
|
199
200
|
const pass = encoder.beginRenderPass({
|
|
@@ -207,9 +208,9 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
|
|
|
207
208
|
pass.setPipeline(pipeline);
|
|
208
209
|
pass.setBindGroup(1, textureBindGroup);
|
|
209
210
|
pass.setVertexBuffer(0, staticVertexBuffer);
|
|
210
|
-
pass.setVertexBuffer(1,
|
|
211
|
+
pass.setVertexBuffer(1, instanceBuffer);
|
|
211
212
|
pass.setIndexBuffer(indexBuffer, 'uint16');
|
|
212
|
-
pass.drawIndexed(indicesPerParticle,
|
|
213
|
+
pass.drawIndexed(indicesPerParticle, drawInstanceCount, 0, 0, 0);
|
|
213
214
|
backend.stats.batches++;
|
|
214
215
|
backend.stats.drawCalls++;
|
|
215
216
|
pass.end();
|
|
@@ -225,28 +226,33 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
|
|
|
225
226
|
this._device = this._backend.device;
|
|
226
227
|
this._shaderModule = this._device.createShaderModule({ code: particleShaderSource });
|
|
227
228
|
this._uniformBindGroupLayout = this._device.createBindGroupLayout({
|
|
228
|
-
entries: [
|
|
229
|
+
entries: [
|
|
230
|
+
{
|
|
229
231
|
binding: 0,
|
|
230
232
|
visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,
|
|
231
233
|
buffer: {
|
|
232
234
|
type: 'uniform',
|
|
233
235
|
},
|
|
234
|
-
}
|
|
236
|
+
},
|
|
237
|
+
],
|
|
235
238
|
});
|
|
236
239
|
this._textureBindGroupLayout = this._device.createBindGroupLayout({
|
|
237
|
-
entries: [
|
|
240
|
+
entries: [
|
|
241
|
+
{
|
|
238
242
|
binding: 0,
|
|
239
243
|
visibility: GPUShaderStage.FRAGMENT,
|
|
240
244
|
texture: {
|
|
241
245
|
sampleType: 'float',
|
|
242
246
|
},
|
|
243
|
-
},
|
|
247
|
+
},
|
|
248
|
+
{
|
|
244
249
|
binding: 1,
|
|
245
250
|
visibility: GPUShaderStage.FRAGMENT,
|
|
246
251
|
sampler: {
|
|
247
252
|
type: 'filtering',
|
|
248
253
|
},
|
|
249
|
-
}
|
|
254
|
+
},
|
|
255
|
+
],
|
|
250
256
|
});
|
|
251
257
|
this._pipelineLayout = this._device.createPipelineLayout({
|
|
252
258
|
bindGroupLayouts: [this._uniformBindGroupLayout, this._textureBindGroupLayout],
|
|
@@ -257,12 +263,14 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
|
|
|
257
263
|
});
|
|
258
264
|
this._uniformBindGroup = this._device.createBindGroup({
|
|
259
265
|
layout: this._uniformBindGroupLayout,
|
|
260
|
-
entries: [
|
|
266
|
+
entries: [
|
|
267
|
+
{
|
|
261
268
|
binding: 0,
|
|
262
269
|
resource: {
|
|
263
270
|
buffer: this._uniformBuffer,
|
|
264
271
|
},
|
|
265
|
-
}
|
|
272
|
+
},
|
|
273
|
+
],
|
|
266
274
|
});
|
|
267
275
|
this._staticVertexBuffer = this._device.createBuffer({
|
|
268
276
|
size: staticVertexData.byteLength,
|
|
@@ -334,35 +342,133 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
|
|
|
334
342
|
const quadMinY = vertices[1];
|
|
335
343
|
const quadSizeX = vertices[2] - vertices[0];
|
|
336
344
|
const quadSizeY = vertices[3] - vertices[1];
|
|
337
|
-
const uvMinX = (texCoords[0] &
|
|
338
|
-
const uvMinY = ((texCoords[0] >>> 16) &
|
|
339
|
-
const uvMaxX = (texCoords[2] &
|
|
340
|
-
const uvMaxY = ((texCoords[2] >>> 16) &
|
|
345
|
+
const uvMinX = (texCoords[0] & 0xffff) / 0xffff;
|
|
346
|
+
const uvMinY = ((texCoords[0] >>> 16) & 0xffff) / 0xffff;
|
|
347
|
+
const uvMaxX = (texCoords[2] & 0xffff) / 0xffff;
|
|
348
|
+
const uvMaxY = ((texCoords[2] >>> 16) & 0xffff) / 0xffff;
|
|
341
349
|
this._uniformData.set([
|
|
342
|
-
projection[0],
|
|
343
|
-
projection[
|
|
344
|
-
0,
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
0,
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
350
|
+
projection[0],
|
|
351
|
+
projection[1],
|
|
352
|
+
0,
|
|
353
|
+
0,
|
|
354
|
+
projection[3],
|
|
355
|
+
projection[4],
|
|
356
|
+
0,
|
|
357
|
+
0,
|
|
358
|
+
0,
|
|
359
|
+
0,
|
|
360
|
+
1,
|
|
361
|
+
0,
|
|
362
|
+
projection[6],
|
|
363
|
+
projection[7],
|
|
364
|
+
0,
|
|
365
|
+
projection[8],
|
|
366
|
+
transform[0],
|
|
367
|
+
transform[1],
|
|
368
|
+
0,
|
|
369
|
+
0,
|
|
370
|
+
transform[3],
|
|
371
|
+
transform[4],
|
|
372
|
+
0,
|
|
373
|
+
0,
|
|
374
|
+
0,
|
|
375
|
+
0,
|
|
376
|
+
1,
|
|
377
|
+
0,
|
|
378
|
+
transform[6],
|
|
379
|
+
transform[7],
|
|
380
|
+
0,
|
|
381
|
+
transform[8],
|
|
382
|
+
shouldPremultiplySample ? 1 : 0,
|
|
383
|
+
0,
|
|
384
|
+
0,
|
|
385
|
+
0,
|
|
386
|
+
quadMinX,
|
|
387
|
+
quadMinY,
|
|
388
|
+
quadSizeX,
|
|
389
|
+
quadSizeY,
|
|
390
|
+
uvMinX,
|
|
391
|
+
uvMinY,
|
|
392
|
+
uvMaxX,
|
|
393
|
+
uvMaxY,
|
|
353
394
|
]);
|
|
354
395
|
}
|
|
355
|
-
_writeInstanceData(
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
396
|
+
_writeInstanceData(system) {
|
|
397
|
+
const { posX, posY, scaleX, scaleY, rotations, color, textureIndex, alive, liveCount } = system;
|
|
398
|
+
const f32 = this._float32View;
|
|
399
|
+
const u32 = this._uint32View;
|
|
400
|
+
const { uvMins, uvMaxs } = this._computeFrameUvs(system);
|
|
401
|
+
const frameCount = uvMins.length / 2;
|
|
402
|
+
let writeIndex = 0;
|
|
403
|
+
for (let particleIndex = 0; particleIndex < liveCount; particleIndex++) {
|
|
404
|
+
// Skip dead slots — present in GPU-mode systems where the live
|
|
405
|
+
// range can carry holes filled in on next spawn.
|
|
406
|
+
if (alive[particleIndex] === 0) {
|
|
407
|
+
continue;
|
|
408
|
+
}
|
|
409
|
+
const targetIndex = writeIndex * instanceWords;
|
|
410
|
+
const frame = textureIndex[particleIndex] < frameCount ? textureIndex[particleIndex] : 0;
|
|
411
|
+
const uvBase = frame * 2;
|
|
412
|
+
f32[targetIndex + 0] = posX[particleIndex];
|
|
413
|
+
f32[targetIndex + 1] = posY[particleIndex];
|
|
414
|
+
f32[targetIndex + 2] = scaleX[particleIndex];
|
|
415
|
+
f32[targetIndex + 3] = scaleY[particleIndex];
|
|
416
|
+
f32[targetIndex + 4] = rotations[particleIndex];
|
|
417
|
+
u32[targetIndex + 5] = color[particleIndex];
|
|
418
|
+
f32[targetIndex + 6] = uvMins[uvBase + 0];
|
|
419
|
+
f32[targetIndex + 7] = uvMins[uvBase + 1];
|
|
420
|
+
f32[targetIndex + 8] = uvMaxs[uvBase + 0];
|
|
421
|
+
f32[targetIndex + 9] = uvMaxs[uvBase + 1];
|
|
422
|
+
writeIndex++;
|
|
365
423
|
}
|
|
424
|
+
return writeIndex;
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Same atlas/UV-resolution as the WebGL2 path. Returns the per-frame
|
|
428
|
+
* (uvMin, uvMax) pairs derived from `system.frames` (or fallback to
|
|
429
|
+
* `system.textureFrame` when no atlas is declared), already flipY-
|
|
430
|
+
* adjusted for the current texture.
|
|
431
|
+
*/
|
|
432
|
+
_uvMinsScratch = new Float32Array(2);
|
|
433
|
+
_uvMaxsScratch = new Float32Array(2);
|
|
434
|
+
_computeFrameUvs(system) {
|
|
435
|
+
const frames = system.frames;
|
|
436
|
+
const tex = system.texture;
|
|
437
|
+
const texW = tex.width;
|
|
438
|
+
const texH = tex.height;
|
|
439
|
+
const flipY = tex.flipY;
|
|
440
|
+
const count = frames.length === 0 ? 1 : frames.length;
|
|
441
|
+
if (this._uvMinsScratch.length < count * 2) {
|
|
442
|
+
this._uvMinsScratch = new Float32Array(count * 2);
|
|
443
|
+
this._uvMaxsScratch = new Float32Array(count * 2);
|
|
444
|
+
}
|
|
445
|
+
const mins = this._uvMinsScratch;
|
|
446
|
+
const maxs = this._uvMaxsScratch;
|
|
447
|
+
if (frames.length === 0) {
|
|
448
|
+
const f = system.textureFrame;
|
|
449
|
+
const minU = f.left / texW;
|
|
450
|
+
const maxU = f.right / texW;
|
|
451
|
+
const topV = f.top / texH;
|
|
452
|
+
const bottomV = f.bottom / texH;
|
|
453
|
+
mins[0] = minU;
|
|
454
|
+
mins[1] = flipY ? bottomV : topV;
|
|
455
|
+
maxs[0] = maxU;
|
|
456
|
+
maxs[1] = flipY ? topV : bottomV;
|
|
457
|
+
return { uvMins: mins, uvMaxs: maxs };
|
|
458
|
+
}
|
|
459
|
+
for (let i = 0; i < frames.length; i++) {
|
|
460
|
+
const f = frames[i];
|
|
461
|
+
const o = i * 2;
|
|
462
|
+
const minU = f.left / texW;
|
|
463
|
+
const maxU = f.right / texW;
|
|
464
|
+
const topV = f.top / texH;
|
|
465
|
+
const bottomV = f.bottom / texH;
|
|
466
|
+
mins[o + 0] = minU;
|
|
467
|
+
mins[o + 1] = flipY ? bottomV : topV;
|
|
468
|
+
maxs[o + 0] = maxU;
|
|
469
|
+
maxs[o + 1] = flipY ? topV : bottomV;
|
|
470
|
+
}
|
|
471
|
+
return { uvMins: mins, uvMaxs: maxs };
|
|
366
472
|
}
|
|
367
473
|
_getPipeline(blendMode, format) {
|
|
368
474
|
const pipelineKey = `${blendMode}:${format}`;
|
|
@@ -375,43 +481,65 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
|
|
|
375
481
|
vertex: {
|
|
376
482
|
module: this._shaderModule,
|
|
377
483
|
entryPoint: 'vertexMain',
|
|
378
|
-
buffers: [
|
|
484
|
+
buffers: [
|
|
485
|
+
{
|
|
379
486
|
arrayStride: staticVertexStrideBytes,
|
|
380
|
-
attributes: [
|
|
487
|
+
attributes: [
|
|
488
|
+
{
|
|
381
489
|
shaderLocation: 0,
|
|
382
490
|
offset: 0,
|
|
383
491
|
format: 'float32x2',
|
|
384
|
-
}
|
|
385
|
-
|
|
492
|
+
},
|
|
493
|
+
],
|
|
494
|
+
},
|
|
495
|
+
{
|
|
386
496
|
arrayStride: instanceStrideBytes,
|
|
387
497
|
stepMode: 'instance',
|
|
388
|
-
attributes: [
|
|
498
|
+
attributes: [
|
|
499
|
+
{
|
|
389
500
|
shaderLocation: 1,
|
|
390
501
|
offset: 0,
|
|
391
502
|
format: 'float32x2',
|
|
392
|
-
},
|
|
503
|
+
},
|
|
504
|
+
{
|
|
393
505
|
shaderLocation: 2,
|
|
394
506
|
offset: 8,
|
|
395
507
|
format: 'float32x2',
|
|
396
|
-
},
|
|
508
|
+
},
|
|
509
|
+
{
|
|
397
510
|
shaderLocation: 3,
|
|
398
511
|
offset: 16,
|
|
399
512
|
format: 'float32',
|
|
400
|
-
},
|
|
513
|
+
},
|
|
514
|
+
{
|
|
401
515
|
shaderLocation: 4,
|
|
402
516
|
offset: 20,
|
|
403
517
|
format: 'unorm8x4',
|
|
404
|
-
}
|
|
405
|
-
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
shaderLocation: 5,
|
|
521
|
+
offset: 24,
|
|
522
|
+
format: 'float32x2',
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
shaderLocation: 6,
|
|
526
|
+
offset: 32,
|
|
527
|
+
format: 'float32x2',
|
|
528
|
+
},
|
|
529
|
+
],
|
|
530
|
+
},
|
|
531
|
+
],
|
|
406
532
|
},
|
|
407
533
|
fragment: {
|
|
408
534
|
module: this._shaderModule,
|
|
409
535
|
entryPoint: 'fragmentMain',
|
|
410
|
-
targets: [
|
|
536
|
+
targets: [
|
|
537
|
+
{
|
|
411
538
|
format,
|
|
412
539
|
blend: getWebGpuBlendState(blendMode),
|
|
413
540
|
writeMask: GPUColorWrite.ALL,
|
|
414
|
-
}
|
|
541
|
+
},
|
|
542
|
+
],
|
|
415
543
|
},
|
|
416
544
|
primitive: {
|
|
417
545
|
topology: 'triangle-list',
|