@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,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
*
|
|
4
|
+
* Stable key derivation for {@link Material}. Keys are interned from a
|
|
5
|
+
* normalized string descriptor, so identical material state always maps to
|
|
6
|
+
* the exact same integer (no hashing, no collisions), and distinct state
|
|
7
|
+
* maps to distinct integers. Descriptors are built from scalar fields in a
|
|
8
|
+
* fixed order and from sorted texture-binding entries — never from
|
|
9
|
+
* `JSON.stringify` over objects with unstable key order.
|
|
10
|
+
*
|
|
11
|
+
* Two key spaces:
|
|
12
|
+
* - {@link derivePipelineKey}: shader identity + blend + sampler state.
|
|
13
|
+
* Drives GPU pipeline/program reuse and material grouping. Independent of
|
|
14
|
+
* the owning material instance, so identically configured materials share
|
|
15
|
+
* a pipeline key.
|
|
16
|
+
* - {@link deriveBindKey}: material identity + bound texture identities.
|
|
17
|
+
* Drives bind-group/slot reuse; changes when a material swaps a texture.
|
|
18
|
+
*/
|
|
19
|
+
const textureIds = new WeakMap();
|
|
20
|
+
let nextTextureId = 1;
|
|
21
|
+
const getTextureId = (texture) => {
|
|
22
|
+
const cached = textureIds.get(texture);
|
|
23
|
+
if (cached !== undefined) {
|
|
24
|
+
return cached;
|
|
25
|
+
}
|
|
26
|
+
const id = nextTextureId++;
|
|
27
|
+
textureIds.set(texture, id);
|
|
28
|
+
return id;
|
|
29
|
+
};
|
|
30
|
+
const pipelineKeyRegistry = new Map();
|
|
31
|
+
let nextPipelineKey = 1;
|
|
32
|
+
const bindKeyRegistry = new Map();
|
|
33
|
+
let nextBindKey = 1;
|
|
34
|
+
const intern = (registry, descriptor, allocate) => {
|
|
35
|
+
const cached = registry.get(descriptor);
|
|
36
|
+
if (cached !== undefined) {
|
|
37
|
+
return cached;
|
|
38
|
+
}
|
|
39
|
+
const key = allocate();
|
|
40
|
+
registry.set(descriptor, key);
|
|
41
|
+
return key;
|
|
42
|
+
};
|
|
43
|
+
const samplerDescriptor = (sampler) => {
|
|
44
|
+
if (sampler === null) {
|
|
45
|
+
return '-';
|
|
46
|
+
}
|
|
47
|
+
return [sampler.scaleMode, sampler.wrapMode, sampler.premultiplyAlpha ? 1 : 0, sampler.generateMipMap ? 1 : 0, sampler.flipY ? 1 : 0].join(':');
|
|
48
|
+
};
|
|
49
|
+
const isTextureBinding = (value) => typeof value === 'object' && value !== null && !Array.isArray(value) && !ArrayBuffer.isView(value);
|
|
50
|
+
/**
|
|
51
|
+
* Pipeline key from shader identity, blend mode, and sampler state.
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
const derivePipelineKey = (shaderId, blendMode, sampler) => {
|
|
55
|
+
const descriptor = `${shaderId}|${blendMode}|${samplerDescriptor(sampler)}`;
|
|
56
|
+
return intern(pipelineKeyRegistry, descriptor, () => nextPipelineKey++);
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Bind key from material identity and the identities of every bound
|
|
60
|
+
* texture, whether declared in the `textures` map or carried as a
|
|
61
|
+
* texture-valued uniform. Texture entries are sorted before joining so the
|
|
62
|
+
* descriptor is independent of insertion order.
|
|
63
|
+
* @internal
|
|
64
|
+
*/
|
|
65
|
+
const deriveBindKey = (materialId, uniforms, textures) => {
|
|
66
|
+
const entries = [];
|
|
67
|
+
for (const name of Object.keys(textures)) {
|
|
68
|
+
entries.push(`t:${name}=${getTextureId(textures[name])}`);
|
|
69
|
+
}
|
|
70
|
+
for (const name of Object.keys(uniforms)) {
|
|
71
|
+
const value = uniforms[name];
|
|
72
|
+
if (isTextureBinding(value)) {
|
|
73
|
+
entries.push(`u:${name}=${getTextureId(value)}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
entries.sort();
|
|
77
|
+
const descriptor = `${materialId}|${entries.join(',')}`;
|
|
78
|
+
return intern(bindKeyRegistry, descriptor, () => nextBindKey++);
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export { deriveBindKey, derivePipelineKey };
|
|
82
|
+
//# sourceMappingURL=MaterialKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaterialKey.js","sources":["../../../../../src/rendering/material/MaterialKey.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { MaterialOptions } from './Material';
|
|
2
|
+
import { Material } from './Material';
|
|
3
|
+
/**
|
|
4
|
+
* Material specialization for {@link Mesh} drawables.
|
|
5
|
+
*
|
|
6
|
+
* Carries the mesh contract conceptually: fixed vertex attribute locations
|
|
7
|
+
* (0 = position, 1 = texcoord, 2 = color), the auto-bound uniforms
|
|
8
|
+
* `u_projection`/`u_translation`/`u_tint`/`u_texture`, and the WGSL
|
|
9
|
+
* group(0)=mesh-uniforms / group(1)=texture / group(2)=user binding scheme.
|
|
10
|
+
* Renderer wiring is added in a later phase.
|
|
11
|
+
* @advanced
|
|
12
|
+
*/
|
|
13
|
+
export declare class MeshMaterial extends Material {
|
|
14
|
+
readonly target = "mesh";
|
|
15
|
+
constructor(options: MaterialOptions);
|
|
16
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Material } from './Material.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Material specialization for {@link Mesh} drawables.
|
|
5
|
+
*
|
|
6
|
+
* Carries the mesh contract conceptually: fixed vertex attribute locations
|
|
7
|
+
* (0 = position, 1 = texcoord, 2 = color), the auto-bound uniforms
|
|
8
|
+
* `u_projection`/`u_translation`/`u_tint`/`u_texture`, and the WGSL
|
|
9
|
+
* group(0)=mesh-uniforms / group(1)=texture / group(2)=user binding scheme.
|
|
10
|
+
* Renderer wiring is added in a later phase.
|
|
11
|
+
* @advanced
|
|
12
|
+
*/
|
|
13
|
+
class MeshMaterial extends Material {
|
|
14
|
+
target = 'mesh';
|
|
15
|
+
constructor(options) {
|
|
16
|
+
super(options);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { MeshMaterial };
|
|
21
|
+
//# sourceMappingURL=MeshMaterial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MeshMaterial.js","sources":["../../../../../src/rendering/material/MeshMaterial.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAGA;;;;;;;;;AASG;AACG,MAAO,YAAa,SAAQ,QAAQ,CAAA;IACxB,MAAM,GAAG,MAAM;AAE/B,IAAA,WAAA,CAAmB,OAAwB,EAAA;QACzC,KAAK,CAAC,OAAO,CAAC;IAChB;AACD;;;;"}
|
|
@@ -1,22 +1,12 @@
|
|
|
1
|
-
import type { RenderTexture } from '@/rendering/texture/RenderTexture';
|
|
2
|
-
import type { Texture } from '@/rendering/texture/Texture';
|
|
3
1
|
/**
|
|
4
|
-
*
|
|
5
|
-
* auto-marshal to the appropriate `Float32Array`/`Int32Array` for the
|
|
6
|
-
* backend's uniform call. `Texture`/`RenderTexture` values are bound to
|
|
7
|
-
* texture slots starting at slot 1 — slot 0 is reserved for the mesh's
|
|
8
|
-
* own `texture`.
|
|
9
|
-
*/
|
|
10
|
-
export type MeshShaderUniformValue = number | readonly [number, number] | readonly [number, number, number] | readonly [number, number, number, number] | Float32Array | Int32Array | Texture | RenderTexture;
|
|
11
|
-
/**
|
|
12
|
-
* Construction options for {@link MeshShader}.
|
|
2
|
+
* Construction options for {@link ShaderSource}.
|
|
13
3
|
*
|
|
14
4
|
* At least one language must be supplied. Provide `glsl` for WebGL2,
|
|
15
|
-
* `wgsl` for WebGPU, or both for backend-portable
|
|
5
|
+
* `wgsl` for WebGPU, or both for backend-portable materials. The source
|
|
16
6
|
* is compiled lazily on first use against the active backend; an
|
|
17
7
|
* unsupported backend at draw time throws with a clear error.
|
|
18
8
|
*/
|
|
19
|
-
export interface
|
|
9
|
+
export interface ShaderSourceOptions {
|
|
20
10
|
/**
|
|
21
11
|
* GLSL ES 3.00 sources for the WebGL2 backend. Both `vertex` and
|
|
22
12
|
* `fragment` are required when `glsl` is supplied.
|
|
@@ -30,21 +20,21 @@ export interface MeshShaderOptions {
|
|
|
30
20
|
* points live in the same source file (WGSL convention).
|
|
31
21
|
*/
|
|
32
22
|
readonly wgsl?: string;
|
|
33
|
-
/** Initial uniform values; mutate per frame via {@link MeshShader.uniforms}. */
|
|
34
|
-
readonly uniforms?: Record<string, MeshShaderUniformValue>;
|
|
35
23
|
}
|
|
36
24
|
/**
|
|
37
|
-
*
|
|
25
|
+
* Immutable shader source pair shared by {@link Material} instances.
|
|
38
26
|
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
27
|
+
* `ShaderSource` owns only the GLSL/WGSL text and its stable identity;
|
|
28
|
+
* it carries no uniform/texture state (that lives on the {@link Material}).
|
|
29
|
+
* One `ShaderSource` can back many materials, and renderers key their
|
|
30
|
+
* compiled program/pipeline caches on the source identity exposed via
|
|
31
|
+
* {@link id}.
|
|
43
32
|
*
|
|
44
33
|
* # Vertex layout
|
|
45
34
|
*
|
|
46
|
-
* The vertex layout is fixed and shared with the default
|
|
47
|
-
* so custom vertex shaders MUST pin the standard attribute
|
|
35
|
+
* The vertex layout for the mesh path is fixed and shared with the default
|
|
36
|
+
* mesh material, so custom vertex shaders MUST pin the standard attribute
|
|
37
|
+
* locations:
|
|
48
38
|
*
|
|
49
39
|
* ## GLSL (location-qualified)
|
|
50
40
|
*
|
|
@@ -66,16 +56,16 @@ export interface MeshShaderOptions {
|
|
|
66
56
|
*
|
|
67
57
|
* # Auto-bound uniforms
|
|
68
58
|
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
59
|
+
* Renderers auto-bind these when the source declares them. Declared but
|
|
60
|
+
* unused is fine; absent is fine too. Both backends carry the same logical
|
|
61
|
+
* uniforms, only the binding scheme differs.
|
|
72
62
|
*
|
|
73
63
|
* ## GLSL
|
|
74
64
|
*
|
|
75
65
|
* ```glsl
|
|
76
66
|
* uniform mat3 u_projection; // active view's projection
|
|
77
|
-
* uniform mat3 u_translation; //
|
|
78
|
-
* uniform vec4 u_tint; //
|
|
67
|
+
* uniform mat3 u_translation; // drawable's global transform
|
|
68
|
+
* uniform vec4 u_tint; // tint as RGBA in 0..1
|
|
79
69
|
* uniform sampler2D u_texture; // bound to texture slot 0
|
|
80
70
|
* ```
|
|
81
71
|
*
|
|
@@ -96,8 +86,9 @@ export interface MeshShaderOptions {
|
|
|
96
86
|
*
|
|
97
87
|
* # User uniforms
|
|
98
88
|
*
|
|
99
|
-
* Anything in {@link uniforms} is set after the auto-binds.
|
|
100
|
-
* `RenderTexture` values claim slots 1..N (slot 0 belongs to the
|
|
89
|
+
* Anything in {@link Material.uniforms} is set after the auto-binds.
|
|
90
|
+
* `Texture`/`RenderTexture` values claim slots 1..N (slot 0 belongs to the
|
|
91
|
+
* drawable's own texture).
|
|
101
92
|
*
|
|
102
93
|
* ## WGSL user-uniform contract
|
|
103
94
|
*
|
|
@@ -107,16 +98,9 @@ export interface MeshShaderOptions {
|
|
|
107
98
|
* for the packed scalar/vector/matrix uniforms.
|
|
108
99
|
* - `@group(2) @binding(N)` for each `Texture`/`RenderTexture` uniform,
|
|
109
100
|
* in declaration order, alongside its sampler at `@binding(N+1)`.
|
|
101
|
+
* @advanced
|
|
110
102
|
*/
|
|
111
|
-
export declare class
|
|
112
|
-
/**
|
|
113
|
-
* Mutable user uniform values. Mutate between frames to drive animated
|
|
114
|
-
* effects; the renderer reads from this map every draw.
|
|
115
|
-
*
|
|
116
|
-
* shader.uniforms.uTime = performance.now() / 1000;
|
|
117
|
-
* shader.uniforms.uColor = [1, 0.5, 0, 1];
|
|
118
|
-
*/
|
|
119
|
-
uniforms: Record<string, MeshShaderUniformValue>;
|
|
103
|
+
export declare class ShaderSource {
|
|
120
104
|
/** GLSL source pair for the WebGL2 backend, or `null` if not provided. */
|
|
121
105
|
readonly glsl: {
|
|
122
106
|
readonly vertex: string;
|
|
@@ -124,14 +108,13 @@ export declare class MeshShader {
|
|
|
124
108
|
} | null;
|
|
125
109
|
/** WGSL source for the WebGPU backend, or `null` if not provided. */
|
|
126
110
|
readonly wgsl: string | null;
|
|
127
|
-
private readonly
|
|
128
|
-
constructor(options:
|
|
111
|
+
private readonly _id;
|
|
112
|
+
constructor(options: ShaderSourceOptions);
|
|
129
113
|
/**
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
* over property mutation.
|
|
114
|
+
* Stable per-instance identity. Identical `id` ⇒ same compiled program/
|
|
115
|
+
* pipeline can be reused. Monotonic across the session; never reused.
|
|
133
116
|
*/
|
|
134
|
-
|
|
117
|
+
get id(): number;
|
|
135
118
|
/**
|
|
136
119
|
* Reflect declared uniforms from each language's source. Returns a per-
|
|
137
120
|
* language map of uniform-name → declared type, parsed from the shader
|
|
@@ -141,8 +124,9 @@ export declare class MeshShader {
|
|
|
141
124
|
*
|
|
142
125
|
* Reflection is best-effort and intended for CI drift-checks and editor
|
|
143
126
|
* tooling, not for runtime uniform binding decisions. The renderers do
|
|
144
|
-
* NOT consult this map; they bind uniforms by name from
|
|
145
|
-
* and let the underlying API resolve declared-
|
|
127
|
+
* NOT consult this map; they bind uniforms by name from
|
|
128
|
+
* {@link Material.uniforms} and let the underlying API resolve declared-
|
|
129
|
+
* but-unused entries.
|
|
146
130
|
*/
|
|
147
131
|
getDeclaredUniforms(): {
|
|
148
132
|
glsl: Record<string, string>;
|
|
@@ -164,20 +148,4 @@ export declare class MeshShader {
|
|
|
164
148
|
onlyInGlsl: readonly string[];
|
|
165
149
|
onlyInWgsl: readonly string[];
|
|
166
150
|
};
|
|
167
|
-
/**
|
|
168
|
-
* Release GPU resources cached against this `MeshShader` on every
|
|
169
|
-
* backend that has compiled it. Safe to call multiple times. After
|
|
170
|
-
* destroy, the shader can still be re-used — renderers will recompile
|
|
171
|
-
* on next draw — but typical usage is to drop the reference.
|
|
172
|
-
*/
|
|
173
|
-
destroy(): void;
|
|
174
|
-
/**
|
|
175
|
-
* Internal hook for renderers to register a per-shader-instance cleanup
|
|
176
|
-
* callback (release compiled program, pipeline, or bind groups). The
|
|
177
|
-
* callback fires on {@link destroy}; renderers MUST also tolerate the
|
|
178
|
-
* shader being garbage-collected without destroy ever being called.
|
|
179
|
-
*
|
|
180
|
-
* @internal
|
|
181
|
-
*/
|
|
182
|
-
_onDispose(callback: () => void): void;
|
|
183
151
|
}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
+
let nextShaderSourceId = 1;
|
|
1
2
|
/**
|
|
2
|
-
*
|
|
3
|
+
* Immutable shader source pair shared by {@link Material} instances.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* `ShaderSource` owns only the GLSL/WGSL text and its stable identity;
|
|
6
|
+
* it carries no uniform/texture state (that lives on the {@link Material}).
|
|
7
|
+
* One `ShaderSource` can back many materials, and renderers key their
|
|
8
|
+
* compiled program/pipeline caches on the source identity exposed via
|
|
9
|
+
* {@link id}.
|
|
8
10
|
*
|
|
9
11
|
* # Vertex layout
|
|
10
12
|
*
|
|
11
|
-
* The vertex layout is fixed and shared with the default
|
|
12
|
-
* so custom vertex shaders MUST pin the standard attribute
|
|
13
|
+
* The vertex layout for the mesh path is fixed and shared with the default
|
|
14
|
+
* mesh material, so custom vertex shaders MUST pin the standard attribute
|
|
15
|
+
* locations:
|
|
13
16
|
*
|
|
14
17
|
* ## GLSL (location-qualified)
|
|
15
18
|
*
|
|
@@ -31,16 +34,16 @@
|
|
|
31
34
|
*
|
|
32
35
|
* # Auto-bound uniforms
|
|
33
36
|
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
+
* Renderers auto-bind these when the source declares them. Declared but
|
|
38
|
+
* unused is fine; absent is fine too. Both backends carry the same logical
|
|
39
|
+
* uniforms, only the binding scheme differs.
|
|
37
40
|
*
|
|
38
41
|
* ## GLSL
|
|
39
42
|
*
|
|
40
43
|
* ```glsl
|
|
41
44
|
* uniform mat3 u_projection; // active view's projection
|
|
42
|
-
* uniform mat3 u_translation; //
|
|
43
|
-
* uniform vec4 u_tint; //
|
|
45
|
+
* uniform mat3 u_translation; // drawable's global transform
|
|
46
|
+
* uniform vec4 u_tint; // tint as RGBA in 0..1
|
|
44
47
|
* uniform sampler2D u_texture; // bound to texture slot 0
|
|
45
48
|
* ```
|
|
46
49
|
*
|
|
@@ -61,8 +64,9 @@
|
|
|
61
64
|
*
|
|
62
65
|
* # User uniforms
|
|
63
66
|
*
|
|
64
|
-
* Anything in {@link uniforms} is set after the auto-binds.
|
|
65
|
-
* `RenderTexture` values claim slots 1..N (slot 0 belongs to the
|
|
67
|
+
* Anything in {@link Material.uniforms} is set after the auto-binds.
|
|
68
|
+
* `Texture`/`RenderTexture` values claim slots 1..N (slot 0 belongs to the
|
|
69
|
+
* drawable's own texture).
|
|
66
70
|
*
|
|
67
71
|
* ## WGSL user-uniform contract
|
|
68
72
|
*
|
|
@@ -72,47 +76,39 @@
|
|
|
72
76
|
* for the packed scalar/vector/matrix uniforms.
|
|
73
77
|
* - `@group(2) @binding(N)` for each `Texture`/`RenderTexture` uniform,
|
|
74
78
|
* in declaration order, alongside its sampler at `@binding(N+1)`.
|
|
79
|
+
* @advanced
|
|
75
80
|
*/
|
|
76
|
-
class
|
|
77
|
-
/**
|
|
78
|
-
* Mutable user uniform values. Mutate between frames to drive animated
|
|
79
|
-
* effects; the renderer reads from this map every draw.
|
|
80
|
-
*
|
|
81
|
-
* shader.uniforms.uTime = performance.now() / 1000;
|
|
82
|
-
* shader.uniforms.uColor = [1, 0.5, 0, 1];
|
|
83
|
-
*/
|
|
84
|
-
uniforms;
|
|
81
|
+
class ShaderSource {
|
|
85
82
|
/** GLSL source pair for the WebGL2 backend, or `null` if not provided. */
|
|
86
83
|
glsl;
|
|
87
84
|
/** WGSL source for the WebGPU backend, or `null` if not provided. */
|
|
88
85
|
wgsl;
|
|
89
|
-
|
|
86
|
+
_id;
|
|
90
87
|
constructor(options) {
|
|
91
88
|
if (options.glsl === undefined && options.wgsl === undefined) {
|
|
92
|
-
throw new Error('
|
|
89
|
+
throw new Error('ShaderSource requires at least one of `glsl` or `wgsl`.');
|
|
93
90
|
}
|
|
94
91
|
if (options.glsl !== undefined) {
|
|
95
92
|
if (typeof options.glsl.vertex !== 'string' || options.glsl.vertex.length === 0) {
|
|
96
|
-
throw new Error('
|
|
93
|
+
throw new Error('ShaderSource.glsl.vertex must be a non-empty string.');
|
|
97
94
|
}
|
|
98
95
|
if (typeof options.glsl.fragment !== 'string' || options.glsl.fragment.length === 0) {
|
|
99
|
-
throw new Error('
|
|
96
|
+
throw new Error('ShaderSource.glsl.fragment must be a non-empty string.');
|
|
100
97
|
}
|
|
101
98
|
}
|
|
102
99
|
if (options.wgsl !== undefined && (typeof options.wgsl !== 'string' || options.wgsl.length === 0)) {
|
|
103
|
-
throw new Error('
|
|
100
|
+
throw new Error('ShaderSource.wgsl must be a non-empty string.');
|
|
104
101
|
}
|
|
105
102
|
this.glsl = options.glsl ?? null;
|
|
106
103
|
this.wgsl = options.wgsl ?? null;
|
|
107
|
-
this.
|
|
104
|
+
this._id = nextShaderSourceId++;
|
|
108
105
|
}
|
|
109
106
|
/**
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
* over property mutation.
|
|
107
|
+
* Stable per-instance identity. Identical `id` ⇒ same compiled program/
|
|
108
|
+
* pipeline can be reused. Monotonic across the session; never reused.
|
|
113
109
|
*/
|
|
114
|
-
|
|
115
|
-
this.
|
|
110
|
+
get id() {
|
|
111
|
+
return this._id;
|
|
116
112
|
}
|
|
117
113
|
/**
|
|
118
114
|
* Reflect declared uniforms from each language's source. Returns a per-
|
|
@@ -123,8 +119,9 @@ class MeshShader {
|
|
|
123
119
|
*
|
|
124
120
|
* Reflection is best-effort and intended for CI drift-checks and editor
|
|
125
121
|
* tooling, not for runtime uniform binding decisions. The renderers do
|
|
126
|
-
* NOT consult this map; they bind uniforms by name from
|
|
127
|
-
* and let the underlying API resolve declared-
|
|
122
|
+
* NOT consult this map; they bind uniforms by name from
|
|
123
|
+
* {@link Material.uniforms} and let the underlying API resolve declared-
|
|
124
|
+
* but-unused entries.
|
|
128
125
|
*/
|
|
129
126
|
getDeclaredUniforms() {
|
|
130
127
|
return {
|
|
@@ -163,29 +160,6 @@ class MeshShader {
|
|
|
163
160
|
}
|
|
164
161
|
return { onlyInGlsl, onlyInWgsl };
|
|
165
162
|
}
|
|
166
|
-
/**
|
|
167
|
-
* Release GPU resources cached against this `MeshShader` on every
|
|
168
|
-
* backend that has compiled it. Safe to call multiple times. After
|
|
169
|
-
* destroy, the shader can still be re-used — renderers will recompile
|
|
170
|
-
* on next draw — but typical usage is to drop the reference.
|
|
171
|
-
*/
|
|
172
|
-
destroy() {
|
|
173
|
-
for (const callback of this._disposeCallbacks) {
|
|
174
|
-
callback();
|
|
175
|
-
}
|
|
176
|
-
this._disposeCallbacks.clear();
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Internal hook for renderers to register a per-shader-instance cleanup
|
|
180
|
-
* callback (release compiled program, pipeline, or bind groups). The
|
|
181
|
-
* callback fires on {@link destroy}; renderers MUST also tolerate the
|
|
182
|
-
* shader being garbage-collected without destroy ever being called.
|
|
183
|
-
*
|
|
184
|
-
* @internal
|
|
185
|
-
*/
|
|
186
|
-
_onDispose(callback) {
|
|
187
|
-
this._disposeCallbacks.add(callback);
|
|
188
|
-
}
|
|
189
163
|
}
|
|
190
164
|
const autoBoundUniformNames = new Set(['u_projection', 'u_translation', 'u_tint', 'u_texture', 'u_mesh']);
|
|
191
165
|
const glslUniformPattern = /\buniform\s+(?:mediump\s+|highp\s+|lowp\s+|)(\w+)\s+(\w+)[^;]*;/g;
|
|
@@ -193,7 +167,7 @@ const wgslUserUniformPattern = /@group\(\s*2\s*\)\s*@binding\(\s*\d+\s*\)\s*var(
|
|
|
193
167
|
/**
|
|
194
168
|
* Strip line and block comments from a shader source so the uniform
|
|
195
169
|
* regexes don't match commented-out declarations. Conservative: works
|
|
196
|
-
* for both GLSL and WGSL syntax (both use `//` and
|
|
170
|
+
* for both GLSL and WGSL syntax (both use `//` and block comments).
|
|
197
171
|
*/
|
|
198
172
|
function stripComments(source) {
|
|
199
173
|
return source.replaceAll(/\/\*[\s\S]*?\*\//g, '').replaceAll(/\/\/[^\n]*/g, '');
|
|
@@ -227,5 +201,5 @@ function parseWgslUniforms(source) {
|
|
|
227
201
|
return result;
|
|
228
202
|
}
|
|
229
203
|
|
|
230
|
-
export {
|
|
231
|
-
//# sourceMappingURL=
|
|
204
|
+
export { ShaderSource };
|
|
205
|
+
//# sourceMappingURL=ShaderSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShaderSource.js","sources":["../../../../../src/rendering/material/ShaderSource.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { MaterialOptions } from './Material';
|
|
2
|
+
import { Material } from './Material';
|
|
3
|
+
/**
|
|
4
|
+
* Material specialization for {@link Sprite} drawables.
|
|
5
|
+
*
|
|
6
|
+
* API shell for the sprite custom-material path; the renderer integration
|
|
7
|
+
* and instancing contract are added in a later phase. The base texture
|
|
8
|
+
* stays on the sprite — this material supplies the fragment program,
|
|
9
|
+
* uniforms, and additional texture bindings.
|
|
10
|
+
* @advanced
|
|
11
|
+
*/
|
|
12
|
+
export declare class SpriteMaterial extends Material {
|
|
13
|
+
readonly target = "sprite";
|
|
14
|
+
constructor(options: MaterialOptions);
|
|
15
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Material } from './Material.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Material specialization for {@link Sprite} drawables.
|
|
5
|
+
*
|
|
6
|
+
* API shell for the sprite custom-material path; the renderer integration
|
|
7
|
+
* and instancing contract are added in a later phase. The base texture
|
|
8
|
+
* stays on the sprite — this material supplies the fragment program,
|
|
9
|
+
* uniforms, and additional texture bindings.
|
|
10
|
+
* @advanced
|
|
11
|
+
*/
|
|
12
|
+
class SpriteMaterial extends Material {
|
|
13
|
+
target = 'sprite';
|
|
14
|
+
constructor(options) {
|
|
15
|
+
super(options);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { SpriteMaterial };
|
|
20
|
+
//# sourceMappingURL=SpriteMaterial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpriteMaterial.js","sources":["../../../../../src/rendering/material/SpriteMaterial.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAGA;;;;;;;;AAQG;AACG,MAAO,cAAe,SAAQ,QAAQ,CAAA;IAC1B,MAAM,GAAG,QAAQ;AAEjC,IAAA,WAAA,CAAmB,OAAwB,EAAA;QACzC,KAAK,CAAC,OAAO,CAAC;IAChB;AACD;;;;"}
|
|
@@ -1,29 +1,43 @@
|
|
|
1
1
|
import { Drawable } from '@/rendering/Drawable';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Geometry } from '@/rendering/geometry/Geometry';
|
|
3
|
+
import type { MeshMaterial } from '@/rendering/material/MeshMaterial';
|
|
3
4
|
import type { RenderTexture } from '@/rendering/texture/RenderTexture';
|
|
4
5
|
import type { Texture } from '@/rendering/texture/Texture';
|
|
5
6
|
/**
|
|
6
7
|
* Construction-time options for a {@link Mesh}.
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
9
|
+
* Provide the geometry in exactly one of two forms:
|
|
10
|
+
*
|
|
11
|
+
* - **Convenience form** — a flat `vertices` array of (x, y) pairs in local
|
|
12
|
+
* space, with optional `uvs`, per-vertex `colors`, and `indices`. This is
|
|
13
|
+
* the simplest path: `new Mesh({ vertices })`.
|
|
14
|
+
* - **Geometry form** — a {@link Geometry} object whose standard attributes
|
|
15
|
+
* (`a_position`/`position`, `a_texcoord`/`texcoord`, `a_color`/`color`) are
|
|
16
|
+
* read into the mesh: `new Mesh({ geometry })`. The geometry must use the
|
|
17
|
+
* `triangle-list` topology.
|
|
18
|
+
*
|
|
19
|
+
* Supplying both `vertices` and `geometry`, or neither, throws.
|
|
20
|
+
*
|
|
21
|
+
* When present, `uvs` must match the vertex count (as (u, v) pairs) and
|
|
22
|
+
* `colors` must supply one packed-RGBA8 u32 per vertex. `indices` are optional
|
|
23
|
+
* — if absent, the vertex stream is drawn as a flat triangle list (3*N
|
|
24
|
+
* vertices = N triangles). A texture is optional; a textured mesh samples it
|
|
25
|
+
* at the supplied UVs while an untextured mesh paints solid vertex colors only.
|
|
15
26
|
*
|
|
16
27
|
* Validation is enforced at construction; any mismatch throws.
|
|
17
28
|
*
|
|
18
|
-
* For custom shaders,
|
|
29
|
+
* For custom shaders/uniforms/textures, attach a {@link MeshMaterial}.
|
|
19
30
|
*/
|
|
20
31
|
export interface MeshOptions {
|
|
21
|
-
readonly vertices
|
|
32
|
+
readonly vertices?: Float32Array;
|
|
22
33
|
readonly indices?: Uint16Array;
|
|
23
34
|
readonly uvs?: Float32Array;
|
|
24
35
|
readonly colors?: Uint32Array;
|
|
36
|
+
/** Interleaved geometry source; mutually exclusive with `vertices`. */
|
|
37
|
+
readonly geometry?: Geometry;
|
|
25
38
|
readonly texture?: Texture | RenderTexture | null;
|
|
26
|
-
|
|
39
|
+
/** Custom look (shader/uniforms/textures/blendMode); `null` uses the default mesh material. */
|
|
40
|
+
readonly material?: MeshMaterial;
|
|
27
41
|
}
|
|
28
42
|
/**
|
|
29
43
|
* Arbitrary 2D triangle-mesh primitive.
|
|
@@ -58,7 +72,10 @@ export declare class Mesh extends Drawable {
|
|
|
58
72
|
readonly indices: Uint16Array | null;
|
|
59
73
|
readonly uvs: Float32Array | null;
|
|
60
74
|
readonly colors: Uint32Array | null;
|
|
61
|
-
|
|
75
|
+
/** Custom material attached to this mesh, or `null` for the default mesh path. */
|
|
76
|
+
readonly material: MeshMaterial | null;
|
|
77
|
+
/** Source geometry when constructed from the geometry form, otherwise `null`. */
|
|
78
|
+
readonly geometry: Geometry | null;
|
|
62
79
|
private _texture;
|
|
63
80
|
constructor(options: MeshOptions);
|
|
64
81
|
/** Number of (x, y) vertex pairs in the mesh (i.e. `vertices.length / 2`). */
|