@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,70 @@
|
|
|
1
|
+
import type { Rectangle } from '@/math/Rectangle';
|
|
2
|
+
import type { Filter } from '@/rendering/filters/Filter';
|
|
3
|
+
import type { Geometry } from '@/rendering/geometry/Geometry';
|
|
4
|
+
import type { MaskSource, RenderNode } from '@/rendering/RenderNode';
|
|
5
|
+
import type { BlendModes } from '@/rendering/types';
|
|
6
|
+
import type { DrawCommand, RenderEntryKind } from './RenderCommand';
|
|
7
|
+
/**
|
|
8
|
+
* Geometric clip kind for a {@link RenderNode}'s `clip`/`clipShape`. Distinct
|
|
9
|
+
* from `maskSource` (alpha/visibility masking): `Rect` uses the GPU scissor
|
|
10
|
+
* fast path, `Stencil` writes a {@link Geometry} silhouette into the stencil
|
|
11
|
+
* buffer. `maskSource` continues to drive the separate alpha-mask machinery.
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export declare const enum ClipKind {
|
|
15
|
+
None = 0,
|
|
16
|
+
Rect = 1,
|
|
17
|
+
Stencil = 2
|
|
18
|
+
}
|
|
19
|
+
/** @internal */
|
|
20
|
+
export interface EffectDescriptor {
|
|
21
|
+
readonly filters: readonly Filter[];
|
|
22
|
+
readonly clip: ClipKind;
|
|
23
|
+
readonly clipShape: Rectangle | Geometry | null;
|
|
24
|
+
readonly maskSource: MaskSource;
|
|
25
|
+
readonly cacheAsBitmap: boolean;
|
|
26
|
+
readonly blendMode: BlendModes;
|
|
27
|
+
}
|
|
28
|
+
/** @internal */
|
|
29
|
+
export interface DrawScopeEntry {
|
|
30
|
+
readonly kind: RenderEntryKind.Draw;
|
|
31
|
+
readonly seq: number;
|
|
32
|
+
readonly zIndex: number;
|
|
33
|
+
readonly command: DrawCommand;
|
|
34
|
+
}
|
|
35
|
+
/** @internal */
|
|
36
|
+
export interface GroupScopeEntry {
|
|
37
|
+
readonly kind: RenderEntryKind.Group;
|
|
38
|
+
readonly seq: number;
|
|
39
|
+
readonly zIndex: number;
|
|
40
|
+
readonly scope: GroupScope;
|
|
41
|
+
}
|
|
42
|
+
/** @internal */
|
|
43
|
+
export interface BarrierScopeEntry {
|
|
44
|
+
readonly kind: RenderEntryKind.Barrier;
|
|
45
|
+
readonly seq: number;
|
|
46
|
+
readonly zIndex: number;
|
|
47
|
+
readonly scope: BarrierScope;
|
|
48
|
+
}
|
|
49
|
+
/** @internal */
|
|
50
|
+
export type ScopeEntry = DrawScopeEntry | GroupScopeEntry | BarrierScopeEntry;
|
|
51
|
+
/** @internal */
|
|
52
|
+
export interface GroupScope {
|
|
53
|
+
readonly kind: RenderEntryKind.Group;
|
|
54
|
+
entries: ScopeEntry[];
|
|
55
|
+
hasMixedZ: boolean;
|
|
56
|
+
preserveDrawOrder: boolean;
|
|
57
|
+
}
|
|
58
|
+
/** @internal */
|
|
59
|
+
export interface BarrierScope {
|
|
60
|
+
readonly kind: RenderEntryKind.Barrier;
|
|
61
|
+
readonly node: RenderNode;
|
|
62
|
+
readonly effect: EffectDescriptor;
|
|
63
|
+
childPlan: GroupScope | null;
|
|
64
|
+
left: number;
|
|
65
|
+
top: number;
|
|
66
|
+
width: number;
|
|
67
|
+
height: number;
|
|
68
|
+
}
|
|
69
|
+
/** @internal */
|
|
70
|
+
export type RenderScope = GroupScope | BarrierScope;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Geometric clip kind for a {@link RenderNode}'s `clip`/`clipShape`. Distinct
|
|
3
|
+
* from `maskSource` (alpha/visibility masking): `Rect` uses the GPU scissor
|
|
4
|
+
* fast path, `Stencil` writes a {@link Geometry} silhouette into the stencil
|
|
5
|
+
* buffer. `maskSource` continues to drive the separate alpha-mask machinery.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
var ClipKind;
|
|
9
|
+
(function (ClipKind) {
|
|
10
|
+
ClipKind[ClipKind["None"] = 0] = "None";
|
|
11
|
+
ClipKind[ClipKind["Rect"] = 1] = "Rect";
|
|
12
|
+
ClipKind[ClipKind["Stencil"] = 2] = "Stencil";
|
|
13
|
+
})(ClipKind || (ClipKind = {}));
|
|
14
|
+
|
|
15
|
+
export { ClipKind };
|
|
16
|
+
//# sourceMappingURL=RenderScope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderScope.js","sources":["../../../../../src/rendering/plan/RenderScope.ts"],"sourcesContent":[null],"names":[],"mappings":"AAQA;;;;;;AAMG;IACe;AAAlB,CAAA,UAAkB,QAAQ,EAAA;AACxB,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,QAAA,CAAA,QAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACT,CAAC,EAJiB,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RenderBackend } from '@/rendering/RenderBackend';
|
|
2
|
+
import type { RenderNode } from '@/rendering/RenderNode';
|
|
3
|
+
/** @internal — single source of truth for plan build→optimize→play. */
|
|
4
|
+
export declare function playRenderTree(node: RenderNode, backend: RenderBackend): void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { RenderPlanBuilder } from './RenderPlanBuilder.js';
|
|
2
|
+
import { RenderPlanOptimizer } from './RenderPlanOptimizer.js';
|
|
3
|
+
import { RenderPlanPlayer } from './RenderPlanPlayer.js';
|
|
4
|
+
|
|
5
|
+
/** @internal — single source of truth for plan build→optimize→play. */
|
|
6
|
+
function playRenderTree(node, backend) {
|
|
7
|
+
const builder = RenderPlanBuilder.acquire();
|
|
8
|
+
try {
|
|
9
|
+
const plan = builder.build(node, backend);
|
|
10
|
+
RenderPlanOptimizer.optimize(plan);
|
|
11
|
+
RenderPlanPlayer.play(plan, backend);
|
|
12
|
+
}
|
|
13
|
+
finally {
|
|
14
|
+
RenderPlanBuilder.release(builder);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { playRenderTree };
|
|
19
|
+
//# sourceMappingURL=playRenderTree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playRenderTree.js","sources":["../../../../../src/rendering/plan/playRenderTree.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAOA;AACM,SAAU,cAAc,CAAC,IAAgB,EAAE,OAAsB,EAAA;AACrE,IAAA,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE;AAE3C,IAAA,IAAI;QACF,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;AAEzC,QAAA,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC;AAClC,QAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;IACtC;YAAU;AACR,QAAA,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC;IACpC;AACF;;;;"}
|
|
@@ -24,6 +24,7 @@ export interface ShaderProgram {
|
|
|
24
24
|
* {@link ShaderProgram} with populated {@link attributes} and {@link uniforms} maps.
|
|
25
25
|
* Call {@link bind} before draw calls and {@link sync} after updating uniform values.
|
|
26
26
|
* Both maps are cleared on {@link disconnect} and {@link destroy}.
|
|
27
|
+
* @advanced
|
|
27
28
|
*/
|
|
28
29
|
export declare class Shader {
|
|
29
30
|
/** Vertex attribute metadata populated by the backend after {@link connect}. */
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* {@link ShaderProgram} with populated {@link attributes} and {@link uniforms} maps.
|
|
6
6
|
* Call {@link bind} before draw calls and {@link sync} after updating uniform values.
|
|
7
7
|
* Both maps are cleared on {@link disconnect} and {@link destroy}.
|
|
8
|
+
* @advanced
|
|
8
9
|
*/
|
|
9
10
|
class Shader {
|
|
10
11
|
/** Vertex attribute metadata populated by the backend after {@link connect}. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shader.js","sources":["../../../../../src/rendering/shader/Shader.ts"],"sourcesContent":[null],"names":[],"mappings":"AAqBA
|
|
1
|
+
{"version":3,"file":"Shader.js","sources":["../../../../../src/rendering/shader/Shader.ts"],"sourcesContent":[null],"names":[],"mappings":"AAqBA;;;;;;;;AAQG;MACU,MAAM,CAAA;;AAED,IAAA,UAAU,GAAiC,IAAI,GAAG,EAA2B;;AAE7E,IAAA,QAAQ,GAA+B,IAAI,GAAG,EAAyB;AAEtE,IAAA,aAAa;AACb,IAAA,eAAe;IACxB,QAAQ,GAAyB,IAAI;IAE7C,WAAA,CAAmB,YAAoB,EAAE,cAAsB,EAAA;AAC7D,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY;AACjC,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;IACvC;AAEA,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa;IAC3B;AAEA,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,eAAe;IAC7B;AAEA;;;AAGG;AACI,IAAA,OAAO,CAAC,OAAsB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,QAAA,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;AAExB,QAAA,OAAO,IAAI;IACb;IAEO,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAErB,QAAA,OAAO,IAAI;IACb;IAEO,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC;AAEzB,QAAA,OAAO,IAAI;IACb;IAEO,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC;AAE3B,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;IACI,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC;AAEzB,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACI,IAAA,YAAY,CAAC,IAAY,EAAA;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QAE3C,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAA,mBAAA,CAAqB,CAAC;QAC1D;AAEA,QAAA,OAAO,SAAS;IAClB;AAEA;;;AAGG;AACI,IAAA,UAAU,CAAC,IAAY,EAAA;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAEvC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,CAAA,mBAAA,CAAqB,CAAC;QACxD;AAEA,QAAA,OAAO,OAAO;IAChB;IAEO,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACvB;AACD;;;;"}
|
|
@@ -7,6 +7,7 @@ import type { TypedArray } from '@/core/types';
|
|
|
7
7
|
* clears it via {@link markClean} after uploading the value to the GPU.
|
|
8
8
|
* Array-type uniform names have their index suffix stripped (e.g. `uColors[0]`
|
|
9
9
|
* becomes `uColors`).
|
|
10
|
+
* @advanced
|
|
10
11
|
*/
|
|
11
12
|
export declare class ShaderUniform {
|
|
12
13
|
/** Zero-based index of this uniform within the shader program. */
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* clears it via {@link markClean} after uploading the value to the GPU.
|
|
7
7
|
* Array-type uniform names have their index suffix stripped (e.g. `uColors[0]`
|
|
8
8
|
* becomes `uColors`).
|
|
9
|
+
* @advanced
|
|
9
10
|
*/
|
|
10
11
|
class ShaderUniform {
|
|
11
12
|
/** Zero-based index of this uniform within the shader program. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShaderUniform.js","sources":["../../../../../src/rendering/shader/ShaderUniform.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"ShaderUniform.js","sources":["../../../../../src/rendering/shader/ShaderUniform.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;;;;;;;;;AASG;MACU,aAAa,CAAA;;AAER,IAAA,KAAK;;AAEL,IAAA,IAAI;;AAEJ,IAAA,IAAI;;AAEJ,IAAA,IAAI;AAEH,IAAA,MAAM;IACf,MAAM,GAAG,IAAI;IAErB,WAAA,CAAmB,KAAa,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAgB,EAAA;QAC1F,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;IACpB;AAEA;;;;AAIG;AACH,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5D;AAEA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM;IACpB;;AAGA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA;;;AAGG;AACI,IAAA,QAAQ,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAElB,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;IACI,SAAS,GAAA;AACd,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACrB;IAEO,OAAO,GAAA;;IAEd;AACD;;;;"}
|
|
@@ -2,6 +2,7 @@ import { Interval } from '@/math/Interval';
|
|
|
2
2
|
import { Rectangle } from '@/math/Rectangle';
|
|
3
3
|
import { Vector } from '@/math/Vector';
|
|
4
4
|
import { Drawable } from '@/rendering/Drawable';
|
|
5
|
+
import type { SpriteMaterial } from '@/rendering/material/SpriteMaterial';
|
|
5
6
|
import type { RenderTexture } from '@/rendering/texture/RenderTexture';
|
|
6
7
|
import type { Texture } from '@/rendering/texture/Texture';
|
|
7
8
|
/**
|
|
@@ -37,10 +38,12 @@ export declare enum SpriteFlags {
|
|
|
37
38
|
* or frame changes, making repeated read access free after the first evaluation.
|
|
38
39
|
* Collision helpers — `contains`, `getNormals`, `project` — are overridden to
|
|
39
40
|
* operate on the exact rotated quad rather than the AABB.
|
|
41
|
+
* @stable
|
|
40
42
|
*/
|
|
41
43
|
export declare class Sprite extends Drawable {
|
|
42
44
|
private _texture;
|
|
43
45
|
private _textureFrame;
|
|
46
|
+
private _material;
|
|
44
47
|
private _vertices;
|
|
45
48
|
private _texCoords;
|
|
46
49
|
private readonly _normals;
|
|
@@ -49,6 +52,16 @@ export declare class Sprite extends Drawable {
|
|
|
49
52
|
set texture(texture: Texture | RenderTexture | null);
|
|
50
53
|
get textureFrame(): Rectangle;
|
|
51
54
|
set textureFrame(frame: Rectangle);
|
|
55
|
+
/**
|
|
56
|
+
* Custom material giving this sprite its own fragment program, uniforms, and
|
|
57
|
+
* extra texture bindings, or `null` for the default multi-texture sprite path.
|
|
58
|
+
*
|
|
59
|
+
* Sprites that share the same material instance and base texture still batch
|
|
60
|
+
* into a single instanced draw call; the base texture stays on the sprite and
|
|
61
|
+
* is bound per batch. Assigning a non-sprite material throws.
|
|
62
|
+
*/
|
|
63
|
+
get material(): SpriteMaterial | null;
|
|
64
|
+
set material(material: SpriteMaterial | null);
|
|
52
65
|
get width(): number;
|
|
53
66
|
set width(value: number);
|
|
54
67
|
get height(): number;
|
|
@@ -66,7 +79,16 @@ export declare class Sprite extends Drawable {
|
|
|
66
79
|
* texture is assigned.
|
|
67
80
|
*/
|
|
68
81
|
get texCoords(): Uint32Array;
|
|
69
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Assign a new texture, refreshing the texture frame to the full texture dimensions.
|
|
84
|
+
*
|
|
85
|
+
* Does **not** bump the texture's version. That signal means "the source data
|
|
86
|
+
* has been mutated"; replacing the sprite's texture reference is not that.
|
|
87
|
+
* Bumping it here would force the backend to re-allocate the GPU texture on
|
|
88
|
+
* the next bind — destroying any FBO content already rendered into a
|
|
89
|
+
* {@link RenderTexture} (the cacheAsBitmap and filter capture pipelines).
|
|
90
|
+
* Call {@link updateTexture} explicitly when you mutate the source.
|
|
91
|
+
*/
|
|
70
92
|
setTexture(texture: Texture | RenderTexture | null): this;
|
|
71
93
|
/** Signal the GPU backend that the underlying texture source has changed and reset the frame to full dimensions. */
|
|
72
94
|
updateTexture(): this;
|
|
@@ -92,8 +114,8 @@ export declare class Sprite extends Drawable {
|
|
|
92
114
|
project(axis: Vector, result?: Interval): Interval;
|
|
93
115
|
/**
|
|
94
116
|
* Return `true` if the world-space point (`x`, `y`) lies inside the quad.
|
|
95
|
-
* Uses a fast AABB check
|
|
96
|
-
*
|
|
117
|
+
* Uses a fast AABB check for axis-aligned quads, and a cross-product sign
|
|
118
|
+
* test for rotated or skewed quads.
|
|
97
119
|
*/
|
|
98
120
|
contains(x: number, y: number): boolean;
|
|
99
121
|
/** @internal */
|
|
@@ -38,10 +38,12 @@ var SpriteFlags;
|
|
|
38
38
|
* or frame changes, making repeated read access free after the first evaluation.
|
|
39
39
|
* Collision helpers — `contains`, `getNormals`, `project` — are overridden to
|
|
40
40
|
* operate on the exact rotated quad rather than the AABB.
|
|
41
|
+
* @stable
|
|
41
42
|
*/
|
|
42
43
|
class Sprite extends Drawable {
|
|
43
44
|
_texture = null;
|
|
44
45
|
_textureFrame = new Rectangle();
|
|
46
|
+
_material = null;
|
|
45
47
|
_vertices = new Float32Array(8);
|
|
46
48
|
_texCoords = new Uint32Array(4);
|
|
47
49
|
_normals = [new Vector(), new Vector(), new Vector(), new Vector()];
|
|
@@ -65,6 +67,24 @@ class Sprite extends Drawable {
|
|
|
65
67
|
set textureFrame(frame) {
|
|
66
68
|
this.setTextureFrame(frame);
|
|
67
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Custom material giving this sprite its own fragment program, uniforms, and
|
|
72
|
+
* extra texture bindings, or `null` for the default multi-texture sprite path.
|
|
73
|
+
*
|
|
74
|
+
* Sprites that share the same material instance and base texture still batch
|
|
75
|
+
* into a single instanced draw call; the base texture stays on the sprite and
|
|
76
|
+
* is bound per batch. Assigning a non-sprite material throws.
|
|
77
|
+
*/
|
|
78
|
+
get material() {
|
|
79
|
+
return this._material;
|
|
80
|
+
}
|
|
81
|
+
set material(material) {
|
|
82
|
+
if (material !== null && material.target !== 'sprite') {
|
|
83
|
+
throw new Error(`Sprite requires a SpriteMaterial (got a ${material.target} material).`);
|
|
84
|
+
}
|
|
85
|
+
this._material = material;
|
|
86
|
+
this.invalidateCache();
|
|
87
|
+
}
|
|
68
88
|
get width() {
|
|
69
89
|
return Math.abs(this.scale.x) * this._textureFrame.width;
|
|
70
90
|
}
|
|
@@ -130,11 +150,22 @@ class Sprite extends Drawable {
|
|
|
130
150
|
}
|
|
131
151
|
return this._texCoords;
|
|
132
152
|
}
|
|
133
|
-
/**
|
|
153
|
+
/**
|
|
154
|
+
* Assign a new texture, refreshing the texture frame to the full texture dimensions.
|
|
155
|
+
*
|
|
156
|
+
* Does **not** bump the texture's version. That signal means "the source data
|
|
157
|
+
* has been mutated"; replacing the sprite's texture reference is not that.
|
|
158
|
+
* Bumping it here would force the backend to re-allocate the GPU texture on
|
|
159
|
+
* the next bind — destroying any FBO content already rendered into a
|
|
160
|
+
* {@link RenderTexture} (the cacheAsBitmap and filter capture pipelines).
|
|
161
|
+
* Call {@link updateTexture} explicitly when you mutate the source.
|
|
162
|
+
*/
|
|
134
163
|
setTexture(texture) {
|
|
135
164
|
if (this._texture !== texture) {
|
|
136
165
|
this._texture = texture;
|
|
137
|
-
|
|
166
|
+
if (texture !== null) {
|
|
167
|
+
this.resetTextureFrame();
|
|
168
|
+
}
|
|
138
169
|
this.invalidateCache();
|
|
139
170
|
}
|
|
140
171
|
return this;
|
|
@@ -160,7 +191,7 @@ class Sprite extends Drawable {
|
|
|
160
191
|
const height = this.height;
|
|
161
192
|
this._textureFrame.copy(frame);
|
|
162
193
|
this.flags.push(SpriteFlags.TextureCoords);
|
|
163
|
-
this.
|
|
194
|
+
this.getLocalBounds().set(0, 0, frame.width, frame.height);
|
|
164
195
|
this._invalidateBoundsCascade();
|
|
165
196
|
if (resetSize) {
|
|
166
197
|
this.width = frame.width;
|
|
@@ -221,22 +252,23 @@ class Sprite extends Drawable {
|
|
|
221
252
|
}
|
|
222
253
|
/**
|
|
223
254
|
* Return `true` if the world-space point (`x`, `y`) lies inside the quad.
|
|
224
|
-
* Uses a fast AABB check
|
|
225
|
-
*
|
|
255
|
+
* Uses a fast AABB check for axis-aligned quads, and a cross-product sign
|
|
256
|
+
* test for rotated or skewed quads.
|
|
226
257
|
*/
|
|
227
258
|
contains(x, y) {
|
|
228
|
-
if (this.
|
|
259
|
+
if (this.isAlignedBox) {
|
|
229
260
|
return this.getBounds().contains(x, y);
|
|
230
261
|
}
|
|
231
|
-
const [x1, y1, x2, y2, x3, y3] = this.vertices;
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
const
|
|
237
|
-
const
|
|
238
|
-
const
|
|
239
|
-
|
|
262
|
+
const [x1, y1, x2, y2, x3, y3, x4, y4] = this.vertices;
|
|
263
|
+
// Cross-product sign consistency: all four edge × (P-vertex) cross
|
|
264
|
+
// products must share the same sign for P to lie inside the convex quad.
|
|
265
|
+
// This handles rotated rectangles and skewed parallelograms uniformly;
|
|
266
|
+
// the dual `>=0 || <=0` form also handles mirrored (negative-scale) quads.
|
|
267
|
+
const s1 = (x2 - x1) * (y - y1) - (y2 - y1) * (x - x1);
|
|
268
|
+
const s2 = (x3 - x2) * (y - y2) - (y3 - y2) * (x - x2);
|
|
269
|
+
const s3 = (x4 - x3) * (y - y3) - (y4 - y3) * (x - x3);
|
|
270
|
+
const s4 = (x1 - x4) * (y - y4) - (y1 - y4) * (x - x4);
|
|
271
|
+
return (s1 >= 0 && s2 >= 0 && s3 >= 0 && s4 >= 0) || (s1 <= 0 && s2 <= 0 && s3 <= 0 && s4 <= 0);
|
|
240
272
|
}
|
|
241
273
|
/** @internal */
|
|
242
274
|
_invalidateSubtreeTransform() {
|
|
@@ -255,6 +287,7 @@ class Sprite extends Drawable {
|
|
|
255
287
|
}
|
|
256
288
|
this._textureFrame.destroy();
|
|
257
289
|
this._texture = null;
|
|
290
|
+
this._material = null;
|
|
258
291
|
}
|
|
259
292
|
}
|
|
260
293
|
RenderNode.setInternalSpriteFactory(() => new Sprite(null));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sprite.js","sources":["../../../../../src/rendering/sprite/Sprite.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"Sprite.js","sources":["../../../../../src/rendering/sprite/Sprite.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical engine vertex stage for the custom {@link SpriteMaterial} path.
|
|
3
|
+
*
|
|
4
|
+
* @internal — not part of the public package surface. A custom `SpriteMaterial`
|
|
5
|
+
* customizes the **fragment** stage only; the vertex stage (quad-corner
|
|
6
|
+
* expansion, affine transform, UV unpacking) is owned by the renderer and stays
|
|
7
|
+
* instancing-critical. The sprite renderers consume these constants directly:
|
|
8
|
+
* `WebGl2SpriteRenderer` pairs {@link spriteVertexGlsl} with the material's
|
|
9
|
+
* fragment (ignoring any author-supplied `glsl.vertex`), and
|
|
10
|
+
* `WebGpuSpriteRenderer` prepends {@link spriteVertexWgsl} to the material's
|
|
11
|
+
* fragment WGSL. Both pin the per-instance attribute locations 0–5 and the
|
|
12
|
+
* projection binding exactly as the default sprite path does, so a custom
|
|
13
|
+
* material keeps the single `drawArraysInstanced` / `drawIndexed` batch.
|
|
14
|
+
*
|
|
15
|
+
* A custom fragment receives the interpolated `v_texcoord` and premultiplied
|
|
16
|
+
* `v_color`, plus the per-batch base texture bound as `u_texture` (WebGL2 unit 0
|
|
17
|
+
* / WGSL group(1) binding 0). Material uniforms and additional textures bind on
|
|
18
|
+
* top (WebGL2 units 1..N / WGSL group(2)).
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* GLSL ES 3.00 vertex shader for the custom sprite-material path. Identical
|
|
22
|
+
* corner expansion and attribute contract to the default sprite vertex shader.
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export declare const spriteVertexGlsl = "#version 300 es\nprecision highp float;\nprecision highp int;\n\n// Per-instance attributes (divisor = 1). Each Sprite contributes one entry\n// to the per-instance buffer; gl_VertexID 0..3 selects which corner of the\n// quad this invocation is computing.\nlayout(location = 0) in vec4 a_localBounds; // left, top, right, bottom (local space)\nlayout(location = 1) in vec3 a_transformAB; // a, b, x \u2014 first row of 2D affine\nlayout(location = 2) in vec3 a_transformCD; // c, d, y \u2014 second row\nlayout(location = 3) in vec4 a_uvBounds; // uMin, vMin, uMax, vMax (normalised, already flipY-swapped)\nlayout(location = 4) in vec4 a_color; // RGBA tint\nlayout(location = 5) in uint a_textureSlot;\n\nuniform mat3 u_projection;\n\nout vec2 v_texcoord;\nout vec4 v_color;\nflat out uint v_textureSlot;\n\nvoid main(void) {\n // gl_VertexID 0..3 \u2192 corner: 0=TL, 1=TR, 2=BL, 3=BR (TRIANGLE_STRIP order)\n int vid = gl_VertexID;\n int cornerX = vid & 1;\n int cornerY = (vid >> 1) & 1;\n\n float localX = (cornerX == 0) ? a_localBounds.x : a_localBounds.z;\n float localY = (cornerY == 0) ? a_localBounds.y : a_localBounds.w;\n\n float worldX = (a_transformAB.x * localX) + (a_transformAB.y * localY) + a_transformAB.z;\n float worldY = (a_transformCD.x * localX) + (a_transformCD.y * localY) + a_transformCD.z;\n\n gl_Position = vec4((u_projection * vec3(worldX, worldY, 1.0)).xy, 0.0, 1.0);\n\n float u = (cornerX == 0) ? a_uvBounds.x : a_uvBounds.z;\n float v = (cornerY == 0) ? a_uvBounds.y : a_uvBounds.w;\n v_texcoord = vec2(u, v);\n\n v_color = vec4(a_color.rgb * a_color.a, a_color.a);\n v_textureSlot = a_textureSlot;\n}\n";
|
|
26
|
+
/**
|
|
27
|
+
* WGSL vertex stage + shared bindings for the custom sprite-material path.
|
|
28
|
+
* Prepend to a material's fragment WGSL: it declares the per-instance
|
|
29
|
+
* `VertexInput` (locations 0–5), the `VertexOutput` a custom `@fragment`
|
|
30
|
+
* consumes, the group(0) projection uniform, the group(1) base texture and
|
|
31
|
+
* sampler (`u_texture` / `u_sampler`), and the `vertexMain` entry point. The
|
|
32
|
+
* fragment author adds their group(2) bindings and a `fragmentMain` reading
|
|
33
|
+
* `VertexOutput`.
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export declare const spriteVertexWgsl = "\nstruct ProjectionUniforms {\n matrix: mat4x4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> projection: ProjectionUniforms;\n\n@group(1) @binding(0) var u_texture: texture_2d<f32>;\n@group(1) @binding(1) var u_sampler: sampler;\n\nstruct VertexInput {\n @location(0) localBounds: vec4<f32>,\n @location(1) transformAB: vec3<f32>,\n @location(2) transformCD: vec3<f32>,\n @location(3) uvBounds: vec4<f32>,\n @location(4) color: vec4<f32>,\n @location(5) textureSlot: u32,\n};\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texcoord: vec2<f32>,\n @location(1) color: vec4<f32>,\n};\n\n@vertex\nfn vertexMain(input: VertexInput, @builtin(vertex_index) vid: u32) -> VertexOutput {\n var output: VertexOutput;\n\n let cornerX = ((vid + 1u) >> 1u) & 1u;\n let cornerY = vid >> 1u;\n\n let localX = select(input.localBounds.x, input.localBounds.z, cornerX == 1u);\n let localY = select(input.localBounds.y, input.localBounds.w, cornerY == 1u);\n\n let worldX = input.transformAB.x * localX + input.transformAB.y * localY + input.transformAB.z;\n let worldY = input.transformCD.x * localX + input.transformCD.y * localY + input.transformCD.z;\n\n output.position = projection.matrix * vec4<f32>(worldX, worldY, 0.0, 1.0);\n\n let u = select(input.uvBounds.x, input.uvBounds.z, cornerX == 1u);\n let v = select(input.uvBounds.y, input.uvBounds.w, cornerY == 1u);\n output.texcoord = vec2<f32>(u, v);\n\n output.color = vec4<f32>(input.color.rgb * input.color.a, input.color.a);\n\n return output;\n}\n";
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical engine vertex stage for the custom {@link SpriteMaterial} path.
|
|
3
|
+
*
|
|
4
|
+
* @internal — not part of the public package surface. A custom `SpriteMaterial`
|
|
5
|
+
* customizes the **fragment** stage only; the vertex stage (quad-corner
|
|
6
|
+
* expansion, affine transform, UV unpacking) is owned by the renderer and stays
|
|
7
|
+
* instancing-critical. The sprite renderers consume these constants directly:
|
|
8
|
+
* `WebGl2SpriteRenderer` pairs {@link spriteVertexGlsl} with the material's
|
|
9
|
+
* fragment (ignoring any author-supplied `glsl.vertex`), and
|
|
10
|
+
* `WebGpuSpriteRenderer` prepends {@link spriteVertexWgsl} to the material's
|
|
11
|
+
* fragment WGSL. Both pin the per-instance attribute locations 0–5 and the
|
|
12
|
+
* projection binding exactly as the default sprite path does, so a custom
|
|
13
|
+
* material keeps the single `drawArraysInstanced` / `drawIndexed` batch.
|
|
14
|
+
*
|
|
15
|
+
* A custom fragment receives the interpolated `v_texcoord` and premultiplied
|
|
16
|
+
* `v_color`, plus the per-batch base texture bound as `u_texture` (WebGL2 unit 0
|
|
17
|
+
* / WGSL group(1) binding 0). Material uniforms and additional textures bind on
|
|
18
|
+
* top (WebGL2 units 1..N / WGSL group(2)).
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* GLSL ES 3.00 vertex shader for the custom sprite-material path. Identical
|
|
22
|
+
* corner expansion and attribute contract to the default sprite vertex shader.
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
const spriteVertexGlsl = `#version 300 es
|
|
26
|
+
precision highp float;
|
|
27
|
+
precision highp int;
|
|
28
|
+
|
|
29
|
+
// Per-instance attributes (divisor = 1). Each Sprite contributes one entry
|
|
30
|
+
// to the per-instance buffer; gl_VertexID 0..3 selects which corner of the
|
|
31
|
+
// quad this invocation is computing.
|
|
32
|
+
layout(location = 0) in vec4 a_localBounds; // left, top, right, bottom (local space)
|
|
33
|
+
layout(location = 1) in vec3 a_transformAB; // a, b, x — first row of 2D affine
|
|
34
|
+
layout(location = 2) in vec3 a_transformCD; // c, d, y — second row
|
|
35
|
+
layout(location = 3) in vec4 a_uvBounds; // uMin, vMin, uMax, vMax (normalised, already flipY-swapped)
|
|
36
|
+
layout(location = 4) in vec4 a_color; // RGBA tint
|
|
37
|
+
layout(location = 5) in uint a_textureSlot;
|
|
38
|
+
|
|
39
|
+
uniform mat3 u_projection;
|
|
40
|
+
|
|
41
|
+
out vec2 v_texcoord;
|
|
42
|
+
out vec4 v_color;
|
|
43
|
+
flat out uint v_textureSlot;
|
|
44
|
+
|
|
45
|
+
void main(void) {
|
|
46
|
+
// gl_VertexID 0..3 → corner: 0=TL, 1=TR, 2=BL, 3=BR (TRIANGLE_STRIP order)
|
|
47
|
+
int vid = gl_VertexID;
|
|
48
|
+
int cornerX = vid & 1;
|
|
49
|
+
int cornerY = (vid >> 1) & 1;
|
|
50
|
+
|
|
51
|
+
float localX = (cornerX == 0) ? a_localBounds.x : a_localBounds.z;
|
|
52
|
+
float localY = (cornerY == 0) ? a_localBounds.y : a_localBounds.w;
|
|
53
|
+
|
|
54
|
+
float worldX = (a_transformAB.x * localX) + (a_transformAB.y * localY) + a_transformAB.z;
|
|
55
|
+
float worldY = (a_transformCD.x * localX) + (a_transformCD.y * localY) + a_transformCD.z;
|
|
56
|
+
|
|
57
|
+
gl_Position = vec4((u_projection * vec3(worldX, worldY, 1.0)).xy, 0.0, 1.0);
|
|
58
|
+
|
|
59
|
+
float u = (cornerX == 0) ? a_uvBounds.x : a_uvBounds.z;
|
|
60
|
+
float v = (cornerY == 0) ? a_uvBounds.y : a_uvBounds.w;
|
|
61
|
+
v_texcoord = vec2(u, v);
|
|
62
|
+
|
|
63
|
+
v_color = vec4(a_color.rgb * a_color.a, a_color.a);
|
|
64
|
+
v_textureSlot = a_textureSlot;
|
|
65
|
+
}
|
|
66
|
+
`;
|
|
67
|
+
/**
|
|
68
|
+
* WGSL vertex stage + shared bindings for the custom sprite-material path.
|
|
69
|
+
* Prepend to a material's fragment WGSL: it declares the per-instance
|
|
70
|
+
* `VertexInput` (locations 0–5), the `VertexOutput` a custom `@fragment`
|
|
71
|
+
* consumes, the group(0) projection uniform, the group(1) base texture and
|
|
72
|
+
* sampler (`u_texture` / `u_sampler`), and the `vertexMain` entry point. The
|
|
73
|
+
* fragment author adds their group(2) bindings and a `fragmentMain` reading
|
|
74
|
+
* `VertexOutput`.
|
|
75
|
+
* @internal
|
|
76
|
+
*/
|
|
77
|
+
const spriteVertexWgsl = `
|
|
78
|
+
struct ProjectionUniforms {
|
|
79
|
+
matrix: mat4x4<f32>,
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
@group(0) @binding(0) var<uniform> projection: ProjectionUniforms;
|
|
83
|
+
|
|
84
|
+
@group(1) @binding(0) var u_texture: texture_2d<f32>;
|
|
85
|
+
@group(1) @binding(1) var u_sampler: sampler;
|
|
86
|
+
|
|
87
|
+
struct VertexInput {
|
|
88
|
+
@location(0) localBounds: vec4<f32>,
|
|
89
|
+
@location(1) transformAB: vec3<f32>,
|
|
90
|
+
@location(2) transformCD: vec3<f32>,
|
|
91
|
+
@location(3) uvBounds: vec4<f32>,
|
|
92
|
+
@location(4) color: vec4<f32>,
|
|
93
|
+
@location(5) textureSlot: u32,
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
struct VertexOutput {
|
|
97
|
+
@builtin(position) position: vec4<f32>,
|
|
98
|
+
@location(0) texcoord: vec2<f32>,
|
|
99
|
+
@location(1) color: vec4<f32>,
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
@vertex
|
|
103
|
+
fn vertexMain(input: VertexInput, @builtin(vertex_index) vid: u32) -> VertexOutput {
|
|
104
|
+
var output: VertexOutput;
|
|
105
|
+
|
|
106
|
+
let cornerX = ((vid + 1u) >> 1u) & 1u;
|
|
107
|
+
let cornerY = vid >> 1u;
|
|
108
|
+
|
|
109
|
+
let localX = select(input.localBounds.x, input.localBounds.z, cornerX == 1u);
|
|
110
|
+
let localY = select(input.localBounds.y, input.localBounds.w, cornerY == 1u);
|
|
111
|
+
|
|
112
|
+
let worldX = input.transformAB.x * localX + input.transformAB.y * localY + input.transformAB.z;
|
|
113
|
+
let worldY = input.transformCD.x * localX + input.transformCD.y * localY + input.transformCD.z;
|
|
114
|
+
|
|
115
|
+
output.position = projection.matrix * vec4<f32>(worldX, worldY, 0.0, 1.0);
|
|
116
|
+
|
|
117
|
+
let u = select(input.uvBounds.x, input.uvBounds.z, cornerX == 1u);
|
|
118
|
+
let v = select(input.uvBounds.y, input.uvBounds.w, cornerY == 1u);
|
|
119
|
+
output.texcoord = vec2<f32>(u, v);
|
|
120
|
+
|
|
121
|
+
output.color = vec4<f32>(input.color.rgb * input.color.a, input.color.a);
|
|
122
|
+
|
|
123
|
+
return output;
|
|
124
|
+
}
|
|
125
|
+
`;
|
|
126
|
+
|
|
127
|
+
export { spriteVertexGlsl, spriteVertexWgsl };
|
|
128
|
+
//# sourceMappingURL=spriteMaterialSources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spriteMaterialSources.js","sources":["../../../../../src/rendering/sprite/spriteMaterialSources.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;AAkBG;AAEH;;;;AAIG;AACI,MAAM,gBAAgB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2ChC;;;;;;;;;AASG;AACI,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Drawable } from '@/rendering/Drawable';
|
|
2
|
+
import type { TextSize } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Base class for all text rendering nodes. Provides the common `text`
|
|
5
|
+
* property and the on-demand dirty protocol used by the renderer.
|
|
6
|
+
*
|
|
7
|
+
* Subclasses:
|
|
8
|
+
* - {@link Text} — runtime Canvas 2D / SDF rasterization
|
|
9
|
+
* - {@link BitmapText} — offline pre-built atlas (BMFont / MSDF)
|
|
10
|
+
*/
|
|
11
|
+
export declare abstract class AbstractText extends Drawable {
|
|
12
|
+
protected _text: string;
|
|
13
|
+
constructor(text: string);
|
|
14
|
+
/** The string currently displayed by this node. */
|
|
15
|
+
get text(): string;
|
|
16
|
+
/**
|
|
17
|
+
* Pixel dimensions of the laid-out text block in local space.
|
|
18
|
+
* Used by the renderer to compute normalized gradient UVs.
|
|
19
|
+
*/
|
|
20
|
+
get textBounds(): TextSize;
|
|
21
|
+
/**
|
|
22
|
+
* Consume any pending style mutations and apply them synchronously.
|
|
23
|
+
*
|
|
24
|
+
* The renderer calls this automatically before each draw, so manual
|
|
25
|
+
* calls are only needed when you require up-to-date geometry outside
|
|
26
|
+
* of a render pass (e.g. to measure bounds right after a style change).
|
|
27
|
+
*/
|
|
28
|
+
syncDirty(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Advance the node by `dt` milliseconds.
|
|
31
|
+
*
|
|
32
|
+
* Delegates to {@link syncDirty} — kept for manual game-loop patterns,
|
|
33
|
+
* but no longer required; the renderer applies pending changes automatically.
|
|
34
|
+
*/
|
|
35
|
+
update(_dt: number): void;
|
|
36
|
+
}
|