@codexo/exojs 2.1.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 +119 -0
- package/README.md +137 -0
- package/dist/esm/audio/AbstractMedia.d.ts +45 -0
- package/dist/esm/audio/AbstractMedia.js +98 -0
- package/dist/esm/audio/AbstractMedia.js.map +1 -0
- package/dist/esm/audio/AudioAnalyser.d.ts +30 -0
- package/dist/esm/audio/AudioAnalyser.js +82 -0
- package/dist/esm/audio/AudioAnalyser.js.map +1 -0
- package/dist/esm/audio/Media.d.ts +25 -0
- package/dist/esm/audio/Music.d.ts +20 -0
- package/dist/esm/audio/Music.js +118 -0
- package/dist/esm/audio/Music.js.map +1 -0
- package/dist/esm/audio/Sound.d.ts +56 -0
- package/dist/esm/audio/Sound.js +393 -0
- package/dist/esm/audio/Sound.js.map +1 -0
- package/dist/esm/audio/audio-context.d.ts +11 -0
- package/dist/esm/audio/audio-context.js +115 -0
- package/dist/esm/audio/audio-context.js.map +1 -0
- package/dist/esm/audio/index.d.ts +6 -0
- package/dist/esm/core/Application.d.ts +76 -0
- package/dist/esm/core/Application.js +198 -0
- package/dist/esm/core/Application.js.map +1 -0
- package/dist/esm/core/Bounds.d.ts +19 -0
- package/dist/esm/core/Bounds.js +61 -0
- package/dist/esm/core/Bounds.js.map +1 -0
- package/dist/esm/core/Clock.d.ts +18 -0
- package/dist/esm/core/Clock.js +67 -0
- package/dist/esm/core/Clock.js.map +1 -0
- package/dist/esm/core/Color.d.ts +176 -0
- package/dist/esm/core/Color.js +261 -0
- package/dist/esm/core/Color.js.map +1 -0
- package/dist/esm/core/Quadtree.d.ts +20 -0
- package/dist/esm/core/Quadtree.js +84 -0
- package/dist/esm/core/Quadtree.js.map +1 -0
- package/dist/esm/core/Scene.d.ts +83 -0
- package/dist/esm/core/Scene.js +82 -0
- package/dist/esm/core/Scene.js.map +1 -0
- package/dist/esm/core/SceneManager.d.ts +66 -0
- package/dist/esm/core/SceneManager.js +395 -0
- package/dist/esm/core/SceneManager.js.map +1 -0
- package/dist/esm/core/SceneNode.d.ts +58 -0
- package/dist/esm/core/SceneNode.js +176 -0
- package/dist/esm/core/SceneNode.js.map +1 -0
- package/dist/esm/core/Signal.d.ts +18 -0
- package/dist/esm/core/Signal.js +61 -0
- package/dist/esm/core/Signal.js.map +1 -0
- package/dist/esm/core/Time.d.ts +38 -0
- package/dist/esm/core/Time.js +106 -0
- package/dist/esm/core/Time.js.map +1 -0
- package/dist/esm/core/Timer.d.ts +12 -0
- package/dist/esm/core/Timer.js +33 -0
- package/dist/esm/core/Timer.js.map +1 -0
- package/dist/esm/core/index.d.ts +13 -0
- package/dist/esm/core/types.d.ts +29 -0
- package/dist/esm/core/utils.d.ts +22 -0
- package/dist/esm/core/utils.js +136 -0
- package/dist/esm/core/utils.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +134 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/input/ArcadeStickGamepadMapping.d.ts +5 -0
- package/dist/esm/input/ArcadeStickGamepadMapping.js +29 -0
- package/dist/esm/input/ArcadeStickGamepadMapping.js.map +1 -0
- package/dist/esm/input/GameCubeGamepadMapping.d.ts +5 -0
- package/dist/esm/input/GameCubeGamepadMapping.js +12 -0
- package/dist/esm/input/GameCubeGamepadMapping.js.map +1 -0
- package/dist/esm/input/Gamepad.d.ts +45 -0
- package/dist/esm/input/Gamepad.js +150 -0
- package/dist/esm/input/Gamepad.js.map +1 -0
- package/dist/esm/input/GamepadChannels.d.ts +39 -0
- package/dist/esm/input/GamepadChannels.js +43 -0
- package/dist/esm/input/GamepadChannels.js.map +1 -0
- package/dist/esm/input/GamepadControl.d.ts +15 -0
- package/dist/esm/input/GamepadControl.js +24 -0
- package/dist/esm/input/GamepadControl.js.map +1 -0
- package/dist/esm/input/GamepadDefinitions.d.ts +31 -0
- package/dist/esm/input/GamepadDefinitions.js +175 -0
- package/dist/esm/input/GamepadDefinitions.js.map +1 -0
- package/dist/esm/input/GamepadMapping.d.ts +23 -0
- package/dist/esm/input/GamepadMapping.js +30 -0
- package/dist/esm/input/GamepadMapping.js.map +1 -0
- package/dist/esm/input/GamepadPromptLayouts.d.ts +9 -0
- package/dist/esm/input/GamepadPromptLayouts.js +140 -0
- package/dist/esm/input/GamepadPromptLayouts.js.map +1 -0
- package/dist/esm/input/GenericDualAnalogGamepadMapping.d.ts +5 -0
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js +53 -0
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js.map +1 -0
- package/dist/esm/input/Input.d.ts +28 -0
- package/dist/esm/input/Input.js +67 -0
- package/dist/esm/input/Input.js.map +1 -0
- package/dist/esm/input/InputManager.d.ts +76 -0
- package/dist/esm/input/InputManager.js +342 -0
- package/dist/esm/input/InputManager.js.map +1 -0
- package/dist/esm/input/JoyConLeftGamepadMapping.d.ts +5 -0
- package/dist/esm/input/JoyConLeftGamepadMapping.js +12 -0
- package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -0
- package/dist/esm/input/JoyConRightGamepadMapping.d.ts +5 -0
- package/dist/esm/input/JoyConRightGamepadMapping.js +12 -0
- package/dist/esm/input/JoyConRightGamepadMapping.js.map +1 -0
- package/dist/esm/input/PlayStationGamepadMapping.d.ts +5 -0
- package/dist/esm/input/PlayStationGamepadMapping.js +12 -0
- package/dist/esm/input/PlayStationGamepadMapping.js.map +1 -0
- package/dist/esm/input/Pointer.d.ts +52 -0
- package/dist/esm/input/Pointer.js +118 -0
- package/dist/esm/input/Pointer.js.map +1 -0
- package/dist/esm/input/SteamControllerGamepadMapping.d.ts +5 -0
- package/dist/esm/input/SteamControllerGamepadMapping.js +12 -0
- package/dist/esm/input/SteamControllerGamepadMapping.js.map +1 -0
- package/dist/esm/input/SwitchProGamepadMapping.d.ts +5 -0
- package/dist/esm/input/SwitchProGamepadMapping.js +12 -0
- package/dist/esm/input/SwitchProGamepadMapping.js.map +1 -0
- package/dist/esm/input/XboxGamepadMapping.d.ts +5 -0
- package/dist/esm/input/XboxGamepadMapping.js +12 -0
- package/dist/esm/input/XboxGamepadMapping.js.map +1 -0
- package/dist/esm/input/index.d.ts +19 -0
- package/dist/esm/input/types.d.ts +111 -0
- package/dist/esm/input/types.js +111 -0
- package/dist/esm/input/types.js.map +1 -0
- package/dist/esm/math/AbstractVector.d.ts +33 -0
- package/dist/esm/math/AbstractVector.js +106 -0
- package/dist/esm/math/AbstractVector.js.map +1 -0
- package/dist/esm/math/Circle.d.ts +41 -0
- package/dist/esm/math/Circle.js +134 -0
- package/dist/esm/math/Circle.js.map +1 -0
- package/dist/esm/math/CircleLike.d.ts +5 -0
- package/dist/esm/math/Collision.d.ts +28 -0
- package/dist/esm/math/Ellipse.d.ts +37 -0
- package/dist/esm/math/Ellipse.js +109 -0
- package/dist/esm/math/Ellipse.js.map +1 -0
- package/dist/esm/math/EllipseLike.d.ts +6 -0
- package/dist/esm/math/Flags.d.ts +12 -0
- package/dist/esm/math/Flags.js +41 -0
- package/dist/esm/math/Flags.js.map +1 -0
- package/dist/esm/math/Interval.d.ts +16 -0
- package/dist/esm/math/Interval.js +43 -0
- package/dist/esm/math/Interval.js.map +1 -0
- package/dist/esm/math/Line.d.ts +36 -0
- package/dist/esm/math/Line.js +111 -0
- package/dist/esm/math/Line.js.map +1 -0
- package/dist/esm/math/LineLike.d.ts +6 -0
- package/dist/esm/math/Matrix.d.ts +32 -0
- package/dist/esm/math/Matrix.js +125 -0
- package/dist/esm/math/Matrix.js.map +1 -0
- package/dist/esm/math/ObservableSize.d.ts +16 -0
- package/dist/esm/math/ObservableSize.js +55 -0
- package/dist/esm/math/ObservableSize.js.map +1 -0
- package/dist/esm/math/ObservableVector.d.ts +21 -0
- package/dist/esm/math/ObservableVector.js +71 -0
- package/dist/esm/math/ObservableVector.js.map +1 -0
- package/dist/esm/math/PointLike.d.ts +4 -0
- package/dist/esm/math/PolarVector.d.ts +8 -0
- package/dist/esm/math/PolarVector.js +17 -0
- package/dist/esm/math/PolarVector.js.map +1 -0
- package/dist/esm/math/Polygon.d.ts +38 -0
- package/dist/esm/math/Polygon.js +161 -0
- package/dist/esm/math/Polygon.js.map +1 -0
- package/dist/esm/math/PolygonLike.d.ts +6 -0
- package/dist/esm/math/Random.d.ts +15 -0
- package/dist/esm/math/Random.js +72 -0
- package/dist/esm/math/Random.js.map +1 -0
- package/dist/esm/math/Rectangle.d.ts +48 -0
- package/dist/esm/math/Rectangle.js +205 -0
- package/dist/esm/math/Rectangle.js.map +1 -0
- package/dist/esm/math/RectangleLike.d.ts +6 -0
- package/dist/esm/math/Segment.d.ts +25 -0
- package/dist/esm/math/Segment.js +77 -0
- package/dist/esm/math/Segment.js.map +1 -0
- package/dist/esm/math/ShapeLike.d.ts +4 -0
- package/dist/esm/math/Size.d.ts +24 -0
- package/dist/esm/math/Size.js +69 -0
- package/dist/esm/math/Size.js.map +1 -0
- package/dist/esm/math/Transformable.d.ts +47 -0
- package/dist/esm/math/Transformable.js +142 -0
- package/dist/esm/math/Transformable.js.map +1 -0
- package/dist/esm/math/Vector.d.ts +28 -0
- package/dist/esm/math/Vector.js +77 -0
- package/dist/esm/math/Vector.js.map +1 -0
- package/dist/esm/math/collision-detection.d.ts +41 -0
- package/dist/esm/math/collision-detection.js +394 -0
- package/dist/esm/math/collision-detection.js.map +1 -0
- package/dist/esm/math/collision-primitives.d.ts +39 -0
- package/dist/esm/math/collision-primitives.js +164 -0
- package/dist/esm/math/collision-primitives.js.map +1 -0
- package/dist/esm/math/geometry.d.ts +8 -0
- package/dist/esm/math/geometry.js +195 -0
- package/dist/esm/math/geometry.js.map +1 -0
- package/dist/esm/math/index.d.ts +27 -0
- package/dist/esm/math/utils.d.ts +21 -0
- package/dist/esm/math/utils.js +54 -0
- package/dist/esm/math/utils.js.map +1 -0
- package/dist/esm/particles/Particle.d.ts +40 -0
- package/dist/esm/particles/Particle.js +108 -0
- package/dist/esm/particles/Particle.js.map +1 -0
- package/dist/esm/particles/ParticleProperties.d.ts +14 -0
- package/dist/esm/particles/ParticleSystem.d.ts +43 -0
- package/dist/esm/particles/ParticleSystem.js +185 -0
- package/dist/esm/particles/ParticleSystem.js.map +1 -0
- package/dist/esm/particles/affectors/ColorAffector.d.ts +17 -0
- package/dist/esm/particles/affectors/ColorAffector.js +40 -0
- package/dist/esm/particles/affectors/ColorAffector.js.map +1 -0
- package/dist/esm/particles/affectors/ForceAffector.d.ts +13 -0
- package/dist/esm/particles/affectors/ForceAffector.js +27 -0
- package/dist/esm/particles/affectors/ForceAffector.js.map +1 -0
- package/dist/esm/particles/affectors/ParticleAffector.d.ts +6 -0
- package/dist/esm/particles/affectors/ScaleAffector.d.ts +13 -0
- package/dist/esm/particles/affectors/ScaleAffector.js +27 -0
- package/dist/esm/particles/affectors/ScaleAffector.js.map +1 -0
- package/dist/esm/particles/affectors/TorqueAffector.d.ts +12 -0
- package/dist/esm/particles/affectors/TorqueAffector.js +25 -0
- package/dist/esm/particles/affectors/TorqueAffector.js.map +1 -0
- package/dist/esm/particles/emitters/ParticleEmitter.d.ts +6 -0
- package/dist/esm/particles/emitters/ParticleOptions.d.ts +35 -0
- package/dist/esm/particles/emitters/ParticleOptions.js +84 -0
- package/dist/esm/particles/emitters/ParticleOptions.js.map +1 -0
- package/dist/esm/particles/emitters/UniversalEmitter.d.ts +17 -0
- package/dist/esm/particles/emitters/UniversalEmitter.js +43 -0
- package/dist/esm/particles/emitters/UniversalEmitter.js.map +1 -0
- package/dist/esm/particles/index.d.ts +11 -0
- package/dist/esm/physics/RapierPhysicsWorld.d.ts +136 -0
- package/dist/esm/physics/RapierPhysicsWorld.js +464 -0
- package/dist/esm/physics/RapierPhysicsWorld.js.map +1 -0
- package/dist/esm/physics/index.d.ts +1 -0
- package/dist/esm/rendering/CallbackRenderPass.d.ts +7 -0
- package/dist/esm/rendering/CallbackRenderPass.js +11 -0
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -0
- package/dist/esm/rendering/Container.d.ts +36 -0
- package/dist/esm/rendering/Container.js +197 -0
- package/dist/esm/rendering/Container.js.map +1 -0
- package/dist/esm/rendering/Drawable.d.ts +16 -0
- package/dist/esm/rendering/Drawable.js +57 -0
- package/dist/esm/rendering/Drawable.js.map +1 -0
- package/dist/esm/rendering/RenderBackendType.d.ts +4 -0
- package/dist/esm/rendering/RenderBackendType.js +8 -0
- package/dist/esm/rendering/RenderBackendType.js.map +1 -0
- package/dist/esm/rendering/RenderNode.d.ts +51 -0
- package/dist/esm/rendering/RenderNode.js +238 -0
- package/dist/esm/rendering/RenderNode.js.map +1 -0
- package/dist/esm/rendering/RenderPass.d.ts +4 -0
- package/dist/esm/rendering/RenderStats.d.ts +12 -0
- package/dist/esm/rendering/RenderStats.js +24 -0
- package/dist/esm/rendering/RenderStats.js.map +1 -0
- package/dist/esm/rendering/RenderTarget.d.ts +34 -0
- package/dist/esm/rendering/RenderTarget.js +105 -0
- package/dist/esm/rendering/RenderTarget.js.map +1 -0
- package/dist/esm/rendering/RenderTargetPass.d.ts +18 -0
- package/dist/esm/rendering/RenderTargetPass.js +27 -0
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -0
- package/dist/esm/rendering/Renderer.d.ts +15 -0
- package/dist/esm/rendering/RendererRegistry.d.ts +43 -0
- package/dist/esm/rendering/RendererRegistry.js +88 -0
- package/dist/esm/rendering/RendererRegistry.js.map +1 -0
- package/dist/esm/rendering/SceneRenderRuntime.d.ts +29 -0
- package/dist/esm/rendering/View.d.ts +102 -0
- package/dist/esm/rendering/View.js +360 -0
- package/dist/esm/rendering/View.js.map +1 -0
- package/dist/esm/rendering/filters/BlurFilter.d.ts +20 -0
- package/dist/esm/rendering/filters/BlurFilter.js +68 -0
- package/dist/esm/rendering/filters/BlurFilter.js.map +1 -0
- package/dist/esm/rendering/filters/ColorFilter.d.ts +12 -0
- package/dist/esm/rendering/filters/ColorFilter.js +41 -0
- package/dist/esm/rendering/filters/ColorFilter.js.map +1 -0
- package/dist/esm/rendering/filters/Filter.d.ts +5 -0
- package/dist/esm/rendering/filters/Filter.js +5 -0
- package/dist/esm/rendering/filters/Filter.js.map +1 -0
- package/dist/esm/rendering/index.d.ts +52 -0
- package/dist/esm/rendering/primitives/CircleGeometry.d.ts +4 -0
- package/dist/esm/rendering/primitives/CircleGeometry.js +21 -0
- package/dist/esm/rendering/primitives/CircleGeometry.js.map +1 -0
- package/dist/esm/rendering/primitives/DrawableShape.d.ts +11 -0
- package/dist/esm/rendering/primitives/DrawableShape.js +18 -0
- package/dist/esm/rendering/primitives/DrawableShape.js.map +1 -0
- package/dist/esm/rendering/primitives/Geometry.d.ts +13 -0
- package/dist/esm/rendering/primitives/Geometry.js +13 -0
- package/dist/esm/rendering/primitives/Geometry.js.map +1 -0
- package/dist/esm/rendering/primitives/Graphics.d.ts +36 -0
- package/dist/esm/rendering/primitives/Graphics.js +211 -0
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -0
- package/dist/esm/rendering/shader/Shader.d.ts +27 -0
- package/dist/esm/rendering/shader/Shader.js +61 -0
- package/dist/esm/rendering/shader/Shader.js.map +1 -0
- package/dist/esm/rendering/shader/ShaderAttribute.d.ts +9 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js +17 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -0
- package/dist/esm/rendering/shader/ShaderUniform.d.ts +16 -0
- package/dist/esm/rendering/shader/ShaderUniform.js +33 -0
- package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +43 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.js +177 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -0
- package/dist/esm/rendering/sprite/Sprite.d.ts +43 -0
- package/dist/esm/rendering/sprite/Sprite.js +169 -0
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -0
- package/dist/esm/rendering/sprite/Spritesheet.d.ts +34 -0
- package/dist/esm/rendering/sprite/Spritesheet.js +87 -0
- package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -0
- package/dist/esm/rendering/text/Text.d.ts +26 -0
- package/dist/esm/rendering/text/Text.js +126 -0
- package/dist/esm/rendering/text/Text.js.map +1 -0
- package/dist/esm/rendering/text/TextStyle.d.ts +65 -0
- package/dist/esm/rendering/text/TextStyle.js +179 -0
- package/dist/esm/rendering/text/TextStyle.js.map +1 -0
- package/dist/esm/rendering/texture/RenderTexture.d.ts +36 -0
- package/dist/esm/rendering/texture/RenderTexture.js +118 -0
- package/dist/esm/rendering/texture/RenderTexture.js.map +1 -0
- package/dist/esm/rendering/texture/Sampler.d.ts +29 -0
- package/dist/esm/rendering/texture/Sampler.js +69 -0
- package/dist/esm/rendering/texture/Sampler.js.map +1 -0
- package/dist/esm/rendering/texture/Texture.d.ts +52 -0
- package/dist/esm/rendering/texture/Texture.js +171 -0
- package/dist/esm/rendering/texture/Texture.js.map +1 -0
- package/dist/esm/rendering/types.d.ts +68 -0
- package/dist/esm/rendering/types.js +79 -0
- package/dist/esm/rendering/types.js.map +1 -0
- package/dist/esm/rendering/utils.d.ts +9 -0
- package/dist/esm/rendering/utils.js +39 -0
- package/dist/esm/rendering/utils.js.map +1 -0
- package/dist/esm/rendering/video/Video.d.ts +62 -0
- package/dist/esm/rendering/video/Video.js +288 -0
- package/dist/esm/rendering/video/Video.js.map +1 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +49 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +168 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.d.ts +44 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js +59 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.d.ts +11 -0
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js +110 -0
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.d.ts +26 -0
- package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js +211 -0
- package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +26 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +52 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderManager.d.ts +99 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderManager.js +592 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderManager.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2RendererRuntime.d.ts +15 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.d.ts +17 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js +55 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.d.ts +3 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js +59 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.d.ts +2 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.js +154 -0
- package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +11 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +82 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.d.ts +40 -0
- package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js +68 -0
- package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/particle.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/particle.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/particle.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/particle.vert.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/primitive.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/primitive.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/primitive.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/primitive.vert.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/sprite.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/sprite.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/sprite.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/sprite.vert.js.map +1 -0
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.d.ts +28 -0
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js +52 -0
- package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuBlendState.d.ts +6 -0
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js +79 -0
- package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.d.ts +33 -0
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +423 -0
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.d.ts +43 -0
- package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js +425 -0
- package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuRenderManager.d.ts +111 -0
- package/dist/esm/rendering/webgpu/WebGpuRenderManager.js +763 -0
- package/dist/esm/rendering/webgpu/WebGpuRenderManager.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuRendererRuntime.d.ts +8 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +33 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +488 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -0
- package/dist/esm/resources/AbstractAssetFactory.d.ts +10 -0
- package/dist/esm/resources/AbstractAssetFactory.js +26 -0
- package/dist/esm/resources/AbstractAssetFactory.js.map +1 -0
- package/dist/esm/resources/AssetFactory.d.ts +6 -0
- package/dist/esm/resources/AssetManifest.d.ts +28 -0
- package/dist/esm/resources/AssetManifest.js +64 -0
- package/dist/esm/resources/AssetManifest.js.map +1 -0
- package/dist/esm/resources/CacheFirstStrategy.d.ts +5 -0
- package/dist/esm/resources/CacheFirstStrategy.js +34 -0
- package/dist/esm/resources/CacheFirstStrategy.js.map +1 -0
- package/dist/esm/resources/CacheStore.d.ts +7 -0
- package/dist/esm/resources/CacheStrategy.d.ts +12 -0
- package/dist/esm/resources/Database.d.ts +13 -0
- package/dist/esm/resources/FactoryRegistry.d.ts +9 -0
- package/dist/esm/resources/FactoryRegistry.js +44 -0
- package/dist/esm/resources/FactoryRegistry.js.map +1 -0
- package/dist/esm/resources/IndexedDbDatabase.d.ts +21 -0
- package/dist/esm/resources/IndexedDbDatabase.js +139 -0
- package/dist/esm/resources/IndexedDbDatabase.js.map +1 -0
- package/dist/esm/resources/IndexedDbStore.d.ts +16 -0
- package/dist/esm/resources/IndexedDbStore.js +31 -0
- package/dist/esm/resources/IndexedDbStore.js.map +1 -0
- package/dist/esm/resources/Loader.d.ts +88 -0
- package/dist/esm/resources/Loader.js +597 -0
- package/dist/esm/resources/Loader.js.map +1 -0
- package/dist/esm/resources/NetworkOnlyStrategy.d.ts +5 -0
- package/dist/esm/resources/NetworkOnlyStrategy.js +12 -0
- package/dist/esm/resources/NetworkOnlyStrategy.js.map +1 -0
- package/dist/esm/resources/factories/BinaryFactory.d.ts +6 -0
- package/dist/esm/resources/factories/BinaryFactory.js +17 -0
- package/dist/esm/resources/factories/BinaryFactory.js.map +1 -0
- package/dist/esm/resources/factories/FontFactory.d.ts +13 -0
- package/dist/esm/resources/factories/FontFactory.js +39 -0
- package/dist/esm/resources/factories/FontFactory.js.map +1 -0
- package/dist/esm/resources/factories/ImageFactory.d.ts +10 -0
- package/dist/esm/resources/factories/ImageFactory.js +38 -0
- package/dist/esm/resources/factories/ImageFactory.js.map +1 -0
- package/dist/esm/resources/factories/JsonFactory.d.ts +6 -0
- package/dist/esm/resources/factories/JsonFactory.js +17 -0
- package/dist/esm/resources/factories/JsonFactory.js.map +1 -0
- package/dist/esm/resources/factories/MusicFactory.d.ts +16 -0
- package/dist/esm/resources/factories/MusicFactory.js +40 -0
- package/dist/esm/resources/factories/MusicFactory.js.map +1 -0
- package/dist/esm/resources/factories/SoundFactory.d.ts +14 -0
- package/dist/esm/resources/factories/SoundFactory.js +25 -0
- package/dist/esm/resources/factories/SoundFactory.js.map +1 -0
- package/dist/esm/resources/factories/SvgFactory.d.ts +6 -0
- package/dist/esm/resources/factories/SvgFactory.js +37 -0
- package/dist/esm/resources/factories/SvgFactory.js.map +1 -0
- package/dist/esm/resources/factories/TextFactory.d.ts +6 -0
- package/dist/esm/resources/factories/TextFactory.js +17 -0
- package/dist/esm/resources/factories/TextFactory.js.map +1 -0
- package/dist/esm/resources/factories/TextureFactory.d.ts +13 -0
- package/dist/esm/resources/factories/TextureFactory.js +40 -0
- package/dist/esm/resources/factories/TextureFactory.js.map +1 -0
- package/dist/esm/resources/factories/VideoFactory.d.ts +18 -0
- package/dist/esm/resources/factories/VideoFactory.js +43 -0
- package/dist/esm/resources/factories/VideoFactory.js.map +1 -0
- package/dist/esm/resources/factories/VttFactory.d.ts +6 -0
- package/dist/esm/resources/factories/VttFactory.js +60 -0
- package/dist/esm/resources/factories/VttFactory.js.map +1 -0
- package/dist/esm/resources/factories/WasmFactory.d.ts +6 -0
- package/dist/esm/resources/factories/WasmFactory.js +17 -0
- package/dist/esm/resources/factories/WasmFactory.js.map +1 -0
- package/dist/esm/resources/index.d.ts +26 -0
- package/dist/esm/resources/tokens.d.ts +30 -0
- package/dist/esm/resources/tokens.js +33 -0
- package/dist/esm/resources/tokens.js.map +1 -0
- package/dist/esm/resources/utils.d.ts +1 -0
- package/dist/esm/resources/utils.js +129 -0
- package/dist/esm/resources/utils.js.map +1 -0
- package/dist/esm/vendor/webgl-debug.js +1160 -0
- package/dist/esm/vendor/webgl-debug.js.map +1 -0
- package/dist/exo.d.ts +4748 -0
- package/dist/exo.esm.js +16850 -0
- package/dist/exo.esm.js.map +1 -0
- package/dist/exo.esm.min.js +2 -0
- package/dist/exo.esm.min.js.map +1 -0
- package/dist/exo.global.js +17067 -0
- package/dist/exo.global.js.map +1 -0
- package/dist/exo.global.min.js +2 -0
- package/dist/exo.global.min.js.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { ShaderUniform } from '../shader/ShaderUniform.js';
|
|
2
|
+
import { webGl2PrimitiveArrayConstructors, webGl2PrimitiveByteSizeMapping } from './WebGl2ShaderMappings.js';
|
|
3
|
+
|
|
4
|
+
class WebGl2ShaderBlock {
|
|
5
|
+
constructor(gl, program, index) {
|
|
6
|
+
this._uniforms = new Map();
|
|
7
|
+
this._context = gl;
|
|
8
|
+
this._program = program;
|
|
9
|
+
this.index = index;
|
|
10
|
+
this.name = gl.getActiveUniformBlockName(program, index) || '';
|
|
11
|
+
this.binding = gl.getActiveUniformBlockParameter(program, index, gl.UNIFORM_BLOCK_BINDING);
|
|
12
|
+
this.dataSize = gl.getActiveUniformBlockParameter(program, index, gl.UNIFORM_BLOCK_DATA_SIZE);
|
|
13
|
+
this._uniformBuffer = gl.createBuffer();
|
|
14
|
+
this._blockData = new ArrayBuffer(this.dataSize);
|
|
15
|
+
this._extractUniforms();
|
|
16
|
+
gl.bindBuffer(gl.UNIFORM_BUFFER, this._uniformBuffer);
|
|
17
|
+
gl.bufferData(gl.UNIFORM_BUFFER, this._blockData, gl.DYNAMIC_DRAW);
|
|
18
|
+
gl.bindBufferBase(gl.UNIFORM_BUFFER, this.binding, this._uniformBuffer);
|
|
19
|
+
gl.uniformBlockBinding(this._program, this.index, this.binding);
|
|
20
|
+
}
|
|
21
|
+
getUniform(name) {
|
|
22
|
+
if (!this._uniforms.has(name)) {
|
|
23
|
+
throw new Error(`Uniform "${name}" is not available.`);
|
|
24
|
+
}
|
|
25
|
+
return this._uniforms.get(name);
|
|
26
|
+
}
|
|
27
|
+
upload() {
|
|
28
|
+
const gl = this._context;
|
|
29
|
+
gl.bindBuffer(gl.UNIFORM_BUFFER, this._uniformBuffer);
|
|
30
|
+
gl.bufferSubData(gl.UNIFORM_BUFFER, 0, this._blockData);
|
|
31
|
+
}
|
|
32
|
+
destroy() {
|
|
33
|
+
for (const uniform of this._uniforms.values()) {
|
|
34
|
+
uniform.destroy();
|
|
35
|
+
}
|
|
36
|
+
this._uniforms.clear();
|
|
37
|
+
}
|
|
38
|
+
_extractUniforms() {
|
|
39
|
+
const gl = this._context;
|
|
40
|
+
const program = this._program;
|
|
41
|
+
const blockData = this._blockData;
|
|
42
|
+
const indices = gl.getActiveUniformBlockParameter(program, this.index, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES);
|
|
43
|
+
const offsets = gl.getActiveUniforms(program, indices, gl.UNIFORM_OFFSET);
|
|
44
|
+
const len = indices.length;
|
|
45
|
+
for (let i = 0; i < len; i++) {
|
|
46
|
+
const { type, size, name } = gl.getActiveUniform(program, indices[i]);
|
|
47
|
+
const data = new webGl2PrimitiveArrayConstructors[type](blockData, offsets[i], webGl2PrimitiveByteSizeMapping[type] * size);
|
|
48
|
+
const uniform = new ShaderUniform(indices[i], type, size, name, data);
|
|
49
|
+
this._uniforms.set(uniform.propName, uniform);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { WebGl2ShaderBlock };
|
|
55
|
+
//# sourceMappingURL=WebGl2ShaderBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGl2ShaderBlock.js","sources":["../../../../../src/rendering/webgl2/WebGl2ShaderBlock.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const webGl2PrimitiveByteSizeMapping: Record<number, number>;
|
|
2
|
+
export declare const webGl2PrimitiveArrayConstructors: Record<number, Float32ArrayConstructor | Int32ArrayConstructor | Uint8ArrayConstructor>;
|
|
3
|
+
export declare const webGl2PrimitiveTypeNames: Record<number, string>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ShaderPrimitives } from '../types.js';
|
|
2
|
+
|
|
3
|
+
const webGl2PrimitiveByteSizeMapping = {
|
|
4
|
+
[ShaderPrimitives.Float]: 1,
|
|
5
|
+
[ShaderPrimitives.FloatVec2]: 2,
|
|
6
|
+
[ShaderPrimitives.FloatVec3]: 3,
|
|
7
|
+
[ShaderPrimitives.FloatVec4]: 4,
|
|
8
|
+
[ShaderPrimitives.Int]: 1,
|
|
9
|
+
[ShaderPrimitives.IntVec2]: 2,
|
|
10
|
+
[ShaderPrimitives.IntVec3]: 3,
|
|
11
|
+
[ShaderPrimitives.IntVec4]: 4,
|
|
12
|
+
[ShaderPrimitives.Bool]: 1,
|
|
13
|
+
[ShaderPrimitives.BoolVec2]: 2,
|
|
14
|
+
[ShaderPrimitives.BoolVec3]: 3,
|
|
15
|
+
[ShaderPrimitives.BoolVec4]: 4,
|
|
16
|
+
[ShaderPrimitives.FloatMat2]: 4,
|
|
17
|
+
[ShaderPrimitives.FloatMat3]: 9,
|
|
18
|
+
[ShaderPrimitives.FloatMat4]: 16,
|
|
19
|
+
[ShaderPrimitives.Sampler2D]: 1,
|
|
20
|
+
};
|
|
21
|
+
const webGl2PrimitiveArrayConstructors = {
|
|
22
|
+
[ShaderPrimitives.Float]: Float32Array,
|
|
23
|
+
[ShaderPrimitives.FloatVec2]: Float32Array,
|
|
24
|
+
[ShaderPrimitives.FloatVec3]: Float32Array,
|
|
25
|
+
[ShaderPrimitives.FloatVec4]: Float32Array,
|
|
26
|
+
[ShaderPrimitives.Int]: Int32Array,
|
|
27
|
+
[ShaderPrimitives.IntVec2]: Int32Array,
|
|
28
|
+
[ShaderPrimitives.IntVec3]: Int32Array,
|
|
29
|
+
[ShaderPrimitives.IntVec4]: Int32Array,
|
|
30
|
+
[ShaderPrimitives.Bool]: Uint8Array,
|
|
31
|
+
[ShaderPrimitives.BoolVec2]: Uint8Array,
|
|
32
|
+
[ShaderPrimitives.BoolVec3]: Uint8Array,
|
|
33
|
+
[ShaderPrimitives.BoolVec4]: Uint8Array,
|
|
34
|
+
[ShaderPrimitives.FloatMat2]: Float32Array,
|
|
35
|
+
[ShaderPrimitives.FloatMat3]: Float32Array,
|
|
36
|
+
[ShaderPrimitives.FloatMat4]: Float32Array,
|
|
37
|
+
[ShaderPrimitives.Sampler2D]: Uint8Array,
|
|
38
|
+
};
|
|
39
|
+
const webGl2PrimitiveTypeNames = {
|
|
40
|
+
[ShaderPrimitives.Float]: 'FLOAT',
|
|
41
|
+
[ShaderPrimitives.FloatVec2]: 'FLOAT_VEC2',
|
|
42
|
+
[ShaderPrimitives.FloatVec3]: 'FLOAT_VEC3',
|
|
43
|
+
[ShaderPrimitives.FloatVec4]: 'FLOAT_VEC4',
|
|
44
|
+
[ShaderPrimitives.Int]: 'INT',
|
|
45
|
+
[ShaderPrimitives.IntVec2]: 'INT_VEC2',
|
|
46
|
+
[ShaderPrimitives.IntVec3]: 'INT_VEC3',
|
|
47
|
+
[ShaderPrimitives.IntVec4]: 'INT_VEC4',
|
|
48
|
+
[ShaderPrimitives.Bool]: 'BOOL',
|
|
49
|
+
[ShaderPrimitives.BoolVec2]: 'BOOL_VEC2',
|
|
50
|
+
[ShaderPrimitives.BoolVec3]: 'BOOL_VEC3',
|
|
51
|
+
[ShaderPrimitives.BoolVec4]: 'BOOL_VEC4',
|
|
52
|
+
[ShaderPrimitives.FloatMat2]: 'FLOAT_MAT2',
|
|
53
|
+
[ShaderPrimitives.FloatMat3]: 'FLOAT_MAT3',
|
|
54
|
+
[ShaderPrimitives.FloatMat4]: 'FLOAT_MAT4',
|
|
55
|
+
[ShaderPrimitives.Sampler2D]: 'SAMPLER_2D',
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export { webGl2PrimitiveArrayConstructors, webGl2PrimitiveByteSizeMapping, webGl2PrimitiveTypeNames };
|
|
59
|
+
//# sourceMappingURL=WebGl2ShaderMappings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGl2ShaderMappings.js","sources":["../../../../../src/rendering/webgl2/WebGl2ShaderMappings.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { ShaderAttribute } from '../shader/ShaderAttribute.js';
|
|
2
|
+
import { ShaderUniform } from '../shader/ShaderUniform.js';
|
|
3
|
+
import { WebGl2ShaderBlock } from './WebGl2ShaderBlock.js';
|
|
4
|
+
import { ShaderPrimitives } from '../types.js';
|
|
5
|
+
import { webGl2PrimitiveArrayConstructors, webGl2PrimitiveByteSizeMapping } from './WebGl2ShaderMappings.js';
|
|
6
|
+
|
|
7
|
+
const uniformUploadFunctions = {
|
|
8
|
+
[ShaderPrimitives.Float]: (gl, location, value) => { gl.uniform1f(location, value[0]); },
|
|
9
|
+
[ShaderPrimitives.FloatVec2]: (gl, location, value) => { gl.uniform2fv(location, value); },
|
|
10
|
+
[ShaderPrimitives.FloatVec3]: (gl, location, value) => { gl.uniform3fv(location, value); },
|
|
11
|
+
[ShaderPrimitives.FloatVec4]: (gl, location, value) => { gl.uniform4fv(location, value); },
|
|
12
|
+
[ShaderPrimitives.Int]: (gl, location, value) => { gl.uniform1i(location, value[0]); },
|
|
13
|
+
[ShaderPrimitives.IntVec2]: (gl, location, value) => { gl.uniform2iv(location, value); },
|
|
14
|
+
[ShaderPrimitives.IntVec3]: (gl, location, value) => { gl.uniform3iv(location, value); },
|
|
15
|
+
[ShaderPrimitives.IntVec4]: (gl, location, value) => { gl.uniform4iv(location, value); },
|
|
16
|
+
[ShaderPrimitives.Bool]: (gl, location, value) => { gl.uniform1i(location, value[0]); },
|
|
17
|
+
[ShaderPrimitives.BoolVec2]: (gl, location, value) => { gl.uniform2iv(location, value); },
|
|
18
|
+
[ShaderPrimitives.BoolVec3]: (gl, location, value) => { gl.uniform3iv(location, value); },
|
|
19
|
+
[ShaderPrimitives.BoolVec4]: (gl, location, value) => { gl.uniform4iv(location, value); },
|
|
20
|
+
[ShaderPrimitives.FloatMat2]: (gl, location, value) => { gl.uniformMatrix2fv(location, false, value); },
|
|
21
|
+
[ShaderPrimitives.FloatMat3]: (gl, location, value) => { gl.uniformMatrix3fv(location, false, value); },
|
|
22
|
+
[ShaderPrimitives.FloatMat4]: (gl, location, value) => { gl.uniformMatrix4fv(location, false, value); },
|
|
23
|
+
[ShaderPrimitives.Sampler2D]: (gl, location, value) => { gl.uniform1i(location, value[0]); },
|
|
24
|
+
};
|
|
25
|
+
function createWebGl2ShaderRuntime(gl) {
|
|
26
|
+
let program = null;
|
|
27
|
+
let vertexShader = null;
|
|
28
|
+
let fragmentShader = null;
|
|
29
|
+
const managedUniforms = [];
|
|
30
|
+
const uniformBlocks = [];
|
|
31
|
+
function initialize(shader) {
|
|
32
|
+
if (program) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
vertexShader = compileShader(gl, gl.VERTEX_SHADER, shader.vertexSource);
|
|
36
|
+
fragmentShader = compileShader(gl, gl.FRAGMENT_SHADER, shader.fragmentSource);
|
|
37
|
+
program = linkProgram(gl, vertexShader, fragmentShader);
|
|
38
|
+
extractAttributes(gl, program, shader);
|
|
39
|
+
extractUniforms(gl, program, shader, managedUniforms);
|
|
40
|
+
extractUniformBlocks(gl, program, uniformBlocks);
|
|
41
|
+
}
|
|
42
|
+
function syncUniforms() {
|
|
43
|
+
for (const managed of managedUniforms) {
|
|
44
|
+
if (managed.uniform.dirty) {
|
|
45
|
+
managed.uploadFn(gl, managed.location, managed.uniform.value);
|
|
46
|
+
managed.uniform.markClean();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
for (const block of uniformBlocks) {
|
|
50
|
+
block.upload();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
initialize,
|
|
55
|
+
bind: (shader) => {
|
|
56
|
+
initialize(shader);
|
|
57
|
+
gl.useProgram(program);
|
|
58
|
+
syncUniforms();
|
|
59
|
+
},
|
|
60
|
+
unbind: () => {
|
|
61
|
+
gl.useProgram(null);
|
|
62
|
+
},
|
|
63
|
+
sync: () => {
|
|
64
|
+
syncUniforms();
|
|
65
|
+
},
|
|
66
|
+
destroy: (shader) => {
|
|
67
|
+
gl.deleteShader(vertexShader);
|
|
68
|
+
gl.deleteShader(fragmentShader);
|
|
69
|
+
gl.deleteProgram(program);
|
|
70
|
+
for (const block of uniformBlocks) {
|
|
71
|
+
block.destroy();
|
|
72
|
+
}
|
|
73
|
+
vertexShader = null;
|
|
74
|
+
fragmentShader = null;
|
|
75
|
+
program = null;
|
|
76
|
+
managedUniforms.length = 0;
|
|
77
|
+
uniformBlocks.length = 0;
|
|
78
|
+
shader.disconnect();
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function compileShader(gl, type, source) {
|
|
83
|
+
const shader = gl.createShader(type);
|
|
84
|
+
if (!shader) {
|
|
85
|
+
throw new Error('Could not create shader.');
|
|
86
|
+
}
|
|
87
|
+
gl.shaderSource(shader, source);
|
|
88
|
+
gl.compileShader(shader);
|
|
89
|
+
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
|
|
90
|
+
const log = gl.getShaderInfoLog(shader);
|
|
91
|
+
gl.deleteShader(shader);
|
|
92
|
+
throw new Error(`Shader compilation failed: ${log}`);
|
|
93
|
+
}
|
|
94
|
+
return shader;
|
|
95
|
+
}
|
|
96
|
+
function linkProgram(gl, vertexShader, fragmentShader) {
|
|
97
|
+
const program = gl.createProgram();
|
|
98
|
+
if (!program) {
|
|
99
|
+
throw new Error('Could not create shader program.');
|
|
100
|
+
}
|
|
101
|
+
gl.attachShader(program, vertexShader);
|
|
102
|
+
gl.attachShader(program, fragmentShader);
|
|
103
|
+
gl.linkProgram(program);
|
|
104
|
+
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
|
|
105
|
+
const log = gl.getProgramInfoLog(program);
|
|
106
|
+
gl.detachShader(program, vertexShader);
|
|
107
|
+
gl.detachShader(program, fragmentShader);
|
|
108
|
+
gl.deleteProgram(program);
|
|
109
|
+
throw new Error(`Shader program linking failed: ${log}`);
|
|
110
|
+
}
|
|
111
|
+
return program;
|
|
112
|
+
}
|
|
113
|
+
function extractAttributes(gl, program, shader) {
|
|
114
|
+
const activeAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
|
|
115
|
+
for (let i = 0; i < activeAttributes; i++) {
|
|
116
|
+
const info = gl.getActiveAttrib(program, i);
|
|
117
|
+
if (!info) {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const attribute = new ShaderAttribute(i, info.name, info.type);
|
|
121
|
+
attribute.location = gl.getAttribLocation(program, info.name);
|
|
122
|
+
shader.attributes.set(info.name, attribute);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function extractUniforms(gl, program, shader, managedUniforms) {
|
|
126
|
+
const activeCount = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);
|
|
127
|
+
const activeIndices = new Uint8Array(activeCount).map((_, index) => index);
|
|
128
|
+
const blocks = gl.getActiveUniforms(program, activeIndices, gl.UNIFORM_BLOCK_INDEX);
|
|
129
|
+
const indices = activeIndices.filter((index) => (blocks[index] === -1));
|
|
130
|
+
for (const index of indices) {
|
|
131
|
+
const info = gl.getActiveUniform(program, index);
|
|
132
|
+
if (!info) {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const data = new webGl2PrimitiveArrayConstructors[info.type](webGl2PrimitiveByteSizeMapping[info.type] * info.size);
|
|
136
|
+
const uniform = new ShaderUniform(index, info.type, info.size, info.name, data);
|
|
137
|
+
const location = gl.getUniformLocation(program, uniform.name);
|
|
138
|
+
const uploadFn = uniformUploadFunctions[info.type];
|
|
139
|
+
shader.uniforms.set(uniform.name, uniform);
|
|
140
|
+
if (location) {
|
|
141
|
+
managedUniforms.push({ location, uploadFn, uniform });
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
function extractUniformBlocks(gl, program, uniformBlocks) {
|
|
146
|
+
const activeBlocks = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);
|
|
147
|
+
for (let index = 0; index < activeBlocks; index++) {
|
|
148
|
+
const block = new WebGl2ShaderBlock(gl, program, index);
|
|
149
|
+
uniformBlocks.push(block);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
export { createWebGl2ShaderRuntime };
|
|
154
|
+
//# sourceMappingURL=WebGl2ShaderRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGl2ShaderRuntime.js","sources":["../../../../../src/rendering/webgl2/WebGl2ShaderRuntime.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAgBA,MAAM,sBAAsB,GAA0C;IAClE,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAU,EAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC,gBAAgB,CAAC,SAAS,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAU,EAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC,gBAAgB,CAAC,SAAS,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAU,EAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC,gBAAgB,CAAC,SAAS,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAU,EAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAEhG,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAU,EAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC,gBAAgB,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAU,EAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC,gBAAgB,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAU,EAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC,gBAAgB,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAU,EAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9F,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAU,EAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC,gBAAgB,CAAC,QAAQ,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAU,EAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC,gBAAgB,CAAC,QAAQ,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAU,EAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC,gBAAgB,CAAC,QAAQ,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAU,EAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAE/F,CAAC,gBAAgB,CAAC,SAAS,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,OAAa,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7G,CAAC,gBAAgB,CAAC,SAAS,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,OAAa,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7G,CAAC,gBAAgB,CAAC,SAAS,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,OAAa,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAE7G,CAAC,gBAAgB,CAAC,SAAS,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAU,EAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrG;AAEK,SAAU,yBAAyB,CAAC,EAA0B,EAAA;IAChE,IAAI,OAAO,GAAwB,IAAI;IACvC,IAAI,YAAY,GAAuB,IAAI;IAC3C,IAAI,cAAc,GAAuB,IAAI;IAC7C,MAAM,eAAe,GAA0B,EAAE;IACjD,MAAM,aAAa,GAA6B,EAAE;IAElD,SAAS,UAAU,CAAC,MAAc,EAAA;QAC9B,IAAI,OAAO,EAAE;YACT;QACJ;AAEA,QAAA,YAAY,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC;AACvE,QAAA,cAAc,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,cAAc,CAAC;QAC7E,OAAO,GAAG,WAAW,CAAC,EAAE,EAAE,YAAY,EAAE,cAAc,CAAC;AAEvD,QAAA,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC;QACtC,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC;AACrD,QAAA,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC;IACpD;AAEA,IAAA,SAAS,YAAY,GAAA;AACjB,QAAA,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE;AACnC,YAAA,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;AACvB,gBAAA,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7D,gBAAA,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE;YAC/B;QACJ;AAEA,QAAA,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE;YAC/B,KAAK,CAAC,MAAM,EAAE;QAClB;IACJ;IAEA,OAAO;QACH,UAAU;AACV,QAAA,IAAI,EAAE,CAAC,MAAc,KAAU;YAC3B,UAAU,CAAC,MAAM,CAAC;AAElB,YAAA,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;AACtB,YAAA,YAAY,EAAE;QAClB,CAAC;QAED,MAAM,EAAE,MAAW;AACf,YAAA,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QACvB,CAAC;QAED,IAAI,EAAE,MAAW;AACb,YAAA,YAAY,EAAE;QAClB,CAAC;AAED,QAAA,OAAO,EAAE,CAAC,MAAc,KAAU;AAC9B,YAAA,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC;AAC7B,YAAA,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC;AAC/B,YAAA,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC;AAEzB,YAAA,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE;gBAC/B,KAAK,CAAC,OAAO,EAAE;YACnB;YAEA,YAAY,GAAG,IAAI;YACnB,cAAc,GAAG,IAAI;YACrB,OAAO,GAAG,IAAI;AACd,YAAA,eAAe,CAAC,MAAM,GAAG,CAAC;AAC1B,YAAA,aAAa,CAAC,MAAM,GAAG,CAAC;YAExB,MAAM,CAAC,UAAU,EAAE;QACvB,CAAC;KACJ;AACL;AAEA,SAAS,aAAa,CAAC,EAA0B,EAAE,IAAY,EAAE,MAAc,EAAA;IAC3E,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;IAEpC,IAAI,CAAC,MAAM,EAAE;AACT,QAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC;IAC/C;AAEA,IAAA,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;AAC/B,IAAA,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;AAExB,IAAA,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE;QACnD,MAAM,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACvC,QAAA,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;AACvB,QAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAA,CAAE,CAAC;IACxD;AAEA,IAAA,OAAO,MAAM;AACjB;AAEA,SAAS,WAAW,CAAC,EAA0B,EAAE,YAAyB,EAAE,cAA2B,EAAA;AACnG,IAAA,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,EAAE;IAElC,IAAI,CAAC,OAAO,EAAE;AACV,QAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;IACvD;AAEA,IAAA,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC;AACtC,IAAA,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC;AACxC,IAAA,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC;AAEvB,IAAA,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE;QAClD,MAAM,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACzC,QAAA,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC;AACtC,QAAA,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC;AACxC,QAAA,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC;AACzB,QAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,CAAA,CAAE,CAAC;IAC5D;AAEA,IAAA,OAAO,OAAO;AAClB;AAEA,SAAS,iBAAiB,CAAC,EAA0B,EAAE,OAAqB,EAAE,MAAc,EAAA;AACxF,IAAA,MAAM,gBAAgB,GAAG,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,iBAAiB,CAAC;AAE9E,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAE3C,IAAI,CAAC,IAAI,EAAE;YACP;QACJ;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;AAC9D,QAAA,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;QAC7D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;IAC/C;AACJ;AAEA,SAAS,eAAe,CAAC,EAA0B,EAAE,OAAqB,EAAE,MAAc,EAAE,eAAsC,EAAA;AAC9H,IAAA,MAAM,WAAW,GAAG,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC;AACvE,IAAA,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC;AAC1E,IAAA,MAAM,MAAM,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,CAAC,mBAAmB,CAAC;IACnF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AAEvE,IAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;QACzB,MAAM,IAAI,GAAG,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC;QAEhD,IAAI,CAAC,IAAI,EAAE;YACP;QACJ;QAEA,MAAM,IAAI,GAAG,IAAI,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACnH,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AAC/E,QAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;QAC7D,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;QAElD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;QAE1C,IAAI,QAAQ,EAAE;YACV,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QACzD;IACJ;AACJ;AAEA,SAAS,oBAAoB,CAAC,EAA0B,EAAE,OAAqB,EAAE,aAAuC,EAAA;AACpH,IAAA,MAAM,YAAY,GAAG,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,CAAC;AAE9E,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,EAAE,KAAK,EAAE,EAAE;QAC/C,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC;AACvD,QAAA,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;AACJ;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { WebGl2VertexArrayObject } from './WebGl2VertexArrayObject';
|
|
2
|
+
import type { WebGl2RenderBuffer } from './WebGl2RenderBuffer';
|
|
3
|
+
import type { Sprite } from '../sprite/Sprite';
|
|
4
|
+
import { AbstractWebGl2BatchedRenderer } from './AbstractWebGl2BatchedRenderer';
|
|
5
|
+
import type { View } from '../View';
|
|
6
|
+
export declare class WebGl2SpriteRenderer extends AbstractWebGl2BatchedRenderer {
|
|
7
|
+
constructor(batchSize: number);
|
|
8
|
+
render(sprite: Sprite): this;
|
|
9
|
+
protected createVao(gl: WebGL2RenderingContext, indexBuffer: WebGl2RenderBuffer, vertexBuffer: WebGl2RenderBuffer): WebGl2VertexArrayObject;
|
|
10
|
+
protected updateView(view: View): this;
|
|
11
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { WebGl2VertexArrayObject } from './WebGl2VertexArrayObject.js';
|
|
2
|
+
import { AbstractWebGl2BatchedRenderer } from './AbstractWebGl2BatchedRenderer.js';
|
|
3
|
+
import vertexSource from './glsl/sprite.vert.js';
|
|
4
|
+
import fragmentSource from './glsl/sprite.frag.js';
|
|
5
|
+
|
|
6
|
+
class WebGl2SpriteRenderer extends AbstractWebGl2BatchedRenderer {
|
|
7
|
+
constructor(batchSize) {
|
|
8
|
+
/**
|
|
9
|
+
* 4 x 4 Attributes:
|
|
10
|
+
* 2 = position (x, y) +
|
|
11
|
+
* 1 = texCoord (packed uv) +
|
|
12
|
+
* 1 = color (ARGB int)
|
|
13
|
+
*/
|
|
14
|
+
super(batchSize, 16, vertexSource, fragmentSource);
|
|
15
|
+
}
|
|
16
|
+
render(sprite) {
|
|
17
|
+
const { texture, blendMode, tint, vertices, texCoords } = sprite;
|
|
18
|
+
const batchFull = (this.batchIndex >= this.batchSize);
|
|
19
|
+
const textureChanged = (texture !== this.currentTexture);
|
|
20
|
+
const blendModeChanged = (blendMode !== this.currentBlendMode);
|
|
21
|
+
const flush = (batchFull || textureChanged || blendModeChanged);
|
|
22
|
+
const index = flush ? 0 : (this.batchIndex * this.attributeCount);
|
|
23
|
+
const float32View = this.float32View;
|
|
24
|
+
const uint32View = this.uint32View;
|
|
25
|
+
const runtime = this.getRuntime();
|
|
26
|
+
if (flush) {
|
|
27
|
+
this.flush();
|
|
28
|
+
if (textureChanged) {
|
|
29
|
+
this.currentTexture = texture;
|
|
30
|
+
}
|
|
31
|
+
if (blendModeChanged) {
|
|
32
|
+
this.currentBlendMode = blendMode;
|
|
33
|
+
runtime.setBlendMode(blendMode);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (textureChanged && texture) {
|
|
37
|
+
runtime.bindTexture(texture);
|
|
38
|
+
}
|
|
39
|
+
// X / Y
|
|
40
|
+
float32View[index + 0] = vertices[0];
|
|
41
|
+
float32View[index + 1] = vertices[1];
|
|
42
|
+
// X / Y
|
|
43
|
+
float32View[index + 4] = vertices[2];
|
|
44
|
+
float32View[index + 5] = vertices[3];
|
|
45
|
+
// X / Y
|
|
46
|
+
float32View[index + 8] = vertices[4];
|
|
47
|
+
float32View[index + 9] = vertices[5];
|
|
48
|
+
// X / Y
|
|
49
|
+
float32View[index + 12] = vertices[6];
|
|
50
|
+
float32View[index + 13] = vertices[7];
|
|
51
|
+
// U / V
|
|
52
|
+
uint32View[index + 2] = texCoords[0];
|
|
53
|
+
uint32View[index + 6] = texCoords[1];
|
|
54
|
+
// U / V
|
|
55
|
+
uint32View[index + 10] = texCoords[2];
|
|
56
|
+
uint32View[index + 14] = texCoords[3];
|
|
57
|
+
// Tint
|
|
58
|
+
uint32View[index + 3]
|
|
59
|
+
= uint32View[index + 7]
|
|
60
|
+
= uint32View[index + 11]
|
|
61
|
+
= uint32View[index + 15]
|
|
62
|
+
= tint.toRgba();
|
|
63
|
+
this.batchIndex++;
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
createVao(gl, indexBuffer, vertexBuffer) {
|
|
67
|
+
return new WebGl2VertexArrayObject()
|
|
68
|
+
.addIndex(indexBuffer)
|
|
69
|
+
.addAttribute(vertexBuffer, this.shader.getAttribute('a_position'), gl.FLOAT, false, this.attributeCount, 0)
|
|
70
|
+
.addAttribute(vertexBuffer, this.shader.getAttribute('a_texcoord'), gl.UNSIGNED_SHORT, true, this.attributeCount, 8)
|
|
71
|
+
.addAttribute(vertexBuffer, this.shader.getAttribute('a_color'), gl.UNSIGNED_BYTE, true, this.attributeCount, 12);
|
|
72
|
+
}
|
|
73
|
+
updateView(view) {
|
|
74
|
+
this.shader
|
|
75
|
+
.getUniform('u_projection')
|
|
76
|
+
.setValue(view.getTransform().toArray(false));
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export { WebGl2SpriteRenderer };
|
|
82
|
+
//# sourceMappingURL=WebGl2SpriteRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGl2SpriteRenderer.js","sources":["../../../../../src/rendering/webgl2/WebGl2SpriteRenderer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { RenderingPrimitives } from 'rendering/types';
|
|
2
|
+
import type { ShaderAttribute } from '../shader/ShaderAttribute';
|
|
3
|
+
import type { WebGl2RenderBuffer } from './WebGl2RenderBuffer';
|
|
4
|
+
interface VaoAttribute {
|
|
5
|
+
readonly buffer: WebGl2RenderBuffer;
|
|
6
|
+
readonly location: number;
|
|
7
|
+
readonly size: number;
|
|
8
|
+
readonly type: number;
|
|
9
|
+
readonly normalized: boolean;
|
|
10
|
+
readonly stride: number;
|
|
11
|
+
readonly start: number;
|
|
12
|
+
}
|
|
13
|
+
export interface WebGl2VertexArrayObjectRuntime {
|
|
14
|
+
bind(vao: WebGl2VertexArrayObject): void;
|
|
15
|
+
unbind(vao: WebGl2VertexArrayObject): void;
|
|
16
|
+
draw(vao: WebGl2VertexArrayObject, size: number, start: number, type: RenderingPrimitives): void;
|
|
17
|
+
destroy(vao: WebGl2VertexArrayObject): void;
|
|
18
|
+
}
|
|
19
|
+
export declare class WebGl2VertexArrayObject {
|
|
20
|
+
private readonly _attributes;
|
|
21
|
+
private _indexBuffer;
|
|
22
|
+
private _drawMode;
|
|
23
|
+
private _runtime;
|
|
24
|
+
private _version;
|
|
25
|
+
constructor(drawMode?: RenderingPrimitives);
|
|
26
|
+
get attributes(): Array<VaoAttribute>;
|
|
27
|
+
get indexBuffer(): WebGl2RenderBuffer | null;
|
|
28
|
+
get drawMode(): RenderingPrimitives;
|
|
29
|
+
get version(): number;
|
|
30
|
+
connect(runtime: WebGl2VertexArrayObjectRuntime): this;
|
|
31
|
+
disconnect(): this;
|
|
32
|
+
bind(): this;
|
|
33
|
+
unbind(): this;
|
|
34
|
+
addAttribute(buffer: WebGl2RenderBuffer, attribute: ShaderAttribute, type?: number, normalized?: boolean, stride?: number, start?: number): this;
|
|
35
|
+
addIndex(buffer: WebGl2RenderBuffer): this;
|
|
36
|
+
clear(): this;
|
|
37
|
+
draw(size: number, start: number, type?: RenderingPrimitives): this;
|
|
38
|
+
destroy(): void;
|
|
39
|
+
}
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { RenderingPrimitives, ShaderPrimitives } from '../types.js';
|
|
2
|
+
|
|
3
|
+
class WebGl2VertexArrayObject {
|
|
4
|
+
constructor(drawMode = RenderingPrimitives.Triangles) {
|
|
5
|
+
this._attributes = [];
|
|
6
|
+
this._indexBuffer = null;
|
|
7
|
+
this._runtime = null;
|
|
8
|
+
this._version = 0;
|
|
9
|
+
this._drawMode = drawMode;
|
|
10
|
+
}
|
|
11
|
+
get attributes() {
|
|
12
|
+
return this._attributes;
|
|
13
|
+
}
|
|
14
|
+
get indexBuffer() {
|
|
15
|
+
return this._indexBuffer;
|
|
16
|
+
}
|
|
17
|
+
get drawMode() {
|
|
18
|
+
return this._drawMode;
|
|
19
|
+
}
|
|
20
|
+
get version() {
|
|
21
|
+
return this._version;
|
|
22
|
+
}
|
|
23
|
+
connect(runtime) {
|
|
24
|
+
this._runtime = runtime;
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
disconnect() {
|
|
28
|
+
this._runtime = null;
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
bind() {
|
|
32
|
+
this._runtime?.bind(this);
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
unbind() {
|
|
36
|
+
this._runtime?.unbind(this);
|
|
37
|
+
return this;
|
|
38
|
+
}
|
|
39
|
+
addAttribute(buffer, attribute, type = ShaderPrimitives.Float, normalized = false, stride = 0, start = 0) {
|
|
40
|
+
const { location, size } = attribute;
|
|
41
|
+
this._attributes.push({ buffer, location, size, type, normalized, stride, start });
|
|
42
|
+
this._version++;
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
addIndex(buffer) {
|
|
46
|
+
this._indexBuffer = buffer;
|
|
47
|
+
this._version++;
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
clear() {
|
|
51
|
+
this._attributes.length = 0;
|
|
52
|
+
this._indexBuffer = null;
|
|
53
|
+
this._version++;
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
draw(size, start, type = this._drawMode) {
|
|
57
|
+
this._runtime?.draw(this, size, start, type);
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
destroy() {
|
|
61
|
+
this._runtime?.destroy(this);
|
|
62
|
+
this._runtime = null;
|
|
63
|
+
this._indexBuffer = null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export { WebGl2VertexArrayObject };
|
|
68
|
+
//# sourceMappingURL=WebGl2VertexArrayObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGl2VertexArrayObject.js","sources":["../../../../../src/rendering/webgl2/WebGl2VertexArrayObject.ts"],"sourcesContent":[null],"names":[],"mappings":";;MAqBa,uBAAuB,CAAA;IAQhC,WAAA,CAAmB,QAAA,GAAgC,mBAAmB,CAAC,SAAS,EAAA;QAN/D,IAAA,CAAA,WAAW,GAAwB,EAAE;QAC9C,IAAA,CAAA,YAAY,GAA8B,IAAI;QAE9C,IAAA,CAAA,QAAQ,GAA0C,IAAI;QACtD,IAAA,CAAA,QAAQ,GAAG,CAAC;AAGhB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;IAC7B;AAEA,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW;IAC3B;AAEA,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY;IAC5B;AAEA,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS;IACzB;AAEA,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ;IACxB;AAEO,IAAA,OAAO,CAAC,OAAuC,EAAA;AAClD,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AAEvB,QAAA,OAAO,IAAI;IACf;IAEO,UAAU,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AAEpB,QAAA,OAAO,IAAI;IACf;IAEO,IAAI,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC;AAEzB,QAAA,OAAO,IAAI;IACf;IAEO,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC;AAE3B,QAAA,OAAO,IAAI;IACf;IAEO,YAAY,CAAC,MAA0B,EAAE,SAA0B,EAAE,IAAA,GAAe,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAA;AACxJ,QAAA,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,SAAS;QAEpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAClF,IAAI,CAAC,QAAQ,EAAE;AAEf,QAAA,OAAO,IAAI;IACf;AAEO,IAAA,QAAQ,CAAC,MAA0B,EAAA;AACtC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM;QAC1B,IAAI,CAAC,QAAQ,EAAE;AAEf,QAAA,OAAO,IAAI;IACf;IAEO,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QACxB,IAAI,CAAC,QAAQ,EAAE;AAEf,QAAA,OAAO,IAAI;IACf;IAEO,IAAI,CAAC,IAAY,EAAE,KAAa,EAAE,IAAA,GAA4B,IAAI,CAAC,SAAS,EAAA;AAC/E,QAAA,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;AAE5C,QAAA,OAAO,IAAI;IACf;IAEO,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC5B;AACH;;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var fragmentSource = "#version 300 es\r\nprecision lowp float;\r\n\r\nuniform sampler2D u_texture;\r\n\r\nin vec2 v_texcoord;\r\nin vec4 v_color;\r\n\r\nlayout(location = 0) out vec4 fragColor;\r\n\r\nvoid main(void) {\r\n fragColor = texture(u_texture, v_texcoord) * v_color;\r\n}\r\n";
|
|
2
|
+
|
|
3
|
+
export { fragmentSource as default };
|
|
4
|
+
//# sourceMappingURL=particle.frag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particle.frag.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var vertexSource = "#version 300 es\r\nprecision lowp float;\r\n\r\nlayout(location = 0) in vec2 a_position;\r\nlayout(location = 1) in vec2 a_texcoord;\r\nlayout(location = 2) in vec2 a_translation;\r\nlayout(location = 3) in vec2 a_scale;\r\nlayout(location = 4) in float a_rotation;\r\nlayout(location = 5) in vec4 a_color;\n\nuniform mat3 u_projection;\nuniform mat3 u_translation;\n\r\nout vec2 v_texcoord;\r\nout vec4 v_color;\r\n\r\nvoid main(void) {\n vec2 rotation = vec2(sin(radians(a_rotation)), cos(radians(a_rotation)));\n vec3 position = vec3(\n (a_position.x * (a_scale.x * rotation.y)) + (a_position.y * (a_scale.y * rotation.x)) + a_translation.x,\n (a_position.x * (a_scale.x * -rotation.x)) + (a_position.y * (a_scale.y * rotation.y)) + a_translation.y,\n 1.0\n );\n\n gl_Position = vec4((u_projection * u_translation * position).xy, 0.0, 1.0);\n\r\n v_texcoord = a_texcoord;\r\n v_color = vec4(a_color.rgb * a_color.a, a_color.a);\r\n}\r\n";
|
|
2
|
+
|
|
3
|
+
export { vertexSource as default };
|
|
4
|
+
//# sourceMappingURL=particle.vert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particle.vert.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var fragmentSource = "#version 300 es\r\nprecision lowp float;\r\n\r\nlayout(location = 0) out vec4 fragColor;\r\n\r\nin vec4 v_color;\r\n\r\nvoid main(void) {\r\n fragColor = v_color;\r\n}\r\n";
|
|
2
|
+
|
|
3
|
+
export { fragmentSource as default };
|
|
4
|
+
//# sourceMappingURL=primitive.frag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitive.frag.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var vertexSource = "#version 300 es\r\nprecision lowp float;\r\n\r\nlayout(location = 0) in vec2 a_position;\r\nlayout(location = 1) in vec4 a_color;\r\n\r\nuniform mat3 u_projection;\r\nuniform mat3 u_translation;\r\n\r\nout vec4 v_color;\r\n\r\nvoid main(void) {\r\n gl_Position = vec4((u_projection * u_translation * vec3(a_position, 1.0)).xy, 0.0, 1.0);\r\n v_color = vec4(a_color.rgb * a_color.a, a_color.a);\r\n}\r\n";
|
|
2
|
+
|
|
3
|
+
export { vertexSource as default };
|
|
4
|
+
//# sourceMappingURL=primitive.vert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitive.vert.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var fragmentSource = "#version 300 es\r\nprecision lowp float;\r\n\r\nuniform sampler2D u_texture;\r\n\r\nin vec2 v_texcoord;\r\nin vec4 v_color;\r\n\r\nlayout(location = 0) out vec4 fragColor;\r\n\r\nvoid main(void) {\r\n fragColor = texture(u_texture, v_texcoord) * v_color;\r\n}\r\n";
|
|
2
|
+
|
|
3
|
+
export { fragmentSource as default };
|
|
4
|
+
//# sourceMappingURL=sprite.frag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprite.frag.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var vertexSource = "#version 300 es\r\nprecision lowp float;\r\n\r\nlayout(location = 0) in vec2 a_position;\r\nlayout(location = 1) in vec2 a_texcoord;\r\nlayout(location = 2) in vec4 a_color;\r\n\r\nuniform mat3 u_projection;\r\n\r\nout vec2 v_texcoord;\r\nout vec4 v_color;\r\n\r\nvoid main(void) {\r\n gl_Position = vec4((u_projection * vec3(a_position, 1.0)).xy, 0.0, 1.0);\r\n\r\n v_texcoord = a_texcoord;\r\n v_color = vec4(a_color.rgb * a_color.a, a_color.a);\r\n}\r\n";
|
|
2
|
+
|
|
3
|
+
export { vertexSource as default };
|
|
4
|
+
//# sourceMappingURL=sprite.vert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprite.vert.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { RenderBackendType } from '../RenderBackendType';
|
|
2
|
+
import type { Drawable } from '../Drawable';
|
|
3
|
+
import type { Renderer } from '../Renderer';
|
|
4
|
+
import type { WebGpuRendererRuntime } from './WebGpuRendererRuntime';
|
|
5
|
+
/**
|
|
6
|
+
* Base class for WebGPU renderers.
|
|
7
|
+
*
|
|
8
|
+
* Manages the connect/disconnect lifecycle and provides a safe
|
|
9
|
+
* `getRuntime()` accessor that throws if the renderer is not connected.
|
|
10
|
+
*
|
|
11
|
+
* Subclasses must implement:
|
|
12
|
+
* - onConnect(runtime): set up GPU resources (shader modules, pipelines, buffers)
|
|
13
|
+
* - onDisconnect(): tear down GPU resources
|
|
14
|
+
* - render(drawable): collect draw call data for the given drawable
|
|
15
|
+
* - flush(): encode and submit command buffers for all collected draw calls
|
|
16
|
+
*/
|
|
17
|
+
export declare abstract class AbstractWebGpuRenderer<Target extends Drawable> implements Renderer<WebGpuRendererRuntime, Target> {
|
|
18
|
+
readonly backendType = RenderBackendType.WebGpu;
|
|
19
|
+
private _runtime;
|
|
20
|
+
connect(runtime: WebGpuRendererRuntime): void;
|
|
21
|
+
disconnect(): void;
|
|
22
|
+
abstract render(drawable: Target): void;
|
|
23
|
+
abstract flush(): void;
|
|
24
|
+
protected abstract onConnect(runtime: WebGpuRendererRuntime): void;
|
|
25
|
+
protected abstract onDisconnect(): void;
|
|
26
|
+
protected getRuntime(): WebGpuRendererRuntime;
|
|
27
|
+
protected getRuntimeOrNull(): WebGpuRendererRuntime | null;
|
|
28
|
+
}
|