@lightningtv/renderer 3.0.0-beta1 → 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 +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 +140 -102
- package/dist/src/core/CoreNode.js +812 -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 +82 -139
- 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 +83 -8
- 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/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 +1015 -656
- package/src/core/CoreShaderManager.ts +3 -21
- package/src/core/CoreTextNode.ts +457 -314
- package/src/core/CoreTextureManager.ts +110 -167
- 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/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
|
/**
|
|
@@ -322,14 +313,14 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
322
313
|
if (!TextureClass) {
|
|
323
314
|
throw new Error(`Texture type "${textureType}" is not registered`);
|
|
324
315
|
}
|
|
325
|
-
|
|
326
|
-
const cacheKey = TextureClass.makeCacheKey(
|
|
316
|
+
const resolvedProps = TextureClass.resolveDefaults(props as any);
|
|
317
|
+
const cacheKey = TextureClass.makeCacheKey(resolvedProps as any);
|
|
327
318
|
if (cacheKey && this.keyCache.has(cacheKey)) {
|
|
328
319
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
329
320
|
texture = this.keyCache.get(cacheKey)!;
|
|
330
321
|
} else {
|
|
331
322
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
|
|
332
|
-
texture = new TextureClass(this,
|
|
323
|
+
texture = new TextureClass(this, resolvedProps as any);
|
|
333
324
|
|
|
334
325
|
if (cacheKey) {
|
|
335
326
|
this.initTextureToCache(texture, cacheKey);
|
|
@@ -339,25 +330,13 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
339
330
|
return texture as InstanceType<TextureMap[Type]>;
|
|
340
331
|
}
|
|
341
332
|
|
|
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
333
|
/**
|
|
355
334
|
* Override loadTexture to use the batched approach.
|
|
356
335
|
*
|
|
357
336
|
* @param texture - The texture to load
|
|
358
337
|
* @param immediate - Whether to prioritize the texture for immediate loading
|
|
359
338
|
*/
|
|
360
|
-
loadTexture(texture: Texture, priority?: boolean): void {
|
|
339
|
+
async loadTexture(texture: Texture, priority?: boolean): Promise<void> {
|
|
361
340
|
this.stage.txMemManager.removeFromOrphanedTextures(texture);
|
|
362
341
|
|
|
363
342
|
if (texture.type === TextureType.subTexture) {
|
|
@@ -365,87 +344,80 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
365
344
|
return;
|
|
366
345
|
}
|
|
367
346
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
texture.ctxTexture !== undefined &&
|
|
371
|
-
texture.ctxTexture.state === 'loaded'
|
|
372
|
-
) {
|
|
373
|
-
texture.setState('loaded');
|
|
347
|
+
if (texture.state === 'loaded') {
|
|
348
|
+
// if the texture is already loaded, just return
|
|
374
349
|
return;
|
|
375
350
|
}
|
|
376
351
|
|
|
377
|
-
// if
|
|
378
|
-
if (
|
|
379
|
-
this.
|
|
380
|
-
this.uploadTextureQueue.includes(texture) === true
|
|
381
|
-
) {
|
|
352
|
+
// if we're not initialized, just queue the texture into the upload queue
|
|
353
|
+
if (this.initialized === false) {
|
|
354
|
+
this.uploadTextureQueue.add(texture);
|
|
382
355
|
return;
|
|
383
356
|
}
|
|
384
357
|
|
|
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
|
-
}
|
|
358
|
+
texture.setState('loading');
|
|
395
359
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
360
|
+
// Get texture data - early return on failure
|
|
361
|
+
const textureDataResult = await texture.getTextureData().catch((err) => {
|
|
362
|
+
console.error(err);
|
|
363
|
+
texture.setState('failed');
|
|
364
|
+
return null;
|
|
365
|
+
});
|
|
399
366
|
|
|
400
|
-
//
|
|
401
|
-
if (
|
|
402
|
-
this.priorityQueue.push(texture);
|
|
367
|
+
// Early return if texture data fetch failed
|
|
368
|
+
if (textureDataResult === null || texture.state === 'failed') {
|
|
403
369
|
return;
|
|
404
370
|
}
|
|
405
371
|
|
|
406
|
-
//
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
if (
|
|
410
|
-
(texture.
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
texture.setState('fetched');
|
|
415
|
-
this.enqueueUploadTexture(texture);
|
|
372
|
+
// Handle non-image textures: upload immediately
|
|
373
|
+
const shouldUploadImmediately =
|
|
374
|
+
texture.type !== TextureType.image || priority === true;
|
|
375
|
+
if (shouldUploadImmediately === true) {
|
|
376
|
+
await this.uploadTexture(texture).catch((err) => {
|
|
377
|
+
console.error(`Failed to upload texture:`, err);
|
|
378
|
+
texture.setState('failed');
|
|
379
|
+
});
|
|
416
380
|
return;
|
|
417
381
|
}
|
|
418
382
|
|
|
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);
|
|
383
|
+
// Queue image textures for throttled upload
|
|
384
|
+
this.enqueueUploadTexture(texture);
|
|
435
385
|
}
|
|
436
386
|
|
|
437
387
|
/**
|
|
438
388
|
* Upload a texture to the GPU
|
|
439
389
|
*
|
|
440
390
|
* @param texture Texture to upload
|
|
391
|
+
* @returns Promise that resolves when the texture is fully loaded
|
|
441
392
|
*/
|
|
442
|
-
uploadTexture(texture: Texture): void {
|
|
393
|
+
async uploadTexture(texture: Texture): Promise<void> {
|
|
443
394
|
if (
|
|
444
395
|
this.stage.txMemManager.doNotExceedCriticalThreshold === true &&
|
|
445
396
|
this.stage.txMemManager.criticalCleanupRequested === true
|
|
446
397
|
) {
|
|
447
398
|
// we're at a critical memory threshold, don't upload textures
|
|
448
|
-
|
|
399
|
+
texture.setState('failed');
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
if (texture.state === 'failed' || texture.state === 'freed') {
|
|
404
|
+
// don't upload failed or freed textures
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
if (texture.state === 'loaded') {
|
|
409
|
+
// already loaded
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
if (texture.textureData === null) {
|
|
414
|
+
texture.setState(
|
|
415
|
+
'failed',
|
|
416
|
+
new TextureError(
|
|
417
|
+
TextureErrorCode.TEXTURE_DATA_NULL,
|
|
418
|
+
'Texture data is null, cannot upload texture',
|
|
419
|
+
),
|
|
420
|
+
);
|
|
449
421
|
return;
|
|
450
422
|
}
|
|
451
423
|
|
|
@@ -455,72 +427,51 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
455
427
|
return;
|
|
456
428
|
}
|
|
457
429
|
|
|
458
|
-
coreContext.load();
|
|
430
|
+
await coreContext.load();
|
|
459
431
|
}
|
|
460
432
|
|
|
461
433
|
/**
|
|
462
434
|
* Check if a texture is being processed
|
|
463
435
|
*/
|
|
464
436
|
isProcessingTexture(texture: Texture): boolean {
|
|
465
|
-
return (
|
|
466
|
-
this.downloadTextureSourceQueue.includes(texture) === true ||
|
|
467
|
-
this.uploadTextureQueue.includes(texture) === true
|
|
468
|
-
);
|
|
437
|
+
return this.uploadTextureQueue.has(texture);
|
|
469
438
|
}
|
|
470
439
|
|
|
471
440
|
/**
|
|
472
|
-
* Process a limited number of
|
|
441
|
+
* Process a limited number of uploads.
|
|
473
442
|
*
|
|
474
|
-
* @param
|
|
443
|
+
* @param maxProcessingTime - The maximum processing time in milliseconds
|
|
475
444
|
*/
|
|
476
|
-
processSome(maxProcessingTime: number): void {
|
|
445
|
+
async processSome(maxProcessingTime: number): Promise<void> {
|
|
477
446
|
if (this.initialized === false) {
|
|
478
447
|
return;
|
|
479
448
|
}
|
|
480
449
|
|
|
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
|
-
}
|
|
450
|
+
const platform = this.platform;
|
|
451
|
+
const startTime = platform.getTimeStamp();
|
|
494
452
|
|
|
495
|
-
// Process uploads
|
|
453
|
+
// Process uploads - await each upload to prevent GPU overload
|
|
496
454
|
while (
|
|
497
|
-
this.uploadTextureQueue.
|
|
498
|
-
getTimeStamp() - startTime < maxProcessingTime
|
|
455
|
+
this.uploadTextureQueue.size > 0 &&
|
|
456
|
+
platform.getTimeStamp() - startTime < maxProcessingTime
|
|
499
457
|
) {
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
this.downloadTextureSourceQueue.length > 0 &&
|
|
507
|
-
getTimeStamp() - startTime < maxProcessingTime
|
|
508
|
-
) {
|
|
509
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
510
|
-
const texture = this.downloadTextureSourceQueue.shift()!;
|
|
511
|
-
texture.getTextureData().then(() => {
|
|
512
|
-
if (texture.state === 'fetched') {
|
|
513
|
-
this.enqueueUploadTexture(texture);
|
|
458
|
+
const [texture] = this.uploadTextureQueue;
|
|
459
|
+
if (!texture) break;
|
|
460
|
+
this.uploadTextureQueue.delete(texture);
|
|
461
|
+
try {
|
|
462
|
+
if (texture.textureData === null) {
|
|
463
|
+
await texture.getTextureData();
|
|
514
464
|
}
|
|
515
|
-
|
|
465
|
+
await this.uploadTexture(texture);
|
|
466
|
+
} catch (error) {
|
|
467
|
+
console.error('Failed to upload texture:', error);
|
|
468
|
+
// Continue with next texture instead of stopping entire queue
|
|
469
|
+
}
|
|
516
470
|
}
|
|
517
471
|
}
|
|
518
472
|
|
|
519
473
|
public hasUpdates(): boolean {
|
|
520
|
-
return
|
|
521
|
-
this.downloadTextureSourceQueue.length > 0 ||
|
|
522
|
-
this.uploadTextureQueue.length > 0
|
|
523
|
-
);
|
|
474
|
+
return this.uploadTextureQueue.size > 0;
|
|
524
475
|
}
|
|
525
476
|
|
|
526
477
|
/**
|
|
@@ -561,20 +512,12 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
561
512
|
}
|
|
562
513
|
|
|
563
514
|
/**
|
|
564
|
-
* Remove texture from the queue
|
|
515
|
+
* Remove texture from the upload queue
|
|
565
516
|
*
|
|
566
517
|
* @param texture - The texture to remove
|
|
567
518
|
*/
|
|
568
519
|
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
|
-
}
|
|
520
|
+
this.uploadTextureQueue.delete(texture);
|
|
578
521
|
}
|
|
579
522
|
|
|
580
523
|
/**
|