@lightningtv/renderer 2.16.1 → 3.2.3
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/NOTICE +4 -0
- package/README.md +22 -28
- package/dist/exports/canvas-shaders.js +0 -16
- package/dist/exports/canvas-shaders.js.map +1 -1
- package/dist/exports/canvas.d.ts +8 -2
- package/dist/exports/canvas.js +8 -20
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +18 -13
- package/dist/exports/index.js +9 -27
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/inspector.js +0 -18
- package/dist/exports/inspector.js.map +1 -1
- package/dist/exports/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -19
- package/dist/exports/utils.js.map +1 -1
- package/dist/exports/webgl-shaders.js +0 -16
- package/dist/exports/webgl-shaders.js.map +1 -1
- package/dist/exports/webgl.d.ts +11 -2
- package/dist/exports/webgl.js +11 -20
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/common/CommonTypes.d.ts +15 -3
- package/dist/src/common/CommonTypes.js +0 -18
- package/dist/src/common/CommonTypes.js.map +1 -1
- package/dist/src/common/EventEmitter.js +0 -18
- package/dist/src/common/EventEmitter.js.map +1 -1
- package/dist/src/common/IEventEmitter.js +0 -16
- package/dist/src/common/IEventEmitter.js.map +1 -1
- package/dist/src/core/Autosizer.d.ts +35 -0
- package/dist/src/core/Autosizer.js +178 -0
- package/dist/src/core/Autosizer.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +138 -105
- package/dist/src/core/CoreNode.js +805 -526
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +29 -73
- package/dist/src/core/CoreShaderManager.js +92 -97
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +75 -87
- package/dist/src/core/CoreTextNode.js +380 -258
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +18 -3
- package/dist/src/core/CoreTextureManager.js +63 -107
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +82 -55
- package/dist/src/core/Stage.js +410 -247
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureError.d.ts +11 -0
- package/dist/src/core/TextureError.js +37 -0
- package/dist/src/core/TextureError.js.map +1 -0
- package/dist/src/core/TextureMemoryManager.d.ts +4 -3
- package/dist/src/core/TextureMemoryManager.js +103 -135
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/AnimationManager.js +0 -18
- package/dist/src/core/animations/AnimationManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.d.ts +3 -4
- package/dist/src/core/animations/CoreAnimation.js +9 -76
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.js +0 -18
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/ContextSpy.js +0 -18
- package/dist/src/core/lib/ContextSpy.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.d.ts +2 -2
- package/dist/src/core/lib/ImageWorker.js +31 -30
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/Matrix3d.d.ts +1 -0
- package/dist/src/core/lib/Matrix3d.js +7 -19
- package/dist/src/core/lib/Matrix3d.js.map +1 -1
- package/dist/src/core/lib/RenderCoords.d.ts +9 -10
- package/dist/src/core/lib/RenderCoords.js +27 -55
- package/dist/src/core/lib/RenderCoords.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +147 -59
- package/dist/src/core/lib/WebGlContextWrapper.js +252 -158
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/collectionUtils.d.ts +5 -0
- package/dist/src/core/lib/collectionUtils.js +82 -0
- package/dist/src/core/lib/collectionUtils.js.map +1 -0
- package/dist/src/core/lib/colorCache.d.ts +1 -0
- package/dist/src/core/lib/colorCache.js +19 -0
- package/dist/src/core/lib/colorCache.js.map +1 -0
- package/dist/src/core/{renderers/canvas/internal/ColorUtils.d.ts → lib/colorParser.d.ts} +2 -0
- package/dist/src/core/{renderers/canvas/internal/ColorUtils.js → lib/colorParser.js} +15 -19
- package/dist/src/core/lib/colorParser.js.map +1 -0
- package/dist/src/core/lib/textureCompression.d.ts +14 -2
- package/dist/src/core/lib/textureCompression.js +320 -86
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/textureSvg.js +0 -18
- package/dist/src/core/lib/textureSvg.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +8 -2
- package/dist/src/core/lib/utils.js +21 -20
- 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/platforms/Platform.d.ts +5 -0
- package/dist/src/core/platforms/Platform.js +0 -18
- package/dist/src/core/platforms/Platform.js.map +1 -1
- package/dist/src/core/platforms/web/WebPlatform.d.ts +1 -0
- package/dist/src/core/platforms/web/WebPlatform.js +39 -7
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
- package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -0
- package/dist/src/core/renderers/CoreContextTexture.js +0 -18
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderOp.js +0 -18
- package/dist/src/core/renderers/CoreRenderOp.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +25 -23
- package/dist/src/core/renderers/CoreRenderer.js +1 -24
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +10 -0
- package/dist/src/core/renderers/CoreShaderNode.js +19 -2
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderProgram.js +0 -18
- package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +3 -5
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +86 -83
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +2 -17
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
- package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -31
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js +80 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -24
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -23
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +102 -67
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +31 -19
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +297 -200
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -4
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +5 -5
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +61 -34
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +1 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js +12 -21
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -18
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -1
- package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
- package/dist/src/core/shaders/canvas/Border.js +67 -41
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/HolePunch.js +3 -19
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +2 -18
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +5 -21
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js +1 -17
- package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +40 -26
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +2 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +43 -23
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +4 -18
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/Shadow.js +0 -16
- package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
- package/dist/src/core/shaders/canvas/utils/render.js +31 -34
- package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +11 -2
- package/dist/src/core/shaders/templates/BorderTemplate.js +30 -26
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +2 -18
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -16
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -18
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -2
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +3 -17
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/utils.js +0 -16
- package/dist/src/core/shaders/utils.js.map +1 -1
- package/dist/src/core/shaders/webgl/Border.js +75 -31
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Default.js +6 -41
- package/dist/src/core/shaders/webgl/Default.js.map +1 -1
- package/dist/src/core/shaders/webgl/HolePunch.js +2 -18
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +68 -30
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +52 -45
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +25 -23
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +110 -48
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +114 -54
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +73 -34
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
- package/dist/src/core/shaders/webgl/SdfShader.js +7 -35
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/shaders/webgl/Shadow.js +39 -34
- package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +206 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +139 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +167 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +371 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +18 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js +301 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
- package/dist/src/core/text-rendering/TextRenderer.d.ts +384 -0
- package/dist/src/core/text-rendering/TextRenderer.js +2 -0
- package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/Utils.d.ts +30 -0
- package/dist/src/core/text-rendering/Utils.js +66 -0
- package/dist/src/core/text-rendering/Utils.js.map +1 -0
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +3 -22
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +10 -3
- package/dist/src/core/textures/ImageTexture.js +33 -62
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
- package/dist/src/core/textures/NoiseTexture.js +8 -26
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +7 -7
- package/dist/src/core/textures/RenderTexture.js +12 -30
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +6 -8
- package/dist/src/core/textures/SubTexture.js +19 -55
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +80 -16
- package/dist/src/core/textures/Texture.js +131 -37
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +2 -1
- package/dist/src/core/utils.js +1 -19
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/INode.d.ts +9 -9
- package/dist/src/main-api/INode.js.map +1 -1
- package/dist/src/main-api/Inspector.d.ts +135 -2
- package/dist/src/main-api/Inspector.js +507 -30
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +246 -162
- package/dist/src/main-api/Renderer.js +192 -152
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +23 -4
- package/dist/src/utils.js +50 -27
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/exports/canvas-shaders.ts +11 -0
- package/exports/canvas.ts +8 -20
- package/exports/index.ts +24 -44
- package/exports/inspector.ts +0 -19
- package/exports/utils.ts +7 -19
- package/exports/webgl-shaders.ts +12 -0
- package/exports/webgl.ts +15 -20
- package/package.json +23 -20
- package/src/common/CommonTypes.ts +20 -22
- package/src/common/EventEmitter.ts +0 -19
- package/src/common/IAnimationController.ts +0 -18
- package/src/common/IEventEmitter.ts +0 -17
- package/src/core/Autosizer.ts +205 -0
- package/src/core/CoreNode.test.ts +378 -46
- package/src/core/CoreNode.ts +1007 -659
- package/src/core/CoreShaderManager.ts +128 -250
- package/src/core/CoreTextNode.ts +457 -321
- package/src/core/CoreTextureManager.ts +94 -115
- package/src/core/Stage.ts +516 -312
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +139 -175
- package/src/core/animations/AnimationManager.ts +0 -19
- package/src/core/animations/CoreAnimation.ts +16 -96
- package/src/core/animations/CoreAnimationController.ts +0 -19
- package/src/core/lib/ContextSpy.ts +0 -19
- package/src/core/lib/ImageWorker.ts +43 -31
- package/src/core/lib/Matrix3d.ts +7 -20
- package/src/core/lib/RenderCoords.ts +36 -67
- package/src/core/lib/WebGlContextWrapper.ts +353 -237
- package/src/core/lib/collectionUtils.ts +99 -0
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +16 -19
- package/src/core/lib/textureCompression.ts +434 -94
- package/src/core/lib/textureSvg.ts +0 -19
- package/src/core/lib/utils.ts +31 -19
- package/src/core/lib/validateImageBitmap.ts +17 -6
- package/src/core/platforms/Platform.ts +64 -0
- package/src/core/platforms/web/WebPlatform.ts +132 -0
- package/src/core/renderers/CoreContextTexture.ts +1 -19
- package/src/core/renderers/CoreRenderOp.ts +0 -19
- package/src/core/renderers/CoreRenderer.ts +34 -49
- package/src/core/renderers/CoreShaderNode.ts +202 -0
- package/src/core/renderers/CoreShaderProgram.ts +4 -0
- package/src/core/renderers/canvas/CanvasRenderer.ts +270 -0
- package/src/core/renderers/canvas/CanvasShaderNode.ts +79 -0
- package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +15 -27
- package/src/core/renderers/webgl/SdfRenderOp.ts +88 -0
- package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +15 -36
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +76 -0
- package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +89 -70
- package/src/core/renderers/webgl/WebGlRenderer.ts +850 -0
- package/src/core/renderers/webgl/WebGlShaderNode.ts +430 -0
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +356 -0
- package/src/core/renderers/webgl/internal/BufferCollection.ts +15 -23
- package/src/core/renderers/webgl/internal/RendererUtils.ts +0 -19
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -24
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +0 -19
- package/src/core/shaders/canvas/Border.ts +119 -0
- package/src/core/shaders/canvas/HolePunch.ts +38 -0
- package/src/core/shaders/canvas/LinearGradient.ts +54 -0
- package/src/core/shaders/canvas/RadialGradient.ts +82 -0
- package/src/core/shaders/canvas/Rounded.ts +38 -0
- package/src/core/shaders/canvas/RoundedWithBorder.ts +105 -0
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +118 -0
- package/src/core/shaders/canvas/RoundedWithShadow.ts +56 -0
- package/src/core/shaders/canvas/Shadow.ts +35 -0
- package/src/core/shaders/canvas/utils/render.ts +143 -0
- package/src/core/shaders/templates/BorderTemplate.ts +128 -0
- package/src/core/shaders/templates/HolePunchTemplate.ts +65 -0
- package/src/core/shaders/templates/LinearGradientTemplate.ts +54 -0
- package/src/core/shaders/templates/RadialGradientTemplate.ts +66 -0
- package/src/core/shaders/templates/RoundedTemplate.ts +81 -0
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +21 -0
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +23 -0
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +18 -0
- package/src/core/shaders/templates/ShadowTemplate.ts +89 -0
- package/src/core/shaders/utils.ts +30 -0
- package/src/core/shaders/webgl/Border.ts +159 -0
- package/src/core/shaders/webgl/Default.ts +52 -0
- package/src/core/shaders/webgl/HolePunch.ts +58 -0
- package/src/core/shaders/webgl/LinearGradient.ts +119 -0
- package/src/core/shaders/webgl/RadialGradient.ts +91 -0
- package/src/core/shaders/webgl/Rounded.ts +97 -0
- package/src/core/shaders/webgl/RoundedWithBorder.ts +212 -0
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +234 -0
- package/src/core/shaders/webgl/RoundedWithShadow.ts +132 -0
- package/src/core/shaders/webgl/SdfShader.ts +104 -0
- package/src/core/shaders/webgl/Shadow.ts +119 -0
- package/src/core/text-rendering/CanvasFontHandler.ts +285 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +236 -0
- package/src/core/text-rendering/SdfFontHandler.ts +566 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +406 -0
- package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
- package/src/core/text-rendering/TextRenderer.ts +426 -0
- package/src/core/text-rendering/Utils.ts +80 -0
- package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +434 -0
- package/src/core/textures/ColorTexture.ts +7 -24
- package/src/core/textures/ImageTexture.ts +72 -78
- package/src/core/textures/NoiseTexture.ts +14 -31
- package/src/core/textures/RenderTexture.ts +18 -35
- package/src/core/textures/SubTexture.ts +25 -65
- package/src/core/textures/Texture.ts +182 -53
- package/src/core/utils.ts +9 -26
- package/src/main-api/INode.ts +10 -29
- package/src/main-api/Inspector.ts +794 -38
- package/src/main-api/Renderer.ts +476 -274
- package/src/utils.ts +83 -29
- package/dist/src/core/animations/SimpleAnimation.d.ts +0 -28
- package/dist/src/core/animations/SimpleAnimation.js +0 -96
- package/dist/src/core/animations/SimpleAnimation.js.map +0 -1
- package/dist/src/core/platform.d.ts +0 -10
- package/dist/src/core/platform.js +0 -81
- package/dist/src/core/platform.js.map +0 -1
- package/dist/src/core/renderers/CoreShader.d.ts +0 -9
- package/dist/src/core/renderers/CoreShader.js +0 -28
- package/dist/src/core/renderers/CoreShader.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -124
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -14
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -138
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -58
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -56
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -239
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -616
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -233
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -44
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -118
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
- package/dist/src/core/shaders/templates/shaderUtils.d.ts +0 -5
- package/dist/src/core/shaders/templates/shaderUtils.js +0 -41
- package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
- package/dist/src/core/shaders/webgl/Magnifier.d.ts +0 -46
- package/dist/src/core/shaders/webgl/Magnifier.js +0 -107
- package/dist/src/core/shaders/webgl/Magnifier.js.map +0 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder copy.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RoundedWithBorder copy.js +0 -218
- package/dist/src/core/shaders/webgl/RoundedWithBorder copy.js.map +0 -1
- package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
- package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
- package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
- package/dist/src/core/text-rendering/TrFontManager.js +0 -131
- package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
- package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -120
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -92
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -607
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -373
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
- package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
- package/dist/src/main-api/DynamicShaderController.js +0 -58
- package/dist/src/main-api/DynamicShaderController.js.map +0 -1
- package/dist/src/main-api/ShaderController.d.ts +0 -31
- package/dist/src/main-api/ShaderController.js +0 -37
- package/dist/src/main-api/ShaderController.js.map +0 -1
- package/scripts/please-use-pnpm.js +0 -13
- package/src/core/platform.ts +0 -100
- package/src/core/renderers/CoreShader.ts +0 -41
- package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -231
- package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +0 -48
- package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +0 -50
- package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +0 -125
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +0 -821
- package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -365
- package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
- package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
- package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
- package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
- package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
- package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
- package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
- package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
- package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
- package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
- package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
- package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
- package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
- package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
- package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
- package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
- package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
- package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
- package/src/core/text-rendering/TrFontManager.ts +0 -183
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
- package/src/core/text-rendering/font-face-types/utils.ts +0 -39
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -808
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -853
- 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 -557
- package/src/main-api/DynamicShaderController.ts +0 -104
- package/src/main-api/ShaderController.ts +0 -80
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export enum TextureErrorCode {
|
|
2
|
+
MEMORY_THRESHOLD_EXCEEDED = 'MEMORY_THRESHOLD_EXCEEDED',
|
|
3
|
+
TEXTURE_DATA_NULL = 'TEXTURE_DATA_NULL',
|
|
4
|
+
TEXTURE_TYPE_NOT_REGISTERED = 'TEXTURE_TYPE_NOT_REGISTERED',
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
const defaultMessages: Record<TextureErrorCode, string> = {
|
|
8
|
+
[TextureErrorCode.MEMORY_THRESHOLD_EXCEEDED]: 'Memory threshold exceeded',
|
|
9
|
+
[TextureErrorCode.TEXTURE_DATA_NULL]: 'Texture data is null',
|
|
10
|
+
[TextureErrorCode.TEXTURE_TYPE_NOT_REGISTERED]:
|
|
11
|
+
'Texture type is not registered',
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export class TextureError extends Error {
|
|
15
|
+
code?: TextureErrorCode;
|
|
16
|
+
|
|
17
|
+
constructor(message: string);
|
|
18
|
+
constructor(code: TextureErrorCode, message?: string);
|
|
19
|
+
constructor(codeOrMessage: TextureErrorCode | string, maybeMessage?: string) {
|
|
20
|
+
const isCode = Object.values(TextureErrorCode).includes(
|
|
21
|
+
codeOrMessage as TextureErrorCode,
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
const code = isCode ? (codeOrMessage as TextureErrorCode) : undefined;
|
|
25
|
+
let message: string;
|
|
26
|
+
if (isCode && code) {
|
|
27
|
+
message = maybeMessage ?? defaultMessages[code];
|
|
28
|
+
} else {
|
|
29
|
+
message = String(codeOrMessage);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
super(message);
|
|
33
|
+
this.name = new.target.name;
|
|
34
|
+
if (code) this.code = code;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function isTextureError(err: unknown): err is TextureError {
|
|
39
|
+
return (
|
|
40
|
+
err instanceof TextureError ||
|
|
41
|
+
(typeof err === 'object' &&
|
|
42
|
+
err !== null &&
|
|
43
|
+
(err as { name?: unknown }).name === 'TextureError' &&
|
|
44
|
+
typeof (err as { code?: unknown }).code === 'string')
|
|
45
|
+
);
|
|
46
|
+
}
|
|
@@ -1,25 +1,6 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2024 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
1
|
import { isProductionEnvironment } from '../utils.js';
|
|
20
|
-
import { getTimeStamp } from './platform.js';
|
|
21
2
|
import type { Stage } from './Stage.js';
|
|
22
|
-
import { Texture, TextureType
|
|
3
|
+
import { Texture, TextureType } from './textures/Texture.js';
|
|
23
4
|
import { bytesToMb } from './utils.js';
|
|
24
5
|
|
|
25
6
|
export interface TextureMemoryManagerSettings {
|
|
@@ -116,17 +97,21 @@ export interface MemoryInfo {
|
|
|
116
97
|
*/
|
|
117
98
|
export class TextureMemoryManager {
|
|
118
99
|
private memUsed = 0;
|
|
119
|
-
private loadedTextures:
|
|
120
|
-
private orphanedTextures: Texture
|
|
121
|
-
private criticalThreshold: number;
|
|
122
|
-
private targetThreshold: number;
|
|
123
|
-
private cleanupInterval: number;
|
|
124
|
-
private debugLogging: boolean;
|
|
100
|
+
private loadedTextures: Set<Texture> = new Set();
|
|
101
|
+
private orphanedTextures: Set<Texture> = new Set();
|
|
102
|
+
private criticalThreshold: number = 124e6;
|
|
103
|
+
private targetThreshold: number = 0.5;
|
|
104
|
+
private cleanupInterval: number = 5000;
|
|
105
|
+
private debugLogging: boolean = false;
|
|
106
|
+
private loggingID: ReturnType<typeof setInterval> =
|
|
107
|
+
0 as unknown as ReturnType<typeof setInterval>;
|
|
125
108
|
private lastCleanupTime = 0;
|
|
126
|
-
private baselineMemoryAllocation: number;
|
|
109
|
+
private baselineMemoryAllocation: number = 26e6;
|
|
110
|
+
|
|
111
|
+
private hasWarnedAboveCritical = false;
|
|
127
112
|
|
|
128
113
|
public criticalCleanupRequested = false;
|
|
129
|
-
public doNotExceedCriticalThreshold: boolean;
|
|
114
|
+
public doNotExceedCriticalThreshold: boolean = false;
|
|
130
115
|
|
|
131
116
|
/**
|
|
132
117
|
* The current frame time in milliseconds
|
|
@@ -139,46 +124,7 @@ export class TextureMemoryManager {
|
|
|
139
124
|
public frameTime = 0;
|
|
140
125
|
|
|
141
126
|
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);
|
|
159
|
-
|
|
160
|
-
if (settings.debugLogging) {
|
|
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
|
-
}
|
|
127
|
+
this.updateSettings(settings);
|
|
182
128
|
}
|
|
183
129
|
|
|
184
130
|
/**
|
|
@@ -188,13 +134,13 @@ export class TextureMemoryManager {
|
|
|
188
134
|
*/
|
|
189
135
|
addToOrphanedTextures(texture: Texture) {
|
|
190
136
|
// if the texture is already in the orphaned textures list add it at the end
|
|
191
|
-
if (this.orphanedTextures.
|
|
192
|
-
this.
|
|
137
|
+
if (this.orphanedTextures.has(texture)) {
|
|
138
|
+
this.orphanedTextures.delete(texture);
|
|
193
139
|
}
|
|
194
140
|
|
|
195
141
|
// If the texture can be cleaned up, add it to the orphaned textures list
|
|
196
142
|
if (texture.preventCleanup === false) {
|
|
197
|
-
this.orphanedTextures.
|
|
143
|
+
this.orphanedTextures.add(texture);
|
|
198
144
|
}
|
|
199
145
|
}
|
|
200
146
|
|
|
@@ -204,10 +150,7 @@ export class TextureMemoryManager {
|
|
|
204
150
|
* @param texture - The texture to remove from the orphaned textures list
|
|
205
151
|
*/
|
|
206
152
|
removeFromOrphanedTextures(texture: Texture) {
|
|
207
|
-
|
|
208
|
-
if (index !== -1) {
|
|
209
|
-
this.orphanedTextures.splice(index, 1);
|
|
210
|
-
}
|
|
153
|
+
this.orphanedTextures.delete(texture);
|
|
211
154
|
}
|
|
212
155
|
|
|
213
156
|
/**
|
|
@@ -217,17 +160,19 @@ export class TextureMemoryManager {
|
|
|
217
160
|
* @param byteSize - The size of the texture in bytes
|
|
218
161
|
*/
|
|
219
162
|
setTextureMemUse(texture: Texture, byteSize: number) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
this.memUsed -= this.loadedTextures.get(texture)!;
|
|
223
|
-
}
|
|
163
|
+
// Update global memory counter by subtracting old value
|
|
164
|
+
this.memUsed -= texture.memUsed;
|
|
224
165
|
|
|
225
166
|
if (byteSize === 0) {
|
|
167
|
+
// PERFORMANCE: Mark for deletion, slot will be reused later
|
|
226
168
|
this.loadedTextures.delete(texture);
|
|
169
|
+
texture.memUsed = 0;
|
|
227
170
|
return;
|
|
228
171
|
} else {
|
|
172
|
+
// Update texture memory and add to tracking if not already present
|
|
173
|
+
texture.memUsed = byteSize;
|
|
229
174
|
this.memUsed += byteSize;
|
|
230
|
-
this.loadedTextures.
|
|
175
|
+
this.loadedTextures.add(texture);
|
|
231
176
|
}
|
|
232
177
|
|
|
233
178
|
if (this.memUsed > this.criticalThreshold) {
|
|
@@ -247,40 +192,6 @@ export class TextureMemoryManager {
|
|
|
247
192
|
return this.memUsed > this.criticalThreshold;
|
|
248
193
|
}
|
|
249
194
|
|
|
250
|
-
cleanupQuick(critical: boolean) {
|
|
251
|
-
// Free non-renderable textures until we reach the target threshold
|
|
252
|
-
const memTarget = this.targetThreshold;
|
|
253
|
-
const timestamp = getTimeStamp();
|
|
254
|
-
|
|
255
|
-
while (
|
|
256
|
-
this.memUsed >= memTarget &&
|
|
257
|
-
this.orphanedTextures.length > 0 &&
|
|
258
|
-
(critical || getTimeStamp() - timestamp < 10)
|
|
259
|
-
) {
|
|
260
|
-
const texture = this.orphanedTextures.shift();
|
|
261
|
-
|
|
262
|
-
if (texture === undefined) {
|
|
263
|
-
continue;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
if (texture.renderable === true) {
|
|
267
|
-
// If the texture is renderable, we can't free it up
|
|
268
|
-
continue;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
// Skip textures that are in transitional states - we only want to clean up
|
|
272
|
-
// textures that are in a stable state (loaded, failed, or freed)
|
|
273
|
-
if (
|
|
274
|
-
texture.state === 'initial' ||
|
|
275
|
-
Texture.TRANSITIONAL_TEXTURE_STATES.includes(texture.state)
|
|
276
|
-
) {
|
|
277
|
-
continue;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
this.destroyTexture(texture);
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
|
|
284
195
|
/**
|
|
285
196
|
* Destroy a texture and remove it from the memory manager
|
|
286
197
|
*
|
|
@@ -293,46 +204,21 @@ export class TextureMemoryManager {
|
|
|
293
204
|
);
|
|
294
205
|
}
|
|
295
206
|
|
|
207
|
+
// PERFORMANCE: Null out array position, slot will be reused later
|
|
208
|
+
this.loadedTextures.delete(texture);
|
|
209
|
+
|
|
210
|
+
// Destroy texture and update memory counters
|
|
296
211
|
const txManager = this.stage.txManager;
|
|
297
|
-
txManager.removeTextureFromQueue(texture);
|
|
298
212
|
txManager.removeTextureFromCache(texture);
|
|
299
213
|
|
|
300
214
|
texture.destroy();
|
|
301
215
|
|
|
302
|
-
|
|
303
|
-
this.
|
|
216
|
+
// Update memory counters
|
|
217
|
+
this.memUsed -= texture.memUsed;
|
|
218
|
+
texture.memUsed = 0;
|
|
304
219
|
}
|
|
305
|
-
cleanupDeep(critical: boolean) {
|
|
306
|
-
// Free non-renderable textures until we reach the target threshold
|
|
307
|
-
const memTarget = critical ? this.criticalThreshold : this.targetThreshold;
|
|
308
|
-
|
|
309
|
-
// Filter for textures that are candidates for cleanup
|
|
310
|
-
// note: This is an expensive operation, so we only do it in deep cleanup
|
|
311
|
-
const cleanupCandidates = [...this.loadedTextures.keys()].filter(
|
|
312
|
-
(texture) => {
|
|
313
|
-
return (
|
|
314
|
-
(texture.type === TextureType.image ||
|
|
315
|
-
texture.type === TextureType.noise ||
|
|
316
|
-
texture.type === TextureType.renderToTexture) &&
|
|
317
|
-
texture.renderable === false &&
|
|
318
|
-
texture.preventCleanup === false &&
|
|
319
|
-
texture.state !== 'initial' &&
|
|
320
|
-
!Texture.TRANSITIONAL_TEXTURE_STATES.includes(texture.state)
|
|
321
|
-
);
|
|
322
|
-
},
|
|
323
|
-
);
|
|
324
|
-
|
|
325
|
-
while (this.memUsed >= memTarget && cleanupCandidates.length > 0) {
|
|
326
|
-
const texture = cleanupCandidates.shift();
|
|
327
|
-
if (texture === undefined) {
|
|
328
|
-
continue;
|
|
329
|
-
}
|
|
330
220
|
|
|
331
|
-
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
cleanup(aggressive: boolean = false) {
|
|
221
|
+
cleanup(full: boolean = false) {
|
|
336
222
|
const critical = this.criticalCleanupRequested;
|
|
337
223
|
this.lastCleanupTime = this.frameTime;
|
|
338
224
|
|
|
@@ -345,25 +231,38 @@ export class TextureMemoryManager {
|
|
|
345
231
|
|
|
346
232
|
if (this.debugLogging === true) {
|
|
347
233
|
console.log(
|
|
348
|
-
`[TextureMemoryManager] Cleaning up textures. Critical: ${critical}.
|
|
234
|
+
`[TextureMemoryManager] Cleaning up textures. Critical: ${critical}. Full: ${full}`,
|
|
349
235
|
);
|
|
350
236
|
}
|
|
351
237
|
|
|
352
|
-
//
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
//
|
|
356
|
-
//
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
238
|
+
// Free non-renderable textures until we reach the target threshold
|
|
239
|
+
const memTarget = critical ? this.criticalThreshold : this.targetThreshold;
|
|
240
|
+
|
|
241
|
+
// PERFORMANCE: Zero-overhead cleanup with null marking
|
|
242
|
+
// Skip null entries, mark cleaned textures as null for later defrag
|
|
243
|
+
let currentMemUsed = this.memUsed;
|
|
244
|
+
|
|
245
|
+
for (const texture of this.loadedTextures) {
|
|
246
|
+
// Early exit: target memory reached
|
|
247
|
+
if (full === false && currentMemUsed < memTarget) {
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// Fast type check for cleanable textures
|
|
252
|
+
const isCleanableType =
|
|
253
|
+
texture.type === TextureType.image ||
|
|
254
|
+
texture.type === TextureType.noise ||
|
|
255
|
+
texture.type === TextureType.renderToTexture;
|
|
256
|
+
|
|
257
|
+
// Immediate cleanup if eligible
|
|
258
|
+
if (isCleanableType && texture.canBeCleanedUp() === true) {
|
|
259
|
+
// Get memory before destroying
|
|
260
|
+
const textureMemory = texture.memUsed;
|
|
261
|
+
|
|
262
|
+
// Destroy texture (which will null out the array position)
|
|
263
|
+
this.destroyTexture(texture);
|
|
264
|
+
currentMemUsed -= textureMemory;
|
|
265
|
+
}
|
|
367
266
|
}
|
|
368
267
|
|
|
369
268
|
if (this.memUsed >= this.criticalThreshold) {
|
|
@@ -371,14 +270,20 @@ export class TextureMemoryManager {
|
|
|
371
270
|
memUsed: this.memUsed,
|
|
372
271
|
criticalThreshold: this.criticalThreshold,
|
|
373
272
|
});
|
|
374
|
-
|
|
375
|
-
if (
|
|
273
|
+
// Only emit the warning once per over-threshold period
|
|
274
|
+
if (
|
|
275
|
+
!this.hasWarnedAboveCritical &&
|
|
276
|
+
(this.debugLogging === true || isProductionEnvironment === false)
|
|
277
|
+
) {
|
|
376
278
|
console.warn(
|
|
377
279
|
`[TextureMemoryManager] Memory usage above critical threshold after cleanup: ${this.memUsed}`,
|
|
378
280
|
);
|
|
281
|
+
|
|
282
|
+
this.hasWarnedAboveCritical = true;
|
|
379
283
|
}
|
|
380
284
|
} else {
|
|
381
285
|
this.criticalCleanupRequested = false;
|
|
286
|
+
this.hasWarnedAboveCritical = false;
|
|
382
287
|
}
|
|
383
288
|
}
|
|
384
289
|
|
|
@@ -391,15 +296,17 @@ export class TextureMemoryManager {
|
|
|
391
296
|
*/
|
|
392
297
|
getMemoryInfo(): MemoryInfo {
|
|
393
298
|
let renderableTexturesLoaded = 0;
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
|
|
299
|
+
let renderableMemUsed = this.baselineMemoryAllocation;
|
|
300
|
+
|
|
301
|
+
for (const texture of this.loadedTextures) {
|
|
302
|
+
if (texture && texture.renderable) {
|
|
303
|
+
renderableTexturesLoaded += 1;
|
|
304
|
+
renderableMemUsed += texture.memUsed;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
// Count non-null entries for accurate loaded texture count
|
|
309
|
+
const actualLoadedTextures = this.loadedTextures.size;
|
|
403
310
|
|
|
404
311
|
return {
|
|
405
312
|
criticalThreshold: this.criticalThreshold,
|
|
@@ -407,8 +314,65 @@ export class TextureMemoryManager {
|
|
|
407
314
|
renderableMemUsed,
|
|
408
315
|
memUsed: this.memUsed,
|
|
409
316
|
renderableTexturesLoaded,
|
|
410
|
-
loadedTextures:
|
|
317
|
+
loadedTextures: actualLoadedTextures,
|
|
411
318
|
baselineMemoryAllocation: this.baselineMemoryAllocation,
|
|
412
319
|
};
|
|
413
320
|
}
|
|
321
|
+
|
|
322
|
+
public updateSettings(settings: TextureMemoryManagerSettings): void {
|
|
323
|
+
const { criticalThreshold, doNotExceedCriticalThreshold } = settings;
|
|
324
|
+
|
|
325
|
+
this.doNotExceedCriticalThreshold = doNotExceedCriticalThreshold || false;
|
|
326
|
+
this.criticalThreshold = Math.round(criticalThreshold);
|
|
327
|
+
|
|
328
|
+
if (this.memUsed === 0) {
|
|
329
|
+
this.memUsed = Math.round(settings.baselineMemoryAllocation);
|
|
330
|
+
} else {
|
|
331
|
+
const memUsedExBaseline = this.memUsed - this.baselineMemoryAllocation;
|
|
332
|
+
this.memUsed = Math.round(
|
|
333
|
+
settings.baselineMemoryAllocation + memUsedExBaseline,
|
|
334
|
+
);
|
|
335
|
+
}
|
|
336
|
+
this.baselineMemoryAllocation = Math.round(
|
|
337
|
+
settings.baselineMemoryAllocation,
|
|
338
|
+
);
|
|
339
|
+
const targetFraction = Math.max(
|
|
340
|
+
0,
|
|
341
|
+
Math.min(1, settings.targetThresholdLevel),
|
|
342
|
+
);
|
|
343
|
+
this.targetThreshold = Math.max(
|
|
344
|
+
Math.round(criticalThreshold * targetFraction),
|
|
345
|
+
this.baselineMemoryAllocation,
|
|
346
|
+
);
|
|
347
|
+
|
|
348
|
+
this.cleanupInterval = settings.cleanupInterval;
|
|
349
|
+
this.debugLogging = settings.debugLogging;
|
|
350
|
+
|
|
351
|
+
if (this.loggingID && !settings.debugLogging) {
|
|
352
|
+
clearInterval(this.loggingID);
|
|
353
|
+
this.loggingID = 0 as unknown as ReturnType<typeof setInterval>;
|
|
354
|
+
}
|
|
355
|
+
if (settings.debugLogging && !this.loggingID) {
|
|
356
|
+
let lastMemUse = 0;
|
|
357
|
+
this.loggingID = setInterval(() => {
|
|
358
|
+
if (lastMemUse !== this.memUsed) {
|
|
359
|
+
lastMemUse = this.memUsed;
|
|
360
|
+
console.log(
|
|
361
|
+
`[TextureMemoryManager] Memory used: ${bytesToMb(
|
|
362
|
+
this.memUsed,
|
|
363
|
+
)} mb / ${bytesToMb(this.criticalThreshold)} mb (${(
|
|
364
|
+
(this.memUsed / this.criticalThreshold) *
|
|
365
|
+
100
|
|
366
|
+
).toFixed(1)}%)`,
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
}, 1000);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
// If the threshold is 0, we disable the memory manager by replacing the
|
|
373
|
+
// setTextureMemUse method with a no-op function.
|
|
374
|
+
if (criticalThreshold === 0) {
|
|
375
|
+
this.setTextureMemUse = () => {};
|
|
376
|
+
}
|
|
377
|
+
}
|
|
414
378
|
}
|
|
@@ -1,22 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
1
|
import { CoreAnimation } from './CoreAnimation.js';
|
|
21
2
|
|
|
22
3
|
export class AnimationManager {
|
|
@@ -1,34 +1,14 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
1
|
import { type CoreNode, type CoreNodeAnimateProps } from '../CoreNode.js';
|
|
21
|
-
import { getTimingFunction } from '../utils.js';
|
|
2
|
+
import { getTimingFunction, type TimingFunction } from '../utils.js';
|
|
22
3
|
import { mergeColorProgress } from '../../utils.js';
|
|
23
4
|
import { EventEmitter } from '../../common/EventEmitter.js';
|
|
24
5
|
|
|
25
6
|
export interface AnimationSettings {
|
|
26
7
|
duration: number;
|
|
27
8
|
delay: number;
|
|
28
|
-
easing: string;
|
|
9
|
+
easing: string | TimingFunction;
|
|
29
10
|
loop: boolean;
|
|
30
11
|
repeat: number;
|
|
31
|
-
repeatDelay: number;
|
|
32
12
|
stopMethod: 'reverse' | 'reset' | false;
|
|
33
13
|
}
|
|
34
14
|
|
|
@@ -43,10 +23,9 @@ export class CoreAnimation extends EventEmitter {
|
|
|
43
23
|
private progress = 0;
|
|
44
24
|
private delayFor = 0;
|
|
45
25
|
private delay = 0;
|
|
46
|
-
private timingFunction:
|
|
26
|
+
private timingFunction: TimingFunction;
|
|
47
27
|
|
|
48
28
|
propValuesMap: PropValuesMap = {};
|
|
49
|
-
dynPropValuesMap: PropValuesMap | undefined = undefined;
|
|
50
29
|
|
|
51
30
|
constructor(
|
|
52
31
|
private node: CoreNode,
|
|
@@ -67,33 +46,18 @@ export class CoreAnimation extends EventEmitter {
|
|
|
67
46
|
key as keyof Omit<CoreNodeAnimateProps, 'shaderProps'>
|
|
68
47
|
] as number,
|
|
69
48
|
};
|
|
70
|
-
} else if (node.shader
|
|
49
|
+
} else if (key === 'shaderProps' && node.shader !== null) {
|
|
71
50
|
this.propValuesMap['shaderProps'] = {};
|
|
72
51
|
for (const key in props.shaderProps) {
|
|
52
|
+
let start = node.shader.props![key];
|
|
53
|
+
if (Array.isArray(start) === true) {
|
|
54
|
+
start = start[0];
|
|
55
|
+
}
|
|
73
56
|
this.propValuesMap['shaderProps'][key] = {
|
|
74
|
-
start
|
|
57
|
+
start,
|
|
75
58
|
target: props.shaderProps[key] as number,
|
|
76
59
|
};
|
|
77
60
|
}
|
|
78
|
-
} else {
|
|
79
|
-
const shaderPropKeys = Object.keys(props.shaderProps!);
|
|
80
|
-
const spLength = shaderPropKeys.length;
|
|
81
|
-
this.dynPropValuesMap = {};
|
|
82
|
-
for (let j = 0; j < spLength; j++) {
|
|
83
|
-
const effectName = shaderPropKeys[j]!;
|
|
84
|
-
const effect = props.shaderProps![effectName]!;
|
|
85
|
-
this.dynPropValuesMap[effectName] = {};
|
|
86
|
-
const effectProps = Object.entries(effect);
|
|
87
|
-
const eLength = effectProps.length;
|
|
88
|
-
|
|
89
|
-
for (let k = 0; k < eLength; k++) {
|
|
90
|
-
const [key, value] = effectProps[k]!;
|
|
91
|
-
this.dynPropValuesMap[effectName]![key] = {
|
|
92
|
-
start: node.shader.props[effectName][key],
|
|
93
|
-
target: value,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
61
|
}
|
|
98
62
|
}
|
|
99
63
|
|
|
@@ -105,10 +69,10 @@ export class CoreAnimation extends EventEmitter {
|
|
|
105
69
|
easing,
|
|
106
70
|
loop: settings.loop ?? false,
|
|
107
71
|
repeat: settings.repeat ?? 0,
|
|
108
|
-
repeatDelay: settings.repeatDelay ?? 0,
|
|
109
72
|
stopMethod: settings.stopMethod ?? false,
|
|
110
73
|
};
|
|
111
|
-
this.timingFunction =
|
|
74
|
+
this.timingFunction =
|
|
75
|
+
typeof easing === 'string' ? getTimingFunction(easing) : easing;
|
|
112
76
|
this.delayFor = delay;
|
|
113
77
|
this.delay = delay;
|
|
114
78
|
}
|
|
@@ -142,24 +106,10 @@ export class CoreAnimation extends EventEmitter {
|
|
|
142
106
|
}
|
|
143
107
|
if (this.propValuesMap['shaderProps'] !== undefined) {
|
|
144
108
|
this.restoreValues(
|
|
145
|
-
this.node.shader
|
|
109
|
+
this.node.shader!.props as Record<string, number>,
|
|
146
110
|
this.propValuesMap['shaderProps'],
|
|
147
111
|
);
|
|
148
112
|
}
|
|
149
|
-
|
|
150
|
-
if (this.dynPropValuesMap !== undefined) {
|
|
151
|
-
const dynEntries = Object.keys(this.dynPropValuesMap);
|
|
152
|
-
const dynEntriesL = dynEntries.length;
|
|
153
|
-
if (dynEntriesL > 0) {
|
|
154
|
-
for (let i = 0; i < dynEntriesL; i++) {
|
|
155
|
-
const key = dynEntries[i]!;
|
|
156
|
-
this.restoreValues(
|
|
157
|
-
this.node.shader.props[key],
|
|
158
|
-
this.dynPropValuesMap[key]!,
|
|
159
|
-
);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
113
|
}
|
|
164
114
|
|
|
165
115
|
private reverseValues(valueMap: Record<string, PropValues>) {
|
|
@@ -185,17 +135,6 @@ export class CoreAnimation extends EventEmitter {
|
|
|
185
135
|
this.reverseValues(this.propValuesMap['shaderProps']);
|
|
186
136
|
}
|
|
187
137
|
|
|
188
|
-
if (this.dynPropValuesMap !== undefined) {
|
|
189
|
-
const dynEntries = Object.keys(this.dynPropValuesMap);
|
|
190
|
-
const dynEntriesL = dynEntries.length;
|
|
191
|
-
if (dynEntriesL > 0) {
|
|
192
|
-
for (let i = 0; i < dynEntriesL; i++) {
|
|
193
|
-
const key = dynEntries[i]!;
|
|
194
|
-
this.reverseValues(this.dynPropValuesMap[key]!);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
|
|
199
138
|
// restore stop method if we are not looping
|
|
200
139
|
if (!this.settings.loop) {
|
|
201
140
|
this.settings.stopMethod = false;
|
|
@@ -203,14 +142,14 @@ export class CoreAnimation extends EventEmitter {
|
|
|
203
142
|
}
|
|
204
143
|
|
|
205
144
|
private applyEasing(p: number, s: number, e: number): number {
|
|
206
|
-
return
|
|
145
|
+
return this.timingFunction(p) * (e - s) + s;
|
|
207
146
|
}
|
|
208
147
|
|
|
209
148
|
updateValue(
|
|
210
149
|
propName: string,
|
|
211
150
|
propValue: number,
|
|
212
151
|
startValue: number,
|
|
213
|
-
easing: string | undefined,
|
|
152
|
+
easing: string | TimingFunction | undefined,
|
|
214
153
|
): number {
|
|
215
154
|
if (this.progress === 1) {
|
|
216
155
|
return propValue;
|
|
@@ -242,7 +181,7 @@ export class CoreAnimation extends EventEmitter {
|
|
|
242
181
|
private updateValues(
|
|
243
182
|
target: Record<string, number>,
|
|
244
183
|
valueMap: Record<string, PropValues>,
|
|
245
|
-
easing: string | undefined,
|
|
184
|
+
easing: string | TimingFunction | undefined,
|
|
246
185
|
) {
|
|
247
186
|
const entries = Object.entries(valueMap);
|
|
248
187
|
const eLength = entries.length;
|
|
@@ -315,31 +254,12 @@ export class CoreAnimation extends EventEmitter {
|
|
|
315
254
|
}
|
|
316
255
|
if (this.propValuesMap['shaderProps'] !== undefined) {
|
|
317
256
|
this.updateValues(
|
|
318
|
-
this.node.shader
|
|
257
|
+
this.node.shader!.props as Record<string, number>,
|
|
319
258
|
this.propValuesMap['shaderProps'],
|
|
320
259
|
easing,
|
|
321
260
|
);
|
|
322
261
|
}
|
|
323
262
|
|
|
324
|
-
if (this.dynPropValuesMap !== undefined) {
|
|
325
|
-
const dynEntries = Object.keys(this.dynPropValuesMap);
|
|
326
|
-
const dynEntriesL = dynEntries.length;
|
|
327
|
-
if (dynEntriesL > 0) {
|
|
328
|
-
for (let i = 0; i < dynEntriesL; i++) {
|
|
329
|
-
const key = dynEntries[i]!;
|
|
330
|
-
this.updateValues(
|
|
331
|
-
this.node.shader.props[key],
|
|
332
|
-
this.dynPropValuesMap[key]!,
|
|
333
|
-
easing,
|
|
334
|
-
);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
if (this.progress < 1) {
|
|
340
|
-
this.emit('tick', { progress: this.progress });
|
|
341
|
-
}
|
|
342
|
-
|
|
343
263
|
if (this.progress === 1) {
|
|
344
264
|
this.emit('finished', {});
|
|
345
265
|
}
|