@codexo/exojs 0.8.4 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +99 -0
- package/README.md +34 -13
- package/dist/esm/animation/Tween.d.ts +20 -3
- package/dist/esm/animation/Tween.js +16 -8
- package/dist/esm/animation/Tween.js.map +1 -1
- package/dist/esm/animation/TweenManager.d.ts +16 -1
- package/dist/esm/animation/TweenManager.js +27 -2
- package/dist/esm/animation/TweenManager.js.map +1 -1
- package/dist/esm/audio/AudioAnalyser.d.ts +2 -0
- package/dist/esm/audio/AudioAnalyser.js +24 -9
- package/dist/esm/audio/AudioAnalyser.js.map +1 -1
- package/dist/esm/audio/AudioBus.d.ts +1 -0
- package/dist/esm/audio/AudioBus.js +8 -4
- package/dist/esm/audio/AudioBus.js.map +1 -1
- package/dist/esm/audio/AudioListener.d.ts +1 -0
- package/dist/esm/audio/AudioListener.js +7 -5
- package/dist/esm/audio/AudioListener.js.map +1 -1
- package/dist/esm/audio/AudioManager.d.ts +8 -2
- package/dist/esm/audio/AudioManager.js +14 -1
- package/dist/esm/audio/AudioManager.js.map +1 -1
- package/dist/esm/audio/BeatDetector.d.ts +2 -0
- package/dist/esm/audio/BeatDetector.js +27 -661
- package/dist/esm/audio/BeatDetector.js.map +1 -1
- package/dist/esm/audio/Music.d.ts +1 -0
- package/dist/esm/audio/Music.js +7 -3
- package/dist/esm/audio/Music.js.map +1 -1
- package/dist/esm/audio/OscillatorSound.d.ts +1 -0
- package/dist/esm/audio/OscillatorSound.js +7 -3
- package/dist/esm/audio/OscillatorSound.js.map +1 -1
- package/dist/esm/audio/Sound.d.ts +1 -0
- package/dist/esm/audio/Sound.js +7 -3
- package/dist/esm/audio/Sound.js.map +1 -1
- package/dist/esm/audio/audio-context.d.ts +2 -2
- package/dist/esm/audio/audio-context.js +4 -4
- package/dist/esm/audio/audio-context.js.map +1 -1
- package/dist/esm/audio/filters/ChorusFilter.d.ts +1 -0
- package/dist/esm/audio/filters/ChorusFilter.js +7 -3
- package/dist/esm/audio/filters/ChorusFilter.js.map +1 -1
- package/dist/esm/audio/filters/CompressorFilter.d.ts +1 -0
- package/dist/esm/audio/filters/CompressorFilter.js +7 -3
- package/dist/esm/audio/filters/CompressorFilter.js.map +1 -1
- package/dist/esm/audio/filters/DelayFilter.d.ts +1 -0
- package/dist/esm/audio/filters/DelayFilter.js +7 -3
- package/dist/esm/audio/filters/DelayFilter.js.map +1 -1
- package/dist/esm/audio/filters/EqualizerFilter.d.ts +1 -0
- package/dist/esm/audio/filters/EqualizerFilter.js +7 -3
- package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -1
- package/dist/esm/audio/filters/GranularFilter.js +1 -86
- package/dist/esm/audio/filters/GranularFilter.js.map +1 -1
- package/dist/esm/audio/filters/HighpassFilter.d.ts +1 -0
- package/dist/esm/audio/filters/HighpassFilter.js +7 -3
- package/dist/esm/audio/filters/HighpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/LowpassFilter.d.ts +1 -0
- package/dist/esm/audio/filters/LowpassFilter.js +7 -3
- package/dist/esm/audio/filters/LowpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/PitchShiftFilter.js +1 -71
- package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -1
- package/dist/esm/audio/filters/ReverbFilter.d.ts +1 -0
- package/dist/esm/audio/filters/ReverbFilter.js +7 -3
- package/dist/esm/audio/filters/ReverbFilter.js.map +1 -1
- package/dist/esm/audio/filters/VocoderFilter.js +1 -89
- package/dist/esm/audio/filters/VocoderFilter.js.map +1 -1
- package/dist/esm/audio/filters/WorkletFilter.d.ts +2 -0
- package/dist/esm/audio/filters/WorkletFilter.js +10 -5
- package/dist/esm/audio/filters/WorkletFilter.js.map +1 -1
- package/dist/esm/audio/index.d.ts +15 -10
- package/dist/esm/audio/worklet/registerWorklet.d.ts +1 -1
- package/dist/esm/audio/worklet/registerWorklet.js +2 -2
- package/dist/esm/audio/worklet/registerWorklet.js.map +1 -1
- package/dist/esm/audio/worklets/beat-detector.worklet.d.ts +1 -0
- package/dist/esm/audio/worklets/beat-detector.worklet.js +647 -0
- package/dist/esm/audio/worklets/beat-detector.worklet.js.map +1 -0
- package/dist/esm/audio/worklets/granular.worklet.d.ts +1 -0
- package/dist/esm/audio/worklets/granular.worklet.js +89 -0
- package/dist/esm/audio/worklets/granular.worklet.js.map +1 -0
- package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts +1 -0
- package/dist/esm/audio/worklets/pitch-shift.worklet.js +74 -0
- package/dist/esm/audio/worklets/pitch-shift.worklet.js.map +1 -0
- package/dist/esm/audio/worklets/vocoder.worklet.d.ts +1 -0
- package/dist/esm/audio/worklets/vocoder.worklet.js +92 -0
- package/dist/esm/audio/worklets/vocoder.worklet.js.map +1 -0
- package/dist/esm/core/Application.d.ts +86 -29
- package/dist/esm/core/Application.js +157 -47
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/Color.d.ts +0 -8
- package/dist/esm/core/Color.js +0 -24
- package/dist/esm/core/Color.js.map +1 -1
- package/dist/esm/core/Perf.d.ts +23 -0
- package/dist/esm/core/Perf.js +49 -0
- package/dist/esm/core/Perf.js.map +1 -0
- package/dist/esm/core/Scene.d.ts +40 -80
- package/dist/esm/core/Scene.js +63 -43
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.d.ts +11 -25
- package/dist/esm/core/SceneManager.js +37 -100
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +28 -17
- package/dist/esm/core/SceneNode.js +66 -42
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/Signal.d.ts +24 -28
- package/dist/esm/core/Signal.js +64 -50
- package/dist/esm/core/Signal.js.map +1 -1
- package/dist/esm/core/Timer.d.ts +1 -0
- package/dist/esm/core/Timer.js +3 -0
- package/dist/esm/core/Timer.js.map +1 -1
- package/dist/esm/core/capabilities.d.ts +2 -0
- package/dist/esm/core/capabilities.js +15 -0
- package/dist/esm/core/capabilities.js.map +1 -1
- package/dist/esm/core/index.d.ts +1 -0
- package/dist/esm/core/types.d.ts +1 -1
- package/dist/esm/core/utils.d.ts +12 -0
- package/dist/esm/core/utils.js +18 -1
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/debug/BoundingBoxesLayer.js +1 -1
- package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -1
- package/dist/esm/debug/HitTestLayer.js +1 -1
- package/dist/esm/debug/HitTestLayer.js.map +1 -1
- package/dist/esm/debug/PerformanceLayer.js +1 -2
- package/dist/esm/debug/PerformanceLayer.js.map +1 -1
- package/dist/esm/debug/PointerStackLayer.js +1 -2
- package/dist/esm/debug/PointerStackLayer.js.map +1 -1
- package/dist/esm/debug/RenderPassInspectorLayer.js +1 -2
- package/dist/esm/debug/RenderPassInspectorLayer.js.map +1 -1
- package/dist/esm/index.js +37 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/input/InputManager.d.ts +1 -0
- package/dist/esm/input/InputManager.js +30 -3
- package/dist/esm/input/InputManager.js.map +1 -1
- package/dist/esm/input/InteractionManager.d.ts +5 -2
- package/dist/esm/input/InteractionManager.js +29 -18
- package/dist/esm/input/InteractionManager.js.map +1 -1
- package/dist/esm/input/Pointer.js +3 -2
- package/dist/esm/input/Pointer.js.map +1 -1
- package/dist/esm/input/internal/interactionManagerRegistry.d.ts +9 -0
- package/dist/esm/input/internal/interactionManagerRegistry.js +10 -0
- package/dist/esm/input/internal/interactionManagerRegistry.js.map +1 -0
- package/dist/esm/math/AbstractVector.d.ts +1 -7
- package/dist/esm/math/AbstractVector.js +6 -20
- package/dist/esm/math/AbstractVector.js.map +1 -1
- package/dist/esm/math/Circle.js +0 -2
- package/dist/esm/math/Circle.js.map +1 -1
- package/dist/esm/math/Collision.d.ts +9 -3
- package/dist/esm/math/Ellipse.d.ts +2 -5
- package/dist/esm/math/Ellipse.js +10 -7
- package/dist/esm/math/Ellipse.js.map +1 -1
- package/dist/esm/math/ObservableVector.d.ts +1 -1
- package/dist/esm/math/ObservableVector.js +3 -3
- package/dist/esm/math/ObservableVector.js.map +1 -1
- package/dist/esm/math/Polygon.d.ts +0 -2
- package/dist/esm/math/Polygon.js +1 -9
- package/dist/esm/math/Polygon.js.map +1 -1
- package/dist/esm/math/Rectangle.js +0 -2
- package/dist/esm/math/Rectangle.js.map +1 -1
- package/dist/esm/math/collision-detection.d.ts +19 -4
- package/dist/esm/math/collision-detection.js +61 -4
- package/dist/esm/math/collision-detection.js.map +1 -1
- package/dist/esm/math/swept-collision.d.ts +16 -12
- package/dist/esm/math/swept-collision.js +109 -19
- package/dist/esm/math/swept-collision.js.map +1 -1
- package/dist/esm/particles/ParticleSystem.d.ts +8 -5
- package/dist/esm/particles/ParticleSystem.js +10 -6
- package/dist/esm/particles/ParticleSystem.js.map +1 -1
- package/dist/esm/particles/distributions/{Gradient.d.ts → ColorGradient.d.ts} +5 -5
- package/dist/esm/particles/distributions/{Gradient.js → ColorGradient.js} +5 -5
- package/dist/esm/particles/distributions/ColorGradient.js.map +1 -0
- package/dist/esm/particles/distributions/Distribution.d.ts +2 -2
- package/dist/esm/particles/distributions/index.d.ts +2 -2
- package/dist/esm/particles/gpu/ParticleGpuState.js +1 -1
- package/dist/esm/particles/index.d.ts +1 -0
- package/dist/esm/particles/modules/ColorOverLifetime.d.ts +3 -3
- package/dist/esm/particles/modules/ColorOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/ColorOverSpeed.d.ts +3 -3
- package/dist/esm/particles/modules/ColorOverSpeed.js.map +1 -1
- package/dist/esm/particles/modules/UpdateModule.d.ts +2 -2
- package/dist/esm/particles/modules/UpdateModule.js +1 -1
- package/dist/esm/particles/modules/WgslContribution.d.ts +2 -2
- package/dist/esm/rendering/CallbackRenderPass.d.ts +1 -0
- package/dist/esm/rendering/CallbackRenderPass.js +1 -0
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
- package/dist/esm/rendering/Camera.d.ts +33 -0
- package/dist/esm/rendering/Camera.js +38 -0
- package/dist/esm/rendering/Camera.js.map +1 -0
- package/dist/esm/rendering/Container.d.ts +7 -25
- package/dist/esm/rendering/Container.js +25 -87
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/Drawable.d.ts +8 -10
- package/dist/esm/rendering/Drawable.js +12 -20
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/RenderBackend.d.ts +19 -0
- package/dist/esm/rendering/RenderNode.d.ts +82 -11
- package/dist/esm/rendering/RenderNode.js +133 -163
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderPass.d.ts +1 -0
- package/dist/esm/rendering/RenderStats.d.ts +9 -0
- package/dist/esm/rendering/RenderStats.js +2 -0
- package/dist/esm/rendering/RenderStats.js.map +1 -1
- package/dist/esm/rendering/RenderTarget.d.ts +13 -0
- package/dist/esm/rendering/RenderTarget.js +13 -0
- package/dist/esm/rendering/RenderTarget.js.map +1 -1
- package/dist/esm/rendering/RenderTargetPass.js +17 -0
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
- package/dist/esm/rendering/RendererRegistry.d.ts +1 -0
- package/dist/esm/rendering/RendererRegistry.js +1 -0
- package/dist/esm/rendering/RendererRegistry.js.map +1 -1
- package/dist/esm/rendering/RenderingContext.d.ts +87 -0
- package/dist/esm/rendering/RenderingContext.js +157 -0
- package/dist/esm/rendering/RenderingContext.js.map +1 -0
- package/dist/esm/rendering/TransformBuffer.d.ts +38 -0
- package/dist/esm/rendering/TransformBuffer.js +116 -0
- package/dist/esm/rendering/TransformBuffer.js.map +1 -0
- package/dist/esm/rendering/View.d.ts +23 -0
- package/dist/esm/rendering/View.js +42 -0
- package/dist/esm/rendering/View.js.map +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +5 -12
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
- package/dist/esm/rendering/geometry/Geometry.d.ts +40 -0
- package/dist/esm/rendering/geometry/Geometry.js +228 -0
- package/dist/esm/rendering/geometry/Geometry.js.map +1 -0
- package/dist/esm/rendering/geometry/GeometryAttribute.d.ts +32 -0
- package/dist/esm/rendering/geometry/QuadGeometry.d.ts +5 -0
- package/dist/esm/rendering/gradient/Gradient.d.ts +34 -0
- package/dist/esm/rendering/gradient/Gradient.js +114 -0
- package/dist/esm/rendering/gradient/Gradient.js.map +1 -0
- package/dist/esm/rendering/gradient/LinearGradient.d.ts +10 -0
- package/dist/esm/rendering/gradient/LinearGradient.js +26 -0
- package/dist/esm/rendering/gradient/LinearGradient.js.map +1 -0
- package/dist/esm/rendering/gradient/RadialGradient.d.ts +10 -0
- package/dist/esm/rendering/gradient/RadialGradient.js +25 -0
- package/dist/esm/rendering/gradient/RadialGradient.js.map +1 -0
- package/dist/esm/rendering/index.d.ts +103 -59
- package/dist/esm/rendering/material/Material.d.ts +114 -0
- package/dist/esm/rendering/material/Material.js +111 -0
- package/dist/esm/rendering/material/Material.js.map +1 -0
- package/dist/esm/rendering/material/MaterialKey.d.ts +18 -0
- package/dist/esm/rendering/material/MaterialKey.js +82 -0
- package/dist/esm/rendering/material/MaterialKey.js.map +1 -0
- package/dist/esm/rendering/material/MeshMaterial.d.ts +16 -0
- package/dist/esm/rendering/material/MeshMaterial.js +21 -0
- package/dist/esm/rendering/material/MeshMaterial.js.map +1 -0
- package/dist/esm/rendering/{mesh/MeshShader.d.ts → material/ShaderSource.d.ts} +30 -62
- package/dist/esm/rendering/{mesh/MeshShader.js → material/ShaderSource.js} +36 -62
- package/dist/esm/rendering/material/ShaderSource.js.map +1 -0
- package/dist/esm/rendering/material/SpriteMaterial.d.ts +15 -0
- package/dist/esm/rendering/material/SpriteMaterial.js +20 -0
- package/dist/esm/rendering/material/SpriteMaterial.js.map +1 -0
- package/dist/esm/rendering/mesh/Mesh.d.ts +29 -12
- package/dist/esm/rendering/mesh/Mesh.js +123 -4
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/pass/RenderPassCoordinator.d.ts +63 -0
- package/dist/esm/rendering/pass/RenderPassDescriptor.d.ts +48 -0
- package/dist/esm/rendering/pass/RenderPassDescriptor.js +16 -0
- package/dist/esm/rendering/pass/RenderPassDescriptor.js.map +1 -0
- package/dist/esm/rendering/plan/RenderCommand.d.ts +67 -0
- package/dist/esm/rendering/plan/RenderCommand.js +94 -0
- package/dist/esm/rendering/plan/RenderCommand.js.map +1 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts +10 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.js +159 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlan.d.ts +23 -0
- package/dist/esm/rendering/plan/RenderPlan.js +12 -0
- package/dist/esm/rendering/plan/RenderPlan.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts +31 -0
- package/dist/esm/rendering/plan/RenderPlanBuilder.js +242 -0
- package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlanOptimizer.d.ts +10 -0
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js +180 -0
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.d.ts +9 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.js +56 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.js.map +1 -0
- package/dist/esm/rendering/plan/RenderScope.d.ts +70 -0
- package/dist/esm/rendering/plan/RenderScope.js +16 -0
- package/dist/esm/rendering/plan/RenderScope.js.map +1 -0
- package/dist/esm/rendering/plan/playRenderTree.d.ts +4 -0
- package/dist/esm/rendering/plan/playRenderTree.js +19 -0
- package/dist/esm/rendering/plan/playRenderTree.js.map +1 -0
- package/dist/esm/rendering/shader/Shader.d.ts +1 -0
- package/dist/esm/rendering/shader/Shader.js +1 -0
- package/dist/esm/rendering/shader/Shader.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderUniform.d.ts +1 -0
- package/dist/esm/rendering/shader/ShaderUniform.js +1 -0
- package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.d.ts +25 -3
- package/dist/esm/rendering/sprite/Sprite.js +48 -15
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/spriteMaterialSources.d.ts +36 -0
- package/dist/esm/rendering/sprite/spriteMaterialSources.js +128 -0
- package/dist/esm/rendering/sprite/spriteMaterialSources.js.map +1 -0
- package/dist/esm/rendering/text/AbstractText.d.ts +36 -0
- package/dist/esm/rendering/text/AbstractText.js +49 -0
- package/dist/esm/rendering/text/AbstractText.js.map +1 -0
- package/dist/esm/rendering/text/BitmapText.d.ts +97 -0
- package/dist/esm/rendering/text/BitmapText.js +220 -0
- package/dist/esm/rendering/text/BitmapText.js.map +1 -0
- package/dist/esm/rendering/text/BmFont.d.ts +50 -0
- package/dist/esm/rendering/text/BmFont.js +24 -0
- package/dist/esm/rendering/text/BmFont.js.map +1 -0
- package/dist/esm/rendering/text/GlyphAtlas.d.ts +104 -0
- package/dist/esm/rendering/text/GlyphAtlas.js +347 -0
- package/dist/esm/rendering/text/GlyphAtlas.js.map +1 -0
- package/dist/esm/rendering/text/GlyphAtlasPool.d.ts +40 -0
- package/dist/esm/rendering/text/GlyphAtlasPool.js +67 -0
- package/dist/esm/rendering/text/GlyphAtlasPool.js.map +1 -0
- package/dist/esm/rendering/text/GlyphSdf.d.ts +92 -0
- package/dist/esm/rendering/text/GlyphSdf.js +220 -0
- package/dist/esm/rendering/text/GlyphSdf.js.map +1 -0
- package/dist/esm/rendering/text/HTMLText.d.ts +107 -0
- package/dist/esm/rendering/text/HTMLText.js +284 -0
- package/dist/esm/rendering/text/HTMLText.js.map +1 -0
- package/dist/esm/rendering/text/LayoutOptions.d.ts +30 -0
- package/dist/esm/rendering/text/Text.d.ts +89 -20
- package/dist/esm/rendering/text/Text.js +176 -101
- package/dist/esm/rendering/text/Text.js.map +1 -1
- package/dist/esm/rendering/text/TextLayout.d.ts +20 -8
- package/dist/esm/rendering/text/TextLayout.js +234 -25
- package/dist/esm/rendering/text/TextLayout.js.map +1 -1
- package/dist/esm/rendering/text/TextStyle.d.ts +154 -87
- package/dist/esm/rendering/text/TextStyle.js +257 -203
- package/dist/esm/rendering/text/TextStyle.js.map +1 -1
- package/dist/esm/rendering/text/types.d.ts +73 -13
- package/dist/esm/rendering/texture/DataTexture.d.ts +5 -0
- package/dist/esm/rendering/texture/DataTexture.js +7 -0
- package/dist/esm/rendering/texture/DataTexture.js.map +1 -1
- package/dist/esm/rendering/texture/Texture.d.ts +1 -0
- package/dist/esm/rendering/texture/Texture.js +1 -0
- package/dist/esm/rendering/texture/Texture.js.map +1 -1
- package/dist/esm/rendering/types.d.ts +3 -1
- package/dist/esm/rendering/types.js +2 -0
- package/dist/esm/rendering/types.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +5 -8
- package/dist/esm/rendering/video/Video.js +12 -13
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +40 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +344 -27
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +22 -2
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +404 -112
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.d.ts +57 -0
- package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.js +79 -0
- package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +12 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +214 -58
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.d.ts +34 -0
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js +169 -0
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.d.ts +56 -0
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +486 -0
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/mesh.frag.js +1 -1
- package/dist/esm/rendering/webgl2/glsl/mesh.vert.js +1 -1
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.vert.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/text-color.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/text-color.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/text-msdf.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/text-msdf.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/text-sdf.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/text-sdf.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/text.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/text.vert.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +50 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +151 -27
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js +26 -0
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +22 -17
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +26 -2
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +511 -89
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +13 -17
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts +141 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js +270 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +16 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +344 -27
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts +57 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +257 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilState.d.ts +14 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilState.js +36 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilState.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts +70 -0
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +775 -0
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +16 -0
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +57 -0
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -0
- package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js +96 -0
- package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js.map +1 -0
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js +68 -0
- package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js.map +1 -0
- package/dist/esm/resources/Asset.d.ts +23 -0
- package/dist/esm/resources/Asset.js +23 -0
- package/dist/esm/resources/Asset.js.map +1 -0
- package/dist/esm/resources/AssetDefinitions.d.ts +137 -0
- package/dist/esm/resources/Assets.d.ts +35 -0
- package/dist/esm/resources/Assets.js +32 -0
- package/dist/esm/resources/Assets.js.map +1 -0
- package/dist/esm/resources/IndexedDbDatabase.js +17 -1
- package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
- package/dist/esm/resources/IndexedDbStore.js +17 -1
- package/dist/esm/resources/IndexedDbStore.js.map +1 -1
- package/dist/esm/resources/JsonStore.d.ts +18 -0
- package/dist/esm/resources/JsonStore.js +62 -0
- package/dist/esm/resources/JsonStore.js.map +1 -0
- package/dist/esm/resources/Loader.d.ts +244 -18
- package/dist/esm/resources/Loader.js +456 -50
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/esm/resources/LoadingQueue.d.ts +28 -0
- package/dist/esm/resources/LoadingQueue.js +59 -0
- package/dist/esm/resources/LoadingQueue.js.map +1 -0
- package/dist/esm/resources/factories/BmFontFactory.d.ts +25 -0
- package/dist/esm/resources/factories/BmFontFactory.js +96 -0
- package/dist/esm/resources/factories/BmFontFactory.js.map +1 -0
- package/dist/esm/resources/factories/CsvFactory.d.ts +35 -0
- package/dist/esm/resources/factories/CsvFactory.js +87 -0
- package/dist/esm/resources/factories/CsvFactory.js.map +1 -0
- package/dist/esm/resources/factories/ImageFactory.d.ts +14 -8
- package/dist/esm/resources/factories/ImageFactory.js +13 -6
- package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
- package/dist/esm/resources/factories/MusicFactory.d.ts +8 -2
- package/dist/esm/resources/factories/MusicFactory.js +25 -14
- package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
- package/dist/esm/resources/factories/SoundFactory.d.ts +2 -2
- package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
- package/dist/esm/resources/factories/SubtitleFactory.d.ts +28 -0
- package/dist/esm/resources/factories/SubtitleFactory.js +203 -0
- package/dist/esm/resources/factories/SubtitleFactory.js.map +1 -0
- package/dist/esm/resources/factories/SvgFactory.d.ts +18 -1
- package/dist/esm/resources/factories/SvgFactory.js +21 -2
- package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextureFactory.d.ts +4 -4
- package/dist/esm/resources/factories/TextureFactory.js +8 -4
- package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
- package/dist/esm/resources/factories/VideoFactory.d.ts +8 -2
- package/dist/esm/resources/factories/VideoFactory.js +27 -20
- package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
- package/dist/esm/resources/factories/XmlFactory.d.ts +24 -0
- package/dist/esm/resources/factories/XmlFactory.js +37 -0
- package/dist/esm/resources/factories/XmlFactory.js.map +1 -0
- package/dist/esm/resources/index.d.ts +9 -1
- package/dist/esm/resources/tokens.d.ts +49 -3
- package/dist/esm/resources/tokens.js +50 -4
- package/dist/esm/resources/tokens.js.map +1 -1
- package/dist/exo.esm.js +15382 -8078
- package/dist/exo.esm.js.map +1 -1
- package/package.json +34 -16
- package/dist/esm/input/interaction-hooks.d.ts +0 -34
- package/dist/esm/input/interaction-hooks.js +0 -35
- package/dist/esm/input/interaction-hooks.js.map +0 -1
- package/dist/esm/particles/distributions/Gradient.js.map +0 -1
- package/dist/esm/rendering/mesh/MeshShader.js.map +0 -1
- package/dist/esm/rendering/text/DynamicGlyphAtlas.d.ts +0 -33
- package/dist/esm/rendering/text/DynamicGlyphAtlas.js +0 -134
- package/dist/esm/rendering/text/DynamicGlyphAtlas.js.map +0 -1
- package/dist/esm/rendering/text/atlas-singleton.d.ts +0 -7
- package/dist/esm/rendering/text/atlas-singleton.js +0 -17
- package/dist/esm/rendering/text/atlas-singleton.js.map +0 -1
- package/dist/esm/resources/factories/VttFactory.d.ts +0 -24
- package/dist/esm/resources/factories/VttFactory.js +0 -158
- package/dist/esm/resources/factories/VttFactory.js.map +0 -1
- package/dist/esm/vendor/webgl-debug.js +0 -1160
- package/dist/esm/vendor/webgl-debug.js.map +0 -1
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { Matrix } from '../../math/Matrix.js';
|
|
2
|
+
import { WebGpuStencilClipper } from './WebGpuStencilClipper.js';
|
|
3
|
+
export { stencilAttachmentFormat } from './WebGpuStencilClipper.js';
|
|
4
|
+
|
|
5
|
+
/// <reference types="@webgpu/types" />
|
|
6
|
+
/**
|
|
7
|
+
* WebGPU implementation of {@link RenderPassCoordinator}.
|
|
8
|
+
*
|
|
9
|
+
* Owns the GPU render-pass mechanics (acquire/end the active
|
|
10
|
+
* `GPURenderPassEncoder`), the clear-vs-load decision, and — from phase 12E —
|
|
11
|
+
* geometric stencil clipping: a per-target `depth24plus-stencil8` attachment
|
|
12
|
+
* shared across the multiple submits of a clip scope (via `stencilLoadOp:'load'`)
|
|
13
|
+
* plus a position-only stencil-write pipeline. Renderers select stencil-enabled
|
|
14
|
+
* content pipelines while {@link stencilActive} is true.
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
class WebGpuPassCoordinator {
|
|
18
|
+
_backend;
|
|
19
|
+
_stencil = new WebGpuStencilClipper();
|
|
20
|
+
_stencilDepths = new Map();
|
|
21
|
+
_stencilStacks = new Map();
|
|
22
|
+
_stencilConnected = false;
|
|
23
|
+
_stencilWriteInProgress = false;
|
|
24
|
+
_stencilLoadOp = 'load';
|
|
25
|
+
_stencilRef = 0;
|
|
26
|
+
_active = null;
|
|
27
|
+
constructor(backend) {
|
|
28
|
+
this._backend = backend;
|
|
29
|
+
}
|
|
30
|
+
get activeTarget() {
|
|
31
|
+
return this._backend.renderTarget;
|
|
32
|
+
}
|
|
33
|
+
get activeView() {
|
|
34
|
+
return this._backend.view;
|
|
35
|
+
}
|
|
36
|
+
get hasActivePass() {
|
|
37
|
+
return this._active !== null;
|
|
38
|
+
}
|
|
39
|
+
/** The open GPU pass, or `null` when none is open. @internal */
|
|
40
|
+
get activePass() {
|
|
41
|
+
return this._active;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Whether a geometric stencil clip is currently in effect on the active
|
|
45
|
+
* target. Renderers read this to select a stencil-enabled content pipeline
|
|
46
|
+
* (matching the depth/stencil attachment {@link acquirePass} adds).
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
49
|
+
get stencilActive() {
|
|
50
|
+
return this._stencilWriteInProgress || this._activeTargetDepth() > 0;
|
|
51
|
+
}
|
|
52
|
+
/** Current stencil reference value content pipelines must test against. @internal */
|
|
53
|
+
get stencilReference() {
|
|
54
|
+
return this._stencilRef;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Open (or return the already-open) GPU render pass for the backend's current
|
|
58
|
+
* target/view. Resolves colour load/clear via {@link createColorAttachment},
|
|
59
|
+
* counts the pass, applies the active scissor, and — when a stencil clip is in
|
|
60
|
+
* effect — attaches the per-target depth/stencil buffer and sets the reference.
|
|
61
|
+
*/
|
|
62
|
+
acquirePass() {
|
|
63
|
+
if (this._active !== null) {
|
|
64
|
+
return this._active;
|
|
65
|
+
}
|
|
66
|
+
const backend = this._backend;
|
|
67
|
+
const stencilEnabled = this.stencilActive;
|
|
68
|
+
const descriptor = {
|
|
69
|
+
colorAttachments: [backend.createColorAttachment()],
|
|
70
|
+
};
|
|
71
|
+
if (stencilEnabled) {
|
|
72
|
+
descriptor.depthStencilAttachment = this._createStencilAttachment(backend.renderTarget);
|
|
73
|
+
}
|
|
74
|
+
const encoder = backend.device.createCommandEncoder();
|
|
75
|
+
const pass = encoder.beginRenderPass(descriptor);
|
|
76
|
+
backend.stats.renderPasses++;
|
|
77
|
+
const scissor = backend.getScissorRect();
|
|
78
|
+
if (scissor !== null && scissor.width > 0 && scissor.height > 0) {
|
|
79
|
+
pass.setScissorRect(scissor.x, scissor.y, scissor.width, scissor.height);
|
|
80
|
+
}
|
|
81
|
+
if (stencilEnabled) {
|
|
82
|
+
pass.setStencilReference(this._stencilRef);
|
|
83
|
+
}
|
|
84
|
+
this._active = {
|
|
85
|
+
encoder,
|
|
86
|
+
pass,
|
|
87
|
+
targetFormat: backend.renderTargetFormat,
|
|
88
|
+
view: backend.view,
|
|
89
|
+
stencilEnabled,
|
|
90
|
+
stencilRef: this._stencilRef,
|
|
91
|
+
};
|
|
92
|
+
return this._active;
|
|
93
|
+
}
|
|
94
|
+
/** End and submit the active GPU pass, if any. Idempotent. */
|
|
95
|
+
endPass() {
|
|
96
|
+
const active = this._active;
|
|
97
|
+
if (active === null) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
this._active = null;
|
|
101
|
+
active.pass.end();
|
|
102
|
+
this._backend.submit(active.encoder.finish());
|
|
103
|
+
}
|
|
104
|
+
beginPass(descriptor) {
|
|
105
|
+
this._backend.setRenderTarget(descriptor.target);
|
|
106
|
+
this._backend.setView(descriptor.view);
|
|
107
|
+
if (descriptor.load === 'clear') {
|
|
108
|
+
this._backend.clear(descriptor.clearColor ?? undefined);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
withChildPass(descriptor, body) {
|
|
112
|
+
const previousTarget = this._backend.renderTarget;
|
|
113
|
+
const previousView = this._backend.view;
|
|
114
|
+
this.beginPass(descriptor);
|
|
115
|
+
try {
|
|
116
|
+
body();
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
// setRenderTarget flushes the active renderer on change, which self-closes
|
|
120
|
+
// its GPU pass, so the child's draws are committed into the child target
|
|
121
|
+
// before the bind switches back.
|
|
122
|
+
this._backend.setRenderTarget(previousTarget);
|
|
123
|
+
this._backend.setView(previousView);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
pushScissorRect(bounds) {
|
|
127
|
+
this._backend.pushScissorRect(bounds);
|
|
128
|
+
}
|
|
129
|
+
popScissorRect() {
|
|
130
|
+
this._backend.popScissorRect();
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Establish a geometric stencil clip on the active target. The shape silhouette
|
|
134
|
+
* is incremented into the stencil buffer where it covers the already-valid
|
|
135
|
+
* region (intersection on nesting); subsequent content draws are restricted to
|
|
136
|
+
* the new depth via the stencil-enabled content pipelines.
|
|
137
|
+
*/
|
|
138
|
+
pushStencilClip(shape, transform) {
|
|
139
|
+
const target = this._backend.renderTarget;
|
|
140
|
+
const depth = this._stencilDepths.get(target) ?? 0;
|
|
141
|
+
if (depth >= 255) {
|
|
142
|
+
throw new Error('Stencil clip nesting exceeds the 255-level limit.');
|
|
143
|
+
}
|
|
144
|
+
this._connectStencil();
|
|
145
|
+
this.endPass();
|
|
146
|
+
// The write pass tests stencil == depth and increments to depth+1. At the
|
|
147
|
+
// outermost level the stencil aspect is cleared first so stale values from a
|
|
148
|
+
// previous frame cannot leak in; deeper levels load the existing buffer.
|
|
149
|
+
this._stencilWriteInProgress = true;
|
|
150
|
+
this._stencilRef = depth;
|
|
151
|
+
this._stencilLoadOp = depth === 0 ? 'clear' : 'load';
|
|
152
|
+
const active = this.acquirePass();
|
|
153
|
+
this._stencil.draw(active.pass, active.targetFormat, true, shape, transform, active.view);
|
|
154
|
+
this.endPass();
|
|
155
|
+
this._stencilWriteInProgress = false;
|
|
156
|
+
this._stencilDepths.set(target, depth + 1);
|
|
157
|
+
this._stencilRef = depth + 1;
|
|
158
|
+
this._getStencilStack(target).push({ shape, transform: new Matrix().copy(transform) });
|
|
159
|
+
}
|
|
160
|
+
/** Pop the most recent stencil clip on the active target, restoring the outer level. */
|
|
161
|
+
popStencilClip() {
|
|
162
|
+
const target = this._backend.renderTarget;
|
|
163
|
+
const stack = this._stencilStacks.get(target);
|
|
164
|
+
const entry = stack?.pop();
|
|
165
|
+
if (entry === undefined) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
const depth = this._stencilDepths.get(target) ?? 0;
|
|
169
|
+
this.endPass();
|
|
170
|
+
// The decrement pass tests stencil == depth and decrements the region this
|
|
171
|
+
// clip incremented, restoring the outer level. The stencil aspect is loaded.
|
|
172
|
+
this._stencilWriteInProgress = true;
|
|
173
|
+
this._stencilRef = depth;
|
|
174
|
+
this._stencilLoadOp = 'load';
|
|
175
|
+
const active = this.acquirePass();
|
|
176
|
+
this._stencil.draw(active.pass, active.targetFormat, false, entry.shape, entry.transform, active.view);
|
|
177
|
+
this.endPass();
|
|
178
|
+
this._stencilWriteInProgress = false;
|
|
179
|
+
this._stencilDepths.set(target, depth - 1);
|
|
180
|
+
this._stencilRef = depth - 1;
|
|
181
|
+
}
|
|
182
|
+
resolveLoad(target, clearRequested) {
|
|
183
|
+
// Clear when explicitly requested or when the target holds no content to
|
|
184
|
+
// preserve; otherwise load, so a render texture keeps its prior contents
|
|
185
|
+
// across multiple passes in the same frame.
|
|
186
|
+
return clearRequested || !this._backend._targetHasContent(target) ? 'clear' : 'load';
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Drop a target's cached stencil attachment and clip state. Called when the
|
|
190
|
+
* target is destroyed so a pooled render texture never reuses a stale buffer.
|
|
191
|
+
* @internal
|
|
192
|
+
*/
|
|
193
|
+
releaseStencilTarget(target) {
|
|
194
|
+
if (this._stencilConnected) {
|
|
195
|
+
this._stencil.releaseAttachment(target);
|
|
196
|
+
}
|
|
197
|
+
this._stencilDepths.delete(target);
|
|
198
|
+
this._stencilStacks.delete(target);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Drop all stencil clip bookkeeping (depths, stacks, write/ref state). Invoked
|
|
202
|
+
* on the unbalanced-clip recovery path at the end of a draw plan (see
|
|
203
|
+
* `WebGpuBackend._endDrawPlan`) so a leaked clip cannot corrupt the next frame;
|
|
204
|
+
* backend destroy / device loss go through `destroyStencil` instead. @internal
|
|
205
|
+
*/
|
|
206
|
+
resetStencil() {
|
|
207
|
+
this._stencilDepths.clear();
|
|
208
|
+
this._stencilStacks.clear();
|
|
209
|
+
this._stencilWriteInProgress = false;
|
|
210
|
+
this._stencilRef = 0;
|
|
211
|
+
}
|
|
212
|
+
/** Tear down all stencil GPU resources (device loss / backend destroy). @internal */
|
|
213
|
+
destroyStencil() {
|
|
214
|
+
if (this._stencilConnected) {
|
|
215
|
+
this._stencil.disconnect();
|
|
216
|
+
this._stencilConnected = false;
|
|
217
|
+
}
|
|
218
|
+
this._stencilDepths.clear();
|
|
219
|
+
this._stencilStacks.clear();
|
|
220
|
+
this._stencilWriteInProgress = false;
|
|
221
|
+
this._stencilRef = 0;
|
|
222
|
+
}
|
|
223
|
+
/** Number of unpopped stencil clips across all targets (balance assertion). @internal */
|
|
224
|
+
unbalancedStencilClips() {
|
|
225
|
+
let total = 0;
|
|
226
|
+
for (const stack of this._stencilStacks.values()) {
|
|
227
|
+
total += stack.length;
|
|
228
|
+
}
|
|
229
|
+
return total;
|
|
230
|
+
}
|
|
231
|
+
_activeTargetDepth() {
|
|
232
|
+
return this._stencilDepths.get(this._backend.renderTarget) ?? 0;
|
|
233
|
+
}
|
|
234
|
+
_connectStencil() {
|
|
235
|
+
if (!this._stencilConnected) {
|
|
236
|
+
this._stencil.connect(this._backend.device);
|
|
237
|
+
this._stencilConnected = true;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
_getStencilStack(target) {
|
|
241
|
+
let stack = this._stencilStacks.get(target);
|
|
242
|
+
if (stack === undefined) {
|
|
243
|
+
stack = [];
|
|
244
|
+
this._stencilStacks.set(target, stack);
|
|
245
|
+
}
|
|
246
|
+
return stack;
|
|
247
|
+
}
|
|
248
|
+
_createStencilAttachment(target) {
|
|
249
|
+
// Size the stencil attachment to the colour attachment's physical pixels, not
|
|
250
|
+
// the target's logical size. The root canvas backing store is logical ×
|
|
251
|
+
// pixelRatio, so a logical-sized stencil buffer would mismatch the
|
|
252
|
+
// getCurrentTexture() colour attachment at pixelRatio > 1; RenderTexture
|
|
253
|
+
// targets report the same size for both, so they are unaffected.
|
|
254
|
+
const { width, height } = this._backend._getAttachmentPixelSize(target);
|
|
255
|
+
const view = this._stencil.getAttachmentView(target, width, height);
|
|
256
|
+
const stencilLoadOp = this._stencilLoadOp;
|
|
257
|
+
// Consumed once; subsequent passes within the clip scope load the buffer.
|
|
258
|
+
this._stencilLoadOp = 'load';
|
|
259
|
+
return {
|
|
260
|
+
view,
|
|
261
|
+
depthReadOnly: true,
|
|
262
|
+
stencilLoadOp,
|
|
263
|
+
stencilStoreOp: 'store',
|
|
264
|
+
stencilClearValue: 0,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
export { WebGpuPassCoordinator };
|
|
270
|
+
//# sourceMappingURL=WebGpuPassCoordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGpuPassCoordinator.js","sources":["../../../../../src/rendering/webgpu/WebGpuPassCoordinator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -22,9 +22,17 @@ export declare class WebGpuSpriteRenderer extends AbstractWebGpuRenderer<Sprite>
|
|
|
22
22
|
private _slotCount;
|
|
23
23
|
private _instanceCount;
|
|
24
24
|
private _currentBlendMode;
|
|
25
|
+
private readonly _customMaterials;
|
|
26
|
+
private _customBaseTextureLayout;
|
|
27
|
+
private _currentMaterial;
|
|
28
|
+
private _currentBaseTexture;
|
|
25
29
|
protected onConnect(backend: WebGpuBackend): void;
|
|
26
30
|
protected onDisconnect(): void;
|
|
27
31
|
render(sprite: Sprite): void;
|
|
32
|
+
/** Default multi-texture path: rotate the base texture through 8 slots. */
|
|
33
|
+
private _renderDefault;
|
|
34
|
+
/** Custom-material path: single base texture on group(1), instanced. */
|
|
35
|
+
private _renderCustom;
|
|
28
36
|
flush(): void;
|
|
29
37
|
destroy(): void;
|
|
30
38
|
/**
|
|
@@ -45,4 +53,12 @@ export declare class WebGpuSpriteRenderer extends AbstractWebGpuRenderer<Sprite>
|
|
|
45
53
|
private _createTextureBindGroup;
|
|
46
54
|
private _getPipeline;
|
|
47
55
|
private _buildPipelineDescriptor;
|
|
56
|
+
private _drawCustomBatch;
|
|
57
|
+
private _getOrCreateCustomResources;
|
|
58
|
+
private _getOrCreateCustomPipeline;
|
|
59
|
+
private _getCustomBaseTextureBindGroup;
|
|
60
|
+
private _buildUserBindGroupLayout;
|
|
61
|
+
private _uploadUserUniforms;
|
|
62
|
+
private _buildUserBindGroup;
|
|
63
|
+
private _releaseCustomResources;
|
|
48
64
|
}
|