@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
|
@@ -19,7 +19,16 @@ export declare class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
19
19
|
protected _nativeCtxTexture: WebGLTexture | null;
|
|
20
20
|
private _w;
|
|
21
21
|
private _h;
|
|
22
|
+
txCoordX1: number;
|
|
23
|
+
txCoordY1: number;
|
|
24
|
+
txCoordX2: number;
|
|
25
|
+
txCoordY2: number;
|
|
22
26
|
constructor(glw: WebGlContextWrapper, memManager: TextureMemoryManager, textureSource: Texture);
|
|
27
|
+
/**
|
|
28
|
+
* GL error check with direct state marking
|
|
29
|
+
* Uses cached error result to minimize function calls
|
|
30
|
+
*/
|
|
31
|
+
private checkGLError;
|
|
23
32
|
get ctxTexture(): WebGLTexture | null;
|
|
24
33
|
get w(): number;
|
|
25
34
|
get h(): number;
|
|
@@ -32,7 +41,7 @@ export declare class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
32
41
|
* to force the texture to be pre-loaded prior to accessing the ctxTexture
|
|
33
42
|
* property.
|
|
34
43
|
*/
|
|
35
|
-
load(): void
|
|
44
|
+
load(): Promise<void>;
|
|
36
45
|
/**
|
|
37
46
|
* Called when the texture data needs to be loaded and uploaded to a texture
|
|
38
47
|
*/
|
|
@@ -44,14 +53,17 @@ export declare class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
44
53
|
*/
|
|
45
54
|
free(): void;
|
|
46
55
|
/**
|
|
47
|
-
*
|
|
56
|
+
* Release the WebGLTexture from the GPU without changing state
|
|
57
|
+
*/
|
|
58
|
+
release(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Create native context texture asynchronously
|
|
48
61
|
*
|
|
49
62
|
* @remarks
|
|
50
|
-
* When this method
|
|
63
|
+
* When this method resolves, the returned texture will be bound to the GL context state
|
|
64
|
+
* and fully ready for use. This ensures proper GPU resource allocation timing.
|
|
51
65
|
*
|
|
52
|
-
* @
|
|
53
|
-
* @param height
|
|
54
|
-
* @returns
|
|
66
|
+
* @returns Promise that resolves to the native WebGL texture or null on failure
|
|
55
67
|
*/
|
|
56
68
|
protected createNativeCtxTexture(): WebGLTexture | null;
|
|
57
69
|
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
19
|
import { assertTruthy } from '../../../utils.js';
|
|
20
|
-
import {
|
|
20
|
+
import { uploadCompressedTexture } from '../../lib/textureCompression.js';
|
|
21
21
|
import { CoreContextTexture } from '../CoreContextTexture.js';
|
|
22
22
|
import { isHTMLImageElement } from './internal/RendererUtils.js';
|
|
23
23
|
const TRANSPARENT_TEXTURE_DATA = new Uint8Array([0, 0, 0, 0]);
|
|
@@ -37,10 +37,31 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
37
37
|
_nativeCtxTexture = null;
|
|
38
38
|
_w = 0;
|
|
39
39
|
_h = 0;
|
|
40
|
+
txCoordX1 = 0;
|
|
41
|
+
txCoordY1 = 0;
|
|
42
|
+
txCoordX2 = 1;
|
|
43
|
+
txCoordY2 = 1;
|
|
40
44
|
constructor(glw, memManager, textureSource) {
|
|
41
45
|
super(memManager, textureSource);
|
|
42
46
|
this.glw = glw;
|
|
43
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* GL error check with direct state marking
|
|
50
|
+
* Uses cached error result to minimize function calls
|
|
51
|
+
*/
|
|
52
|
+
checkGLError() {
|
|
53
|
+
// Skip if already failed to prevent double-processing
|
|
54
|
+
if (this.state === 'failed') {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
const error = this.glw.getError();
|
|
58
|
+
if (error !== 0) {
|
|
59
|
+
this.state = 'failed';
|
|
60
|
+
this.textureSource.setState('failed', new Error(`WebGL Error: ${error}`));
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
44
65
|
get ctxTexture() {
|
|
45
66
|
if (this.state === 'freed') {
|
|
46
67
|
this.load();
|
|
@@ -64,23 +85,24 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
64
85
|
* to force the texture to be pre-loaded prior to accessing the ctxTexture
|
|
65
86
|
* property.
|
|
66
87
|
*/
|
|
67
|
-
load() {
|
|
68
|
-
// If the texture is already loading or loaded,
|
|
88
|
+
async load() {
|
|
89
|
+
// If the texture is already loading or loaded, return resolved promise
|
|
69
90
|
if (this.state === 'loading' || this.state === 'loaded') {
|
|
70
|
-
return;
|
|
91
|
+
return Promise.resolve();
|
|
71
92
|
}
|
|
72
93
|
this.state = 'loading';
|
|
73
94
|
this.textureSource.setState('loading');
|
|
95
|
+
// Await the native texture creation to ensure GPU buffer is fully allocated
|
|
74
96
|
this._nativeCtxTexture = this.createNativeCtxTexture();
|
|
75
97
|
if (this._nativeCtxTexture === null) {
|
|
76
98
|
this.state = 'failed';
|
|
77
|
-
this.textureSource.setState('failed', new Error('
|
|
78
|
-
console.error('Could not create WebGL Texture');
|
|
99
|
+
this.textureSource.setState('failed', new Error('WebGL Texture creation failed'));
|
|
79
100
|
return;
|
|
80
101
|
}
|
|
81
|
-
|
|
82
|
-
|
|
102
|
+
try {
|
|
103
|
+
const { width, height } = await this.onLoadRequest();
|
|
83
104
|
// If the texture has been freed while loading, return early.
|
|
105
|
+
// Type assertion needed because state could change during async operations
|
|
84
106
|
if (this.state === 'freed') {
|
|
85
107
|
return;
|
|
86
108
|
}
|
|
@@ -90,19 +112,18 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
90
112
|
// Update the texture source's width and height so that it can be used
|
|
91
113
|
// for rendering.
|
|
92
114
|
this.textureSource.setState('loaded', { width, height });
|
|
93
|
-
// cleanup source texture data
|
|
94
115
|
this.textureSource.freeTextureData();
|
|
95
|
-
}
|
|
96
|
-
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
97
118
|
// If the texture has been freed while loading, return early.
|
|
119
|
+
// Type assertion needed because state could change during async operations
|
|
98
120
|
if (this.state === 'freed') {
|
|
99
121
|
return;
|
|
100
122
|
}
|
|
123
|
+
// Ensure texture is marked as failed
|
|
101
124
|
this.state = 'failed';
|
|
102
|
-
this.textureSource.setState('failed'
|
|
103
|
-
|
|
104
|
-
console.error(err);
|
|
105
|
-
});
|
|
125
|
+
this.textureSource.setState('failed');
|
|
126
|
+
}
|
|
106
127
|
}
|
|
107
128
|
/**
|
|
108
129
|
* Called when the texture data needs to be loaded and uploaded to a texture
|
|
@@ -110,8 +131,14 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
110
131
|
async onLoadRequest() {
|
|
111
132
|
const { glw } = this;
|
|
112
133
|
const textureData = this.textureSource.textureData;
|
|
134
|
+
// Early return if texture is already failed
|
|
135
|
+
if (this.state === 'failed') {
|
|
136
|
+
return { width: 0, height: 0 };
|
|
137
|
+
}
|
|
113
138
|
if (textureData === null || this._nativeCtxTexture === null) {
|
|
114
|
-
|
|
139
|
+
this.state = 'failed';
|
|
140
|
+
this.textureSource.setState('failed', new Error('No texture data available'));
|
|
141
|
+
return { width: 0, height: 0 };
|
|
115
142
|
}
|
|
116
143
|
// Set to a 1x1 transparent texture
|
|
117
144
|
glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);
|
|
@@ -119,6 +146,10 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
119
146
|
let width = 0;
|
|
120
147
|
let height = 0;
|
|
121
148
|
glw.activeTexture(0);
|
|
149
|
+
// High-performance error check - single call, direct state marking
|
|
150
|
+
if (this.checkGLError() === true) {
|
|
151
|
+
return { width: 0, height: 0 };
|
|
152
|
+
}
|
|
122
153
|
const tdata = textureData.data;
|
|
123
154
|
const format = glw.RGBA;
|
|
124
155
|
const formatBytes = 4;
|
|
@@ -134,28 +165,26 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
134
165
|
glw.bindTexture(this._nativeCtxTexture);
|
|
135
166
|
glw.pixelStorei(glw.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !!textureData.premultiplyAlpha);
|
|
136
167
|
glw.texImage2D(0, format, format, glw.UNSIGNED_BYTE, tdata);
|
|
168
|
+
// Check for errors after image upload operations
|
|
169
|
+
if (this.checkGLError() === true) {
|
|
170
|
+
return { width: 0, height: 0 };
|
|
171
|
+
}
|
|
137
172
|
this.setTextureMemUse(height * width * formatBytes * memoryPadding);
|
|
138
173
|
}
|
|
139
|
-
else if (tdata
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
//
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
glw.compressedTexImage2D(0, glInternalFormat, width, height, 0, view);
|
|
154
|
-
glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);
|
|
155
|
-
glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);
|
|
156
|
-
glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);
|
|
157
|
-
glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);
|
|
158
|
-
this.setTextureMemUse(view.byteLength);
|
|
174
|
+
else if (tdata && 'mipmaps' in tdata && tdata.mipmaps) {
|
|
175
|
+
const { mipmaps, type, blockInfo } = tdata;
|
|
176
|
+
uploadCompressedTexture[type](glw, this._nativeCtxTexture, tdata);
|
|
177
|
+
// Check for errors after compressed texture operations
|
|
178
|
+
if (this.checkGLError() === true) {
|
|
179
|
+
return { width: 0, height: 0 };
|
|
180
|
+
}
|
|
181
|
+
width = tdata.width;
|
|
182
|
+
height = tdata.height;
|
|
183
|
+
this.txCoordX2 =
|
|
184
|
+
width / (Math.ceil(width / blockInfo.width) * blockInfo.width);
|
|
185
|
+
this.txCoordY2 =
|
|
186
|
+
height / (Math.ceil(height / blockInfo.height) * blockInfo.height);
|
|
187
|
+
this.setTextureMemUse(mipmaps[0]?.byteLength ?? 0);
|
|
159
188
|
}
|
|
160
189
|
else if (tdata && tdata instanceof Uint8Array) {
|
|
161
190
|
// Color Texture
|
|
@@ -164,10 +193,17 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
164
193
|
glw.bindTexture(this._nativeCtxTexture);
|
|
165
194
|
glw.pixelStorei(glw.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !!textureData.premultiplyAlpha);
|
|
166
195
|
glw.texImage2D(0, format, width, height, 0, format, glw.UNSIGNED_BYTE, tdata);
|
|
196
|
+
// Check for errors after color texture operations
|
|
197
|
+
if (this.checkGLError() === true) {
|
|
198
|
+
return { width: 0, height: 0 };
|
|
199
|
+
}
|
|
167
200
|
this.setTextureMemUse(width * height * formatBytes);
|
|
168
201
|
}
|
|
169
202
|
else {
|
|
170
203
|
console.error(`WebGlCoreCtxTexture.onLoadRequest: Unexpected textureData returned`, textureData);
|
|
204
|
+
this.state = 'failed';
|
|
205
|
+
this.textureSource.setState('failed', new Error('Unexpected texture data'));
|
|
206
|
+
return { width: 0, height: 0 };
|
|
171
207
|
}
|
|
172
208
|
return {
|
|
173
209
|
width,
|
|
@@ -185,6 +221,12 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
185
221
|
}
|
|
186
222
|
this.state = 'freed';
|
|
187
223
|
this.textureSource.setState('freed');
|
|
224
|
+
this.release();
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Release the WebGLTexture from the GPU without changing state
|
|
228
|
+
*/
|
|
229
|
+
release() {
|
|
188
230
|
this._w = 0;
|
|
189
231
|
this._h = 0;
|
|
190
232
|
if (this._nativeCtxTexture !== null) {
|
|
@@ -196,14 +238,13 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
196
238
|
this.textureSource.freeTextureData();
|
|
197
239
|
}
|
|
198
240
|
/**
|
|
199
|
-
* Create native context texture
|
|
241
|
+
* Create native context texture asynchronously
|
|
200
242
|
*
|
|
201
243
|
* @remarks
|
|
202
|
-
* When this method
|
|
244
|
+
* When this method resolves, the returned texture will be bound to the GL context state
|
|
245
|
+
* and fully ready for use. This ensures proper GPU resource allocation timing.
|
|
203
246
|
*
|
|
204
|
-
* @
|
|
205
|
-
* @param height
|
|
206
|
-
* @returns
|
|
247
|
+
* @returns Promise that resolves to the native WebGL texture or null on failure
|
|
207
248
|
*/
|
|
208
249
|
createNativeCtxTexture() {
|
|
209
250
|
const { glw } = this;
|
|
@@ -221,6 +262,10 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
221
262
|
// texture wrapping method
|
|
222
263
|
glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);
|
|
223
264
|
glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);
|
|
265
|
+
const error = glw.getError();
|
|
266
|
+
if (error !== 0) {
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
224
269
|
return nativeTexture;
|
|
225
270
|
}
|
|
226
271
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebGlCoreCtxTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreCtxTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"WebGlCoreCtxTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreCtxTexture.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,7 +85,7 @@ export class WebGlCoreRenderOp extends CoreRenderOp {
|
|
|
85
85
|
shManager.useShader(shader);
|
|
86
86
|
shader.bindRenderOp(this, shaderProps);
|
|
87
87
|
// TODO: Reduce calculations required
|
|
88
|
-
const quadIdx = (this.bufferIdx /
|
|
88
|
+
const quadIdx = (this.bufferIdx / 32) * 6 * 2;
|
|
89
89
|
// Clipping
|
|
90
90
|
if (this.clippingRect.valid) {
|
|
91
91
|
const { x, y, width, height } = this.clippingRect;
|
|
@@ -87,7 +87,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
87
87
|
this.defaultShader = this.defShaderCtrl.shader;
|
|
88
88
|
const quadBuffer = glw.createBuffer();
|
|
89
89
|
assertTruthy(quadBuffer);
|
|
90
|
-
const stride =
|
|
90
|
+
const stride = 8 * Float32Array.BYTES_PER_ELEMENT;
|
|
91
91
|
this.quadBufferCollection = new BufferCollection([
|
|
92
92
|
{
|
|
93
93
|
buffer: quadBuffer,
|
|
@@ -124,6 +124,14 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
124
124
|
stride,
|
|
125
125
|
offset: 5 * Float32Array.BYTES_PER_ELEMENT,
|
|
126
126
|
},
|
|
127
|
+
a_nodeCoordinate: {
|
|
128
|
+
name: 'a_nodeCoordinate',
|
|
129
|
+
size: 2,
|
|
130
|
+
type: glw.FLOAT,
|
|
131
|
+
normalized: false,
|
|
132
|
+
stride,
|
|
133
|
+
offset: 6 * Float32Array.BYTES_PER_ELEMENT,
|
|
134
|
+
},
|
|
127
135
|
},
|
|
128
136
|
},
|
|
129
137
|
]);
|
|
@@ -168,7 +176,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
168
176
|
* If the shader props contain any automatic properties, update it with the
|
|
169
177
|
* current dimensions and or alpha that will be used to render the quad.
|
|
170
178
|
*/
|
|
171
|
-
if (params.
|
|
179
|
+
if (params.shader !== this.defaultShader) {
|
|
172
180
|
if (hasOwn(params.shaderProps, '$dimensions') == true) {
|
|
173
181
|
const dimensions = params.shaderProps.$dimensions;
|
|
174
182
|
dimensions.width = params.width;
|
|
@@ -179,16 +187,13 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
179
187
|
}
|
|
180
188
|
}
|
|
181
189
|
let { curBufferIdx: bufferIdx, curRenderOp } = this;
|
|
182
|
-
const targetDims = { width:
|
|
183
|
-
targetDims.width = params.width;
|
|
184
|
-
targetDims.height = params.height;
|
|
185
|
-
const targetShader = params.shader || this.defaultShader;
|
|
186
|
-
assertTruthy(targetShader.getUniformLocation !== undefined, 'Invalid WebGL shader');
|
|
190
|
+
const targetDims = { width: params.width, height: params.height };
|
|
187
191
|
if (this.reuseRenderOp(params) === false) {
|
|
188
|
-
this.newRenderOp(
|
|
192
|
+
this.newRenderOp(params.shader, params.shaderProps, params.alpha, targetDims, params.clippingRect, bufferIdx, params.rtt, params.parentHasRenderTexture, params.framebufferDimensions);
|
|
189
193
|
curRenderOp = this.curRenderOp;
|
|
190
194
|
assertTruthy(curRenderOp);
|
|
191
195
|
}
|
|
196
|
+
let ctxTexture = undefined;
|
|
192
197
|
let texCoordX1 = 0;
|
|
193
198
|
let texCoordY1 = 0;
|
|
194
199
|
let texCoordX2 = 1;
|
|
@@ -201,6 +206,18 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
201
206
|
texCoordY1 = ty / parentH;
|
|
202
207
|
texCoordY2 = texCoordY1 + th / parentH;
|
|
203
208
|
texture = texture.parentTexture;
|
|
209
|
+
ctxTexture = texture.ctxTexture;
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
ctxTexture = texture.ctxTexture;
|
|
213
|
+
if (ctxTexture === undefined) {
|
|
214
|
+
ctxTexture = this.stage.defaultTexture?.ctxTexture;
|
|
215
|
+
console.warn('WebGL Renderer: Texture does not have a ctxTexture, using default texture instead');
|
|
216
|
+
}
|
|
217
|
+
texCoordX1 = ctxTexture.txCoordX1;
|
|
218
|
+
texCoordY1 = ctxTexture.txCoordY1;
|
|
219
|
+
texCoordX2 = ctxTexture.txCoordX2;
|
|
220
|
+
texCoordY2 = ctxTexture.txCoordY2;
|
|
204
221
|
}
|
|
205
222
|
if (texture.type === TextureType.image &&
|
|
206
223
|
params.textureOptions !== null &&
|
|
@@ -240,8 +257,6 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
240
257
|
if (flipY ^ +(texture.type === TextureType.renderToTexture)) {
|
|
241
258
|
[texCoordY1, texCoordY2] = [texCoordY2, texCoordY1];
|
|
242
259
|
}
|
|
243
|
-
const ctxTexture = texture.ctxTexture;
|
|
244
|
-
assertTruthy(ctxTexture instanceof WebGlCoreCtxTexture);
|
|
245
260
|
const textureIdx = this.addTexture(ctxTexture, bufferIdx);
|
|
246
261
|
assertTruthy(this.curRenderOp !== null);
|
|
247
262
|
if (params.renderCoords) {
|
|
@@ -252,6 +267,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
252
267
|
fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
|
|
253
268
|
uiQuadBuffer[bufferIdx++] = params.colorTl; // color
|
|
254
269
|
fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
|
|
270
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
271
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
255
272
|
// Upper-Right
|
|
256
273
|
fQuadBuffer[bufferIdx++] = params.renderCoords.x2;
|
|
257
274
|
fQuadBuffer[bufferIdx++] = params.renderCoords.y2;
|
|
@@ -259,6 +276,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
259
276
|
fQuadBuffer[bufferIdx++] = texCoordY1;
|
|
260
277
|
uiQuadBuffer[bufferIdx++] = params.colorTr;
|
|
261
278
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
279
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
280
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
262
281
|
// Lower-Left
|
|
263
282
|
fQuadBuffer[bufferIdx++] = params.renderCoords.x4;
|
|
264
283
|
fQuadBuffer[bufferIdx++] = params.renderCoords.y4;
|
|
@@ -266,6 +285,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
266
285
|
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
267
286
|
uiQuadBuffer[bufferIdx++] = params.colorBl;
|
|
268
287
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
288
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
289
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
269
290
|
// Lower-Right
|
|
270
291
|
fQuadBuffer[bufferIdx++] = params.renderCoords.x3;
|
|
271
292
|
fQuadBuffer[bufferIdx++] = params.renderCoords.y3;
|
|
@@ -273,6 +294,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
273
294
|
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
274
295
|
uiQuadBuffer[bufferIdx++] = params.colorBr;
|
|
275
296
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
297
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
298
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
276
299
|
}
|
|
277
300
|
else if (params.tb !== 0 || params.tc !== 0) {
|
|
278
301
|
// Upper-Left
|
|
@@ -282,6 +305,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
282
305
|
fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
|
|
283
306
|
uiQuadBuffer[bufferIdx++] = params.colorTl; // color
|
|
284
307
|
fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
|
|
308
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
309
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
285
310
|
// Upper-Right
|
|
286
311
|
fQuadBuffer[bufferIdx++] = params.tx + params.width * params.ta;
|
|
287
312
|
fQuadBuffer[bufferIdx++] = params.ty + params.width * params.tc;
|
|
@@ -289,6 +314,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
289
314
|
fQuadBuffer[bufferIdx++] = texCoordY1;
|
|
290
315
|
uiQuadBuffer[bufferIdx++] = params.colorTr;
|
|
291
316
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
317
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
318
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
292
319
|
// Lower-Left
|
|
293
320
|
fQuadBuffer[bufferIdx++] = params.tx + params.height * params.tb;
|
|
294
321
|
fQuadBuffer[bufferIdx++] = params.ty + params.height * params.td;
|
|
@@ -296,6 +323,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
296
323
|
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
297
324
|
uiQuadBuffer[bufferIdx++] = params.colorBl;
|
|
298
325
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
326
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
327
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
299
328
|
// Lower-Right
|
|
300
329
|
fQuadBuffer[bufferIdx++] =
|
|
301
330
|
params.tx + params.width * params.ta + params.height * params.tb;
|
|
@@ -305,6 +334,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
305
334
|
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
306
335
|
uiQuadBuffer[bufferIdx++] = params.colorBr;
|
|
307
336
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
337
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
338
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
308
339
|
}
|
|
309
340
|
else {
|
|
310
341
|
// Calculate the right corner of the quad
|
|
@@ -318,6 +349,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
318
349
|
fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
|
|
319
350
|
uiQuadBuffer[bufferIdx++] = params.colorTl; // color
|
|
320
351
|
fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
|
|
352
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
353
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
321
354
|
// Upper-Right
|
|
322
355
|
fQuadBuffer[bufferIdx++] = rightCornerX;
|
|
323
356
|
fQuadBuffer[bufferIdx++] = params.ty;
|
|
@@ -325,6 +358,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
325
358
|
fQuadBuffer[bufferIdx++] = texCoordY1;
|
|
326
359
|
uiQuadBuffer[bufferIdx++] = params.colorTr;
|
|
327
360
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
361
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
362
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
328
363
|
// Lower-Left
|
|
329
364
|
fQuadBuffer[bufferIdx++] = params.tx;
|
|
330
365
|
fQuadBuffer[bufferIdx++] = rightCornerY;
|
|
@@ -332,6 +367,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
332
367
|
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
333
368
|
uiQuadBuffer[bufferIdx++] = params.colorBl;
|
|
334
369
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
370
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
371
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
335
372
|
// Lower-Right
|
|
336
373
|
fQuadBuffer[bufferIdx++] = rightCornerX;
|
|
337
374
|
fQuadBuffer[bufferIdx++] = rightCornerY;
|
|
@@ -339,9 +376,10 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
339
376
|
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
340
377
|
uiQuadBuffer[bufferIdx++] = params.colorBr;
|
|
341
378
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
379
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
380
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
342
381
|
}
|
|
343
382
|
// Update the length of the current render op
|
|
344
|
-
this.curRenderOp.length += WORDS_PER_QUAD;
|
|
345
383
|
this.curRenderOp.numQuads++;
|
|
346
384
|
this.curBufferIdx = bufferIdx;
|
|
347
385
|
}
|
|
@@ -391,9 +429,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
391
429
|
*/
|
|
392
430
|
reuseRenderOp(params) {
|
|
393
431
|
const { shader, shaderProps, parentHasRenderTexture, rtt, clippingRect } = params;
|
|
394
|
-
const targetShader = shader || this.defaultShader;
|
|
395
432
|
// Switching shader program will require a new render operation
|
|
396
|
-
if (this.curRenderOp?.shader !==
|
|
433
|
+
if (this.curRenderOp?.shader !== shader) {
|
|
397
434
|
return false;
|
|
398
435
|
}
|
|
399
436
|
// Switching clipping rect will require a new render operation
|
|
@@ -403,13 +440,12 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
403
440
|
// Force new render operation if rendering to texture
|
|
404
441
|
// @todo: This needs to be improved, render operations could also be reused
|
|
405
442
|
// for rendering to texture
|
|
406
|
-
if (parentHasRenderTexture
|
|
443
|
+
if (parentHasRenderTexture === true || rtt === true) {
|
|
407
444
|
return false;
|
|
408
445
|
}
|
|
409
446
|
// Check if the shader can batch the shader properties
|
|
410
447
|
if (this.curRenderOp.shader !== this.defaultShader &&
|
|
411
|
-
(shaderProps ===
|
|
412
|
-
this.curRenderOp.shader.canBatchShaderProps(this.curRenderOp.shaderProps, shaderProps) === false)) {
|
|
448
|
+
this.curRenderOp.shader.canBatchShaderProps(this.curRenderOp.shaderProps, shaderProps) === false) {
|
|
413
449
|
return false;
|
|
414
450
|
}
|
|
415
451
|
// Render operation can be reused
|
|
@@ -440,7 +476,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
440
476
|
}
|
|
441
477
|
this.quadBufferUsage = this.curBufferIdx * arr.BYTES_PER_ELEMENT;
|
|
442
478
|
// Calculate the size of each quad in bytes (4 vertices per quad) times the size of each vertex in bytes
|
|
443
|
-
const QUAD_SIZE_IN_BYTES = 4 * (
|
|
479
|
+
const QUAD_SIZE_IN_BYTES = 4 * (8 * arr.BYTES_PER_ELEMENT); // 8 attributes per vertex
|
|
444
480
|
this.numQuadsRendered = this.quadBufferUsage / QUAD_SIZE_IN_BYTES;
|
|
445
481
|
}
|
|
446
482
|
getQuadCount() {
|