@lightningjs/renderer 0.0.1
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/LICENSE +202 -0
- package/NOTICE +4 -0
- package/README.md +184 -0
- package/dist/exports/core-api.d.ts +73 -0
- package/dist/exports/core-api.js +95 -0
- package/dist/exports/core-api.js.map +1 -0
- package/dist/exports/main-api.d.ts +28 -0
- package/dist/exports/main-api.js +45 -0
- package/dist/exports/main-api.js.map +1 -0
- package/dist/exports/utils.d.ts +23 -0
- package/dist/exports/utils.js +42 -0
- package/dist/exports/utils.js.map +1 -0
- package/dist/src/common/CommonTypes.d.ts +38 -0
- package/dist/src/common/CommonTypes.js +20 -0
- package/dist/src/common/CommonTypes.js.map +1 -0
- package/dist/src/common/EventEmitter.d.ts +12 -0
- package/dist/src/common/EventEmitter.js +66 -0
- package/dist/src/common/EventEmitter.js.map +1 -0
- package/dist/src/common/IAnimationController.d.ts +9 -0
- package/dist/src/common/IAnimationController.js +20 -0
- package/dist/src/common/IAnimationController.js.map +1 -0
- package/dist/src/core/CoreExtension.d.ts +12 -0
- package/dist/src/core/CoreExtension.js +29 -0
- package/dist/src/core/CoreExtension.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +147 -0
- package/dist/src/core/CoreNode.js +498 -0
- package/dist/src/core/CoreNode.js.map +1 -0
- package/dist/src/core/CoreShaderManager.d.ts +29 -0
- package/dist/src/core/CoreShaderManager.js +58 -0
- package/dist/src/core/CoreShaderManager.js.map +1 -0
- package/dist/src/core/CoreTextNode.d.ts +64 -0
- package/dist/src/core/CoreTextNode.js +251 -0
- package/dist/src/core/CoreTextNode.js.map +1 -0
- package/dist/src/core/CoreTextureManager.d.ts +173 -0
- package/dist/src/core/CoreTextureManager.js +190 -0
- package/dist/src/core/CoreTextureManager.js.map +1 -0
- package/dist/src/core/Matrix2DContext.d.ts +15 -0
- package/dist/src/core/Matrix2DContext.js +45 -0
- package/dist/src/core/Matrix2DContext.js.map +1 -0
- package/dist/src/core/Stage.d.ts +53 -0
- package/dist/src/core/Stage.js +214 -0
- package/dist/src/core/Stage.js.map +1 -0
- package/dist/src/core/animations/AnimationManager.d.ts +7 -0
- package/dist/src/core/animations/AnimationManager.js +34 -0
- package/dist/src/core/animations/AnimationManager.js.map +1 -0
- package/dist/src/core/animations/CoreAnimation.d.ts +27 -0
- package/dist/src/core/animations/CoreAnimation.js +103 -0
- package/dist/src/core/animations/CoreAnimation.js.map +1 -0
- package/dist/src/core/animations/CoreAnimationController.d.ts +21 -0
- package/dist/src/core/animations/CoreAnimationController.js +96 -0
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -0
- package/dist/src/core/lib/glm/common.d.ts +162 -0
- package/dist/src/core/lib/glm/common.js +81 -0
- package/dist/src/core/lib/glm/common.js.map +1 -0
- package/dist/src/core/lib/glm/index.d.ts +11 -0
- package/dist/src/core/lib/glm/index.js +30 -0
- package/dist/src/core/lib/glm/index.js.map +1 -0
- package/dist/src/core/lib/glm/mat2.d.ts +219 -0
- package/dist/src/core/lib/glm/mat2.js +396 -0
- package/dist/src/core/lib/glm/mat2.js.map +1 -0
- package/dist/src/core/lib/glm/mat2d.d.ts +237 -0
- package/dist/src/core/lib/glm/mat2d.js +442 -0
- package/dist/src/core/lib/glm/mat2d.js.map +1 -0
- package/dist/src/core/lib/glm/mat3.d.ts +283 -0
- package/dist/src/core/lib/glm/mat3.js +680 -0
- package/dist/src/core/lib/glm/mat3.js.map +1 -0
- package/dist/src/core/lib/glm/mat4.d.ts +550 -0
- package/dist/src/core/lib/glm/mat4.js +1802 -0
- package/dist/src/core/lib/glm/mat4.js.map +1 -0
- package/dist/src/core/lib/glm/quat.d.ts +363 -0
- package/dist/src/core/lib/glm/quat.js +693 -0
- package/dist/src/core/lib/glm/quat.js.map +1 -0
- package/dist/src/core/lib/glm/quat2.d.ts +356 -0
- package/dist/src/core/lib/glm/quat2.js +754 -0
- package/dist/src/core/lib/glm/quat2.js.map +1 -0
- package/dist/src/core/lib/glm/vec2.d.ts +365 -0
- package/dist/src/core/lib/glm/vec2.js +569 -0
- package/dist/src/core/lib/glm/vec2.js.map +1 -0
- package/dist/src/core/lib/glm/vec3.d.ts +406 -0
- package/dist/src/core/lib/glm/vec3.js +720 -0
- package/dist/src/core/lib/glm/vec3.js.map +1 -0
- package/dist/src/core/lib/glm/vec4.d.ts +330 -0
- package/dist/src/core/lib/glm/vec4.js +608 -0
- package/dist/src/core/lib/glm/vec4.js.map +1 -0
- package/dist/src/core/lib/utils.d.ts +27 -0
- package/dist/src/core/lib/utils.js +108 -0
- package/dist/src/core/lib/utils.js.map +1 -0
- package/dist/src/core/platform.d.ts +10 -0
- package/dist/src/core/platform.js +37 -0
- package/dist/src/core/platform.js.map +1 -0
- package/dist/src/core/renderers/CoreContextTexture.d.ts +6 -0
- package/dist/src/core/renderers/CoreContextTexture.js +25 -0
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -0
- package/dist/src/core/renderers/CoreRenderOp.d.ts +3 -0
- package/dist/src/core/renderers/CoreRenderOp.js +21 -0
- package/dist/src/core/renderers/CoreRenderOp.js.map +1 -0
- package/dist/src/core/renderers/CoreRenderer.d.ts +39 -0
- package/dist/src/core/renderers/CoreRenderer.js +26 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -0
- package/dist/src/core/renderers/CoreShader.d.ts +9 -0
- package/dist/src/core/renderers/CoreShader.js +28 -0
- package/dist/src/core/renderers/CoreShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +7 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +32 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +46 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +163 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +27 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +82 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +100 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +372 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +39 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +187 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +27 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js +48 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -0
- package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +39 -0
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js +92 -0
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -0
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +46 -0
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -0
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -0
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.d.ts +10 -0
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +31 -0
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +9 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +89 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +10 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +119 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +53 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +299 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +29 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +135 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +45 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +137 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +15 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +68 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +14 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +54 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +15 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +68 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +15 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +68 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +15 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +68 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +33 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +17 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +98 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +6 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +32 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +16 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +140 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +14 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +82 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +44 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +61 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -0
- package/dist/src/core/scene/Scene.d.ts +59 -0
- package/dist/src/core/scene/Scene.js +106 -0
- package/dist/src/core/scene/Scene.js.map +1 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +53 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js +156 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -0
- package/dist/src/core/text-rendering/TrFontManager.d.ts +25 -0
- package/dist/src/core/text-rendering/TrFontManager.js +75 -0
- package/dist/src/core/text-rendering/TrFontManager.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +29 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +88 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +103 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +21 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +59 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +86 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +48 -0
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +54 -0
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +11 -0
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +54 -0
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +45 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +492 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +115 -0
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +493 -0
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +67 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +452 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +12 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +61 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +33 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +52 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +13 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +32 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +21 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +53 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +4 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +34 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +18 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +294 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +10 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +39 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +254 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +100 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -0
- package/dist/src/core/textures/ColorTexture.d.ts +35 -0
- package/dist/src/core/textures/ColorTexture.js +62 -0
- package/dist/src/core/textures/ColorTexture.js.map +1 -0
- package/dist/src/core/textures/ImageTexture.d.ts +51 -0
- package/dist/src/core/textures/ImageTexture.js +76 -0
- package/dist/src/core/textures/ImageTexture.js.map +1 -0
- package/dist/src/core/textures/NoiseTexture.d.ts +42 -0
- package/dist/src/core/textures/NoiseTexture.js +63 -0
- package/dist/src/core/textures/NoiseTexture.js.map +1 -0
- package/dist/src/core/textures/SubTexture.d.ts +57 -0
- package/dist/src/core/textures/SubTexture.js +82 -0
- package/dist/src/core/textures/SubTexture.js.map +1 -0
- package/dist/src/core/textures/Texture.d.ts +92 -0
- package/dist/src/core/textures/Texture.js +105 -0
- package/dist/src/core/textures/Texture.js.map +1 -0
- package/dist/src/core/utils.d.ts +15 -0
- package/dist/src/core/utils.js +183 -0
- package/dist/src/core/utils.js.map +1 -0
- package/dist/src/main-api/INode.d.ts +390 -0
- package/dist/src/main-api/INode.js +20 -0
- package/dist/src/main-api/INode.js.map +1 -0
- package/dist/src/main-api/IRenderDriver.d.ts +20 -0
- package/dist/src/main-api/IRenderDriver.js +20 -0
- package/dist/src/main-api/IRenderDriver.js.map +1 -0
- package/dist/src/main-api/RendererMain.d.ts +232 -0
- package/dist/src/main-api/RendererMain.js +303 -0
- package/dist/src/main-api/RendererMain.js.map +1 -0
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +84 -0
- package/dist/src/render-drivers/main/MainOnlyNode.js +324 -0
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +39 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +165 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
- package/dist/src/render-drivers/main/MainRenderDriver.d.ts +17 -0
- package/dist/src/render-drivers/main/MainRenderDriver.js +88 -0
- package/dist/src/render-drivers/main/MainRenderDriver.js.map +1 -0
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +81 -0
- package/dist/src/render-drivers/threadx/NodeStruct.js +254 -0
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +36 -0
- package/dist/src/render-drivers/threadx/SharedNode.js +57 -0
- package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +34 -0
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +156 -0
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +20 -0
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +84 -0
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +37 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +121 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +23 -0
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +50 -0
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +21 -0
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +194 -0
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +48 -0
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +172 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +22 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +101 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/worker/renderer.d.ts +1 -0
- package/dist/src/render-drivers/threadx/worker/renderer.js +130 -0
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
- package/dist/src/render-drivers/utils.d.ts +10 -0
- package/dist/src/render-drivers/utils.js +41 -0
- package/dist/src/render-drivers/utils.js.map +1 -0
- package/dist/src/utils.d.ts +79 -0
- package/dist/src/utils.js +162 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/tsconfig.dist.tsbuildinfo +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
+
* following copyright and licenses apply:
|
|
4
|
+
*
|
|
5
|
+
* Copyright 2023 Comcast
|
|
6
|
+
*
|
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
+
* you may not use this file except in compliance with the License.
|
|
9
|
+
* You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
* See the License for the specific language governing permissions and
|
|
17
|
+
* limitations under the License.
|
|
18
|
+
*/
|
|
19
|
+
import { CoreRenderOp } from '../CoreRenderOp.js';
|
|
20
|
+
import { WebGlCoreShader } from './WebGlCoreShader.js';
|
|
21
|
+
const MAX_TEXTURES = 8; // TODO: get from gl
|
|
22
|
+
/**
|
|
23
|
+
* Can render multiple quads with multiple textures (up to vertex shader texture limit)
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
export class WebGlCoreRenderOp extends CoreRenderOp {
|
|
27
|
+
gl;
|
|
28
|
+
options;
|
|
29
|
+
buffers;
|
|
30
|
+
shader;
|
|
31
|
+
shaderProps;
|
|
32
|
+
dimensions;
|
|
33
|
+
bufferIdx;
|
|
34
|
+
zIndex;
|
|
35
|
+
length = 0;
|
|
36
|
+
numQuads = 0;
|
|
37
|
+
textures = [];
|
|
38
|
+
maxTextures;
|
|
39
|
+
constructor(gl, options, buffers, shader, shaderProps, dimensions, bufferIdx, zIndex) {
|
|
40
|
+
super();
|
|
41
|
+
this.gl = gl;
|
|
42
|
+
this.options = options;
|
|
43
|
+
this.buffers = buffers;
|
|
44
|
+
this.shader = shader;
|
|
45
|
+
this.shaderProps = shaderProps;
|
|
46
|
+
this.dimensions = dimensions;
|
|
47
|
+
this.bufferIdx = bufferIdx;
|
|
48
|
+
this.zIndex = zIndex;
|
|
49
|
+
this.gl = gl;
|
|
50
|
+
this.maxTextures = shader.supportsIndexedTextures
|
|
51
|
+
? gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS)
|
|
52
|
+
: 1;
|
|
53
|
+
}
|
|
54
|
+
addTexture(texture) {
|
|
55
|
+
const { textures, maxTextures } = this;
|
|
56
|
+
const existingIdx = textures.findIndex((t) => t === texture);
|
|
57
|
+
if (existingIdx !== -1) {
|
|
58
|
+
return existingIdx;
|
|
59
|
+
}
|
|
60
|
+
const newIdx = textures.length;
|
|
61
|
+
if (newIdx >= maxTextures) {
|
|
62
|
+
return 0xffffffff;
|
|
63
|
+
}
|
|
64
|
+
this.textures.push(texture);
|
|
65
|
+
return newIdx;
|
|
66
|
+
}
|
|
67
|
+
draw() {
|
|
68
|
+
const { gl, shader, shaderProps, options } = this;
|
|
69
|
+
// shaderOp.draw(this);
|
|
70
|
+
const { shManager } = options;
|
|
71
|
+
shManager.useShader(shader);
|
|
72
|
+
shader.bindRenderOp(this);
|
|
73
|
+
shader.bindProps(shaderProps);
|
|
74
|
+
// TODO: Reduce calculations required
|
|
75
|
+
const quadIdx = (this.bufferIdx / 24) * 6 * 2;
|
|
76
|
+
// TODO: Move these somewhere else?
|
|
77
|
+
gl.enable(gl.BLEND);
|
|
78
|
+
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
79
|
+
gl.drawElements(gl.TRIANGLES, 6 * this.numQuads, gl.UNSIGNED_SHORT, quadIdx);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=WebGlCoreRenderOp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGlCoreRenderOp.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreRenderOp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,oBAAoB;AAE5C;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IAOtC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAbX,MAAM,GAAG,CAAC,CAAC;IACX,QAAQ,GAAG,CAAC,CAAC;IACb,QAAQ,GAA0B,EAAE,CAAC;IAC5B,WAAW,CAAS;IAE7B,YACW,EAAkD,EAClD,OAAiC,EACjC,OAAyB,EACzB,MAAuB,EACvB,WAAoC,EACpC,UAAsB,EACtB,SAAiB,EACjB,MAAc;QAEvB,KAAK,EAAE,CAAC;QATC,OAAE,GAAF,EAAE,CAAgD;QAClD,YAAO,GAAP,OAAO,CAA0B;QACjC,YAAO,GAAP,OAAO,CAAkB;QACzB,WAAM,GAAN,MAAM,CAAiB;QACvB,gBAAW,GAAX,WAAW,CAAyB;QACpC,eAAU,GAAV,UAAU,CAAY;QACtB,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAQ;QAGvB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,uBAAuB;YAC/C,CAAC,CAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,8BAA8B,CAAY;YAChE,CAAC,CAAC,CAAC,CAAC;IACR,CAAC;IAED,UAAU,CAAC,OAA4B;QACrC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;QAC7D,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;YACtB,OAAO,WAAW,CAAC;SACpB;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,IAAI,MAAM,IAAI,WAAW,EAAE;YACzB,OAAO,UAAU,CAAC;SACnB;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI;QACF,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAClD,uBAAuB;QAEvB,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAC9B,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAE9B,qCAAqC;QACrC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE9C,mCAAmC;QACnC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACpB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC;QAE7C,EAAE,CAAC,YAAY,CACb,EAAE,CAAC,SAAS,EACZ,CAAC,GAAG,IAAI,CAAC,QAAQ,EACjB,EAAE,CAAC,cAAc,EACjB,OAAO,CACR,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { CoreRenderer, type QuadOptions as QuadOptions } from '../CoreRenderer.js';
|
|
2
|
+
import { WebGlCoreRenderOp } from './WebGlCoreRenderOp.js';
|
|
3
|
+
import type { CoreContextTexture } from '../CoreContextTexture.js';
|
|
4
|
+
import { type CoreWebGlParameters, type CoreWebGlExtensions } from './internal/RendererUtils.js';
|
|
5
|
+
import { Texture } from '../../textures/Texture.js';
|
|
6
|
+
import type { Stage } from '../../Stage.js';
|
|
7
|
+
import type { CoreTextureManager } from '../../CoreTextureManager.js';
|
|
8
|
+
import { CoreShaderManager } from '../../CoreShaderManager.js';
|
|
9
|
+
import type { CoreShader } from '../CoreShader.js';
|
|
10
|
+
import { BufferCollection } from './internal/BufferCollection.js';
|
|
11
|
+
export interface WebGlCoreRendererOptions {
|
|
12
|
+
stage: Stage;
|
|
13
|
+
canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
14
|
+
pixelRatio: number;
|
|
15
|
+
txManager: CoreTextureManager;
|
|
16
|
+
shManager: CoreShaderManager;
|
|
17
|
+
clearColor: number;
|
|
18
|
+
bufferMemory: number;
|
|
19
|
+
}
|
|
20
|
+
interface CoreWebGlSystem {
|
|
21
|
+
parameters: CoreWebGlParameters;
|
|
22
|
+
extensions: CoreWebGlExtensions;
|
|
23
|
+
}
|
|
24
|
+
export declare class WebGlCoreRenderer extends CoreRenderer {
|
|
25
|
+
gl: WebGLRenderingContext;
|
|
26
|
+
system: CoreWebGlSystem;
|
|
27
|
+
txManager: CoreTextureManager;
|
|
28
|
+
shManager: CoreShaderManager;
|
|
29
|
+
options: Required<WebGlCoreRendererOptions>;
|
|
30
|
+
quadBuffer: ArrayBuffer;
|
|
31
|
+
fQuadBuffer: Float32Array;
|
|
32
|
+
uiQuadBuffer: Uint32Array;
|
|
33
|
+
renderOps: WebGlCoreRenderOp[];
|
|
34
|
+
curBufferIdx: number;
|
|
35
|
+
curRenderOp: WebGlCoreRenderOp | null;
|
|
36
|
+
renderables: Array<QuadOptions | WebGlCoreRenderOp>;
|
|
37
|
+
defaultShader: CoreShader;
|
|
38
|
+
quadBufferCollection: BufferCollection;
|
|
39
|
+
/**
|
|
40
|
+
* White pixel texture used by default when no texture is specified.
|
|
41
|
+
*/
|
|
42
|
+
defaultTexture: Texture;
|
|
43
|
+
constructor(options: WebGlCoreRendererOptions);
|
|
44
|
+
reset(): void;
|
|
45
|
+
getShaderManager(): CoreShaderManager;
|
|
46
|
+
createCtxTexture(textureSource: Texture): CoreContextTexture;
|
|
47
|
+
/**
|
|
48
|
+
* Add a renderable to the current set of renderables.
|
|
49
|
+
*
|
|
50
|
+
* @remarks
|
|
51
|
+
* If a {@link QuadOptions} structure is provided, this will ultimately result
|
|
52
|
+
* in a render ops being created, merged and added to the render ops list.
|
|
53
|
+
*
|
|
54
|
+
* If a direct {@link WebGlCoreRenderOp} instance is provided, it will be
|
|
55
|
+
* added to the render ops list as-is. Be sure to set the zIndex correctly of
|
|
56
|
+
* the render op to ensure proper rendering order.
|
|
57
|
+
*
|
|
58
|
+
* @param renderable
|
|
59
|
+
*/
|
|
60
|
+
addRenderable(renderable: QuadOptions | WebGlCoreRenderOp): void;
|
|
61
|
+
private addQuad;
|
|
62
|
+
/**
|
|
63
|
+
* Replace the existing RenderOp with a new one that uses the specified Shader
|
|
64
|
+
* and starts at the specified buffer index.
|
|
65
|
+
*
|
|
66
|
+
* @param shader
|
|
67
|
+
* @param bufferIdx
|
|
68
|
+
*/
|
|
69
|
+
private newRenderOp;
|
|
70
|
+
/**
|
|
71
|
+
* Add a texture to the current RenderOp. If the texture cannot be added to the
|
|
72
|
+
* current RenderOp, a new RenderOp will be created and the texture will be added
|
|
73
|
+
* to that one.
|
|
74
|
+
*
|
|
75
|
+
* If the texture cannot be added to the new RenderOp, an error will be thrown.
|
|
76
|
+
*
|
|
77
|
+
* @param texture
|
|
78
|
+
* @param bufferIdx
|
|
79
|
+
* @param recursive
|
|
80
|
+
* @returns Assigned Texture Index of the texture in the render op
|
|
81
|
+
*/
|
|
82
|
+
private addTexture;
|
|
83
|
+
/**
|
|
84
|
+
* Sort renderable children and add them to the render ops.
|
|
85
|
+
* @todo:
|
|
86
|
+
* - move to merge sort to keep relative order
|
|
87
|
+
* - support z-index parent locking
|
|
88
|
+
*
|
|
89
|
+
*/
|
|
90
|
+
sortRenderables(): void;
|
|
91
|
+
/**
|
|
92
|
+
* Render the current set of RenderOps to render to the specified surface.
|
|
93
|
+
*
|
|
94
|
+
* TODO: 'screen' is the only supported surface at the moment.
|
|
95
|
+
*
|
|
96
|
+
* @param surface
|
|
97
|
+
*/
|
|
98
|
+
render(surface?: 'screen' | CoreContextTexture): void;
|
|
99
|
+
}
|
|
100
|
+
export {};
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
+
* following copyright and licenses apply:
|
|
4
|
+
*
|
|
5
|
+
* Copyright 2023 Comcast
|
|
6
|
+
*
|
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
+
* you may not use this file except in compliance with the License.
|
|
9
|
+
* You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
* See the License for the specific language governing permissions and
|
|
17
|
+
* limitations under the License.
|
|
18
|
+
*/
|
|
19
|
+
import { assertTruthy, createWebGLContext, mergeColorAlphaPremultiplied, } from '../../../utils.js';
|
|
20
|
+
import { CoreRenderer, } from '../CoreRenderer.js';
|
|
21
|
+
import { WebGlCoreRenderOp } from './WebGlCoreRenderOp.js';
|
|
22
|
+
import { createIndexBuffer, getWebGlParameters, getWebGlExtensions, } from './internal/RendererUtils.js';
|
|
23
|
+
import { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';
|
|
24
|
+
import { Texture } from '../../textures/Texture.js';
|
|
25
|
+
import { ColorTexture } from '../../textures/ColorTexture.js';
|
|
26
|
+
import { SubTexture } from '../../textures/SubTexture.js';
|
|
27
|
+
import { WebGlCoreCtxSubTexture } from './WebGlCoreCtxSubTexture.js';
|
|
28
|
+
import { CoreShaderManager } from '../../CoreShaderManager.js';
|
|
29
|
+
import { BufferCollection } from './internal/BufferCollection.js';
|
|
30
|
+
import { getNormalizedRgbaComponents } from '../../lib/utils.js';
|
|
31
|
+
import { WebGlCoreShader } from './WebGlCoreShader.js';
|
|
32
|
+
const WORDS_PER_QUAD = 24;
|
|
33
|
+
const BYTES_PER_QUAD = WORDS_PER_QUAD * 4;
|
|
34
|
+
export class WebGlCoreRenderer extends CoreRenderer {
|
|
35
|
+
//// WebGL Native Context and Data
|
|
36
|
+
gl;
|
|
37
|
+
system;
|
|
38
|
+
//// Core Managers
|
|
39
|
+
txManager;
|
|
40
|
+
shManager;
|
|
41
|
+
//// Options
|
|
42
|
+
options;
|
|
43
|
+
//// Persistent data
|
|
44
|
+
quadBuffer = new ArrayBuffer(1024 * 1024 * 4);
|
|
45
|
+
fQuadBuffer = new Float32Array(this.quadBuffer);
|
|
46
|
+
uiQuadBuffer = new Uint32Array(this.quadBuffer);
|
|
47
|
+
renderOps = [];
|
|
48
|
+
//// Render Op / Buffer Filling State
|
|
49
|
+
curBufferIdx = 0;
|
|
50
|
+
curRenderOp = null;
|
|
51
|
+
renderables = [];
|
|
52
|
+
//// Default Shader
|
|
53
|
+
defaultShader;
|
|
54
|
+
quadBufferCollection;
|
|
55
|
+
/**
|
|
56
|
+
* White pixel texture used by default when no texture is specified.
|
|
57
|
+
*/
|
|
58
|
+
defaultTexture;
|
|
59
|
+
constructor(options) {
|
|
60
|
+
super(options.stage);
|
|
61
|
+
const { canvas, clearColor, bufferMemory } = options;
|
|
62
|
+
this.options = options;
|
|
63
|
+
this.txManager = options.txManager;
|
|
64
|
+
this.shManager = options.shManager;
|
|
65
|
+
this.defaultTexture = new ColorTexture(this.txManager);
|
|
66
|
+
const gl = createWebGLContext(canvas);
|
|
67
|
+
if (!gl) {
|
|
68
|
+
throw new Error('Unable to create WebGL context');
|
|
69
|
+
}
|
|
70
|
+
this.gl = gl;
|
|
71
|
+
const color = getNormalizedRgbaComponents(clearColor);
|
|
72
|
+
gl.viewport(0, 0, canvas.width, canvas.height);
|
|
73
|
+
gl.clearColor(color[0], color[1], color[2], color[3]);
|
|
74
|
+
createIndexBuffer(gl, bufferMemory);
|
|
75
|
+
this.system = {
|
|
76
|
+
parameters: getWebGlParameters(gl),
|
|
77
|
+
extensions: getWebGlExtensions(gl),
|
|
78
|
+
};
|
|
79
|
+
this.shManager.renderer = this;
|
|
80
|
+
this.defaultShader = this.shManager.loadShader('DefaultShaderBatched').shader;
|
|
81
|
+
const quadBuffer = gl.createBuffer();
|
|
82
|
+
assertTruthy(quadBuffer);
|
|
83
|
+
const stride = 6 * Float32Array.BYTES_PER_ELEMENT;
|
|
84
|
+
this.quadBufferCollection = new BufferCollection([
|
|
85
|
+
{
|
|
86
|
+
buffer: quadBuffer,
|
|
87
|
+
attributes: {
|
|
88
|
+
a_position: {
|
|
89
|
+
name: 'a_position',
|
|
90
|
+
size: 2,
|
|
91
|
+
type: gl.FLOAT,
|
|
92
|
+
normalized: false,
|
|
93
|
+
stride,
|
|
94
|
+
offset: 0, // start at the beginning of the buffer
|
|
95
|
+
},
|
|
96
|
+
a_textureCoordinate: {
|
|
97
|
+
name: 'a_textureCoordinate',
|
|
98
|
+
size: 2,
|
|
99
|
+
type: gl.FLOAT,
|
|
100
|
+
normalized: false,
|
|
101
|
+
stride,
|
|
102
|
+
offset: 2 * Float32Array.BYTES_PER_ELEMENT,
|
|
103
|
+
},
|
|
104
|
+
a_color: {
|
|
105
|
+
name: 'a_color',
|
|
106
|
+
size: 4,
|
|
107
|
+
type: gl.UNSIGNED_BYTE,
|
|
108
|
+
normalized: true,
|
|
109
|
+
stride,
|
|
110
|
+
offset: 4 * Float32Array.BYTES_PER_ELEMENT,
|
|
111
|
+
},
|
|
112
|
+
a_textureIndex: {
|
|
113
|
+
name: 'a_textureIndex',
|
|
114
|
+
size: 1,
|
|
115
|
+
type: gl.FLOAT,
|
|
116
|
+
normalized: false,
|
|
117
|
+
stride,
|
|
118
|
+
offset: 5 * Float32Array.BYTES_PER_ELEMENT,
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
]);
|
|
123
|
+
}
|
|
124
|
+
reset() {
|
|
125
|
+
this.curBufferIdx = 0;
|
|
126
|
+
this.curRenderOp = null;
|
|
127
|
+
this.renderOps.length = 0;
|
|
128
|
+
this.gl.clear(this.gl.COLOR_BUFFER_BIT);
|
|
129
|
+
}
|
|
130
|
+
getShaderManager() {
|
|
131
|
+
return this.shManager;
|
|
132
|
+
}
|
|
133
|
+
createCtxTexture(textureSource) {
|
|
134
|
+
if (textureSource instanceof SubTexture) {
|
|
135
|
+
return new WebGlCoreCtxSubTexture(this.gl, textureSource);
|
|
136
|
+
}
|
|
137
|
+
return new WebGlCoreCtxTexture(this.gl, textureSource);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Add a renderable to the current set of renderables.
|
|
141
|
+
*
|
|
142
|
+
* @remarks
|
|
143
|
+
* If a {@link QuadOptions} structure is provided, this will ultimately result
|
|
144
|
+
* in a render ops being created, merged and added to the render ops list.
|
|
145
|
+
*
|
|
146
|
+
* If a direct {@link WebGlCoreRenderOp} instance is provided, it will be
|
|
147
|
+
* added to the render ops list as-is. Be sure to set the zIndex correctly of
|
|
148
|
+
* the render op to ensure proper rendering order.
|
|
149
|
+
*
|
|
150
|
+
* @param renderable
|
|
151
|
+
*/
|
|
152
|
+
addRenderable(renderable) {
|
|
153
|
+
this.renderables?.push(renderable);
|
|
154
|
+
}
|
|
155
|
+
addQuad(params) {
|
|
156
|
+
const { fQuadBuffer, uiQuadBuffer } = this;
|
|
157
|
+
const { width, height, colorTl, colorTr, colorBl, colorBr, textureOptions, shader, shaderProps, alpha, wpx, wpy, ta, tb, tc, td, } = params;
|
|
158
|
+
let { texture } = params;
|
|
159
|
+
texture = texture ?? this.defaultTexture;
|
|
160
|
+
assertTruthy(texture instanceof Texture, 'Invalid texture type');
|
|
161
|
+
let { curBufferIdx: bufferIdx, curRenderOp } = this;
|
|
162
|
+
const targetDims = {
|
|
163
|
+
width,
|
|
164
|
+
height,
|
|
165
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
166
|
+
};
|
|
167
|
+
const targetShader = shader || this.defaultShader;
|
|
168
|
+
if (curRenderOp) {
|
|
169
|
+
if (curRenderOp.shader !== targetShader) {
|
|
170
|
+
curRenderOp = null;
|
|
171
|
+
}
|
|
172
|
+
else if (curRenderOp.shader !== this.defaultShader &&
|
|
173
|
+
(curRenderOp.shaderProps !== shaderProps ||
|
|
174
|
+
curRenderOp.dimensions !== targetDims)) {
|
|
175
|
+
curRenderOp = null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
assertTruthy(targetShader instanceof WebGlCoreShader);
|
|
179
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
|
|
180
|
+
if (!curRenderOp) {
|
|
181
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
182
|
+
this.newRenderOp(targetShader, shaderProps, targetDims, bufferIdx);
|
|
183
|
+
curRenderOp = this.curRenderOp;
|
|
184
|
+
assertTruthy(curRenderOp);
|
|
185
|
+
}
|
|
186
|
+
const flipX = textureOptions?.flipX ?? false;
|
|
187
|
+
const flipY = textureOptions?.flipY ?? false;
|
|
188
|
+
let texCoordX1 = 0;
|
|
189
|
+
let texCoordY1 = 0;
|
|
190
|
+
let texCoordX2 = 1;
|
|
191
|
+
let texCoordY2 = 1;
|
|
192
|
+
if (texture instanceof SubTexture) {
|
|
193
|
+
const { x: tx, y: ty, width: tw, height: th } = texture.props;
|
|
194
|
+
const { width: parentW = 0, height: parentH = 0 } = texture.parentTexture
|
|
195
|
+
.dimensions || { width: 0, height: 0 };
|
|
196
|
+
texCoordX1 = tx / parentW;
|
|
197
|
+
texCoordX2 = texCoordX1 + tw / parentW;
|
|
198
|
+
texCoordY1 = ty / parentH;
|
|
199
|
+
texCoordY2 = texCoordY1 + th / parentH;
|
|
200
|
+
texture = texture.parentTexture;
|
|
201
|
+
}
|
|
202
|
+
// Flip texture coordinates if dictated by texture options
|
|
203
|
+
if (flipX) {
|
|
204
|
+
[texCoordX1, texCoordX2] = [texCoordX2, texCoordX1];
|
|
205
|
+
}
|
|
206
|
+
if (flipY) {
|
|
207
|
+
[texCoordY1, texCoordY2] = [texCoordY2, texCoordY1];
|
|
208
|
+
}
|
|
209
|
+
const { txManager } = this.stage;
|
|
210
|
+
const ctxTexture = txManager.getCtxTexture(texture);
|
|
211
|
+
assertTruthy(ctxTexture instanceof WebGlCoreCtxTexture);
|
|
212
|
+
const textureIdx = this.addTexture(ctxTexture, bufferIdx);
|
|
213
|
+
curRenderOp = this.curRenderOp;
|
|
214
|
+
assertTruthy(curRenderOp);
|
|
215
|
+
// render quad advanced
|
|
216
|
+
if (tb !== 0 || tc !== 0) {
|
|
217
|
+
// Upper-Left
|
|
218
|
+
fQuadBuffer[bufferIdx++] = wpx; // vertexX
|
|
219
|
+
fQuadBuffer[bufferIdx++] = wpy; // vertexY
|
|
220
|
+
fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX
|
|
221
|
+
fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
|
|
222
|
+
uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorTl, alpha, true); // color
|
|
223
|
+
fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
|
|
224
|
+
// Upper-Right
|
|
225
|
+
fQuadBuffer[bufferIdx++] = wpx + width * ta;
|
|
226
|
+
fQuadBuffer[bufferIdx++] = wpy + width * tc;
|
|
227
|
+
fQuadBuffer[bufferIdx++] = texCoordX2;
|
|
228
|
+
fQuadBuffer[bufferIdx++] = texCoordY1;
|
|
229
|
+
uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorTr, alpha, true);
|
|
230
|
+
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
231
|
+
// Lower-Left
|
|
232
|
+
fQuadBuffer[bufferIdx++] = wpx + height * tb;
|
|
233
|
+
fQuadBuffer[bufferIdx++] = wpy + height * td;
|
|
234
|
+
fQuadBuffer[bufferIdx++] = texCoordX1;
|
|
235
|
+
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
236
|
+
uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorBl, alpha, true);
|
|
237
|
+
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
238
|
+
// Lower-Right
|
|
239
|
+
fQuadBuffer[bufferIdx++] = wpx + width * ta + height * tb;
|
|
240
|
+
fQuadBuffer[bufferIdx++] = wpy + width * tc + height * td;
|
|
241
|
+
fQuadBuffer[bufferIdx++] = texCoordX2;
|
|
242
|
+
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
243
|
+
uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorBr, alpha, true);
|
|
244
|
+
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
// Calculate the right corner of the quad
|
|
248
|
+
// multiplied by the scale
|
|
249
|
+
const rightCornerX = wpx + width * ta;
|
|
250
|
+
const rightCornerY = wpy + height * td;
|
|
251
|
+
// Upper-Left
|
|
252
|
+
fQuadBuffer[bufferIdx++] = wpx; // vertexX
|
|
253
|
+
fQuadBuffer[bufferIdx++] = wpy; // vertexY
|
|
254
|
+
fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX
|
|
255
|
+
fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
|
|
256
|
+
uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorTl, alpha, true); // color
|
|
257
|
+
fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
|
|
258
|
+
// Upper-Right
|
|
259
|
+
fQuadBuffer[bufferIdx++] = rightCornerX;
|
|
260
|
+
fQuadBuffer[bufferIdx++] = wpy;
|
|
261
|
+
fQuadBuffer[bufferIdx++] = texCoordX2;
|
|
262
|
+
fQuadBuffer[bufferIdx++] = texCoordY1;
|
|
263
|
+
uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorTr, alpha, true);
|
|
264
|
+
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
265
|
+
// Lower-Left
|
|
266
|
+
fQuadBuffer[bufferIdx++] = wpx;
|
|
267
|
+
fQuadBuffer[bufferIdx++] = rightCornerY;
|
|
268
|
+
fQuadBuffer[bufferIdx++] = texCoordX1;
|
|
269
|
+
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
270
|
+
uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorBl, alpha, true);
|
|
271
|
+
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
272
|
+
// Lower-Right
|
|
273
|
+
fQuadBuffer[bufferIdx++] = rightCornerX;
|
|
274
|
+
fQuadBuffer[bufferIdx++] = rightCornerY;
|
|
275
|
+
fQuadBuffer[bufferIdx++] = texCoordX2;
|
|
276
|
+
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
277
|
+
uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorBr, alpha, true);
|
|
278
|
+
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
279
|
+
}
|
|
280
|
+
// Update the length of the current render op
|
|
281
|
+
curRenderOp.length += WORDS_PER_QUAD;
|
|
282
|
+
curRenderOp.numQuads++;
|
|
283
|
+
this.curBufferIdx = bufferIdx;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Replace the existing RenderOp with a new one that uses the specified Shader
|
|
287
|
+
* and starts at the specified buffer index.
|
|
288
|
+
*
|
|
289
|
+
* @param shader
|
|
290
|
+
* @param bufferIdx
|
|
291
|
+
*/
|
|
292
|
+
newRenderOp(shader, shaderProps, dimensions, bufferIdx) {
|
|
293
|
+
const curRenderOp = new WebGlCoreRenderOp(this.gl, this.options, this.quadBufferCollection, shader, shaderProps, dimensions, bufferIdx, 0);
|
|
294
|
+
this.curRenderOp = curRenderOp;
|
|
295
|
+
this.renderOps.push(curRenderOp);
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Add a texture to the current RenderOp. If the texture cannot be added to the
|
|
299
|
+
* current RenderOp, a new RenderOp will be created and the texture will be added
|
|
300
|
+
* to that one.
|
|
301
|
+
*
|
|
302
|
+
* If the texture cannot be added to the new RenderOp, an error will be thrown.
|
|
303
|
+
*
|
|
304
|
+
* @param texture
|
|
305
|
+
* @param bufferIdx
|
|
306
|
+
* @param recursive
|
|
307
|
+
* @returns Assigned Texture Index of the texture in the render op
|
|
308
|
+
*/
|
|
309
|
+
addTexture(texture, bufferIdx, recursive) {
|
|
310
|
+
const { curRenderOp } = this;
|
|
311
|
+
assertTruthy(curRenderOp);
|
|
312
|
+
const textureIdx = curRenderOp.addTexture(texture);
|
|
313
|
+
// TODO: Refactor to be more DRY
|
|
314
|
+
if (textureIdx === 0xffffffff) {
|
|
315
|
+
if (recursive) {
|
|
316
|
+
throw new Error('Unable to add texture to render op');
|
|
317
|
+
}
|
|
318
|
+
const { shader, shaderProps, dimensions } = curRenderOp;
|
|
319
|
+
this.newRenderOp(shader, shaderProps, dimensions, bufferIdx);
|
|
320
|
+
return this.addTexture(texture, bufferIdx, true);
|
|
321
|
+
}
|
|
322
|
+
return textureIdx;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Sort renderable children and add them to the render ops.
|
|
326
|
+
* @todo:
|
|
327
|
+
* - move to merge sort to keep relative order
|
|
328
|
+
* - support z-index parent locking
|
|
329
|
+
*
|
|
330
|
+
*/
|
|
331
|
+
sortRenderables() {
|
|
332
|
+
const { renderables } = this;
|
|
333
|
+
renderables.sort((a, b) => a.zIndex - b.zIndex);
|
|
334
|
+
renderables.forEach((renderable) => {
|
|
335
|
+
if (renderable instanceof WebGlCoreRenderOp) {
|
|
336
|
+
this.renderOps.push(renderable);
|
|
337
|
+
this.curRenderOp = null;
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
this.addQuad(renderable);
|
|
341
|
+
}
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Render the current set of RenderOps to render to the specified surface.
|
|
346
|
+
*
|
|
347
|
+
* TODO: 'screen' is the only supported surface at the moment.
|
|
348
|
+
*
|
|
349
|
+
* @param surface
|
|
350
|
+
*/
|
|
351
|
+
render(surface = 'screen') {
|
|
352
|
+
const { gl, quadBuffer } = this;
|
|
353
|
+
const arr = new Float32Array(quadBuffer, 0, this.curBufferIdx);
|
|
354
|
+
const buffer = this.quadBufferCollection.getBuffer('a_position') ?? null;
|
|
355
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
356
|
+
gl.bufferData(gl.ARRAY_BUFFER, arr, gl.DYNAMIC_DRAW);
|
|
357
|
+
const doLog = false; // idx++ % 100 === 0;
|
|
358
|
+
if (doLog) {
|
|
359
|
+
console.log('renderOps', this.renderOps.length);
|
|
360
|
+
}
|
|
361
|
+
this.renderOps.forEach((renderOp, i) => {
|
|
362
|
+
if (doLog) {
|
|
363
|
+
console.log('renderOp', i, renderOp.numQuads);
|
|
364
|
+
}
|
|
365
|
+
renderOp.draw();
|
|
366
|
+
});
|
|
367
|
+
// clean up
|
|
368
|
+
this.renderables = [];
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
const idx = 0;
|
|
372
|
+
//# sourceMappingURL=WebGlCoreRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGlCoreRenderer.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { CoreShader } from '../CoreShader.js';
|
|
2
|
+
import type { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';
|
|
3
|
+
import type { WebGlCoreRenderOp } from './WebGlCoreRenderOp.js';
|
|
4
|
+
import type { WebGlCoreRenderer } from './WebGlCoreRenderer.js';
|
|
5
|
+
import type { BufferCollection } from './internal/BufferCollection.js';
|
|
6
|
+
import { type ShaderOptions, type UniformMethodMap, type ShaderProgramSources } from './internal/ShaderUtils.js';
|
|
7
|
+
export declare abstract class WebGlCoreShader extends CoreShader {
|
|
8
|
+
protected boundBufferCollection: BufferCollection | null;
|
|
9
|
+
protected buffersBound: boolean;
|
|
10
|
+
protected program: WebGLProgram;
|
|
11
|
+
/**
|
|
12
|
+
* Vertex Array Object
|
|
13
|
+
*
|
|
14
|
+
* @remarks
|
|
15
|
+
* Used by WebGL2 Only
|
|
16
|
+
*/
|
|
17
|
+
protected vao: WebGLVertexArrayObject | undefined;
|
|
18
|
+
protected renderer: WebGlCoreRenderer;
|
|
19
|
+
protected gl: WebGLRenderingContext;
|
|
20
|
+
protected attributeBuffers: Record<string, WebGLBuffer>;
|
|
21
|
+
protected attributeLocations: Record<string, number>;
|
|
22
|
+
protected attributeNames: string[];
|
|
23
|
+
protected uniformLocations: Record<string, WebGLUniformLocation>;
|
|
24
|
+
protected uniformTypes: Record<string, keyof UniformMethodMap>;
|
|
25
|
+
readonly supportsIndexedTextures: boolean;
|
|
26
|
+
constructor(options: ShaderOptions);
|
|
27
|
+
private bindBufferAttribute;
|
|
28
|
+
disableAttribute(location: number): void;
|
|
29
|
+
disableAttributes(): void;
|
|
30
|
+
bindRenderOp(renderOp: WebGlCoreRenderOp): void;
|
|
31
|
+
setUniform(name: string, value: any): void;
|
|
32
|
+
bindBufferCollection(buffer: BufferCollection): void;
|
|
33
|
+
bindProps(props: Record<string, unknown>): void;
|
|
34
|
+
bindTextures(textures: WebGlCoreCtxTexture[]): void;
|
|
35
|
+
bindUniforms(renderOp: WebGlCoreRenderOp): void;
|
|
36
|
+
attach(): void;
|
|
37
|
+
detach(): void;
|
|
38
|
+
protected static shaderSources?: ShaderProgramSources;
|
|
39
|
+
}
|