@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
|
@@ -17,9 +17,8 @@
|
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
19
|
import { isProductionEnvironment } from '../utils.js';
|
|
20
|
-
import { getTimeStamp } from './platform.js';
|
|
21
20
|
import type { Stage } from './Stage.js';
|
|
22
|
-
import { TextureType, type
|
|
21
|
+
import { Texture, TextureType, type TextureState } from './textures/Texture.js';
|
|
23
22
|
import { bytesToMb } from './utils.js';
|
|
24
23
|
|
|
25
24
|
export interface TextureMemoryManagerSettings {
|
|
@@ -118,15 +117,21 @@ export class TextureMemoryManager {
|
|
|
118
117
|
private memUsed = 0;
|
|
119
118
|
private loadedTextures: Map<Texture, number> = new Map();
|
|
120
119
|
private orphanedTextures: Texture[] = [];
|
|
121
|
-
private criticalThreshold: number;
|
|
122
|
-
private targetThreshold: number;
|
|
123
|
-
private cleanupInterval: number;
|
|
124
|
-
private debugLogging: boolean;
|
|
120
|
+
private criticalThreshold: number = 124e6;
|
|
121
|
+
private targetThreshold: number = 0.5;
|
|
122
|
+
private cleanupInterval: number = 5000;
|
|
123
|
+
private debugLogging: boolean = false;
|
|
124
|
+
private loggingID: ReturnType<typeof setInterval> =
|
|
125
|
+
0 as unknown as ReturnType<typeof setInterval>;
|
|
125
126
|
private lastCleanupTime = 0;
|
|
126
|
-
private baselineMemoryAllocation: number;
|
|
127
|
+
private baselineMemoryAllocation: number = 26e6;
|
|
127
128
|
|
|
128
129
|
public criticalCleanupRequested = false;
|
|
129
|
-
public doNotExceedCriticalThreshold: boolean;
|
|
130
|
+
public doNotExceedCriticalThreshold: boolean = false;
|
|
131
|
+
private originalSetTextureMemUse: (
|
|
132
|
+
texture: Texture,
|
|
133
|
+
byteSize: number,
|
|
134
|
+
) => void;
|
|
130
135
|
|
|
131
136
|
/**
|
|
132
137
|
* The current frame time in milliseconds
|
|
@@ -139,46 +144,9 @@ export class TextureMemoryManager {
|
|
|
139
144
|
public frameTime = 0;
|
|
140
145
|
|
|
141
146
|
constructor(private stage: Stage, settings: TextureMemoryManagerSettings) {
|
|
142
|
-
|
|
143
|
-
this.doNotExceedCriticalThreshold = doNotExceedCriticalThreshold || false;
|
|
144
|
-
this.criticalThreshold = Math.round(criticalThreshold);
|
|
145
|
-
const targetFraction = Math.max(
|
|
146
|
-
0,
|
|
147
|
-
Math.min(1, settings.targetThresholdLevel),
|
|
148
|
-
);
|
|
149
|
-
this.cleanupInterval = settings.cleanupInterval;
|
|
150
|
-
this.debugLogging = settings.debugLogging;
|
|
151
|
-
this.baselineMemoryAllocation = Math.round(
|
|
152
|
-
settings.baselineMemoryAllocation,
|
|
153
|
-
);
|
|
154
|
-
this.targetThreshold = Math.max(
|
|
155
|
-
Math.round(criticalThreshold * targetFraction),
|
|
156
|
-
this.baselineMemoryAllocation,
|
|
157
|
-
);
|
|
158
|
-
this.memUsed = Math.round(settings.baselineMemoryAllocation);
|
|
147
|
+
this.originalSetTextureMemUse = this.setTextureMemUse;
|
|
159
148
|
|
|
160
|
-
|
|
161
|
-
let lastMemUse = 0;
|
|
162
|
-
setInterval(() => {
|
|
163
|
-
if (lastMemUse !== this.memUsed) {
|
|
164
|
-
lastMemUse = this.memUsed;
|
|
165
|
-
console.log(
|
|
166
|
-
`[TextureMemoryManager] Memory used: ${bytesToMb(
|
|
167
|
-
this.memUsed,
|
|
168
|
-
)} mb / ${bytesToMb(this.criticalThreshold)} mb (${(
|
|
169
|
-
(this.memUsed / this.criticalThreshold) *
|
|
170
|
-
100
|
|
171
|
-
).toFixed(1)}%)`,
|
|
172
|
-
);
|
|
173
|
-
}
|
|
174
|
-
}, 1000);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
// If the threshold is 0, we disable the memory manager by replacing the
|
|
178
|
-
// setTextureMemUse method with a no-op function.
|
|
179
|
-
if (criticalThreshold === 0) {
|
|
180
|
-
this.setTextureMemUse = () => {};
|
|
181
|
-
}
|
|
149
|
+
this.updateSettings(settings);
|
|
182
150
|
}
|
|
183
151
|
|
|
184
152
|
/**
|
|
@@ -249,14 +217,14 @@ export class TextureMemoryManager {
|
|
|
249
217
|
|
|
250
218
|
cleanupQuick(critical: boolean) {
|
|
251
219
|
// Free non-renderable textures until we reach the target threshold
|
|
220
|
+
const platform = this.stage.platform;
|
|
252
221
|
const memTarget = this.targetThreshold;
|
|
253
|
-
const
|
|
254
|
-
const timestamp = getTimeStamp();
|
|
222
|
+
const timestamp = platform.getTimeStamp();
|
|
255
223
|
|
|
256
224
|
while (
|
|
257
225
|
this.memUsed >= memTarget &&
|
|
258
226
|
this.orphanedTextures.length > 0 &&
|
|
259
|
-
(critical || getTimeStamp() - timestamp < 10)
|
|
227
|
+
(critical || platform.getTimeStamp() - timestamp < 10)
|
|
260
228
|
) {
|
|
261
229
|
const texture = this.orphanedTextures.shift();
|
|
262
230
|
|
|
@@ -269,67 +237,81 @@ export class TextureMemoryManager {
|
|
|
269
237
|
continue;
|
|
270
238
|
}
|
|
271
239
|
|
|
272
|
-
|
|
273
|
-
|
|
240
|
+
// Skip textures that are in transitional states - we only want to clean up
|
|
241
|
+
// textures that are in a stable state (loaded, failed, or freed)
|
|
242
|
+
if (
|
|
243
|
+
texture.state === 'initial' ||
|
|
244
|
+
Texture.TRANSITIONAL_TEXTURE_STATES.includes(texture.state)
|
|
245
|
+
) {
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
this.destroyTexture(texture);
|
|
274
250
|
}
|
|
275
251
|
}
|
|
276
252
|
|
|
253
|
+
/**
|
|
254
|
+
* Destroy a texture and remove it from the memory manager
|
|
255
|
+
*
|
|
256
|
+
* @param texture - The texture to destroy
|
|
257
|
+
*/
|
|
258
|
+
destroyTexture(texture: Texture) {
|
|
259
|
+
if (this.debugLogging === true) {
|
|
260
|
+
console.log(
|
|
261
|
+
`[TextureMemoryManager] Destroying texture. State: ${texture.state}`,
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
const txManager = this.stage.txManager;
|
|
266
|
+
txManager.removeTextureFromQueue(texture);
|
|
267
|
+
txManager.removeTextureFromCache(texture);
|
|
268
|
+
|
|
269
|
+
texture.destroy();
|
|
270
|
+
|
|
271
|
+
this.removeFromOrphanedTextures(texture);
|
|
272
|
+
this.loadedTextures.delete(texture);
|
|
273
|
+
}
|
|
277
274
|
cleanupDeep(critical: boolean) {
|
|
278
275
|
// Free non-renderable textures until we reach the target threshold
|
|
279
276
|
const memTarget = critical ? this.criticalThreshold : this.targetThreshold;
|
|
280
|
-
const txManager = this.stage.txManager;
|
|
281
277
|
|
|
282
|
-
//
|
|
283
|
-
|
|
284
|
-
const
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
filteredAndSortedTextures.push(texture);
|
|
298
|
-
} else {
|
|
299
|
-
filteredAndSortedTextures.unshift(texture);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
}
|
|
278
|
+
// Filter for textures that are candidates for cleanup
|
|
279
|
+
// note: This is an expensive operation, so we only do it in deep cleanup
|
|
280
|
+
const cleanupCandidates = [...this.loadedTextures.keys()].filter(
|
|
281
|
+
(texture) => {
|
|
282
|
+
return (
|
|
283
|
+
(texture.type === TextureType.image ||
|
|
284
|
+
texture.type === TextureType.noise ||
|
|
285
|
+
texture.type === TextureType.renderToTexture) &&
|
|
286
|
+
texture.renderable === false &&
|
|
287
|
+
texture.preventCleanup === false &&
|
|
288
|
+
texture.state !== 'initial' &&
|
|
289
|
+
!Texture.TRANSITIONAL_TEXTURE_STATES.includes(texture.state)
|
|
290
|
+
);
|
|
291
|
+
},
|
|
292
|
+
);
|
|
303
293
|
|
|
304
|
-
while (this.memUsed >= memTarget &&
|
|
305
|
-
const texture =
|
|
294
|
+
while (this.memUsed >= memTarget && cleanupCandidates.length > 0) {
|
|
295
|
+
const texture = cleanupCandidates.shift();
|
|
306
296
|
if (texture === undefined) {
|
|
307
297
|
continue;
|
|
308
298
|
}
|
|
309
299
|
|
|
310
|
-
|
|
311
|
-
continue;
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
if (texture.renderable === true) {
|
|
315
|
-
break;
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
texture.free();
|
|
319
|
-
this.removeFromOrphanedTextures(texture);
|
|
320
|
-
txManager.removeTextureFromCache(texture);
|
|
321
|
-
txManager.removeTextureFromQueue(texture);
|
|
300
|
+
this.destroyTexture(texture);
|
|
322
301
|
}
|
|
323
302
|
}
|
|
324
303
|
|
|
325
304
|
cleanup(aggressive: boolean = false) {
|
|
326
305
|
const critical = this.criticalCleanupRequested;
|
|
306
|
+
const criticalThreshold = this.criticalThreshold;
|
|
307
|
+
const memUsed = this.memUsed;
|
|
308
|
+
const stage = this.stage;
|
|
327
309
|
this.lastCleanupTime = this.frameTime;
|
|
328
310
|
|
|
329
311
|
if (critical === true) {
|
|
330
|
-
|
|
312
|
+
stage.queueFrameEvent('criticalCleanup', {
|
|
331
313
|
memUsed: this.memUsed,
|
|
332
|
-
criticalThreshold:
|
|
314
|
+
criticalThreshold: criticalThreshold,
|
|
333
315
|
});
|
|
334
316
|
}
|
|
335
317
|
|
|
@@ -339,23 +321,32 @@ export class TextureMemoryManager {
|
|
|
339
321
|
);
|
|
340
322
|
}
|
|
341
323
|
|
|
324
|
+
// Note: We skip textures in transitional states during cleanup:
|
|
325
|
+
// - 'initial': These textures haven't started loading yet
|
|
326
|
+
// - 'fetching': These textures are in the process of being fetched
|
|
327
|
+
// - 'fetched': These textures have been fetched but not yet uploaded to GPU
|
|
328
|
+
// - 'loading': These textures are being uploaded to the GPU
|
|
329
|
+
//
|
|
330
|
+
// For 'failed' and 'freed' states, we only remove them from the tracking
|
|
331
|
+
// arrays without trying to free GPU resources that don't exist.
|
|
332
|
+
|
|
342
333
|
// try a quick cleanup first
|
|
343
334
|
this.cleanupQuick(critical);
|
|
344
335
|
|
|
345
336
|
// if we're still above the target threshold, do a deep cleanup
|
|
346
|
-
if (aggressive === true &&
|
|
337
|
+
if (aggressive === true && memUsed >= criticalThreshold) {
|
|
347
338
|
this.cleanupDeep(critical);
|
|
348
339
|
}
|
|
349
340
|
|
|
350
|
-
if (
|
|
351
|
-
|
|
352
|
-
memUsed:
|
|
353
|
-
criticalThreshold:
|
|
341
|
+
if (memUsed >= criticalThreshold) {
|
|
342
|
+
stage.queueFrameEvent('criticalCleanupFailed', {
|
|
343
|
+
memUsed: memUsed,
|
|
344
|
+
criticalThreshold: criticalThreshold,
|
|
354
345
|
});
|
|
355
346
|
|
|
356
|
-
if (this.debugLogging === true || isProductionEnvironment
|
|
347
|
+
if (this.debugLogging === true || isProductionEnvironment === false) {
|
|
357
348
|
console.warn(
|
|
358
|
-
`[TextureMemoryManager] Memory usage above critical threshold after cleanup: ${
|
|
349
|
+
`[TextureMemoryManager] Memory usage above critical threshold after cleanup: ${memUsed}`,
|
|
359
350
|
);
|
|
360
351
|
}
|
|
361
352
|
} else {
|
|
@@ -375,9 +366,9 @@ export class TextureMemoryManager {
|
|
|
375
366
|
const renderableMemUsed = [...this.loadedTextures.keys()].reduce(
|
|
376
367
|
(acc, texture) => {
|
|
377
368
|
renderableTexturesLoaded += texture.renderable ? 1 : 0;
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
);
|
|
369
|
+
// Get the memory used by the texture, defaulting to 0 if not found
|
|
370
|
+
const textureMemory = this.loadedTextures.get(texture) ?? 0;
|
|
371
|
+
return acc + (texture.renderable ? textureMemory : 0);
|
|
381
372
|
},
|
|
382
373
|
this.baselineMemoryAllocation,
|
|
383
374
|
);
|
|
@@ -392,4 +383,63 @@ export class TextureMemoryManager {
|
|
|
392
383
|
baselineMemoryAllocation: this.baselineMemoryAllocation,
|
|
393
384
|
};
|
|
394
385
|
}
|
|
386
|
+
|
|
387
|
+
public updateSettings(settings: TextureMemoryManagerSettings): void {
|
|
388
|
+
const { criticalThreshold, doNotExceedCriticalThreshold } = settings;
|
|
389
|
+
|
|
390
|
+
this.doNotExceedCriticalThreshold = doNotExceedCriticalThreshold || false;
|
|
391
|
+
this.criticalThreshold = Math.round(criticalThreshold);
|
|
392
|
+
|
|
393
|
+
if (this.memUsed === 0) {
|
|
394
|
+
this.memUsed = Math.round(settings.baselineMemoryAllocation);
|
|
395
|
+
} else {
|
|
396
|
+
const memUsedExBaseline = this.memUsed - this.baselineMemoryAllocation;
|
|
397
|
+
this.memUsed = Math.round(
|
|
398
|
+
settings.baselineMemoryAllocation + memUsedExBaseline,
|
|
399
|
+
);
|
|
400
|
+
}
|
|
401
|
+
this.baselineMemoryAllocation = Math.round(
|
|
402
|
+
settings.baselineMemoryAllocation,
|
|
403
|
+
);
|
|
404
|
+
const targetFraction = Math.max(
|
|
405
|
+
0,
|
|
406
|
+
Math.min(1, settings.targetThresholdLevel),
|
|
407
|
+
);
|
|
408
|
+
this.targetThreshold = Math.max(
|
|
409
|
+
Math.round(criticalThreshold * targetFraction),
|
|
410
|
+
this.baselineMemoryAllocation,
|
|
411
|
+
);
|
|
412
|
+
|
|
413
|
+
this.cleanupInterval = settings.cleanupInterval;
|
|
414
|
+
this.debugLogging = settings.debugLogging;
|
|
415
|
+
|
|
416
|
+
if (this.loggingID && !settings.debugLogging) {
|
|
417
|
+
clearInterval(this.loggingID);
|
|
418
|
+
this.loggingID = 0 as unknown as ReturnType<typeof setInterval>;
|
|
419
|
+
}
|
|
420
|
+
if (settings.debugLogging && !this.loggingID) {
|
|
421
|
+
let lastMemUse = 0;
|
|
422
|
+
this.loggingID = setInterval(() => {
|
|
423
|
+
if (lastMemUse !== this.memUsed) {
|
|
424
|
+
lastMemUse = this.memUsed;
|
|
425
|
+
console.log(
|
|
426
|
+
`[TextureMemoryManager] Memory used: ${bytesToMb(
|
|
427
|
+
this.memUsed,
|
|
428
|
+
)} mb / ${bytesToMb(this.criticalThreshold)} mb (${(
|
|
429
|
+
(this.memUsed / this.criticalThreshold) *
|
|
430
|
+
100
|
|
431
|
+
).toFixed(1)}%)`,
|
|
432
|
+
);
|
|
433
|
+
}
|
|
434
|
+
}, 1000);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
// If the threshold is 0, we disable the memory manager by replacing the
|
|
438
|
+
// setTextureMemUse method with a no-op function.
|
|
439
|
+
if (criticalThreshold === 0) {
|
|
440
|
+
this.setTextureMemUse = () => {};
|
|
441
|
+
} else {
|
|
442
|
+
this.setTextureMemUse = this.originalSetTextureMemUse;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
395
445
|
}
|
|
@@ -215,6 +215,13 @@ export class CoreAnimation extends EventEmitter {
|
|
|
215
215
|
update(dt: number) {
|
|
216
216
|
const { duration, loop, easing, stopMethod } = this.settings;
|
|
217
217
|
const { delayFor } = this;
|
|
218
|
+
|
|
219
|
+
if (this.node.destroyed) {
|
|
220
|
+
// cleanup
|
|
221
|
+
this.emit('destroyed', {});
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
|
|
218
225
|
if (duration === 0 && delayFor === 0) {
|
|
219
226
|
this.emit('finished', {});
|
|
220
227
|
return;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/unbound-method */
|
|
2
1
|
/*
|
|
3
2
|
* If not stated otherwise in this file or this component's LICENSE file the
|
|
4
3
|
* following copyright and licenses apply:
|
|
@@ -52,6 +51,7 @@ export class CoreAnimationController
|
|
|
52
51
|
this.onAnimating = this.onAnimating.bind(this);
|
|
53
52
|
this.onFinished = this.onFinished.bind(this);
|
|
54
53
|
this.onTick = this.onTick.bind(this);
|
|
54
|
+
this.onDestroy = this.onDestroy.bind(this);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
start(): IAnimationController {
|
|
@@ -96,6 +96,7 @@ export class CoreAnimationController
|
|
|
96
96
|
this.animation.once('finished', this.onFinished);
|
|
97
97
|
this.animation.on('animating', this.onAnimating);
|
|
98
98
|
this.animation.on('tick', this.onTick);
|
|
99
|
+
this.animation.on('destroyed', this.onDestroy);
|
|
99
100
|
// Then register the animation
|
|
100
101
|
this.manager.registerAnimation(this.animation);
|
|
101
102
|
}
|
|
@@ -107,6 +108,7 @@ export class CoreAnimationController
|
|
|
107
108
|
this.animation.off('finished', this.onFinished);
|
|
108
109
|
this.animation.off('animating', this.onAnimating);
|
|
109
110
|
this.animation.off('tick', this.onTick);
|
|
111
|
+
this.animation.off('destroy', this.onDestroy);
|
|
110
112
|
}
|
|
111
113
|
|
|
112
114
|
private makeStoppedPromise(): void {
|
|
@@ -117,8 +119,12 @@ export class CoreAnimationController
|
|
|
117
119
|
}
|
|
118
120
|
}
|
|
119
121
|
|
|
122
|
+
private onDestroy(this: CoreAnimationController): void {
|
|
123
|
+
this.unregisterAnimation();
|
|
124
|
+
this.state = 'stopped';
|
|
125
|
+
}
|
|
126
|
+
|
|
120
127
|
private onFinished(this: CoreAnimationController): void {
|
|
121
|
-
assertTruthy(this.stoppedResolve);
|
|
122
128
|
// If the animation is looping, then we need to restart it.
|
|
123
129
|
const { loop, stopMethod } = this.animation.settings;
|
|
124
130
|
|
|
@@ -136,8 +142,11 @@ export class CoreAnimationController
|
|
|
136
142
|
this.unregisterAnimation();
|
|
137
143
|
|
|
138
144
|
// resolve promise
|
|
139
|
-
this.stoppedResolve
|
|
140
|
-
|
|
145
|
+
if (this.stoppedResolve !== null) {
|
|
146
|
+
this.stoppedResolve();
|
|
147
|
+
this.stoppedResolve = null;
|
|
148
|
+
}
|
|
149
|
+
|
|
141
150
|
this.emit('stopped', this);
|
|
142
151
|
this.state = 'stopped';
|
|
143
152
|
}
|
|
@@ -75,7 +75,13 @@ function createImageWorker() {
|
|
|
75
75
|
xhr.onload = function () {
|
|
76
76
|
// On most devices like WebOS and Tizen, the file protocol returns 0 while http(s) protocol returns 200
|
|
77
77
|
if (xhr.status !== 200 && xhr.status !== 0) {
|
|
78
|
-
return reject(
|
|
78
|
+
return reject(
|
|
79
|
+
new Error(
|
|
80
|
+
`Image loading failed. HTTP status code: ${
|
|
81
|
+
xhr.status || 'N/A'
|
|
82
|
+
}. URL: ${src}`,
|
|
83
|
+
),
|
|
84
|
+
);
|
|
79
85
|
}
|
|
80
86
|
|
|
81
87
|
var blob = xhr.response;
|
|
@@ -158,7 +164,8 @@ function createImageWorker() {
|
|
|
158
164
|
supportsFullCreateImageBitmap,
|
|
159
165
|
})
|
|
160
166
|
.then(function (data) {
|
|
161
|
-
|
|
167
|
+
// @ts-ignore ts has wrong postMessage signature
|
|
168
|
+
self.postMessage({ id: id, src: src, data: data }, [data.data]);
|
|
162
169
|
})
|
|
163
170
|
.catch(function (error) {
|
|
164
171
|
self.postMessage({ id: id, src: src, error: error.message });
|
|
@@ -1,33 +1,50 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 Comcast Cable Communications Management, LLC
|
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License.
|
|
5
|
+
* You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
* See the License for the specific language governing permissions and
|
|
13
|
+
* limitations under the License.
|
|
14
|
+
*
|
|
15
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
16
|
+
*/
|
|
10
17
|
export class RenderCoords {
|
|
11
|
-
public
|
|
18
|
+
public x1: number;
|
|
19
|
+
public y1: number;
|
|
20
|
+
public x2: number;
|
|
21
|
+
public y2: number;
|
|
22
|
+
public x3: number;
|
|
23
|
+
public y3: number;
|
|
24
|
+
public x4: number;
|
|
25
|
+
public y4: number;
|
|
26
|
+
|
|
12
27
|
constructor(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
28
|
+
x1: number,
|
|
29
|
+
y1: number,
|
|
30
|
+
x2: number,
|
|
31
|
+
y2: number,
|
|
32
|
+
x3: number,
|
|
33
|
+
y3: number,
|
|
34
|
+
x4: number,
|
|
35
|
+
y4: number,
|
|
16
36
|
) {
|
|
17
|
-
this.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
this.data[ry3] = entries[ry3];
|
|
26
|
-
this.data[ry4] = entries[ry4];
|
|
27
|
-
}
|
|
37
|
+
this.x1 = x1;
|
|
38
|
+
this.y1 = y1;
|
|
39
|
+
this.x2 = x2;
|
|
40
|
+
this.y2 = y2;
|
|
41
|
+
this.x3 = x3;
|
|
42
|
+
this.y3 = y3;
|
|
43
|
+
this.x4 = x4;
|
|
44
|
+
this.y4 = y4;
|
|
28
45
|
}
|
|
29
46
|
|
|
30
|
-
|
|
47
|
+
static translate(
|
|
31
48
|
x1: number,
|
|
32
49
|
y1: number,
|
|
33
50
|
x2: number,
|
|
@@ -38,49 +55,17 @@ export class RenderCoords {
|
|
|
38
55
|
y4: number,
|
|
39
56
|
out?: RenderCoords,
|
|
40
57
|
): RenderCoords {
|
|
41
|
-
if (
|
|
42
|
-
|
|
58
|
+
if (out === undefined) {
|
|
59
|
+
return new RenderCoords(x1, y1, x2, y2, x3, y3, x4, y4);
|
|
43
60
|
}
|
|
44
|
-
out.
|
|
45
|
-
out.
|
|
46
|
-
out.
|
|
47
|
-
out.
|
|
48
|
-
out.
|
|
49
|
-
out.
|
|
50
|
-
out.
|
|
51
|
-
out.
|
|
61
|
+
out.x1 = x1;
|
|
62
|
+
out.y1 = y1;
|
|
63
|
+
out.x2 = x2;
|
|
64
|
+
out.y2 = y2;
|
|
65
|
+
out.x3 = x3;
|
|
66
|
+
out.y3 = y3;
|
|
67
|
+
out.x4 = x4;
|
|
68
|
+
out.y4 = y4;
|
|
52
69
|
return out;
|
|
53
70
|
}
|
|
54
|
-
|
|
55
|
-
get x1(): number {
|
|
56
|
-
return this.data[rx1]!;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
get x2(): number {
|
|
60
|
-
return this.data[rx2]!;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
get x3(): number {
|
|
64
|
-
return this.data[rx3]!;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
get x4(): number {
|
|
68
|
-
return this.data[rx4]!;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
get y1(): number {
|
|
72
|
-
return this.data[ry1]!;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
get y2(): number {
|
|
76
|
-
return this.data[ry2]!;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
get y3(): number {
|
|
80
|
-
return this.data[ry3]!;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
get y4(): number {
|
|
84
|
-
return this.data[ry4]!;
|
|
85
|
-
}
|
|
86
71
|
}
|