@lightningtv/renderer 3.0.0-beta1 → 3.2.4
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 +1 -1
- package/dist/exports/canvas.js +1 -19
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +2 -5
- package/dist/exports/index.js +1 -23
- 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 +2 -1
- package/dist/exports/webgl.js +2 -19
- 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 +139 -101
- package/dist/src/core/CoreNode.js +813 -528
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +3 -3
- package/dist/src/core/CoreShaderManager.js +0 -18
- 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 +25 -14
- package/dist/src/core/CoreTextureManager.js +83 -140
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +102 -36
- package/dist/src/core/Stage.js +424 -191
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureError.d.ts +11 -0
- package/dist/src/core/TextureError.js +37 -0
- package/dist/src/core/TextureError.js.map +1 -0
- package/dist/src/core/TextureMemoryManager.d.ts +11 -4
- package/dist/src/core/TextureMemoryManager.js +114 -134
- 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 -3
- package/dist/src/core/animations/CoreAnimation.js +8 -24
- 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 -22
- 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 +33 -31
- 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 +78 -3
- package/dist/src/core/lib/WebGlContextWrapper.js +150 -25
- 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.js → lib/colorParser.js} +1 -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 -85
- 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 -1
- package/dist/src/core/lib/utils.js +44 -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 +42 -0
- package/dist/src/core/platforms/Platform.js +4 -0
- package/dist/src/core/platforms/Platform.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatform.d.ts +10 -0
- package/dist/src/core/platforms/web/WebPlatform.js +90 -0
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
- package/dist/src/core/renderers/CoreContextTexture.d.ts +2 -1
- package/dist/src/core/renderers/CoreContextTexture.js +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 +15 -3
- package/dist/src/core/renderers/CoreRenderer.js +1 -18
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +13 -3
- package/dist/src/core/renderers/CoreShaderNode.js +25 -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 +4 -5
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +89 -83
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -21
- 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 +18 -31
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/BatchRenderOp.d.ts +25 -0
- package/dist/src/core/renderers/webgl/BatchRenderOp.js +60 -0
- package/dist/src/core/renderers/webgl/BatchRenderOp.js.map +1 -0
- 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 -70
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +34 -20
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +319 -195
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -3
- 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 +9 -7
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +99 -48
- 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.js +0 -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 +7 -21
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +14 -28
- 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 +44 -22
- 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 +47 -25
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +9 -21
- 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 +12 -2
- package/dist/src/core/shaders/templates/BorderTemplate.js +31 -27
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +3 -19
- 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 +1 -17
- 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/RoundedWithBorderAndShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +4 -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.d.ts +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.d.ts +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/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
- package/dist/src/core/shaders/utils.js +25 -0
- package/dist/src/core/shaders/utils.js.map +1 -0
- package/dist/src/core/shaders/webgl/Border.js +118 -51
- 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 +4 -19
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +73 -34
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +56 -48
- 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 +160 -55
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +168 -58
- 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 +8 -36
- 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 +13 -6
- package/dist/src/core/textures/ImageTexture.js +57 -66
- 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 +90 -12
- package/dist/src/core/textures/Texture.js +160 -35
- 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.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 +294 -81
- package/dist/src/main-api/Renderer.js +225 -96
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +19 -6
- package/dist/src/utils.js +32 -27
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/exports/canvas-shaders.ts +0 -17
- package/exports/canvas.ts +1 -19
- package/exports/index.ts +6 -27
- package/exports/inspector.ts +0 -19
- package/exports/utils.ts +7 -19
- package/exports/webgl-shaders.ts +0 -16
- package/exports/webgl.ts +3 -20
- package/package.json +23 -22
- 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 +376 -45
- package/src/core/CoreNode.ts +1017 -656
- package/src/core/CoreShaderManager.ts +3 -21
- package/src/core/CoreTextNode.ts +457 -314
- package/src/core/CoreTextureManager.ts +123 -168
- package/src/core/Stage.ts +526 -236
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +150 -167
- package/src/core/animations/AnimationManager.ts +0 -19
- package/src/core/animations/CoreAnimation.ts +15 -32
- package/src/core/animations/CoreAnimationController.ts +13 -23
- package/src/core/lib/ContextSpy.ts +0 -19
- package/src/core/lib/ImageWorker.ts +45 -32
- package/src/core/lib/Matrix3d.ts +7 -20
- package/src/core/lib/RenderCoords.ts +36 -67
- package/src/core/lib/WebGlContextWrapper.ts +196 -72
- 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} +2 -21
- package/src/core/lib/textureCompression.ts +433 -93
- package/src/core/lib/textureSvg.ts +0 -19
- package/src/core/lib/utils.ts +58 -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 +2 -20
- package/src/core/renderers/CoreRenderOp.ts +0 -19
- package/src/core/renderers/CoreRenderer.ts +16 -23
- package/src/core/renderers/CoreShaderNode.ts +37 -6
- package/src/core/renderers/CoreShaderProgram.ts +0 -19
- package/src/core/renderers/canvas/CanvasRenderer.ts +108 -137
- package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -23
- package/src/core/renderers/canvas/CanvasTexture.ts +25 -37
- package/src/core/renderers/webgl/SdfRenderOp.ts +88 -0
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +18 -34
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -24
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +134 -103
- package/src/core/renderers/webgl/WebGlRenderer.ts +368 -233
- package/src/core/renderers/webgl/WebGlShaderNode.ts +4 -7
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +122 -76
- 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 +0 -19
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +0 -19
- package/src/core/shaders/canvas/Border.ts +91 -50
- package/src/core/shaders/canvas/HolePunch.ts +4 -28
- package/src/core/shaders/canvas/LinearGradient.ts +10 -25
- package/src/core/shaders/canvas/RadialGradient.ts +23 -54
- package/src/core/shaders/canvas/Rounded.ts +2 -19
- package/src/core/shaders/canvas/RoundedWithBorder.ts +72 -35
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +77 -47
- package/src/core/shaders/canvas/RoundedWithShadow.ts +21 -34
- package/src/core/shaders/canvas/Shadow.ts +0 -17
- package/src/core/shaders/canvas/utils/render.ts +45 -53
- package/src/core/shaders/templates/BorderTemplate.ts +42 -29
- package/src/core/shaders/templates/HolePunchTemplate.ts +5 -22
- package/src/core/shaders/templates/LinearGradientTemplate.ts +0 -17
- package/src/core/shaders/templates/RadialGradientTemplate.ts +10 -25
- package/src/core/shaders/templates/RoundedTemplate.ts +1 -18
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -18
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +7 -19
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -18
- package/src/core/shaders/templates/ShadowTemplate.ts +1 -18
- package/src/core/shaders/utils.ts +30 -0
- package/src/core/shaders/webgl/Border.ts +118 -55
- package/src/core/shaders/webgl/Default.ts +6 -43
- package/src/core/shaders/webgl/HolePunch.ts +4 -24
- package/src/core/shaders/webgl/LinearGradient.ts +73 -35
- package/src/core/shaders/webgl/RadialGradient.ts +58 -51
- package/src/core/shaders/webgl/Rounded.ts +25 -45
- package/src/core/shaders/webgl/RoundedWithBorder.ts +161 -63
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +169 -68
- package/src/core/shaders/webgl/RoundedWithShadow.ts +73 -39
- package/src/core/shaders/webgl/SdfShader.ts +8 -41
- package/src/core/shaders/webgl/Shadow.ts +39 -35
- 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 +110 -92
- 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 +214 -46
- package/src/core/utils.ts +9 -26
- package/src/main-api/INode.ts +0 -18
- package/src/main-api/Inspector.ts +794 -38
- package/src/main-api/Renderer.ts +519 -159
- package/src/utils.ts +64 -29
- package/dist/src/core/platform.d.ts +0 -10
- package/dist/src/core/platform.js +0 -56
- package/dist/src/core/platform.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -217
- 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/webgl/WebGlRenderOp.d.ts +0 -36
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -107
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
- 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/DefaultBatched.d.ts +0 -2
- package/dist/src/core/shaders/webgl/DefaultBatched.js +0 -104
- package/dist/src/core/shaders/webgl/DefaultBatched.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 -126
- 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 -91
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -611
- 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 -370
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
- package/dist/src/core/text-rendering/renderers/TextRenderer.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/renderers/webgl/WebGlRenderOp.ts +0 -145
- package/src/core/shaders/templates/shaderUtils.ts +0 -47
- package/src/core/shaders/webgl/DefaultBatched.ts +0 -129
- package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
- package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
- package/src/core/text-rendering/TrFontManager.ts +0 -183
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
- package/src/core/text-rendering/font-face-types/utils.ts +0 -39
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -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/{renderers/canvas/internal/ColorUtils.d.ts → lib/colorParser.d.ts} +0 -0
|
@@ -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 { ImageWorkerManager } from './lib/ImageWorker.js';
|
|
21
2
|
import type { CoreRenderer } from './renderers/CoreRenderer.js';
|
|
22
3
|
import { ColorTexture } from './textures/ColorTexture.js';
|
|
@@ -24,14 +5,15 @@ import { ImageTexture } from './textures/ImageTexture.js';
|
|
|
24
5
|
import { NoiseTexture } from './textures/NoiseTexture.js';
|
|
25
6
|
import { SubTexture } from './textures/SubTexture.js';
|
|
26
7
|
import { RenderTexture } from './textures/RenderTexture.js';
|
|
27
|
-
import {
|
|
8
|
+
import { Texture, TextureType } from './textures/Texture.js';
|
|
28
9
|
import { EventEmitter } from '../common/EventEmitter.js';
|
|
29
|
-
import { getTimeStamp } from './platform.js';
|
|
30
10
|
import type { Stage } from './Stage.js';
|
|
31
11
|
import {
|
|
32
12
|
validateCreateImageBitmap,
|
|
33
13
|
type CreateImageBitmapSupport,
|
|
34
14
|
} from './lib/validateImageBitmap.js';
|
|
15
|
+
import type { Platform } from './platforms/Platform.js';
|
|
16
|
+
import { TextureError, TextureErrorCode } from './TextureError.js';
|
|
35
17
|
|
|
36
18
|
/**
|
|
37
19
|
* Augmentable map of texture class types
|
|
@@ -64,6 +46,7 @@ export interface TextureManagerDebugInfo {
|
|
|
64
46
|
export interface TextureManagerSettings {
|
|
65
47
|
numImageWorkers: number;
|
|
66
48
|
createImageBitmapSupport: 'auto' | 'basic' | 'options' | 'full';
|
|
49
|
+
maxRetryCount: number;
|
|
67
50
|
}
|
|
68
51
|
|
|
69
52
|
export type ResizeModeOptions =
|
|
@@ -138,6 +121,20 @@ export interface TextureOptions {
|
|
|
138
121
|
*/
|
|
139
122
|
preventCleanup?: boolean;
|
|
140
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Number of times to retry loading a failed texture
|
|
126
|
+
*
|
|
127
|
+
* @remarks
|
|
128
|
+
* When a texture fails to load, Lightning will retry up to this many times
|
|
129
|
+
* before permanently giving up. Each retry will clear the texture ownership
|
|
130
|
+
* and then re-establish it to trigger a new load attempt.
|
|
131
|
+
*
|
|
132
|
+
* Set to null to disable retries. Set to 0 to always try once and never retry.
|
|
133
|
+
* This is typically only used on ImageTexture instances.
|
|
134
|
+
*
|
|
135
|
+
*/
|
|
136
|
+
maxRetryCount?: number | null;
|
|
137
|
+
|
|
141
138
|
/**
|
|
142
139
|
* Flip the texture horizontally when rendering
|
|
143
140
|
*
|
|
@@ -178,15 +175,16 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
178
175
|
*/
|
|
179
176
|
txConstructors: Partial<TextureMap> = {};
|
|
180
177
|
|
|
181
|
-
|
|
182
|
-
private
|
|
183
|
-
private uploadTextureQueue: Array<Texture> = [];
|
|
178
|
+
public maxRetryCount: number;
|
|
179
|
+
private uploadTextureQueue: Set<Texture> = new Set();
|
|
184
180
|
private initialized = false;
|
|
185
181
|
private stage: Stage;
|
|
186
182
|
private numImageWorkers: number;
|
|
187
183
|
|
|
184
|
+
public platform: Platform;
|
|
185
|
+
|
|
188
186
|
imageWorkerManager: ImageWorkerManager | null = null;
|
|
189
|
-
hasCreateImageBitmap =
|
|
187
|
+
hasCreateImageBitmap = false;
|
|
190
188
|
imageBitmapSupported = {
|
|
191
189
|
basic: false,
|
|
192
190
|
options: false,
|
|
@@ -217,16 +215,20 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
217
215
|
constructor(stage: Stage, settings: TextureManagerSettings) {
|
|
218
216
|
super();
|
|
219
217
|
|
|
220
|
-
const { numImageWorkers, createImageBitmapSupport } =
|
|
218
|
+
const { numImageWorkers, createImageBitmapSupport, maxRetryCount } =
|
|
219
|
+
settings;
|
|
220
|
+
|
|
221
221
|
this.stage = stage;
|
|
222
|
+
this.platform = stage.platform;
|
|
222
223
|
this.numImageWorkers = numImageWorkers;
|
|
224
|
+
this.maxRetryCount = maxRetryCount;
|
|
223
225
|
|
|
224
226
|
if (createImageBitmapSupport === 'auto') {
|
|
225
|
-
validateCreateImageBitmap()
|
|
227
|
+
validateCreateImageBitmap(this.platform)
|
|
226
228
|
.then((result) => {
|
|
227
229
|
this.initialize(result);
|
|
228
230
|
})
|
|
229
|
-
.catch((
|
|
231
|
+
.catch(() => {
|
|
230
232
|
console.warn(
|
|
231
233
|
'[Lightning] createImageBitmap is not supported on this browser. ImageTexture will be slower.',
|
|
232
234
|
);
|
|
@@ -262,15 +264,15 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
262
264
|
support.basic || support.options || support.full;
|
|
263
265
|
this.imageBitmapSupported = support;
|
|
264
266
|
|
|
265
|
-
if (
|
|
267
|
+
if (this.hasCreateImageBitmap === false) {
|
|
266
268
|
console.warn(
|
|
267
269
|
'[Lightning] createImageBitmap is not supported on this browser. ImageTexture will be slower.',
|
|
268
270
|
);
|
|
269
271
|
}
|
|
270
272
|
|
|
271
273
|
if (
|
|
272
|
-
this.hasCreateImageBitmap &&
|
|
273
|
-
this.hasWorker &&
|
|
274
|
+
this.hasCreateImageBitmap === true &&
|
|
275
|
+
this.hasWorker === true &&
|
|
274
276
|
this.numImageWorkers > 0
|
|
275
277
|
) {
|
|
276
278
|
this.imageWorkerManager = new ImageWorkerManager(
|
|
@@ -287,24 +289,13 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
287
289
|
this.emit('initialized');
|
|
288
290
|
}
|
|
289
291
|
|
|
290
|
-
/**
|
|
291
|
-
* Enqueue a texture for downloading its source image.
|
|
292
|
-
*/
|
|
293
|
-
enqueueDownloadTextureSource(texture: Texture): void {
|
|
294
|
-
if (!this.downloadTextureSourceQueue.includes(texture)) {
|
|
295
|
-
this.downloadTextureSourceQueue.push(texture);
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
|
|
299
292
|
/**
|
|
300
293
|
* Enqueue a texture for uploading to the GPU.
|
|
301
294
|
*
|
|
302
295
|
* @param texture - The texture to upload
|
|
303
296
|
*/
|
|
304
297
|
enqueueUploadTexture(texture: Texture): void {
|
|
305
|
-
|
|
306
|
-
this.uploadTextureQueue.push(texture);
|
|
307
|
-
}
|
|
298
|
+
this.uploadTextureQueue.add(texture);
|
|
308
299
|
}
|
|
309
300
|
|
|
310
301
|
/**
|
|
@@ -320,16 +311,19 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
320
311
|
let texture: Texture | undefined;
|
|
321
312
|
const TextureClass = this.txConstructors[textureType];
|
|
322
313
|
if (!TextureClass) {
|
|
323
|
-
throw new
|
|
314
|
+
throw new TextureError(
|
|
315
|
+
TextureErrorCode.TEXTURE_TYPE_NOT_REGISTERED,
|
|
316
|
+
`Texture type "${textureType}" is not registered`,
|
|
317
|
+
);
|
|
324
318
|
}
|
|
325
|
-
|
|
326
|
-
const cacheKey = TextureClass.makeCacheKey(
|
|
319
|
+
const resolvedProps = TextureClass.resolveDefaults(props as any);
|
|
320
|
+
const cacheKey = TextureClass.makeCacheKey(resolvedProps as any);
|
|
327
321
|
if (cacheKey && this.keyCache.has(cacheKey)) {
|
|
328
322
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
329
323
|
texture = this.keyCache.get(cacheKey)!;
|
|
330
324
|
} else {
|
|
331
325
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
|
|
332
|
-
texture = new TextureClass(this,
|
|
326
|
+
texture = new TextureClass(this, resolvedProps as any);
|
|
333
327
|
|
|
334
328
|
if (cacheKey) {
|
|
335
329
|
this.initTextureToCache(texture, cacheKey);
|
|
@@ -339,25 +333,13 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
339
333
|
return texture as InstanceType<TextureMap[Type]>;
|
|
340
334
|
}
|
|
341
335
|
|
|
342
|
-
orphanTexture(texture: Texture): void {
|
|
343
|
-
// if it is part of the download or upload queue, remove it
|
|
344
|
-
this.removeTextureFromQueue(texture);
|
|
345
|
-
|
|
346
|
-
if (texture.type === TextureType.subTexture) {
|
|
347
|
-
// ignore subtextures
|
|
348
|
-
return;
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
this.stage.txMemManager.addToOrphanedTextures(texture);
|
|
352
|
-
}
|
|
353
|
-
|
|
354
336
|
/**
|
|
355
337
|
* Override loadTexture to use the batched approach.
|
|
356
338
|
*
|
|
357
339
|
* @param texture - The texture to load
|
|
358
340
|
* @param immediate - Whether to prioritize the texture for immediate loading
|
|
359
341
|
*/
|
|
360
|
-
loadTexture(texture: Texture, priority?: boolean): void {
|
|
342
|
+
async loadTexture(texture: Texture, priority?: boolean): Promise<void> {
|
|
361
343
|
this.stage.txMemManager.removeFromOrphanedTextures(texture);
|
|
362
344
|
|
|
363
345
|
if (texture.type === TextureType.subTexture) {
|
|
@@ -365,87 +347,89 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
365
347
|
return;
|
|
366
348
|
}
|
|
367
349
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
texture.ctxTexture !== undefined &&
|
|
371
|
-
texture.ctxTexture.state === 'loaded'
|
|
372
|
-
) {
|
|
373
|
-
texture.setState('loaded');
|
|
350
|
+
if (texture.state === 'loaded') {
|
|
351
|
+
// if the texture is already loaded, just return
|
|
374
352
|
return;
|
|
375
353
|
}
|
|
376
354
|
|
|
377
|
-
// if
|
|
378
|
-
if (
|
|
379
|
-
this.
|
|
380
|
-
this.uploadTextureQueue.includes(texture) === true
|
|
381
|
-
) {
|
|
355
|
+
// if we're not initialized, just queue the texture into the upload queue
|
|
356
|
+
if (this.initialized === false) {
|
|
357
|
+
this.uploadTextureQueue.add(texture);
|
|
382
358
|
return;
|
|
383
359
|
}
|
|
384
360
|
|
|
385
|
-
|
|
386
|
-
// orphaned and then reloaded
|
|
387
|
-
if (
|
|
388
|
-
texture.ctxTexture !== undefined &&
|
|
389
|
-
texture.ctxTexture.state === 'loading'
|
|
390
|
-
) {
|
|
391
|
-
// if the texture has texture data, queue it for upload
|
|
392
|
-
if (texture.textureData !== null) {
|
|
393
|
-
this.enqueueUploadTexture(texture);
|
|
394
|
-
}
|
|
361
|
+
texture.setState('loading');
|
|
395
362
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
363
|
+
// Get texture data - early return on failure
|
|
364
|
+
const textureDataResult = await texture.getTextureData().catch((err) => {
|
|
365
|
+
console.error(err);
|
|
366
|
+
texture.setState(
|
|
367
|
+
'failed',
|
|
368
|
+
new TextureError(TextureErrorCode.TEXTURE_DATA_NULL),
|
|
369
|
+
);
|
|
370
|
+
return null;
|
|
371
|
+
});
|
|
399
372
|
|
|
400
|
-
//
|
|
401
|
-
if (
|
|
402
|
-
this.priorityQueue.push(texture);
|
|
373
|
+
// Early return if texture data fetch failed
|
|
374
|
+
if (textureDataResult === null || texture.state === 'failed') {
|
|
403
375
|
return;
|
|
404
376
|
}
|
|
405
377
|
|
|
406
|
-
//
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
if (
|
|
410
|
-
(texture.
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
378
|
+
// Handle non-image textures: upload immediately
|
|
379
|
+
const shouldUploadImmediately =
|
|
380
|
+
texture.type !== TextureType.image || priority === true;
|
|
381
|
+
if (shouldUploadImmediately === true) {
|
|
382
|
+
await this.uploadTexture(texture).catch((err) => {
|
|
383
|
+
console.error(`Failed to upload texture:`, err);
|
|
384
|
+
texture.setState(
|
|
385
|
+
'failed',
|
|
386
|
+
new TextureError(TextureErrorCode.TEXTURE_DATA_NULL),
|
|
387
|
+
);
|
|
388
|
+
});
|
|
416
389
|
return;
|
|
417
390
|
}
|
|
418
391
|
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
// prioritize the texture for immediate loading
|
|
422
|
-
if (priority === true) {
|
|
423
|
-
texture
|
|
424
|
-
.getTextureData()
|
|
425
|
-
.then(() => {
|
|
426
|
-
this.uploadTexture(texture);
|
|
427
|
-
})
|
|
428
|
-
.catch((err) => {
|
|
429
|
-
console.error(err);
|
|
430
|
-
});
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
// enqueue the texture for download and upload
|
|
434
|
-
this.enqueueDownloadTextureSource(texture);
|
|
392
|
+
// Queue image textures for throttled upload
|
|
393
|
+
this.enqueueUploadTexture(texture);
|
|
435
394
|
}
|
|
436
395
|
|
|
437
396
|
/**
|
|
438
397
|
* Upload a texture to the GPU
|
|
439
398
|
*
|
|
440
399
|
* @param texture Texture to upload
|
|
400
|
+
* @returns Promise that resolves when the texture is fully loaded
|
|
441
401
|
*/
|
|
442
|
-
uploadTexture(texture: Texture): void {
|
|
402
|
+
async uploadTexture(texture: Texture): Promise<void> {
|
|
443
403
|
if (
|
|
444
404
|
this.stage.txMemManager.doNotExceedCriticalThreshold === true &&
|
|
445
405
|
this.stage.txMemManager.criticalCleanupRequested === true
|
|
446
406
|
) {
|
|
447
407
|
// we're at a critical memory threshold, don't upload textures
|
|
448
|
-
|
|
408
|
+
texture.setState(
|
|
409
|
+
'failed',
|
|
410
|
+
new TextureError(TextureErrorCode.MEMORY_THRESHOLD_EXCEEDED),
|
|
411
|
+
);
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
if (texture.state === 'failed' || texture.state === 'freed') {
|
|
416
|
+
// don't upload failed or freed textures
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
if (texture.state === 'loaded') {
|
|
421
|
+
// already loaded
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
if (texture.textureData === null) {
|
|
426
|
+
texture.setState(
|
|
427
|
+
'failed',
|
|
428
|
+
new TextureError(
|
|
429
|
+
TextureErrorCode.TEXTURE_DATA_NULL,
|
|
430
|
+
'Texture data is null, cannot upload texture',
|
|
431
|
+
),
|
|
432
|
+
);
|
|
449
433
|
return;
|
|
450
434
|
}
|
|
451
435
|
|
|
@@ -455,72 +439,51 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
455
439
|
return;
|
|
456
440
|
}
|
|
457
441
|
|
|
458
|
-
coreContext.load();
|
|
442
|
+
await coreContext.load();
|
|
459
443
|
}
|
|
460
444
|
|
|
461
445
|
/**
|
|
462
446
|
* Check if a texture is being processed
|
|
463
447
|
*/
|
|
464
448
|
isProcessingTexture(texture: Texture): boolean {
|
|
465
|
-
return (
|
|
466
|
-
this.downloadTextureSourceQueue.includes(texture) === true ||
|
|
467
|
-
this.uploadTextureQueue.includes(texture) === true
|
|
468
|
-
);
|
|
449
|
+
return this.uploadTextureQueue.has(texture);
|
|
469
450
|
}
|
|
470
451
|
|
|
471
452
|
/**
|
|
472
|
-
* Process a limited number of
|
|
453
|
+
* Process a limited number of uploads.
|
|
473
454
|
*
|
|
474
|
-
* @param
|
|
455
|
+
* @param maxProcessingTime - The maximum processing time in milliseconds
|
|
475
456
|
*/
|
|
476
|
-
processSome(maxProcessingTime: number): void {
|
|
457
|
+
async processSome(maxProcessingTime: number): Promise<void> {
|
|
477
458
|
if (this.initialized === false) {
|
|
478
459
|
return;
|
|
479
460
|
}
|
|
480
461
|
|
|
481
|
-
const
|
|
482
|
-
|
|
483
|
-
// Process priority queue
|
|
484
|
-
while (
|
|
485
|
-
this.priorityQueue.length > 0 &&
|
|
486
|
-
getTimeStamp() - startTime < maxProcessingTime
|
|
487
|
-
) {
|
|
488
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
489
|
-
const texture = this.priorityQueue.pop()!;
|
|
490
|
-
texture.getTextureData().then(() => {
|
|
491
|
-
this.uploadTexture(texture);
|
|
492
|
-
});
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
// Process uploads
|
|
496
|
-
while (
|
|
497
|
-
this.uploadTextureQueue.length > 0 &&
|
|
498
|
-
getTimeStamp() - startTime < maxProcessingTime
|
|
499
|
-
) {
|
|
500
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
501
|
-
this.uploadTexture(this.uploadTextureQueue.pop()!);
|
|
502
|
-
}
|
|
462
|
+
const platform = this.platform;
|
|
463
|
+
const startTime = platform.getTimeStamp();
|
|
503
464
|
|
|
504
|
-
// Process
|
|
465
|
+
// Process uploads - await each upload to prevent GPU overload
|
|
505
466
|
while (
|
|
506
|
-
this.
|
|
507
|
-
getTimeStamp() - startTime < maxProcessingTime
|
|
467
|
+
this.uploadTextureQueue.size > 0 &&
|
|
468
|
+
platform.getTimeStamp() - startTime < maxProcessingTime
|
|
508
469
|
) {
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
470
|
+
const [texture] = this.uploadTextureQueue;
|
|
471
|
+
if (!texture) break;
|
|
472
|
+
this.uploadTextureQueue.delete(texture);
|
|
473
|
+
try {
|
|
474
|
+
if (texture.textureData === null) {
|
|
475
|
+
await texture.getTextureData();
|
|
514
476
|
}
|
|
515
|
-
|
|
477
|
+
await this.uploadTexture(texture);
|
|
478
|
+
} catch (error) {
|
|
479
|
+
console.error('Failed to upload texture:', error);
|
|
480
|
+
// Continue with next texture instead of stopping entire queue
|
|
481
|
+
}
|
|
516
482
|
}
|
|
517
483
|
}
|
|
518
484
|
|
|
519
485
|
public hasUpdates(): boolean {
|
|
520
|
-
return
|
|
521
|
-
this.downloadTextureSourceQueue.length > 0 ||
|
|
522
|
-
this.uploadTextureQueue.length > 0
|
|
523
|
-
);
|
|
486
|
+
return this.uploadTextureQueue.size > 0;
|
|
524
487
|
}
|
|
525
488
|
|
|
526
489
|
/**
|
|
@@ -561,20 +524,12 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
561
524
|
}
|
|
562
525
|
|
|
563
526
|
/**
|
|
564
|
-
* Remove texture from the queue
|
|
527
|
+
* Remove texture from the upload queue
|
|
565
528
|
*
|
|
566
529
|
* @param texture - The texture to remove
|
|
567
530
|
*/
|
|
568
531
|
removeTextureFromQueue(texture: Texture): void {
|
|
569
|
-
|
|
570
|
-
if (downloadIndex !== -1) {
|
|
571
|
-
this.downloadTextureSourceQueue.splice(downloadIndex, 1);
|
|
572
|
-
}
|
|
573
|
-
|
|
574
|
-
const uploadIndex = this.uploadTextureQueue.indexOf(texture);
|
|
575
|
-
if (uploadIndex !== -1) {
|
|
576
|
-
this.uploadTextureQueue.splice(uploadIndex, 1);
|
|
577
|
-
}
|
|
532
|
+
this.uploadTextureQueue.delete(texture);
|
|
578
533
|
}
|
|
579
534
|
|
|
580
535
|
/**
|