@lightningjs/renderer 3.0.0-beta1 → 3.0.0-beta11
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 +13 -27
- 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 +1 -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/core/CoreNode.d.ts +45 -69
- package/dist/src/core/CoreNode.js +323 -305
- 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 +61 -87
- package/dist/src/core/CoreTextNode.js +276 -235
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +9 -11
- package/dist/src/core/CoreTextureManager.js +80 -91
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +75 -31
- package/dist/src/core/Stage.js +270 -136
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +10 -1
- package/dist/src/core/TextureMemoryManager.js +112 -78
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.js +5 -0
- 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 +3 -2
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/RenderCoords.d.ts +9 -10
- package/dist/src/core/lib/RenderCoords.js +43 -55
- package/dist/src/core/lib/RenderCoords.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +51 -2
- package/dist/src/core/lib/WebGlContextWrapper.js +92 -22
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- 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/utils.d.ts +3 -0
- package/dist/src/core/lib/utils.js +42 -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 +29 -4
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/platforms/Platform.d.ts +37 -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 +9 -0
- package/dist/src/core/platforms/web/WebPlatform.js +84 -0
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
- package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +5 -2
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +3 -3
- package/dist/src/core/renderers/CoreShaderNode.js +8 -2
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +7 -6
- 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 +10 -21
- 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 +2 -2
- package/dist/src/core/renderers/canvas/CanvasTexture.js +11 -9
- 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 +5 -6
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +30 -18
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +5 -2
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +3 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +3 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +5 -6
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +30 -21
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +10 -2
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +37 -19
- 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 +144 -117
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -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 +5 -3
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +55 -31
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/shaders/canvas/Border.js +1 -1
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +5 -3
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +13 -11
- package/dist/src/core/shaders/canvas/RadialGradient.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 +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.js +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.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/utils.d.ts +5 -0
- package/dist/src/core/shaders/utils.js +41 -0
- 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/HolePunch.js +4 -3
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +5 -4
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +6 -5
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +79 -36
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +92 -42
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.js +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/shaders/webgl/Spinner.js +2 -0
- package/dist/src/core/shaders/webgl/Spinner.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +41 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +159 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +22 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +366 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +152 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +368 -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 +355 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextRenderer.d.ts +351 -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 +71 -0
- package/dist/src/core/text-rendering/Utils.js +212 -0
- package/dist/src/core/text-rendering/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/Settings.d.ts +64 -0
- package/dist/src/{main-api/texture-usage-trackers/TextureUsageTracker.js → core/text-rendering/canvas/Settings.js} +3 -11
- package/dist/src/core/text-rendering/canvas/Settings.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/Utils.d.ts +20 -0
- package/dist/src/core/text-rendering/canvas/Utils.js +144 -0
- package/dist/src/core/text-rendering/canvas/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +60 -0
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +183 -0
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/draw.d.ts +5 -0
- package/dist/src/core/text-rendering/canvas/draw.js +132 -0
- package/dist/src/core/text-rendering/canvas/draw.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 +30 -34
- 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/text-rendering/sdf/PeekableGenerator.d.ts +12 -0
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.js +61 -0
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.js.map +1 -0
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.d.ts +45 -0
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js +69 -0
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js.map +1 -0
- package/dist/src/core/text-rendering/sdf/Utils.d.ts +26 -0
- package/dist/src/core/text-rendering/sdf/Utils.js +304 -0
- package/dist/src/core/text-rendering/sdf/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/sdf/index.d.ts +1 -0
- package/dist/src/core/{CoreExtension.js → text-rendering/sdf/index.js} +3 -12
- package/dist/src/core/text-rendering/sdf/index.js.map +1 -0
- package/dist/src/core/textures/ImageTexture.d.ts +4 -3
- package/dist/src/core/textures/ImageTexture.js +36 -9
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +21 -2
- package/dist/src/core/textures/Texture.js +37 -6
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +1 -1
- package/dist/src/main-api/INode.d.ts +2 -2
- package/dist/src/main-api/Inspector.d.ts +6 -1
- package/dist/src/main-api/Inspector.js +43 -7
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +122 -46
- package/dist/src/main-api/Renderer.js +174 -37
- 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/exports/canvas.ts +1 -1
- package/exports/index.ts +1 -8
- package/exports/utils.ts +7 -1
- package/exports/webgl.ts +3 -1
- package/package.json +2 -3
- package/src/core/CoreNode.test.ts +0 -1
- package/src/core/CoreNode.ts +403 -388
- package/src/core/CoreShaderManager.ts +5 -10
- package/src/core/CoreTextNode.ts +337 -302
- package/src/core/CoreTextureManager.ts +78 -110
- package/src/core/Stage.ts +344 -178
- package/src/core/TextureMemoryManager.ts +150 -100
- package/src/core/animations/CoreAnimation.ts +7 -0
- package/src/core/animations/CoreAnimationController.ts +13 -4
- package/src/core/lib/ImageWorker.ts +9 -2
- package/src/core/lib/RenderCoords.ts +52 -67
- package/src/core/lib/WebGlContextWrapper.ts +125 -68
- 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/utils.ts +51 -0
- package/src/core/lib/validateImageBitmap.ts +17 -6
- package/src/core/platforms/Platform.ts +77 -0
- package/src/core/platforms/web/WebPlatform.ts +121 -0
- package/src/core/renderers/CoreContextTexture.ts +1 -1
- package/src/core/renderers/CoreRenderer.ts +5 -2
- package/src/core/renderers/CoreShaderNode.ts +10 -6
- package/src/core/renderers/canvas/CanvasRenderer.ts +12 -28
- package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -6
- package/src/core/renderers/canvas/CanvasTexture.ts +17 -14
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +5 -0
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +52 -43
- package/src/core/renderers/webgl/WebGlRenderOp.ts +46 -24
- package/src/core/renderers/webgl/WebGlRenderer.ts +177 -145
- package/src/core/renderers/webgl/WebGlShaderNode.ts +7 -5
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +68 -37
- package/src/core/shaders/canvas/Border.ts +1 -4
- package/src/core/shaders/canvas/LinearGradient.ts +8 -6
- package/src/core/shaders/canvas/RadialGradient.ts +22 -36
- package/src/core/shaders/canvas/RoundedWithBorder.ts +17 -11
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +14 -12
- package/src/core/shaders/canvas/RoundedWithShadow.ts +8 -7
- package/src/core/shaders/templates/BorderTemplate.ts +1 -1
- package/src/core/shaders/templates/HolePunchTemplate.ts +1 -1
- 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/HolePunch.ts +4 -7
- package/src/core/shaders/webgl/LinearGradient.ts +5 -4
- package/src/core/shaders/webgl/RadialGradient.ts +7 -6
- package/src/core/shaders/webgl/RoundedWithBorder.ts +80 -39
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +92 -50
- package/src/core/shaders/webgl/SdfShader.ts +1 -4
- package/src/core/text-rendering/CanvasFontHandler.ts +210 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +622 -0
- package/src/core/text-rendering/SdfFontHandler.ts +554 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +466 -0
- package/src/core/text-rendering/TextRenderer.ts +406 -0
- package/src/core/text-rendering/{TextTextureRendererUtils.ts → Utils.ts} +5 -11
- package/src/core/text-rendering/canvas/Settings.ts +99 -0
- package/src/core/text-rendering/canvas/Utils.test.ts +206 -0
- package/src/core/text-rendering/canvas/Utils.ts +178 -0
- package/src/core/text-rendering/canvas/calculateRenderInfo.ts +299 -0
- package/src/core/text-rendering/canvas/draw.ts +165 -0
- package/src/core/text-rendering/sdf/Utils.test.ts +402 -0
- package/src/core/text-rendering/sdf/Utils.ts +436 -0
- package/src/core/text-rendering/sdf/index.ts +20 -0
- package/src/core/textures/ImageTexture.ts +69 -27
- package/src/core/textures/Texture.ts +50 -6
- package/src/main-api/INode.ts +4 -3
- package/src/main-api/Inspector.ts +53 -8
- package/src/main-api/Renderer.ts +311 -87
- 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.map +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/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.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/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 -841
- 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
- /package/dist/src/core/{CoreStuff.d.ts → shaders/webgl/Spinner.d.ts} +0 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { Platform } from '../Platform.js';
|
|
2
|
+
import type { Stage } from '../../Stage.js';
|
|
3
|
+
|
|
4
|
+
export class WebPlatform extends Platform {
|
|
5
|
+
////////////////////////
|
|
6
|
+
// Platform-specific methods
|
|
7
|
+
////////////////////////
|
|
8
|
+
|
|
9
|
+
override createCanvas(): HTMLCanvasElement {
|
|
10
|
+
const canvas = document.createElement('canvas');
|
|
11
|
+
return canvas;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
override getElementById(id: string): HTMLElement | null {
|
|
15
|
+
return document.getElementById(id);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
////////////////////////
|
|
19
|
+
// Update loop
|
|
20
|
+
////////////////////////
|
|
21
|
+
|
|
22
|
+
override startLoop(stage: Stage): void {
|
|
23
|
+
let isIdle = false;
|
|
24
|
+
let lastFrameTime = 0;
|
|
25
|
+
|
|
26
|
+
const runLoop = (currentTime: number = 0) => {
|
|
27
|
+
const targetFrameTime = stage.targetFrameTime;
|
|
28
|
+
|
|
29
|
+
// Check if we should throttle this frame
|
|
30
|
+
if (
|
|
31
|
+
targetFrameTime > 0 &&
|
|
32
|
+
currentTime - lastFrameTime < targetFrameTime
|
|
33
|
+
) {
|
|
34
|
+
// Too early for next frame, schedule with setTimeout for precise timing
|
|
35
|
+
const delay = targetFrameTime - (currentTime - lastFrameTime);
|
|
36
|
+
setTimeout(() => requestAnimationFrame(runLoop), delay);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
stage.updateFrameTime();
|
|
41
|
+
stage.updateAnimations();
|
|
42
|
+
|
|
43
|
+
if (!stage.hasSceneUpdates()) {
|
|
44
|
+
// We still need to calculate the fps else it looks like the app is frozen
|
|
45
|
+
stage.calculateFps();
|
|
46
|
+
|
|
47
|
+
if (targetFrameTime > 0) {
|
|
48
|
+
// Use setTimeout for throttled idle frames
|
|
49
|
+
setTimeout(
|
|
50
|
+
() => requestAnimationFrame(runLoop),
|
|
51
|
+
Math.max(targetFrameTime, 16.666666666666668),
|
|
52
|
+
);
|
|
53
|
+
} else {
|
|
54
|
+
// Use standard idle timeout when not throttling
|
|
55
|
+
setTimeout(() => requestAnimationFrame(runLoop), 16.666666666666668);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (!isIdle) {
|
|
59
|
+
stage.shManager.cleanup();
|
|
60
|
+
stage.eventBus.emit('idle');
|
|
61
|
+
isIdle = true;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (stage.txMemManager.checkCleanup() === true) {
|
|
65
|
+
stage.txMemManager.cleanup(false);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
stage.flushFrameEvents();
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
isIdle = false;
|
|
73
|
+
stage.drawFrame();
|
|
74
|
+
stage.flushFrameEvents();
|
|
75
|
+
|
|
76
|
+
// Schedule next frame
|
|
77
|
+
if (targetFrameTime > 0) {
|
|
78
|
+
// Use setTimeout + rAF combination for precise FPS control
|
|
79
|
+
const nextFrameDelay = Math.max(
|
|
80
|
+
0,
|
|
81
|
+
targetFrameTime - (performance.now() - currentTime),
|
|
82
|
+
);
|
|
83
|
+
setTimeout(() => requestAnimationFrame(runLoop), nextFrameDelay);
|
|
84
|
+
} else {
|
|
85
|
+
// Use standard rAF when not throttling
|
|
86
|
+
requestAnimationFrame(runLoop);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
requestAnimationFrame(runLoop);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
////////////////////////
|
|
93
|
+
// ImageBitmap
|
|
94
|
+
////////////////////////
|
|
95
|
+
|
|
96
|
+
override createImageBitmap(
|
|
97
|
+
blob: ImageBitmapSource,
|
|
98
|
+
sxOrOptions?: number | ImageBitmapOptions,
|
|
99
|
+
sy?: number,
|
|
100
|
+
sw?: number,
|
|
101
|
+
sh?: number,
|
|
102
|
+
options?: ImageBitmapOptions,
|
|
103
|
+
): Promise<ImageBitmap> {
|
|
104
|
+
if (typeof sxOrOptions === 'number') {
|
|
105
|
+
return createImageBitmap(
|
|
106
|
+
blob,
|
|
107
|
+
sxOrOptions,
|
|
108
|
+
sy ?? 0,
|
|
109
|
+
sw ?? 0,
|
|
110
|
+
sh ?? 0,
|
|
111
|
+
options,
|
|
112
|
+
);
|
|
113
|
+
} else {
|
|
114
|
+
return createImageBitmap(blob, sxOrOptions);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
getTimeStamp(): number {
|
|
119
|
+
return performance ? performance.now() : Date.now();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -25,7 +25,7 @@ import type { ContextSpy } from '../lib/ContextSpy.js';
|
|
|
25
25
|
import type { RenderCoords } from '../lib/RenderCoords.js';
|
|
26
26
|
import type { RectWithValid } from '../lib/utils.js';
|
|
27
27
|
import type { CoreShaderProgram } from './CoreShaderProgram.js';
|
|
28
|
-
import type { Texture } from '../textures/Texture.js';
|
|
28
|
+
import type { Texture, TextureCoords } from '../textures/Texture.js';
|
|
29
29
|
import { CoreContextTexture } from './CoreContextTexture.js';
|
|
30
30
|
import type { CoreShaderType, CoreShaderNode } from './CoreShaderNode.js';
|
|
31
31
|
|
|
@@ -38,6 +38,7 @@ export interface QuadOptions {
|
|
|
38
38
|
colorBr: number;
|
|
39
39
|
texture: Texture | null;
|
|
40
40
|
textureOptions: TextureOptions | null;
|
|
41
|
+
textureCoords: TextureCoords | undefined;
|
|
41
42
|
zIndex: number;
|
|
42
43
|
shader: CoreShaderNode | null;
|
|
43
44
|
alpha: number;
|
|
@@ -51,7 +52,7 @@ export interface QuadOptions {
|
|
|
51
52
|
renderCoords?: RenderCoords;
|
|
52
53
|
rtt: boolean;
|
|
53
54
|
parentHasRenderTexture: boolean;
|
|
54
|
-
framebufferDimensions: Dimensions;
|
|
55
|
+
framebufferDimensions: Dimensions | null;
|
|
55
56
|
}
|
|
56
57
|
|
|
57
58
|
export interface CoreRendererOptions {
|
|
@@ -103,5 +104,7 @@ export abstract class CoreRenderer {
|
|
|
103
104
|
abstract renderToTexture(node: CoreNode): void;
|
|
104
105
|
abstract getBufferInfo(): BufferInfo | null;
|
|
105
106
|
abstract getQuadCount(): number | null;
|
|
107
|
+
abstract updateViewport(): void;
|
|
106
108
|
abstract updateClearColor(color: number): void;
|
|
109
|
+
getTextureCoords?(node: CoreNode): TextureCoords;
|
|
107
110
|
}
|
|
@@ -66,9 +66,7 @@ export function resolveShaderProps(
|
|
|
66
66
|
* You could view a ShaderType as a configuration object that contains methods,
|
|
67
67
|
* and values that you can use to alter the way a node is drawn by the Renderer.
|
|
68
68
|
*/
|
|
69
|
-
export interface CoreShaderType<
|
|
70
|
-
Props extends object = Record<string, unknown>,
|
|
71
|
-
> {
|
|
69
|
+
export interface CoreShaderType<Props extends object = any> {
|
|
72
70
|
/**
|
|
73
71
|
* Values you use to draw the Shader
|
|
74
72
|
*/
|
|
@@ -88,7 +86,7 @@ export class CoreShaderNode<Props extends object = Record<string, unknown>> {
|
|
|
88
86
|
readonly stage: Stage;
|
|
89
87
|
readonly shaderType: CoreShaderType<Props>;
|
|
90
88
|
protected propsConfig: ShaderProps<Props> | undefined;
|
|
91
|
-
|
|
89
|
+
readonly resolvedProps: Props | undefined = undefined;
|
|
92
90
|
protected definedProps: Props | undefined = undefined;
|
|
93
91
|
protected node: CoreNode | null = null;
|
|
94
92
|
update: (() => void) | undefined = undefined;
|
|
@@ -152,8 +150,14 @@ export class CoreShaderNode<Props extends object = Record<string, unknown>> {
|
|
|
152
150
|
this.node = node;
|
|
153
151
|
}
|
|
154
152
|
|
|
155
|
-
|
|
156
|
-
|
|
153
|
+
createValueKey() {
|
|
154
|
+
let valueKey = '';
|
|
155
|
+
for (const key in this.resolvedProps) {
|
|
156
|
+
valueKey += `${key}:${this.resolvedProps[key]!};`;
|
|
157
|
+
}
|
|
158
|
+
valueKey += `node-width:${this.node!.width}`;
|
|
159
|
+
valueKey += `node-height:${this.node!.height}`;
|
|
160
|
+
return valueKey;
|
|
157
161
|
}
|
|
158
162
|
|
|
159
163
|
get props(): Props | undefined {
|
|
@@ -26,14 +26,10 @@ import {
|
|
|
26
26
|
type QuadOptions,
|
|
27
27
|
} from '../CoreRenderer.js';
|
|
28
28
|
import { CanvasTexture } from './CanvasTexture.js';
|
|
29
|
-
import {
|
|
30
|
-
parseColor,
|
|
31
|
-
parseToAbgrString,
|
|
32
|
-
parseToRgbaString,
|
|
33
|
-
} from './internal/ColorUtils.js';
|
|
29
|
+
import { parseColor } from '../../lib/colorParser.js';
|
|
34
30
|
import { assertTruthy } from '../../../utils.js';
|
|
35
31
|
import { CanvasShaderNode, type CanvasShaderType } from './CanvasShaderNode.js';
|
|
36
|
-
import
|
|
32
|
+
import { normalizeCanvasColor } from '../../lib/colorCache.js';
|
|
37
33
|
|
|
38
34
|
export class CanvasRenderer extends CoreRenderer {
|
|
39
35
|
private context: CanvasRenderingContext2D;
|
|
@@ -43,8 +39,6 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
43
39
|
public renderToTextureActive = false;
|
|
44
40
|
activeRttNode: CoreNode | null = null;
|
|
45
41
|
|
|
46
|
-
private parsedColorCache: Map<number, string> = new Map();
|
|
47
|
-
|
|
48
42
|
constructor(options: CoreRendererOptions) {
|
|
49
43
|
super(options);
|
|
50
44
|
|
|
@@ -54,7 +48,7 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
54
48
|
this.canvas = canvas as HTMLCanvasElement;
|
|
55
49
|
this.context = canvas.getContext('2d') as CanvasRenderingContext2D;
|
|
56
50
|
this.pixelRatio = this.stage.pixelRatio;
|
|
57
|
-
this.clearColor =
|
|
51
|
+
this.clearColor = normalizeCanvasColor(this.stage.clearColor);
|
|
58
52
|
}
|
|
59
53
|
|
|
60
54
|
reset(): void {
|
|
@@ -221,12 +215,12 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
221
215
|
endX,
|
|
222
216
|
endY,
|
|
223
217
|
);
|
|
224
|
-
gradient.addColorStop(0,
|
|
225
|
-
gradient.addColorStop(1,
|
|
218
|
+
gradient.addColorStop(0, normalizeCanvasColor(color));
|
|
219
|
+
gradient.addColorStop(1, normalizeCanvasColor(endColor));
|
|
226
220
|
this.context.fillStyle = gradient;
|
|
227
221
|
this.context.fillRect(quad.tx, quad.ty, quad.width, quad.height);
|
|
228
222
|
} else if (textureType === TextureType.color) {
|
|
229
|
-
this.context.fillStyle =
|
|
223
|
+
this.context.fillStyle = normalizeCanvasColor(color);
|
|
230
224
|
this.context.fillRect(quad.tx, quad.ty, quad.width, quad.height);
|
|
231
225
|
}
|
|
232
226
|
}
|
|
@@ -270,30 +264,20 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
270
264
|
return null;
|
|
271
265
|
}
|
|
272
266
|
|
|
273
|
-
getParsedColor(color: number, isRGBA: boolean = false) {
|
|
274
|
-
let out = this.parsedColorCache.get(color);
|
|
275
|
-
if (out !== undefined) {
|
|
276
|
-
return out;
|
|
277
|
-
}
|
|
278
|
-
if (isRGBA) {
|
|
279
|
-
out = parseToRgbaString(color);
|
|
280
|
-
} else {
|
|
281
|
-
out = parseToAbgrString(color);
|
|
282
|
-
}
|
|
283
|
-
this.parsedColorCache.set(color, out);
|
|
284
|
-
return out;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
267
|
/**
|
|
288
268
|
* Updates the clear color of the canvas renderer.
|
|
289
269
|
*
|
|
290
270
|
* @param color - The color to set as the clear color.
|
|
291
271
|
*/
|
|
292
272
|
updateClearColor(color: number) {
|
|
293
|
-
this.clearColor =
|
|
273
|
+
this.clearColor = normalizeCanvasColor(color);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
override updateViewport(): void {
|
|
277
|
+
// noop
|
|
294
278
|
}
|
|
295
279
|
|
|
296
|
-
|
|
280
|
+
getDefaultShaderNode() {
|
|
297
281
|
return null;
|
|
298
282
|
}
|
|
299
283
|
}
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
import type { CoreNode } from '../../CoreNode.js';
|
|
19
|
+
import { normalizeCanvasColor } from '../../lib/colorCache.js';
|
|
19
20
|
import type { Stage } from '../../Stage.js';
|
|
20
21
|
import type { QuadOptions } from '../CoreRenderer.js';
|
|
21
22
|
import { CoreShaderNode, type CoreShaderType } from '../CoreShaderNode.js';
|
|
22
|
-
import type { CanvasRenderer } from './CanvasRenderer.js';
|
|
23
23
|
|
|
24
24
|
export type CanvasShaderType<
|
|
25
25
|
T extends object = Record<string, unknown>,
|
|
@@ -67,10 +67,7 @@ export class CanvasShaderNode<
|
|
|
67
67
|
|
|
68
68
|
this.update = () => {
|
|
69
69
|
const prevKey = this.valueKey;
|
|
70
|
-
this.valueKey =
|
|
71
|
-
for (const key in this.resolvedProps) {
|
|
72
|
-
this.valueKey += `${key}:${this.resolvedProps[key]!};`;
|
|
73
|
-
}
|
|
70
|
+
this.valueKey = this.createValueKey();
|
|
74
71
|
|
|
75
72
|
if (prevKey === this.valueKey) {
|
|
76
73
|
return;
|
|
@@ -94,6 +91,6 @@ export class CanvasShaderNode<
|
|
|
94
91
|
}
|
|
95
92
|
|
|
96
93
|
toColorString(rgba: number) {
|
|
97
|
-
return (
|
|
94
|
+
return normalizeCanvasColor(rgba, true);
|
|
98
95
|
}
|
|
99
96
|
}
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
|
|
20
20
|
import type { Dimensions } from '../../../common/CommonTypes.js';
|
|
21
21
|
import { assertTruthy } from '../../../utils.js';
|
|
22
|
+
import { formatRgba, type IParsedColor } from '../../lib/colorParser.js';
|
|
22
23
|
import { CoreContextTexture } from '../CoreContextTexture.js';
|
|
23
|
-
import { formatRgba, type IParsedColor } from './internal/ColorUtils.js';
|
|
24
24
|
|
|
25
25
|
export class CanvasTexture extends CoreContextTexture {
|
|
26
26
|
protected image:
|
|
@@ -35,19 +35,19 @@ export class CanvasTexture extends CoreContextTexture {
|
|
|
35
35
|
}
|
|
36
36
|
| undefined;
|
|
37
37
|
|
|
38
|
-
load(): void {
|
|
38
|
+
async load(): Promise<void> {
|
|
39
39
|
this.textureSource.setState('loading');
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
41
|
+
try {
|
|
42
|
+
const size = await this.onLoadRequest();
|
|
43
|
+
this.textureSource.setState('loaded', size);
|
|
44
|
+
this.textureSource.freeTextureData();
|
|
45
|
+
this.updateMemSize();
|
|
46
|
+
} catch (err) {
|
|
47
|
+
this.textureSource.setState('failed', err as Error);
|
|
48
|
+
this.textureSource.freeTextureData();
|
|
49
|
+
throw err;
|
|
50
|
+
}
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
free(): void {
|
|
@@ -64,8 +64,11 @@ export class CanvasTexture extends CoreContextTexture {
|
|
|
64
64
|
// - tinted image
|
|
65
65
|
const mult = this.tintCache ? 8 : 4;
|
|
66
66
|
if (this.textureSource.dimensions) {
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
this.setTextureMemUse(
|
|
68
|
+
this.textureSource.dimensions.width *
|
|
69
|
+
this.textureSource.dimensions.height *
|
|
70
|
+
mult,
|
|
71
|
+
);
|
|
69
72
|
}
|
|
70
73
|
}
|
|
71
74
|
|
|
@@ -41,6 +41,11 @@ export class WebGlCtxRenderTexture extends WebGlCtxTexture {
|
|
|
41
41
|
const { glw } = this;
|
|
42
42
|
const nativeTexture = (this._nativeCtxTexture =
|
|
43
43
|
this.createNativeCtxTexture());
|
|
44
|
+
|
|
45
|
+
if (!nativeTexture) {
|
|
46
|
+
throw new Error('Failed to create native texture for RenderTexture');
|
|
47
|
+
}
|
|
48
|
+
|
|
44
49
|
const { width, height } = this.textureSource;
|
|
45
50
|
|
|
46
51
|
// Create Framebuffer object
|
|
@@ -18,11 +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';
|
|
24
23
|
import type { Texture } from '../../textures/Texture.js';
|
|
25
|
-
import { isPowerOfTwo } from '../../utils.js';
|
|
26
24
|
import { CoreContextTexture } from '../CoreContextTexture.js';
|
|
27
25
|
import { isHTMLImageElement } from './internal/RendererUtils.js';
|
|
28
26
|
|
|
@@ -57,7 +55,6 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
57
55
|
this.load();
|
|
58
56
|
return null;
|
|
59
57
|
}
|
|
60
|
-
assertTruthy(this._nativeCtxTexture);
|
|
61
58
|
return this._nativeCtxTexture;
|
|
62
59
|
}
|
|
63
60
|
|
|
@@ -78,54 +75,65 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
78
75
|
* to force the texture to be pre-loaded prior to accessing the ctxTexture
|
|
79
76
|
* property.
|
|
80
77
|
*/
|
|
81
|
-
load() {
|
|
82
|
-
// If the texture is already loading or loaded,
|
|
78
|
+
async load(): Promise<void> {
|
|
79
|
+
// If the texture is already loading or loaded, return resolved promise
|
|
83
80
|
if (this.state === 'loading' || this.state === 'loaded') {
|
|
84
|
-
return;
|
|
81
|
+
return Promise.resolve();
|
|
85
82
|
}
|
|
86
83
|
|
|
87
84
|
this.state = 'loading';
|
|
88
85
|
this.textureSource.setState('loading');
|
|
86
|
+
|
|
87
|
+
// Await the native texture creation to ensure GPU buffer is fully allocated
|
|
89
88
|
this._nativeCtxTexture = this.createNativeCtxTexture();
|
|
90
89
|
|
|
91
90
|
if (this._nativeCtxTexture === null) {
|
|
92
91
|
this.state = 'failed';
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
new Error('Could not create WebGL Texture'),
|
|
96
|
-
);
|
|
92
|
+
const error = new Error('Could not create WebGL Texture');
|
|
93
|
+
this.textureSource.setState('failed', error);
|
|
97
94
|
console.error('Could not create WebGL Texture');
|
|
98
|
-
|
|
95
|
+
throw error;
|
|
99
96
|
}
|
|
100
97
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
this.state = 'failed';
|
|
125
|
-
this.textureSource.setState('failed', err);
|
|
98
|
+
try {
|
|
99
|
+
const { width, height } = await this.onLoadRequest();
|
|
100
|
+
|
|
101
|
+
// If the texture has been freed while loading, return early.
|
|
102
|
+
// Type assertion needed because state could change during async operations
|
|
103
|
+
if ((this.state as string) === 'freed') {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
this.state = 'loaded';
|
|
108
|
+
this._w = width;
|
|
109
|
+
this._h = height;
|
|
110
|
+
// Update the texture source's width and height so that it can be used
|
|
111
|
+
// for rendering.
|
|
112
|
+
this.textureSource.setState('loaded', { width, height });
|
|
113
|
+
|
|
114
|
+
// cleanup source texture data next tick
|
|
115
|
+
// This is done using queueMicrotask to ensure it runs after the current
|
|
116
|
+
// event loop tick, allowing the texture to be fully loaded and bound
|
|
117
|
+
// to the GL context before freeing the source data.
|
|
118
|
+
// This is important to avoid issues with the texture data being
|
|
119
|
+
// freed while the texture is still being loaded or used.
|
|
120
|
+
queueMicrotask(() => {
|
|
126
121
|
this.textureSource.freeTextureData();
|
|
127
|
-
console.error(err);
|
|
128
122
|
});
|
|
123
|
+
} catch (err: unknown) {
|
|
124
|
+
// If the texture has been freed while loading, return early.
|
|
125
|
+
// Type assertion needed because state could change during async operations
|
|
126
|
+
if ((this.state as string) === 'freed') {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
this.state = 'failed';
|
|
131
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
132
|
+
this.textureSource.setState('failed', error);
|
|
133
|
+
this.textureSource.freeTextureData();
|
|
134
|
+
console.error(err);
|
|
135
|
+
throw error; // Re-throw to propagate the error
|
|
136
|
+
}
|
|
129
137
|
}
|
|
130
138
|
|
|
131
139
|
/**
|
|
@@ -268,17 +276,17 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
268
276
|
}
|
|
269
277
|
|
|
270
278
|
/**
|
|
271
|
-
* Create native context texture
|
|
279
|
+
* Create native context texture asynchronously
|
|
272
280
|
*
|
|
273
281
|
* @remarks
|
|
274
|
-
* When this method
|
|
282
|
+
* When this method resolves, the returned texture will be bound to the GL context state
|
|
283
|
+
* and fully ready for use. This ensures proper GPU resource allocation timing.
|
|
275
284
|
*
|
|
276
|
-
* @
|
|
277
|
-
* @param height
|
|
278
|
-
* @returns
|
|
285
|
+
* @returns Promise that resolves to the native WebGL texture or null on failure
|
|
279
286
|
*/
|
|
280
|
-
protected createNativeCtxTexture() {
|
|
287
|
+
protected createNativeCtxTexture(): WebGLTexture | null {
|
|
281
288
|
const { glw } = this;
|
|
289
|
+
|
|
282
290
|
const nativeTexture = glw.createTexture();
|
|
283
291
|
if (!nativeTexture) {
|
|
284
292
|
return null;
|
|
@@ -296,6 +304,7 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
296
304
|
// texture wrapping method
|
|
297
305
|
glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);
|
|
298
306
|
glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);
|
|
307
|
+
|
|
299
308
|
return nativeTexture;
|
|
300
309
|
}
|
|
301
310
|
}
|
|
@@ -24,6 +24,8 @@ import type { BufferCollection } from './internal/BufferCollection.js';
|
|
|
24
24
|
import type { WebGlShaderNode } from './WebGlShaderNode.js';
|
|
25
25
|
import type { QuadOptions } from '../CoreRenderer.js';
|
|
26
26
|
import type { CoreTextNode } from '../../CoreTextNode.js';
|
|
27
|
+
import type { RectWithValid } from '../../lib/utils.js';
|
|
28
|
+
import type { Dimensions } from '../../../common/CommonTypes.js';
|
|
27
29
|
|
|
28
30
|
type ReqQuad =
|
|
29
31
|
| 'alpha'
|
|
@@ -44,7 +46,6 @@ type RenderOpQuadOptions = Pick<QuadOptions, ReqQuad> &
|
|
|
44
46
|
*
|
|
45
47
|
*/
|
|
46
48
|
export class WebGlRenderOp extends CoreRenderOp {
|
|
47
|
-
length = 0;
|
|
48
49
|
numQuads = 0;
|
|
49
50
|
textures: WebGlCtxTexture[] = [];
|
|
50
51
|
|
|
@@ -56,15 +57,32 @@ export class WebGlRenderOp extends CoreRenderOp {
|
|
|
56
57
|
readonly maxTextures: number;
|
|
57
58
|
readonly buffers: BufferCollection;
|
|
58
59
|
readonly shader: WebGlShaderNode;
|
|
60
|
+
readonly width: number;
|
|
61
|
+
readonly height: number;
|
|
62
|
+
readonly clippingRect: RectWithValid;
|
|
63
|
+
readonly rtt: boolean;
|
|
64
|
+
readonly parentHasRenderTexture: boolean;
|
|
65
|
+
readonly framebufferDimensions?: Dimensions | null;
|
|
66
|
+
readonly alpha: number;
|
|
67
|
+
readonly pixelRatio: number;
|
|
59
68
|
|
|
60
69
|
constructor(
|
|
61
70
|
readonly renderer: WebGlRenderer,
|
|
62
|
-
|
|
71
|
+
quad: RenderOpQuadOptions,
|
|
63
72
|
readonly bufferIdx: number,
|
|
64
73
|
) {
|
|
65
74
|
super();
|
|
66
75
|
this.buffers = quad.sdfBuffers || renderer.quadBufferCollection;
|
|
67
76
|
this.shader = quad.shader as WebGlShaderNode;
|
|
77
|
+
this.width = quad.width;
|
|
78
|
+
this.height = quad.height;
|
|
79
|
+
this.clippingRect = quad.clippingRect;
|
|
80
|
+
this.parentHasRenderTexture = quad.parentHasRenderTexture;
|
|
81
|
+
this.framebufferDimensions = quad.framebufferDimensions;
|
|
82
|
+
this.rtt = quad.rtt;
|
|
83
|
+
this.alpha = quad.alpha;
|
|
84
|
+
this.pixelRatio =
|
|
85
|
+
this.parentHasRenderTexture === true ? 1 : renderer.stage.pixelRatio;
|
|
68
86
|
|
|
69
87
|
/**
|
|
70
88
|
* related to line 51
|
|
@@ -107,25 +125,21 @@ export class WebGlRenderOp extends CoreRenderOp {
|
|
|
107
125
|
stage.shManager.useShader(this.shader.program);
|
|
108
126
|
this.shader.program.bindRenderOp(this);
|
|
109
127
|
|
|
110
|
-
// TODO: Reduce calculations required
|
|
111
|
-
const quadIdx = (this.bufferIdx / 32) * 6 * 2;
|
|
112
128
|
// Clipping
|
|
113
|
-
if (this.
|
|
114
|
-
const
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const clipHeight = Math.round(height * pixelRatio);
|
|
123
|
-
let clipY = Math.round(canvasHeight - clipHeight - y * pixelRatio);
|
|
129
|
+
if (this.clippingRect.valid === true) {
|
|
130
|
+
const clipX = Math.round(this.clippingRect.x * this.pixelRatio);
|
|
131
|
+
const clipWidth = Math.round(this.clippingRect.width * this.pixelRatio);
|
|
132
|
+
const clipHeight = Math.round(this.clippingRect.height * this.pixelRatio);
|
|
133
|
+
let clipY = Math.round(
|
|
134
|
+
options.canvas.height -
|
|
135
|
+
clipHeight -
|
|
136
|
+
this.clippingRect.y * this.pixelRatio,
|
|
137
|
+
);
|
|
124
138
|
// if parent has render texture, we need to adjust the scissor rect
|
|
125
139
|
// to be relative to the parent's framebuffer
|
|
126
|
-
if (this.
|
|
127
|
-
clipY = this.
|
|
128
|
-
? this.
|
|
140
|
+
if (this.parentHasRenderTexture) {
|
|
141
|
+
clipY = this.framebufferDimensions
|
|
142
|
+
? this.framebufferDimensions.height - this.height
|
|
129
143
|
: 0;
|
|
130
144
|
}
|
|
131
145
|
|
|
@@ -135,11 +149,19 @@ export class WebGlRenderOp extends CoreRenderOp {
|
|
|
135
149
|
glw.setScissorTest(false);
|
|
136
150
|
}
|
|
137
151
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
6
|
|
141
|
-
glw.
|
|
142
|
-
|
|
143
|
-
|
|
152
|
+
// Check if this is SDF rendering (has sdfBuffers)
|
|
153
|
+
if (this.sdfShaderProps !== undefined) {
|
|
154
|
+
// SDF rendering uses drawArrays with explicit triangle vertices (6 vertices per quad)
|
|
155
|
+
glw.drawArrays(glw.TRIANGLES, 0, 6 * this.numQuads);
|
|
156
|
+
} else {
|
|
157
|
+
// Regular rendering uses drawElements with index buffer (4 vertices per quad)
|
|
158
|
+
const quadIdx = (this.bufferIdx / 32) * 6 * 2;
|
|
159
|
+
glw.drawElements(
|
|
160
|
+
glw.TRIANGLES,
|
|
161
|
+
6 * this.numQuads,
|
|
162
|
+
glw.UNSIGNED_SHORT,
|
|
163
|
+
quadIdx,
|
|
164
|
+
);
|
|
165
|
+
}
|
|
144
166
|
}
|
|
145
167
|
}
|