@lightningjs/renderer 3.0.0-beta2 → 3.0.0-beta20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -26
- package/dist/exports/canvas.d.ts +1 -1
- package/dist/exports/canvas.js +1 -1
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +2 -5
- package/dist/exports/index.js +1 -5
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -1
- package/dist/exports/utils.js.map +1 -1
- package/dist/exports/webgl.d.ts +2 -1
- package/dist/exports/webgl.js +2 -1
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/common/CommonTypes.d.ts +13 -2
- package/dist/src/core/Autosizer.d.ts +35 -0
- package/dist/src/core/Autosizer.js +196 -0
- package/dist/src/core/Autosizer.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +73 -95
- package/dist/src/core/CoreNode.js +599 -461
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +3 -5
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +74 -87
- package/dist/src/core/CoreTextNode.js +357 -232
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +25 -13
- package/dist/src/core/CoreTextureManager.js +80 -104
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +92 -33
- package/dist/src/core/Stage.js +313 -151
- 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 +128 -109
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.d.ts +3 -3
- package/dist/src/core/animations/CoreAnimation.js +8 -3
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
- package/dist/src/core/animations/CoreAnimationController.js +11 -4
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.js +1 -1
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +41 -3
- package/dist/src/core/lib/WebGlContextWrapper.js +104 -27
- 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 +100 -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/lib/colorParser.d.ts +21 -0
- package/dist/src/core/lib/colorParser.js +72 -0
- package/dist/src/core/lib/colorParser.js.map +1 -0
- package/dist/src/core/lib/textureCompression.d.ts +14 -2
- package/dist/src/core/lib/textureCompression.js +320 -67
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +2 -0
- package/dist/src/core/lib/utils.js +22 -0
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
- package/dist/src/core/lib/validateImageBitmap.js +4 -4
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
- package/dist/src/core/platform.js +30 -5
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/platforms/Platform.d.ts +42 -0
- package/dist/src/{main-api/IRenderDriver.js → core/platforms/Platform.js} +4 -2
- package/dist/src/core/platforms/Platform.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatform.d.ts +10 -0
- package/dist/src/core/platforms/web/WebPlatform.js +87 -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.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +7 -2
- package/dist/src/core/renderers/CoreRenderer.js +1 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +8 -1
- package/dist/src/core/renderers/CoreShaderNode.js +11 -0
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +2 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +11 -9
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +1 -2
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +32 -59
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -5
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
- package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -13
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +3 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +18 -6
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +86 -41
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +53 -17
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +2 -7
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +21 -50
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -6
- 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 -5
- 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 +95 -49
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +3 -2
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +14 -5
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +5 -3
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +141 -112
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +6 -3
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +47 -18
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +3 -6
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -11
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +5 -10
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +5 -10
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -12
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +5 -5
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +24 -19
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +32 -5
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +5 -5
- package/dist/src/core/shaders/canvas/Border.js +5 -5
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/HolePunch.js +3 -3
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +7 -5
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +14 -12
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +14 -6
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +2 -2
- package/dist/src/core/shaders/templates/BorderTemplate.js +11 -11
- 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 -3
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -2
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
- package/dist/src/core/shaders/{templates/shaderUtils.js → utils.js} +2 -2
- package/dist/src/core/shaders/utils.js.map +1 -0
- package/dist/src/core/shaders/webgl/Border.js +57 -34
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Default.js +6 -7
- package/dist/src/core/shaders/webgl/Default.js.map +1 -1
- package/dist/src/core/shaders/webgl/HolePunch.js +4 -3
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +33 -8
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +56 -32
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +4 -2
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +81 -37
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +93 -42
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +3 -2
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
- package/dist/src/core/shaders/webgl/SdfShader.js +7 -17
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +224 -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 +157 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +182 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +391 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js +311 -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 +383 -0
- package/dist/src/{main-api/ICoreDriver.js → core/text-rendering/TextRenderer.js} +1 -1
- package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
- package/dist/src/core/text-rendering/Utils.d.ts +30 -0
- package/dist/src/core/text-rendering/Utils.js +84 -0
- package/dist/src/core/text-rendering/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -6
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +35 -38
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +3 -4
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +11 -4
- package/dist/src/core/textures/ImageTexture.js +31 -40
- 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 -8
- 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 -12
- 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 -37
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +87 -10
- package/dist/src/core/textures/Texture.js +160 -17
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +3 -2
- package/dist/src/core/utils.js +1 -1
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/INode.d.ts +2 -2
- package/dist/src/main-api/Inspector.d.ts +130 -1
- package/dist/src/main-api/Inspector.js +341 -27
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +285 -82
- package/dist/src/main-api/Renderer.js +221 -76
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +1 -6
- package/dist/src/utils.js +2 -9
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/exports/canvas.ts +1 -1
- package/exports/index.ts +2 -8
- package/exports/utils.ts +7 -1
- package/exports/webgl.ts +3 -1
- package/package.json +15 -17
- package/src/common/CommonTypes.ts +18 -2
- package/src/core/CoreNode.test.ts +63 -15
- package/src/core/CoreNode.ts +709 -582
- package/src/core/CoreShaderManager.ts +5 -10
- package/src/core/CoreTextNode.ts +424 -286
- package/src/core/CoreTextureManager.ts +110 -130
- package/src/core/Stage.ts +394 -195
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +164 -141
- package/src/core/animations/CoreAnimation.ts +15 -9
- package/src/core/animations/CoreAnimationController.ts +13 -4
- package/src/core/lib/ImageWorker.ts +7 -1
- package/src/core/lib/WebGlContextWrapper.ts +126 -78
- package/src/core/lib/collectionUtils.ts +118 -0
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -2
- package/src/core/lib/textureCompression.ts +433 -75
- package/src/core/lib/utils.ts +26 -0
- package/src/core/lib/validateImageBitmap.ts +17 -6
- package/src/core/platforms/Platform.ts +83 -0
- package/src/core/platforms/web/WebPlatform.ts +132 -0
- package/src/core/renderers/CoreContextTexture.ts +2 -1
- package/src/core/renderers/CoreRenderer.ts +7 -3
- package/src/core/renderers/CoreShaderNode.ts +18 -3
- package/src/core/renderers/canvas/CanvasRenderer.ts +48 -82
- package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -6
- package/src/core/renderers/canvas/CanvasTexture.ts +22 -18
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +18 -15
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -5
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +124 -81
- package/src/core/renderers/webgl/WebGlRenderOp.ts +21 -12
- package/src/core/renderers/webgl/WebGlRenderer.ts +172 -137
- package/src/core/renderers/webgl/WebGlShaderNode.ts +2 -4
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +58 -20
- package/src/core/shaders/canvas/Border.ts +5 -8
- package/src/core/shaders/canvas/HolePunch.ts +4 -11
- package/src/core/shaders/canvas/LinearGradient.ts +10 -8
- package/src/core/shaders/canvas/RadialGradient.ts +23 -37
- package/src/core/shaders/canvas/Rounded.ts +2 -2
- package/src/core/shaders/canvas/RoundedWithBorder.ts +20 -16
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +17 -17
- package/src/core/shaders/canvas/RoundedWithShadow.ts +10 -9
- package/src/core/shaders/templates/BorderTemplate.ts +12 -12
- package/src/core/shaders/templates/HolePunchTemplate.ts +5 -5
- package/src/core/shaders/templates/RadialGradientTemplate.ts +10 -8
- package/src/core/shaders/templates/RoundedTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/ShadowTemplate.ts +1 -1
- package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +2 -3
- package/src/core/shaders/webgl/Border.ts +57 -37
- package/src/core/shaders/webgl/Default.ts +6 -7
- package/src/core/shaders/webgl/HolePunch.ts +4 -7
- package/src/core/shaders/webgl/LinearGradient.ts +33 -8
- package/src/core/shaders/webgl/RadialGradient.ts +58 -34
- package/src/core/shaders/webgl/Rounded.ts +4 -6
- package/src/core/shaders/webgl/RoundedWithBorder.ts +82 -44
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +93 -50
- package/src/core/shaders/webgl/RoundedWithShadow.ts +3 -6
- package/src/core/shaders/webgl/SdfShader.ts +7 -19
- package/src/core/text-rendering/CanvasFontHandler.ts +304 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +255 -0
- package/src/core/text-rendering/SdfFontHandler.ts +591 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +411 -0
- package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
- package/src/core/text-rendering/TextRenderer.ts +444 -0
- package/src/core/text-rendering/Utils.ts +99 -0
- package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +453 -0
- package/src/core/textures/ColorTexture.ts +7 -5
- package/src/core/textures/ImageTexture.ts +78 -66
- package/src/core/textures/NoiseTexture.ts +14 -12
- package/src/core/textures/RenderTexture.ts +18 -16
- package/src/core/textures/SubTexture.ts +25 -46
- package/src/core/textures/Texture.ts +207 -24
- package/src/core/utils.ts +9 -7
- package/src/main-api/INode.ts +4 -3
- package/src/main-api/Inspector.ts +571 -33
- package/src/main-api/Renderer.ts +505 -139
- package/src/utils.ts +10 -10
- package/dist/exports/core-api.d.ts +0 -74
- package/dist/exports/core-api.js +0 -96
- package/dist/exports/core-api.js.map +0 -1
- package/dist/exports/main-api.d.ts +0 -30
- package/dist/exports/main-api.js +0 -45
- package/dist/exports/main-api.js.map +0 -1
- package/dist/src/core/CoreExtension.d.ts +0 -12
- package/dist/src/core/CoreExtension.js +0 -29
- package/dist/src/core/CoreExtension.js.map +0 -1
- package/dist/src/core/CoreStuff.d.ts +0 -1
- package/dist/src/core/CoreStuff.js +0 -138
- package/dist/src/core/CoreStuff.js.map +0 -1
- package/dist/src/core/CoreTexturizer.d.ts +0 -14
- package/dist/src/core/CoreTexturizer.js +0 -47
- package/dist/src/core/CoreTexturizer.js.map +0 -1
- package/dist/src/core/LngNode.d.ts +0 -736
- package/dist/src/core/LngNode.js +0 -1174
- package/dist/src/core/LngNode.js.map +0 -1
- package/dist/src/core/Matrix2DContext.d.ts +0 -15
- package/dist/src/core/Matrix2DContext.js +0 -45
- package/dist/src/core/Matrix2DContext.js.map +0 -1
- package/dist/src/core/ShaderNode.d.ts +0 -10
- package/dist/src/core/ShaderNode.js +0 -30
- package/dist/src/core/ShaderNode.js.map +0 -1
- package/dist/src/core/TextNode.d.ts +0 -103
- package/dist/src/core/TextNode.js +0 -331
- package/dist/src/core/TextNode.js.map +0 -1
- package/dist/src/core/lib/Coords.d.ts +0 -14
- package/dist/src/core/lib/Coords.js +0 -55
- package/dist/src/core/lib/Coords.js.map +0 -1
- package/dist/src/core/lib/glm/common.d.ts +0 -162
- package/dist/src/core/lib/glm/common.js +0 -81
- package/dist/src/core/lib/glm/common.js.map +0 -1
- package/dist/src/core/lib/glm/index.d.ts +0 -11
- package/dist/src/core/lib/glm/index.js +0 -30
- package/dist/src/core/lib/glm/index.js.map +0 -1
- package/dist/src/core/lib/glm/mat2.d.ts +0 -219
- package/dist/src/core/lib/glm/mat2.js +0 -396
- package/dist/src/core/lib/glm/mat2.js.map +0 -1
- package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
- package/dist/src/core/lib/glm/mat2d.js +0 -442
- package/dist/src/core/lib/glm/mat2d.js.map +0 -1
- package/dist/src/core/lib/glm/mat3.d.ts +0 -283
- package/dist/src/core/lib/glm/mat3.js +0 -680
- package/dist/src/core/lib/glm/mat3.js.map +0 -1
- package/dist/src/core/lib/glm/mat4.d.ts +0 -550
- package/dist/src/core/lib/glm/mat4.js +0 -1802
- package/dist/src/core/lib/glm/mat4.js.map +0 -1
- package/dist/src/core/lib/glm/quat.d.ts +0 -363
- package/dist/src/core/lib/glm/quat.js +0 -693
- package/dist/src/core/lib/glm/quat.js.map +0 -1
- package/dist/src/core/lib/glm/quat2.d.ts +0 -356
- package/dist/src/core/lib/glm/quat2.js +0 -754
- package/dist/src/core/lib/glm/quat2.js.map +0 -1
- package/dist/src/core/lib/glm/vec2.d.ts +0 -365
- package/dist/src/core/lib/glm/vec2.js +0 -569
- package/dist/src/core/lib/glm/vec2.js.map +0 -1
- package/dist/src/core/lib/glm/vec3.d.ts +0 -406
- package/dist/src/core/lib/glm/vec3.js +0 -720
- package/dist/src/core/lib/glm/vec3.js.map +0 -1
- package/dist/src/core/lib/glm/vec4.d.ts +0 -330
- package/dist/src/core/lib/glm/vec4.js +0 -608
- package/dist/src/core/lib/glm/vec4.js.map +0 -1
- package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
- package/dist/src/core/renderers/CoreShaderManager.js +0 -33
- package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
- package/dist/src/core/scene/Scene.d.ts +0 -59
- package/dist/src/core/scene/Scene.js +0 -106
- package/dist/src/core/scene/Scene.js.map +0 -1
- package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
- package/dist/src/main-api/ICoreDriver.d.ts +0 -27
- package/dist/src/main-api/ICoreDriver.js.map +0 -1
- package/dist/src/main-api/IRenderDriver.d.ts +0 -20
- package/dist/src/main-api/IRenderDriver.js.map +0 -1
- package/dist/src/main-api/IShaderController.d.ts +0 -14
- package/dist/src/main-api/IShaderController.js +0 -30
- package/dist/src/main-api/IShaderController.js.map +0 -1
- package/dist/src/main-api/IShaderNode.d.ts +0 -17
- package/dist/src/main-api/IShaderNode.js +0 -19
- package/dist/src/main-api/IShaderNode.js.map +0 -1
- package/dist/src/main-api/RendererMain.d.ts +0 -375
- package/dist/src/main-api/RendererMain.js +0 -365
- package/dist/src/main-api/RendererMain.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +0 -28
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
- package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
- package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
- package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
- package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
- package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
- package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
- package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
- package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
- package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
- package/dist/src/render-drivers/utils.d.ts +0 -12
- package/dist/src/render-drivers/utils.js +0 -69
- package/dist/src/render-drivers/utils.js.map +0 -1
- package/scripts/please-use-pnpm.js +0 -13
- package/src/core/platform.ts +0 -64
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
- package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
- package/src/core/text-rendering/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 -840
- 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
|
@@ -24,14 +24,15 @@ import { ImageTexture } from './textures/ImageTexture.js';
|
|
|
24
24
|
import { NoiseTexture } from './textures/NoiseTexture.js';
|
|
25
25
|
import { SubTexture } from './textures/SubTexture.js';
|
|
26
26
|
import { RenderTexture } from './textures/RenderTexture.js';
|
|
27
|
-
import {
|
|
27
|
+
import { Texture, TextureType } from './textures/Texture.js';
|
|
28
28
|
import { EventEmitter } from '../common/EventEmitter.js';
|
|
29
|
-
import { getTimeStamp } from './platform.js';
|
|
30
29
|
import type { Stage } from './Stage.js';
|
|
31
30
|
import {
|
|
32
31
|
validateCreateImageBitmap,
|
|
33
32
|
type CreateImageBitmapSupport,
|
|
34
33
|
} from './lib/validateImageBitmap.js';
|
|
34
|
+
import type { Platform } from './platforms/Platform.js';
|
|
35
|
+
import { TextureError, TextureErrorCode } from './TextureError.js';
|
|
35
36
|
|
|
36
37
|
/**
|
|
37
38
|
* Augmentable map of texture class types
|
|
@@ -64,6 +65,7 @@ export interface TextureManagerDebugInfo {
|
|
|
64
65
|
export interface TextureManagerSettings {
|
|
65
66
|
numImageWorkers: number;
|
|
66
67
|
createImageBitmapSupport: 'auto' | 'basic' | 'options' | 'full';
|
|
68
|
+
maxRetryCount: number;
|
|
67
69
|
}
|
|
68
70
|
|
|
69
71
|
export type ResizeModeOptions =
|
|
@@ -138,6 +140,20 @@ export interface TextureOptions {
|
|
|
138
140
|
*/
|
|
139
141
|
preventCleanup?: boolean;
|
|
140
142
|
|
|
143
|
+
/**
|
|
144
|
+
* Number of times to retry loading a failed texture
|
|
145
|
+
*
|
|
146
|
+
* @remarks
|
|
147
|
+
* When a texture fails to load, Lightning will retry up to this many times
|
|
148
|
+
* before permanently giving up. Each retry will clear the texture ownership
|
|
149
|
+
* and then re-establish it to trigger a new load attempt.
|
|
150
|
+
*
|
|
151
|
+
* Set to null to disable retries. Set to 0 to always try once and never retry.
|
|
152
|
+
* This is typically only used on ImageTexture instances.
|
|
153
|
+
*
|
|
154
|
+
*/
|
|
155
|
+
maxRetryCount?: number | null;
|
|
156
|
+
|
|
141
157
|
/**
|
|
142
158
|
* Flip the texture horizontally when rendering
|
|
143
159
|
*
|
|
@@ -178,15 +194,17 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
178
194
|
*/
|
|
179
195
|
txConstructors: Partial<TextureMap> = {};
|
|
180
196
|
|
|
181
|
-
|
|
197
|
+
public maxRetryCount: number;
|
|
182
198
|
private priorityQueue: Array<Texture> = [];
|
|
183
199
|
private uploadTextureQueue: Array<Texture> = [];
|
|
184
200
|
private initialized = false;
|
|
185
201
|
private stage: Stage;
|
|
186
202
|
private numImageWorkers: number;
|
|
187
203
|
|
|
204
|
+
public platform: Platform;
|
|
205
|
+
|
|
188
206
|
imageWorkerManager: ImageWorkerManager | null = null;
|
|
189
|
-
hasCreateImageBitmap =
|
|
207
|
+
hasCreateImageBitmap = false;
|
|
190
208
|
imageBitmapSupported = {
|
|
191
209
|
basic: false,
|
|
192
210
|
options: false,
|
|
@@ -217,16 +235,20 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
217
235
|
constructor(stage: Stage, settings: TextureManagerSettings) {
|
|
218
236
|
super();
|
|
219
237
|
|
|
220
|
-
const { numImageWorkers, createImageBitmapSupport } =
|
|
238
|
+
const { numImageWorkers, createImageBitmapSupport, maxRetryCount } =
|
|
239
|
+
settings;
|
|
240
|
+
|
|
221
241
|
this.stage = stage;
|
|
242
|
+
this.platform = stage.platform;
|
|
222
243
|
this.numImageWorkers = numImageWorkers;
|
|
244
|
+
this.maxRetryCount = maxRetryCount;
|
|
223
245
|
|
|
224
246
|
if (createImageBitmapSupport === 'auto') {
|
|
225
|
-
validateCreateImageBitmap()
|
|
247
|
+
validateCreateImageBitmap(this.platform)
|
|
226
248
|
.then((result) => {
|
|
227
249
|
this.initialize(result);
|
|
228
250
|
})
|
|
229
|
-
.catch((
|
|
251
|
+
.catch(() => {
|
|
230
252
|
console.warn(
|
|
231
253
|
'[Lightning] createImageBitmap is not supported on this browser. ImageTexture will be slower.',
|
|
232
254
|
);
|
|
@@ -262,15 +284,15 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
262
284
|
support.basic || support.options || support.full;
|
|
263
285
|
this.imageBitmapSupported = support;
|
|
264
286
|
|
|
265
|
-
if (
|
|
287
|
+
if (this.hasCreateImageBitmap === false) {
|
|
266
288
|
console.warn(
|
|
267
289
|
'[Lightning] createImageBitmap is not supported on this browser. ImageTexture will be slower.',
|
|
268
290
|
);
|
|
269
291
|
}
|
|
270
292
|
|
|
271
293
|
if (
|
|
272
|
-
this.hasCreateImageBitmap &&
|
|
273
|
-
this.hasWorker &&
|
|
294
|
+
this.hasCreateImageBitmap === true &&
|
|
295
|
+
this.hasWorker === true &&
|
|
274
296
|
this.numImageWorkers > 0
|
|
275
297
|
) {
|
|
276
298
|
this.imageWorkerManager = new ImageWorkerManager(
|
|
@@ -287,15 +309,6 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
287
309
|
this.emit('initialized');
|
|
288
310
|
}
|
|
289
311
|
|
|
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
312
|
/**
|
|
300
313
|
* Enqueue a texture for uploading to the GPU.
|
|
301
314
|
*
|
|
@@ -322,14 +335,14 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
322
335
|
if (!TextureClass) {
|
|
323
336
|
throw new Error(`Texture type "${textureType}" is not registered`);
|
|
324
337
|
}
|
|
325
|
-
|
|
326
|
-
const cacheKey = TextureClass.makeCacheKey(
|
|
338
|
+
const resolvedProps = TextureClass.resolveDefaults(props as any);
|
|
339
|
+
const cacheKey = TextureClass.makeCacheKey(resolvedProps as any);
|
|
327
340
|
if (cacheKey && this.keyCache.has(cacheKey)) {
|
|
328
341
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
329
342
|
texture = this.keyCache.get(cacheKey)!;
|
|
330
343
|
} else {
|
|
331
344
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
|
|
332
|
-
texture = new TextureClass(this,
|
|
345
|
+
texture = new TextureClass(this, resolvedProps as any);
|
|
333
346
|
|
|
334
347
|
if (cacheKey) {
|
|
335
348
|
this.initTextureToCache(texture, cacheKey);
|
|
@@ -339,25 +352,13 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
339
352
|
return texture as InstanceType<TextureMap[Type]>;
|
|
340
353
|
}
|
|
341
354
|
|
|
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
355
|
/**
|
|
355
356
|
* Override loadTexture to use the batched approach.
|
|
356
357
|
*
|
|
357
358
|
* @param texture - The texture to load
|
|
358
359
|
* @param immediate - Whether to prioritize the texture for immediate loading
|
|
359
360
|
*/
|
|
360
|
-
loadTexture(texture: Texture, priority?: boolean): void {
|
|
361
|
+
async loadTexture(texture: Texture, priority?: boolean): Promise<void> {
|
|
361
362
|
this.stage.txMemManager.removeFromOrphanedTextures(texture);
|
|
362
363
|
|
|
363
364
|
if (texture.type === TextureType.subTexture) {
|
|
@@ -365,87 +366,80 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
365
366
|
return;
|
|
366
367
|
}
|
|
367
368
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
texture.ctxTexture !== undefined &&
|
|
371
|
-
texture.ctxTexture.state === 'loaded'
|
|
372
|
-
) {
|
|
373
|
-
texture.setState('loaded');
|
|
369
|
+
if (texture.state === 'loaded') {
|
|
370
|
+
// if the texture is already loaded, just return
|
|
374
371
|
return;
|
|
375
372
|
}
|
|
376
373
|
|
|
377
|
-
// if the texture is already being processed, don't load it again
|
|
378
|
-
if (
|
|
379
|
-
this.downloadTextureSourceQueue.includes(texture) === true ||
|
|
380
|
-
this.uploadTextureQueue.includes(texture) === true
|
|
381
|
-
) {
|
|
382
|
-
return;
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
// if the texture is already loading, free it, this can happen if the texture is
|
|
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
|
-
}
|
|
395
|
-
|
|
396
|
-
// else we will have to re-download the texture
|
|
397
|
-
texture.free();
|
|
398
|
-
}
|
|
399
|
-
|
|
400
374
|
// if we're not initialized, just queue the texture into the priority queue
|
|
401
375
|
if (this.initialized === false) {
|
|
402
376
|
this.priorityQueue.push(texture);
|
|
403
377
|
return;
|
|
404
378
|
}
|
|
405
379
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
//
|
|
409
|
-
|
|
410
|
-
(
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
)
|
|
414
|
-
|
|
415
|
-
|
|
380
|
+
texture.setState('loading');
|
|
381
|
+
|
|
382
|
+
// Get texture data - early return on failure
|
|
383
|
+
const textureDataResult = await texture.getTextureData().catch((err) => {
|
|
384
|
+
console.error(err);
|
|
385
|
+
texture.setState('failed');
|
|
386
|
+
return null;
|
|
387
|
+
});
|
|
388
|
+
|
|
389
|
+
// Early return if texture data fetch failed
|
|
390
|
+
if (textureDataResult === null || texture.state === 'failed') {
|
|
416
391
|
return;
|
|
417
392
|
}
|
|
418
393
|
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
if (
|
|
423
|
-
texture
|
|
424
|
-
.
|
|
425
|
-
.
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
.catch((err) => {
|
|
429
|
-
console.error(err);
|
|
430
|
-
});
|
|
394
|
+
// Handle non-image textures: upload immediately
|
|
395
|
+
const shouldUploadImmediately =
|
|
396
|
+
texture.type !== TextureType.image || priority === true;
|
|
397
|
+
if (shouldUploadImmediately === true) {
|
|
398
|
+
await this.uploadTexture(texture).catch((err) => {
|
|
399
|
+
console.error(`Failed to upload texture:`, err);
|
|
400
|
+
texture.setState('failed');
|
|
401
|
+
});
|
|
402
|
+
return;
|
|
431
403
|
}
|
|
432
404
|
|
|
433
|
-
//
|
|
434
|
-
this.
|
|
405
|
+
// Queue image textures for throttled upload
|
|
406
|
+
this.enqueueUploadTexture(texture);
|
|
435
407
|
}
|
|
436
408
|
|
|
437
409
|
/**
|
|
438
410
|
* Upload a texture to the GPU
|
|
439
411
|
*
|
|
440
412
|
* @param texture Texture to upload
|
|
413
|
+
* @returns Promise that resolves when the texture is fully loaded
|
|
441
414
|
*/
|
|
442
|
-
uploadTexture(texture: Texture): void {
|
|
415
|
+
async uploadTexture(texture: Texture): Promise<void> {
|
|
443
416
|
if (
|
|
444
417
|
this.stage.txMemManager.doNotExceedCriticalThreshold === true &&
|
|
445
418
|
this.stage.txMemManager.criticalCleanupRequested === true
|
|
446
419
|
) {
|
|
447
420
|
// we're at a critical memory threshold, don't upload textures
|
|
448
|
-
|
|
421
|
+
texture.setState('failed');
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
if (texture.state === 'failed' || texture.state === 'freed') {
|
|
426
|
+
// don't upload failed or freed textures
|
|
427
|
+
return;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
if (texture.state === 'loaded') {
|
|
431
|
+
// already loaded
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
if (texture.textureData === null) {
|
|
436
|
+
texture.setState(
|
|
437
|
+
'failed',
|
|
438
|
+
new TextureError(
|
|
439
|
+
TextureErrorCode.TEXTURE_DATA_NULL,
|
|
440
|
+
'Texture data is null, cannot upload texture',
|
|
441
|
+
),
|
|
442
|
+
);
|
|
449
443
|
return;
|
|
450
444
|
}
|
|
451
445
|
|
|
@@ -455,72 +449,63 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
455
449
|
return;
|
|
456
450
|
}
|
|
457
451
|
|
|
458
|
-
coreContext.load();
|
|
452
|
+
await coreContext.load();
|
|
459
453
|
}
|
|
460
454
|
|
|
461
455
|
/**
|
|
462
456
|
* Check if a texture is being processed
|
|
463
457
|
*/
|
|
464
458
|
isProcessingTexture(texture: Texture): boolean {
|
|
465
|
-
return (
|
|
466
|
-
this.downloadTextureSourceQueue.includes(texture) === true ||
|
|
467
|
-
this.uploadTextureQueue.includes(texture) === true
|
|
468
|
-
);
|
|
459
|
+
return this.uploadTextureQueue.includes(texture) === true;
|
|
469
460
|
}
|
|
470
461
|
|
|
471
462
|
/**
|
|
472
|
-
* Process a limited number of
|
|
463
|
+
* Process a limited number of uploads.
|
|
473
464
|
*
|
|
474
|
-
* @param
|
|
465
|
+
* @param maxProcessingTime - The maximum processing time in milliseconds
|
|
475
466
|
*/
|
|
476
|
-
processSome(maxProcessingTime: number): void {
|
|
467
|
+
async processSome(maxProcessingTime: number): Promise<void> {
|
|
477
468
|
if (this.initialized === false) {
|
|
478
469
|
return;
|
|
479
470
|
}
|
|
480
471
|
|
|
481
|
-
const
|
|
472
|
+
const platform = this.platform;
|
|
473
|
+
const startTime = platform.getTimeStamp();
|
|
482
474
|
|
|
483
475
|
// Process priority queue
|
|
484
476
|
while (
|
|
485
477
|
this.priorityQueue.length > 0 &&
|
|
486
|
-
getTimeStamp() - startTime < maxProcessingTime
|
|
478
|
+
platform.getTimeStamp() - startTime < maxProcessingTime
|
|
487
479
|
) {
|
|
488
480
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
489
481
|
const texture = this.priorityQueue.pop()!;
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
482
|
+
try {
|
|
483
|
+
await texture.getTextureData();
|
|
484
|
+
await this.uploadTexture(texture);
|
|
485
|
+
} catch (error) {
|
|
486
|
+
console.error('Failed to process priority texture:', error);
|
|
487
|
+
// Continue with next texture instead of stopping entire queue
|
|
488
|
+
}
|
|
493
489
|
}
|
|
494
490
|
|
|
495
|
-
// Process uploads
|
|
491
|
+
// Process uploads - await each upload to prevent GPU overload
|
|
496
492
|
while (
|
|
497
493
|
this.uploadTextureQueue.length > 0 &&
|
|
498
|
-
getTimeStamp() - startTime < maxProcessingTime
|
|
494
|
+
platform.getTimeStamp() - startTime < maxProcessingTime
|
|
499
495
|
) {
|
|
500
496
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
501
|
-
this.
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
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);
|
|
514
|
-
}
|
|
515
|
-
});
|
|
497
|
+
const texture = this.uploadTextureQueue.shift()!;
|
|
498
|
+
try {
|
|
499
|
+
await this.uploadTexture(texture);
|
|
500
|
+
} catch (error) {
|
|
501
|
+
console.error('Failed to upload texture:', error);
|
|
502
|
+
// Continue with next texture instead of stopping entire queue
|
|
503
|
+
}
|
|
516
504
|
}
|
|
517
505
|
}
|
|
518
506
|
|
|
519
507
|
public hasUpdates(): boolean {
|
|
520
|
-
return
|
|
521
|
-
this.downloadTextureSourceQueue.length > 0 ||
|
|
522
|
-
this.uploadTextureQueue.length > 0
|
|
523
|
-
);
|
|
508
|
+
return this.uploadTextureQueue.length > 0;
|
|
524
509
|
}
|
|
525
510
|
|
|
526
511
|
/**
|
|
@@ -561,16 +546,11 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
561
546
|
}
|
|
562
547
|
|
|
563
548
|
/**
|
|
564
|
-
* Remove texture from the queue
|
|
549
|
+
* Remove texture from the upload queue
|
|
565
550
|
*
|
|
566
551
|
* @param texture - The texture to remove
|
|
567
552
|
*/
|
|
568
553
|
removeTextureFromQueue(texture: Texture): void {
|
|
569
|
-
const downloadIndex = this.downloadTextureSourceQueue.indexOf(texture);
|
|
570
|
-
if (downloadIndex !== -1) {
|
|
571
|
-
this.downloadTextureSourceQueue.splice(downloadIndex, 1);
|
|
572
|
-
}
|
|
573
|
-
|
|
574
554
|
const uploadIndex = this.uploadTextureQueue.indexOf(texture);
|
|
575
555
|
if (uploadIndex !== -1) {
|
|
576
556
|
this.uploadTextureQueue.splice(uploadIndex, 1);
|