@lightningjs/renderer 3.0.0-beta2 → 3.0.0-beta20
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/README.md +16 -26
- package/dist/exports/canvas.d.ts +1 -1
- package/dist/exports/canvas.js +1 -1
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +2 -5
- package/dist/exports/index.js +1 -5
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -1
- package/dist/exports/utils.js.map +1 -1
- package/dist/exports/webgl.d.ts +2 -1
- package/dist/exports/webgl.js +2 -1
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/common/CommonTypes.d.ts +13 -2
- package/dist/src/core/Autosizer.d.ts +35 -0
- package/dist/src/core/Autosizer.js +196 -0
- package/dist/src/core/Autosizer.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +73 -95
- package/dist/src/core/CoreNode.js +599 -461
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +3 -5
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +74 -87
- package/dist/src/core/CoreTextNode.js +357 -232
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +25 -13
- package/dist/src/core/CoreTextureManager.js +80 -104
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +92 -33
- package/dist/src/core/Stage.js +313 -151
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureError.d.ts +11 -0
- package/dist/src/core/TextureError.js +37 -0
- package/dist/src/core/TextureError.js.map +1 -0
- package/dist/src/core/TextureMemoryManager.d.ts +11 -4
- package/dist/src/core/TextureMemoryManager.js +128 -109
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.d.ts +3 -3
- package/dist/src/core/animations/CoreAnimation.js +8 -3
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
- package/dist/src/core/animations/CoreAnimationController.js +11 -4
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.js +1 -1
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +41 -3
- package/dist/src/core/lib/WebGlContextWrapper.js +104 -27
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/collectionUtils.d.ts +5 -0
- package/dist/src/core/lib/collectionUtils.js +100 -0
- package/dist/src/core/lib/collectionUtils.js.map +1 -0
- package/dist/src/core/lib/colorCache.d.ts +1 -0
- package/dist/src/core/lib/colorCache.js +19 -0
- package/dist/src/core/lib/colorCache.js.map +1 -0
- package/dist/src/core/lib/colorParser.d.ts +21 -0
- package/dist/src/core/lib/colorParser.js +72 -0
- package/dist/src/core/lib/colorParser.js.map +1 -0
- package/dist/src/core/lib/textureCompression.d.ts +14 -2
- package/dist/src/core/lib/textureCompression.js +320 -67
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +2 -0
- package/dist/src/core/lib/utils.js +22 -0
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
- package/dist/src/core/lib/validateImageBitmap.js +4 -4
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
- package/dist/src/core/platform.js +30 -5
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/platforms/Platform.d.ts +42 -0
- package/dist/src/{main-api/IRenderDriver.js → core/platforms/Platform.js} +4 -2
- package/dist/src/core/platforms/Platform.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatform.d.ts +10 -0
- package/dist/src/core/platforms/web/WebPlatform.js +87 -0
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
- package/dist/src/core/renderers/CoreContextTexture.d.ts +2 -1
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +7 -2
- package/dist/src/core/renderers/CoreRenderer.js +1 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +8 -1
- package/dist/src/core/renderers/CoreShaderNode.js +11 -0
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +2 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +11 -9
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +1 -2
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +32 -59
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -5
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
- package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -13
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +3 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +18 -6
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +86 -41
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +53 -17
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +2 -7
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +21 -50
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -6
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -5
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +95 -49
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +3 -2
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +14 -5
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +5 -3
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +141 -112
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +6 -3
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +47 -18
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +3 -6
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -11
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +5 -10
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +5 -10
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -12
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +5 -5
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +24 -19
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +32 -5
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +5 -5
- package/dist/src/core/shaders/canvas/Border.js +5 -5
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/HolePunch.js +3 -3
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +7 -5
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +14 -12
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +14 -6
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +2 -2
- package/dist/src/core/shaders/templates/BorderTemplate.js +11 -11
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +3 -3
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -2
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
- package/dist/src/core/shaders/{templates/shaderUtils.js → utils.js} +2 -2
- package/dist/src/core/shaders/utils.js.map +1 -0
- package/dist/src/core/shaders/webgl/Border.js +57 -34
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Default.js +6 -7
- package/dist/src/core/shaders/webgl/Default.js.map +1 -1
- package/dist/src/core/shaders/webgl/HolePunch.js +4 -3
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +33 -8
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +56 -32
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +4 -2
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +81 -37
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +93 -42
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +3 -2
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
- package/dist/src/core/shaders/webgl/SdfShader.js +7 -17
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +224 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +157 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +182 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +391 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js +311 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
- package/dist/src/core/text-rendering/TextRenderer.d.ts +383 -0
- package/dist/src/{main-api/ICoreDriver.js → core/text-rendering/TextRenderer.js} +1 -1
- package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
- package/dist/src/core/text-rendering/Utils.d.ts +30 -0
- package/dist/src/core/text-rendering/Utils.js +84 -0
- package/dist/src/core/text-rendering/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -6
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +35 -38
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +3 -4
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +11 -4
- package/dist/src/core/textures/ImageTexture.js +31 -40
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
- package/dist/src/core/textures/NoiseTexture.js +8 -8
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +7 -7
- package/dist/src/core/textures/RenderTexture.js +12 -12
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +6 -8
- package/dist/src/core/textures/SubTexture.js +19 -37
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +87 -10
- package/dist/src/core/textures/Texture.js +160 -17
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +3 -2
- package/dist/src/core/utils.js +1 -1
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/INode.d.ts +2 -2
- package/dist/src/main-api/Inspector.d.ts +130 -1
- package/dist/src/main-api/Inspector.js +341 -27
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +285 -82
- package/dist/src/main-api/Renderer.js +221 -76
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +1 -6
- package/dist/src/utils.js +2 -9
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/exports/canvas.ts +1 -1
- package/exports/index.ts +2 -8
- package/exports/utils.ts +7 -1
- package/exports/webgl.ts +3 -1
- package/package.json +15 -17
- package/src/common/CommonTypes.ts +18 -2
- package/src/core/CoreNode.test.ts +63 -15
- package/src/core/CoreNode.ts +709 -582
- package/src/core/CoreShaderManager.ts +5 -10
- package/src/core/CoreTextNode.ts +424 -286
- package/src/core/CoreTextureManager.ts +110 -130
- package/src/core/Stage.ts +394 -195
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +164 -141
- package/src/core/animations/CoreAnimation.ts +15 -9
- package/src/core/animations/CoreAnimationController.ts +13 -4
- package/src/core/lib/ImageWorker.ts +7 -1
- package/src/core/lib/WebGlContextWrapper.ts +126 -78
- package/src/core/lib/collectionUtils.ts +118 -0
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -2
- package/src/core/lib/textureCompression.ts +433 -75
- package/src/core/lib/utils.ts +26 -0
- package/src/core/lib/validateImageBitmap.ts +17 -6
- package/src/core/platforms/Platform.ts +83 -0
- package/src/core/platforms/web/WebPlatform.ts +132 -0
- package/src/core/renderers/CoreContextTexture.ts +2 -1
- package/src/core/renderers/CoreRenderer.ts +7 -3
- package/src/core/renderers/CoreShaderNode.ts +18 -3
- package/src/core/renderers/canvas/CanvasRenderer.ts +48 -82
- package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -6
- package/src/core/renderers/canvas/CanvasTexture.ts +22 -18
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +18 -15
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -5
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +124 -81
- package/src/core/renderers/webgl/WebGlRenderOp.ts +21 -12
- package/src/core/renderers/webgl/WebGlRenderer.ts +172 -137
- package/src/core/renderers/webgl/WebGlShaderNode.ts +2 -4
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +58 -20
- package/src/core/shaders/canvas/Border.ts +5 -8
- package/src/core/shaders/canvas/HolePunch.ts +4 -11
- package/src/core/shaders/canvas/LinearGradient.ts +10 -8
- package/src/core/shaders/canvas/RadialGradient.ts +23 -37
- package/src/core/shaders/canvas/Rounded.ts +2 -2
- package/src/core/shaders/canvas/RoundedWithBorder.ts +20 -16
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +17 -17
- package/src/core/shaders/canvas/RoundedWithShadow.ts +10 -9
- package/src/core/shaders/templates/BorderTemplate.ts +12 -12
- package/src/core/shaders/templates/HolePunchTemplate.ts +5 -5
- package/src/core/shaders/templates/RadialGradientTemplate.ts +10 -8
- package/src/core/shaders/templates/RoundedTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/ShadowTemplate.ts +1 -1
- package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +2 -3
- package/src/core/shaders/webgl/Border.ts +57 -37
- package/src/core/shaders/webgl/Default.ts +6 -7
- package/src/core/shaders/webgl/HolePunch.ts +4 -7
- package/src/core/shaders/webgl/LinearGradient.ts +33 -8
- package/src/core/shaders/webgl/RadialGradient.ts +58 -34
- package/src/core/shaders/webgl/Rounded.ts +4 -6
- package/src/core/shaders/webgl/RoundedWithBorder.ts +82 -44
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +93 -50
- package/src/core/shaders/webgl/RoundedWithShadow.ts +3 -6
- package/src/core/shaders/webgl/SdfShader.ts +7 -19
- package/src/core/text-rendering/CanvasFontHandler.ts +304 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +255 -0
- package/src/core/text-rendering/SdfFontHandler.ts +591 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +411 -0
- package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
- package/src/core/text-rendering/TextRenderer.ts +444 -0
- package/src/core/text-rendering/Utils.ts +99 -0
- package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +453 -0
- package/src/core/textures/ColorTexture.ts +7 -5
- package/src/core/textures/ImageTexture.ts +78 -66
- package/src/core/textures/NoiseTexture.ts +14 -12
- package/src/core/textures/RenderTexture.ts +18 -16
- package/src/core/textures/SubTexture.ts +25 -46
- package/src/core/textures/Texture.ts +207 -24
- package/src/core/utils.ts +9 -7
- package/src/main-api/INode.ts +4 -3
- package/src/main-api/Inspector.ts +571 -33
- package/src/main-api/Renderer.ts +505 -139
- package/src/utils.ts +10 -10
- package/dist/exports/core-api.d.ts +0 -74
- package/dist/exports/core-api.js +0 -96
- package/dist/exports/core-api.js.map +0 -1
- package/dist/exports/main-api.d.ts +0 -30
- package/dist/exports/main-api.js +0 -45
- package/dist/exports/main-api.js.map +0 -1
- package/dist/src/core/CoreExtension.d.ts +0 -12
- package/dist/src/core/CoreExtension.js +0 -29
- package/dist/src/core/CoreExtension.js.map +0 -1
- package/dist/src/core/CoreStuff.d.ts +0 -1
- package/dist/src/core/CoreStuff.js +0 -138
- package/dist/src/core/CoreStuff.js.map +0 -1
- package/dist/src/core/CoreTexturizer.d.ts +0 -14
- package/dist/src/core/CoreTexturizer.js +0 -47
- package/dist/src/core/CoreTexturizer.js.map +0 -1
- package/dist/src/core/LngNode.d.ts +0 -736
- package/dist/src/core/LngNode.js +0 -1174
- package/dist/src/core/LngNode.js.map +0 -1
- package/dist/src/core/Matrix2DContext.d.ts +0 -15
- package/dist/src/core/Matrix2DContext.js +0 -45
- package/dist/src/core/Matrix2DContext.js.map +0 -1
- package/dist/src/core/ShaderNode.d.ts +0 -10
- package/dist/src/core/ShaderNode.js +0 -30
- package/dist/src/core/ShaderNode.js.map +0 -1
- package/dist/src/core/TextNode.d.ts +0 -103
- package/dist/src/core/TextNode.js +0 -331
- package/dist/src/core/TextNode.js.map +0 -1
- package/dist/src/core/lib/Coords.d.ts +0 -14
- package/dist/src/core/lib/Coords.js +0 -55
- package/dist/src/core/lib/Coords.js.map +0 -1
- package/dist/src/core/lib/glm/common.d.ts +0 -162
- package/dist/src/core/lib/glm/common.js +0 -81
- package/dist/src/core/lib/glm/common.js.map +0 -1
- package/dist/src/core/lib/glm/index.d.ts +0 -11
- package/dist/src/core/lib/glm/index.js +0 -30
- package/dist/src/core/lib/glm/index.js.map +0 -1
- package/dist/src/core/lib/glm/mat2.d.ts +0 -219
- package/dist/src/core/lib/glm/mat2.js +0 -396
- package/dist/src/core/lib/glm/mat2.js.map +0 -1
- package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
- package/dist/src/core/lib/glm/mat2d.js +0 -442
- package/dist/src/core/lib/glm/mat2d.js.map +0 -1
- package/dist/src/core/lib/glm/mat3.d.ts +0 -283
- package/dist/src/core/lib/glm/mat3.js +0 -680
- package/dist/src/core/lib/glm/mat3.js.map +0 -1
- package/dist/src/core/lib/glm/mat4.d.ts +0 -550
- package/dist/src/core/lib/glm/mat4.js +0 -1802
- package/dist/src/core/lib/glm/mat4.js.map +0 -1
- package/dist/src/core/lib/glm/quat.d.ts +0 -363
- package/dist/src/core/lib/glm/quat.js +0 -693
- package/dist/src/core/lib/glm/quat.js.map +0 -1
- package/dist/src/core/lib/glm/quat2.d.ts +0 -356
- package/dist/src/core/lib/glm/quat2.js +0 -754
- package/dist/src/core/lib/glm/quat2.js.map +0 -1
- package/dist/src/core/lib/glm/vec2.d.ts +0 -365
- package/dist/src/core/lib/glm/vec2.js +0 -569
- package/dist/src/core/lib/glm/vec2.js.map +0 -1
- package/dist/src/core/lib/glm/vec3.d.ts +0 -406
- package/dist/src/core/lib/glm/vec3.js +0 -720
- package/dist/src/core/lib/glm/vec3.js.map +0 -1
- package/dist/src/core/lib/glm/vec4.d.ts +0 -330
- package/dist/src/core/lib/glm/vec4.js +0 -608
- package/dist/src/core/lib/glm/vec4.js.map +0 -1
- package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
- package/dist/src/core/renderers/CoreShaderManager.js +0 -33
- package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
- package/dist/src/core/scene/Scene.d.ts +0 -59
- package/dist/src/core/scene/Scene.js +0 -106
- package/dist/src/core/scene/Scene.js.map +0 -1
- package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
- package/dist/src/main-api/ICoreDriver.d.ts +0 -27
- package/dist/src/main-api/ICoreDriver.js.map +0 -1
- package/dist/src/main-api/IRenderDriver.d.ts +0 -20
- package/dist/src/main-api/IRenderDriver.js.map +0 -1
- package/dist/src/main-api/IShaderController.d.ts +0 -14
- package/dist/src/main-api/IShaderController.js +0 -30
- package/dist/src/main-api/IShaderController.js.map +0 -1
- package/dist/src/main-api/IShaderNode.d.ts +0 -17
- package/dist/src/main-api/IShaderNode.js +0 -19
- package/dist/src/main-api/IShaderNode.js.map +0 -1
- package/dist/src/main-api/RendererMain.d.ts +0 -375
- package/dist/src/main-api/RendererMain.js +0 -365
- package/dist/src/main-api/RendererMain.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +0 -28
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
- package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
- package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
- package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
- package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
- package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
- package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
- package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
- package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
- package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
- package/dist/src/render-drivers/utils.d.ts +0 -12
- package/dist/src/render-drivers/utils.js +0 -69
- package/dist/src/render-drivers/utils.js.map +0 -1
- package/scripts/please-use-pnpm.js +0 -13
- package/src/core/platform.ts +0 -64
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
- package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
- package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
- package/src/core/text-rendering/TrFontManager.ts +0 -183
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
- package/src/core/text-rendering/font-face-types/utils.ts +0 -39
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -840
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
- package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
import type { Dimensions } from '../../../common/CommonTypes.js';
|
|
21
|
-
import { assertTruthy } from '../../../utils.js';
|
|
22
21
|
import type { TextureMemoryManager } from '../../TextureMemoryManager.js';
|
|
23
22
|
import type { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
|
|
23
|
+
import type { Bound } from '../../lib/utils.js';
|
|
24
24
|
import type { RenderTexture } from '../../textures/RenderTexture.js';
|
|
25
25
|
import { WebGlCtxTexture } from './WebGlCtxTexture.js';
|
|
26
26
|
|
|
@@ -29,6 +29,13 @@ export class WebGlCtxRenderTexture extends WebGlCtxTexture {
|
|
|
29
29
|
|
|
30
30
|
public framebuffer: WebGLFramebuffer | null = null;
|
|
31
31
|
|
|
32
|
+
override txCoords: Bound = {
|
|
33
|
+
x1: 0,
|
|
34
|
+
y1: 1,
|
|
35
|
+
x2: 1,
|
|
36
|
+
y2: 0,
|
|
37
|
+
};
|
|
38
|
+
|
|
32
39
|
constructor(
|
|
33
40
|
glw: WebGlContextWrapper,
|
|
34
41
|
memManager: TextureMemoryManager,
|
|
@@ -41,25 +48,21 @@ export class WebGlCtxRenderTexture extends WebGlCtxTexture {
|
|
|
41
48
|
const { glw } = this;
|
|
42
49
|
const nativeTexture = (this._nativeCtxTexture =
|
|
43
50
|
this.createNativeCtxTexture());
|
|
44
|
-
|
|
51
|
+
|
|
52
|
+
if (!nativeTexture) {
|
|
53
|
+
throw new Error('Failed to create native texture for RenderTexture');
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const { w, h } = this.textureSource;
|
|
45
57
|
|
|
46
58
|
// Create Framebuffer object
|
|
47
59
|
this.framebuffer = glw.createFramebuffer();
|
|
48
60
|
|
|
49
61
|
// Set the dimensions of the render texture
|
|
50
|
-
glw.texImage2D(
|
|
51
|
-
0,
|
|
52
|
-
glw.RGBA,
|
|
53
|
-
width,
|
|
54
|
-
height,
|
|
55
|
-
0,
|
|
56
|
-
glw.RGBA,
|
|
57
|
-
glw.UNSIGNED_BYTE,
|
|
58
|
-
null,
|
|
59
|
-
);
|
|
62
|
+
glw.texImage2D(0, glw.RGBA, w, h, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);
|
|
60
63
|
|
|
61
64
|
// Update the texture memory manager
|
|
62
|
-
this.setTextureMemUse(
|
|
65
|
+
this.setTextureMemUse(w * h * 4);
|
|
63
66
|
|
|
64
67
|
// Bind the framebuffer
|
|
65
68
|
glw.bindFramebuffer(this.framebuffer);
|
|
@@ -71,8 +74,8 @@ export class WebGlCtxRenderTexture extends WebGlCtxTexture {
|
|
|
71
74
|
glw.bindFramebuffer(null);
|
|
72
75
|
|
|
73
76
|
return {
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
w,
|
|
78
|
+
h,
|
|
76
79
|
};
|
|
77
80
|
}
|
|
78
81
|
|
|
@@ -22,6 +22,8 @@ import { assertTruthy } from '../../../utils.js';
|
|
|
22
22
|
import type { TextureMemoryManager } from '../../TextureMemoryManager.js';
|
|
23
23
|
import type { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
|
|
24
24
|
import type { SubTexture } from '../../textures/SubTexture.js';
|
|
25
|
+
import type { SubTextureProps } from '../../textures/SubTexture.js';
|
|
26
|
+
import type { CompressedData } from '../../textures/Texture.js';
|
|
25
27
|
import { WebGlCtxTexture } from './WebGlCtxTexture.js';
|
|
26
28
|
|
|
27
29
|
export class WebGlCtxSubTexture extends WebGlCtxTexture {
|
|
@@ -39,12 +41,55 @@ export class WebGlCtxSubTexture extends WebGlCtxTexture {
|
|
|
39
41
|
|
|
40
42
|
if (props.data instanceof Uint8Array) {
|
|
41
43
|
// its a 1x1 Color Texture
|
|
42
|
-
return {
|
|
44
|
+
return { w: 1, h: 1 };
|
|
43
45
|
}
|
|
44
46
|
|
|
45
|
-
return
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
return this.extractDimensions(props.data);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Efficiently extracts width/height from polymorphic texture data
|
|
52
|
+
* Optimized for performance by using type guards and avoiding unnecessary property access
|
|
53
|
+
*/
|
|
54
|
+
private extractDimensions(
|
|
55
|
+
data:
|
|
56
|
+
| ImageBitmap
|
|
57
|
+
| ImageData
|
|
58
|
+
| SubTextureProps
|
|
59
|
+
| CompressedData
|
|
60
|
+
| HTMLImageElement
|
|
61
|
+
| null,
|
|
62
|
+
): Dimensions {
|
|
63
|
+
if (data === null) {
|
|
64
|
+
return { w: 0, h: 0 };
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Check for standard web API objects first (most common case)
|
|
68
|
+
// These use width/height properties: ImageBitmap, ImageData, HTMLImageElement
|
|
69
|
+
if (this.hasWidthHeight(data) === true) {
|
|
70
|
+
return { w: data.width, h: data.height };
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Check for internal objects that use w/h properties: SubTextureProps, CompressedData
|
|
74
|
+
if (this.hasWH(data) === true) {
|
|
75
|
+
return { w: data.w, h: data.h };
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Fallback
|
|
79
|
+
return { w: 0, h: 0 };
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Type guard for objects with width/height properties
|
|
84
|
+
*/
|
|
85
|
+
private hasWidthHeight(data: any): data is { width: number; height: number } {
|
|
86
|
+
return typeof data.width === 'number' && typeof data.height === 'number';
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Type guard for objects with w/h properties
|
|
91
|
+
*/
|
|
92
|
+
private hasWH(data: any): data is { w: number; h: number } {
|
|
93
|
+
return typeof data.w === 'number' && typeof data.h === 'number';
|
|
49
94
|
}
|
|
50
95
|
}
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
import type { Dimensions } from '../../../common/CommonTypes.js';
|
|
21
|
-
import { assertTruthy } from '../../../utils.js';
|
|
22
21
|
import type { TextureMemoryManager } from '../../TextureMemoryManager.js';
|
|
23
22
|
import type { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
|
|
24
23
|
import type { Texture } from '../../textures/Texture.js';
|
|
25
|
-
import {
|
|
24
|
+
import { uploadCompressedTexture } from '../../lib/textureCompression.js';
|
|
26
25
|
import { CoreContextTexture } from '../CoreContextTexture.js';
|
|
27
26
|
import { isHTMLImageElement } from './internal/RendererUtils.js';
|
|
27
|
+
import type { Bound } from '../../lib/utils.js';
|
|
28
28
|
|
|
29
29
|
const TRANSPARENT_TEXTURE_DATA = new Uint8Array([0, 0, 0, 0]);
|
|
30
30
|
|
|
@@ -44,6 +44,13 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
44
44
|
private _w = 0;
|
|
45
45
|
private _h = 0;
|
|
46
46
|
|
|
47
|
+
txCoords: Bound = {
|
|
48
|
+
x1: 0,
|
|
49
|
+
y1: 0,
|
|
50
|
+
x2: 1,
|
|
51
|
+
y2: 1,
|
|
52
|
+
};
|
|
53
|
+
|
|
47
54
|
constructor(
|
|
48
55
|
protected glw: WebGlContextWrapper,
|
|
49
56
|
memManager: TextureMemoryManager,
|
|
@@ -52,12 +59,30 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
52
59
|
super(memManager, textureSource);
|
|
53
60
|
}
|
|
54
61
|
|
|
62
|
+
/**
|
|
63
|
+
* GL error check with direct state marking
|
|
64
|
+
* Uses cached error result to minimize function calls
|
|
65
|
+
*/
|
|
66
|
+
private checkGLError(): boolean {
|
|
67
|
+
// Skip if already failed to prevent double-processing
|
|
68
|
+
if (this.state === 'failed') {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const error = this.glw.getError();
|
|
73
|
+
if (error !== 0) {
|
|
74
|
+
this.state = 'failed';
|
|
75
|
+
this.textureSource.setState('failed', new Error(`WebGL Error: ${error}`));
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
|
|
55
81
|
get ctxTexture(): WebGLTexture | null {
|
|
56
82
|
if (this.state === 'freed') {
|
|
57
83
|
this.load();
|
|
58
84
|
return null;
|
|
59
85
|
}
|
|
60
|
-
assertTruthy(this._nativeCtxTexture);
|
|
61
86
|
return this._nativeCtxTexture;
|
|
62
87
|
}
|
|
63
88
|
|
|
@@ -78,54 +103,63 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
78
103
|
* to force the texture to be pre-loaded prior to accessing the ctxTexture
|
|
79
104
|
* property.
|
|
80
105
|
*/
|
|
81
|
-
load() {
|
|
82
|
-
// If the texture is already loading or loaded,
|
|
106
|
+
async load(): Promise<void> {
|
|
107
|
+
// If the texture is already loading or loaded, return resolved promise
|
|
83
108
|
if (this.state === 'loading' || this.state === 'loaded') {
|
|
84
|
-
return;
|
|
109
|
+
return Promise.resolve();
|
|
85
110
|
}
|
|
86
111
|
|
|
87
112
|
this.state = 'loading';
|
|
88
113
|
this.textureSource.setState('loading');
|
|
114
|
+
|
|
115
|
+
// Await the native texture creation to ensure GPU buffer is fully allocated
|
|
89
116
|
this._nativeCtxTexture = this.createNativeCtxTexture();
|
|
90
117
|
|
|
91
118
|
if (this._nativeCtxTexture === null) {
|
|
92
119
|
this.state = 'failed';
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
new Error('Could not create WebGL Texture'),
|
|
96
|
-
);
|
|
120
|
+
const error = new Error('Could not create WebGL Texture');
|
|
121
|
+
this.textureSource.setState('failed', error);
|
|
97
122
|
console.error('Could not create WebGL Texture');
|
|
98
|
-
|
|
123
|
+
throw error;
|
|
99
124
|
}
|
|
100
125
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
126
|
+
try {
|
|
127
|
+
const { w, h } = await this.onLoadRequest();
|
|
128
|
+
|
|
129
|
+
// If the texture has been freed while loading, return early.
|
|
130
|
+
// Type assertion needed because state could change during async operations
|
|
131
|
+
if ((this.state as string) === 'freed') {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
this.state = 'loaded';
|
|
136
|
+
this._w = w;
|
|
137
|
+
this._h = h;
|
|
138
|
+
// Update the texture source's width and height so that it can be used
|
|
139
|
+
// for rendering.
|
|
140
|
+
this.textureSource.setState('loaded', { w, h });
|
|
141
|
+
|
|
142
|
+
// cleanup source texture data next tick
|
|
143
|
+
// This is done using queueMicrotask to ensure it runs after the current
|
|
144
|
+
// event loop tick, allowing the texture to be fully loaded and bound
|
|
145
|
+
// to the GL context before freeing the source data.
|
|
146
|
+
// This is important to avoid issues with the texture data being
|
|
147
|
+
// freed while the texture is still being loaded or used.
|
|
148
|
+
this.textureSource.freeTextureData();
|
|
149
|
+
} catch (err: unknown) {
|
|
150
|
+
// If the texture has been freed while loading, return early.
|
|
151
|
+
// Type assertion needed because state could change during async operations
|
|
152
|
+
if ((this.state as string) === 'freed') {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
this.state = 'failed';
|
|
157
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
158
|
+
this.textureSource.setState('failed', error);
|
|
159
|
+
this.textureSource.freeTextureData();
|
|
160
|
+
console.error(err);
|
|
161
|
+
throw error; // Re-throw to propagate the error
|
|
162
|
+
}
|
|
129
163
|
}
|
|
130
164
|
|
|
131
165
|
/**
|
|
@@ -144,8 +178,8 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
144
178
|
glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);
|
|
145
179
|
this.setTextureMemUse(TRANSPARENT_TEXTURE_DATA.byteLength);
|
|
146
180
|
|
|
147
|
-
let
|
|
148
|
-
let
|
|
181
|
+
let w = 0;
|
|
182
|
+
let h = 0;
|
|
149
183
|
|
|
150
184
|
glw.activeTexture(0);
|
|
151
185
|
|
|
@@ -159,11 +193,11 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
159
193
|
if (
|
|
160
194
|
(typeof ImageBitmap !== 'undefined' && tdata instanceof ImageBitmap) ||
|
|
161
195
|
tdata instanceof ImageData ||
|
|
162
|
-
// not using typeof
|
|
163
|
-
isHTMLImageElement(tdata)
|
|
196
|
+
// not using typeof HTMLI mageElement due to web worker
|
|
197
|
+
isHTMLImageElement(tdata) === true
|
|
164
198
|
) {
|
|
165
|
-
|
|
166
|
-
|
|
199
|
+
w = tdata.width;
|
|
200
|
+
h = tdata.height;
|
|
167
201
|
glw.bindTexture(this._nativeCtxTexture);
|
|
168
202
|
glw.pixelStorei(
|
|
169
203
|
glw.UNPACK_PREMULTIPLY_ALPHA_WEBGL,
|
|
@@ -172,10 +206,15 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
172
206
|
|
|
173
207
|
glw.texImage2D(0, format, format, glw.UNSIGNED_BYTE, tdata);
|
|
174
208
|
|
|
175
|
-
|
|
209
|
+
// Check for errors after compressed texture operations
|
|
210
|
+
if (this.checkGLError() === true) {
|
|
211
|
+
return { w: 0, h: 0 };
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
this.setTextureMemUse(h * w * formatBytes * memoryPadding);
|
|
176
215
|
} else if (tdata === null) {
|
|
177
|
-
|
|
178
|
-
|
|
216
|
+
w = 0;
|
|
217
|
+
h = 0;
|
|
179
218
|
// Reset to a 1x1 transparent texture
|
|
180
219
|
glw.bindTexture(this._nativeCtxTexture);
|
|
181
220
|
|
|
@@ -191,25 +230,25 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
191
230
|
);
|
|
192
231
|
this.setTextureMemUse(TRANSPARENT_TEXTURE_DATA.byteLength);
|
|
193
232
|
} else if ('mipmaps' in tdata && tdata.mipmaps) {
|
|
194
|
-
const { mipmaps,
|
|
195
|
-
|
|
196
|
-
type === 'ktx'
|
|
197
|
-
? new DataView(mipmaps[0] ?? new ArrayBuffer(0))
|
|
198
|
-
: (mipmaps[0] as unknown as ArrayBufferView);
|
|
233
|
+
const { mipmaps, type, blockInfo } = tdata;
|
|
234
|
+
uploadCompressedTexture[type]!(glw, this._nativeCtxTexture, tdata);
|
|
199
235
|
|
|
200
|
-
|
|
236
|
+
// Check for errors after compressed texture operations
|
|
237
|
+
if (this.checkGLError() === true) {
|
|
238
|
+
return { w: 0, h: 0 };
|
|
239
|
+
}
|
|
201
240
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
241
|
+
w = tdata.w;
|
|
242
|
+
h = tdata.h;
|
|
243
|
+
this.txCoords.x2 = w / (Math.ceil(w / blockInfo.width) * blockInfo.width);
|
|
244
|
+
this.txCoords.y2 =
|
|
245
|
+
h / (Math.ceil(h / blockInfo.height) * blockInfo.height);
|
|
207
246
|
|
|
208
|
-
this.setTextureMemUse(
|
|
247
|
+
this.setTextureMemUse(mipmaps[0]?.byteLength ?? 0);
|
|
209
248
|
} else if (tdata && tdata instanceof Uint8Array) {
|
|
210
249
|
// Color Texture
|
|
211
|
-
|
|
212
|
-
|
|
250
|
+
w = 1;
|
|
251
|
+
h = 1;
|
|
213
252
|
|
|
214
253
|
glw.bindTexture(this._nativeCtxTexture);
|
|
215
254
|
glw.pixelStorei(
|
|
@@ -217,18 +256,14 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
217
256
|
!!textureData.premultiplyAlpha,
|
|
218
257
|
);
|
|
219
258
|
|
|
220
|
-
glw.texImage2D(
|
|
221
|
-
0,
|
|
222
|
-
format,
|
|
223
|
-
width,
|
|
224
|
-
height,
|
|
225
|
-
0,
|
|
226
|
-
format,
|
|
227
|
-
glw.UNSIGNED_BYTE,
|
|
228
|
-
tdata,
|
|
229
|
-
);
|
|
259
|
+
glw.texImage2D(0, format, w, h, 0, format, glw.UNSIGNED_BYTE, tdata);
|
|
230
260
|
|
|
231
|
-
|
|
261
|
+
// Check for errors after compressed texture operations
|
|
262
|
+
if (this.checkGLError() === true) {
|
|
263
|
+
return { w: 0, h: 0 };
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
this.setTextureMemUse(w * h * formatBytes);
|
|
232
267
|
} else {
|
|
233
268
|
console.error(
|
|
234
269
|
`WebGlCoreCtxTexture.onLoadRequest: Unexpected textureData returned`,
|
|
@@ -237,8 +272,8 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
237
272
|
}
|
|
238
273
|
|
|
239
274
|
return {
|
|
240
|
-
|
|
241
|
-
|
|
275
|
+
w,
|
|
276
|
+
h,
|
|
242
277
|
};
|
|
243
278
|
}
|
|
244
279
|
|
|
@@ -254,6 +289,13 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
254
289
|
|
|
255
290
|
this.state = 'freed';
|
|
256
291
|
this.textureSource.setState('freed');
|
|
292
|
+
this.release();
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Release the WebGLTexture from the GPU without changing state
|
|
297
|
+
*/
|
|
298
|
+
release(): void {
|
|
257
299
|
this._w = 0;
|
|
258
300
|
this._h = 0;
|
|
259
301
|
|
|
@@ -268,17 +310,17 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
268
310
|
}
|
|
269
311
|
|
|
270
312
|
/**
|
|
271
|
-
* Create native context texture
|
|
313
|
+
* Create native context texture asynchronously
|
|
272
314
|
*
|
|
273
315
|
* @remarks
|
|
274
|
-
* When this method
|
|
316
|
+
* When this method resolves, the returned texture will be bound to the GL context state
|
|
317
|
+
* and fully ready for use. This ensures proper GPU resource allocation timing.
|
|
275
318
|
*
|
|
276
|
-
* @
|
|
277
|
-
* @param height
|
|
278
|
-
* @returns
|
|
319
|
+
* @returns Promise that resolves to the native WebGL texture or null on failure
|
|
279
320
|
*/
|
|
280
|
-
protected createNativeCtxTexture() {
|
|
321
|
+
protected createNativeCtxTexture(): WebGLTexture | null {
|
|
281
322
|
const { glw } = this;
|
|
323
|
+
|
|
282
324
|
const nativeTexture = glw.createTexture();
|
|
283
325
|
if (!nativeTexture) {
|
|
284
326
|
return null;
|
|
@@ -296,6 +338,7 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
296
338
|
// texture wrapping method
|
|
297
339
|
glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);
|
|
298
340
|
glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);
|
|
341
|
+
|
|
299
342
|
return nativeTexture;
|
|
300
343
|
}
|
|
301
344
|
}
|
|
@@ -34,7 +34,8 @@ type ReqQuad =
|
|
|
34
34
|
| 'rtt'
|
|
35
35
|
| 'clippingRect'
|
|
36
36
|
| 'height'
|
|
37
|
-
| 'width'
|
|
37
|
+
| 'width'
|
|
38
|
+
| 'time';
|
|
38
39
|
type RenderOpQuadOptions = Pick<QuadOptions, ReqQuad> &
|
|
39
40
|
Partial<Omit<QuadOptions, ReqQuad>> & {
|
|
40
41
|
sdfShaderProps?: Record<string, unknown>;
|
|
@@ -62,9 +63,10 @@ export class WebGlRenderOp extends CoreRenderOp {
|
|
|
62
63
|
readonly clippingRect: RectWithValid;
|
|
63
64
|
readonly rtt: boolean;
|
|
64
65
|
readonly parentHasRenderTexture: boolean;
|
|
65
|
-
readonly framebufferDimensions
|
|
66
|
+
readonly framebufferDimensions: Dimensions | null;
|
|
66
67
|
readonly alpha: number;
|
|
67
68
|
readonly pixelRatio: number;
|
|
69
|
+
readonly time?: number | null;
|
|
68
70
|
|
|
69
71
|
constructor(
|
|
70
72
|
readonly renderer: WebGlRenderer,
|
|
@@ -78,11 +80,12 @@ export class WebGlRenderOp extends CoreRenderOp {
|
|
|
78
80
|
this.height = quad.height;
|
|
79
81
|
this.clippingRect = quad.clippingRect;
|
|
80
82
|
this.parentHasRenderTexture = quad.parentHasRenderTexture;
|
|
81
|
-
this.framebufferDimensions = quad.framebufferDimensions;
|
|
83
|
+
this.framebufferDimensions = quad.framebufferDimensions || null;
|
|
82
84
|
this.rtt = quad.rtt;
|
|
83
85
|
this.alpha = quad.alpha;
|
|
84
86
|
this.pixelRatio =
|
|
85
87
|
this.parentHasRenderTexture === true ? 1 : renderer.stage.pixelRatio;
|
|
88
|
+
this.time = quad.time;
|
|
86
89
|
|
|
87
90
|
/**
|
|
88
91
|
* related to line 51
|
|
@@ -125,8 +128,6 @@ export class WebGlRenderOp extends CoreRenderOp {
|
|
|
125
128
|
stage.shManager.useShader(this.shader.program);
|
|
126
129
|
this.shader.program.bindRenderOp(this);
|
|
127
130
|
|
|
128
|
-
// TODO: Reduce calculations required
|
|
129
|
-
const quadIdx = (this.bufferIdx / 32) * 6 * 2;
|
|
130
131
|
// Clipping
|
|
131
132
|
if (this.clippingRect.valid === true) {
|
|
132
133
|
const clipX = Math.round(this.clippingRect.x * this.pixelRatio);
|
|
@@ -141,7 +142,7 @@ export class WebGlRenderOp extends CoreRenderOp {
|
|
|
141
142
|
// to be relative to the parent's framebuffer
|
|
142
143
|
if (this.parentHasRenderTexture) {
|
|
143
144
|
clipY = this.framebufferDimensions
|
|
144
|
-
? this.framebufferDimensions.
|
|
145
|
+
? this.framebufferDimensions.h - this.height
|
|
145
146
|
: 0;
|
|
146
147
|
}
|
|
147
148
|
|
|
@@ -151,11 +152,19 @@ export class WebGlRenderOp extends CoreRenderOp {
|
|
|
151
152
|
glw.setScissorTest(false);
|
|
152
153
|
}
|
|
153
154
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
6
|
|
157
|
-
glw.
|
|
158
|
-
|
|
159
|
-
|
|
155
|
+
// Check if this is SDF rendering (has sdfBuffers)
|
|
156
|
+
if (this.sdfShaderProps !== undefined) {
|
|
157
|
+
// SDF rendering uses drawArrays with explicit triangle vertices (6 vertices per quad)
|
|
158
|
+
glw.drawArrays(glw.TRIANGLES, 0, 6 * this.numQuads);
|
|
159
|
+
} else {
|
|
160
|
+
// Regular rendering uses drawElements with index buffer (4 vertices per quad)
|
|
161
|
+
const quadIdx = (this.bufferIdx / 32) * 6 * 2;
|
|
162
|
+
glw.drawElements(
|
|
163
|
+
glw.TRIANGLES,
|
|
164
|
+
6 * this.numQuads,
|
|
165
|
+
glw.UNSIGNED_SHORT,
|
|
166
|
+
quadIdx,
|
|
167
|
+
);
|
|
168
|
+
}
|
|
160
169
|
}
|
|
161
170
|
}
|