@lightningjs/renderer 3.0.0-beta18 → 3.0.0-beta19
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/dist/src/core/Autosizer.d.ts +29 -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 +44 -26
- package/dist/src/core/CoreNode.js +253 -150
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +1 -0
- package/dist/src/core/CoreTextNode.js +8 -4
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +16 -2
- package/dist/src/core/CoreTextureManager.js +38 -51
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +18 -2
- package/dist/src/core/Stage.js +44 -14
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +2 -4
- package/dist/src/core/TextureMemoryManager.js +80 -95
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +11 -0
- package/dist/src/core/lib/WebGlContextWrapper.js +34 -0
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- 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/platforms/web/WebPlatform.js +2 -2
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
- package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -0
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +3 -1
- 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 +6 -0
- package/dist/src/core/renderers/CoreShaderNode.js +2 -0
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +1 -0
- package/dist/src/core/renderers/canvas/CanvasTexture.js +4 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +6 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +11 -0
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +51 -14
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +2 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +2 -0
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +57 -61
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +1 -0
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +12 -0
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +3 -1
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +3 -2
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +3 -2
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +2 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/text-rendering/SdfFontHandler.js +1 -1
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +2 -3
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +7 -1
- package/dist/src/core/textures/ImageTexture.js +20 -36
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +1 -1
- package/dist/src/core/textures/NoiseTexture.js +2 -2
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +1 -1
- package/dist/src/core/textures/RenderTexture.js +2 -2
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +2 -4
- package/dist/src/core/textures/SubTexture.js +13 -31
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +67 -8
- package/dist/src/core/textures/Texture.js +127 -15
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +15 -2
- package/dist/src/main-api/Renderer.js +19 -12
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/core/CoreNode.test.ts +0 -1
- package/src/core/CoreNode.ts +296 -177
- package/src/core/CoreTextNode.ts +9 -4
- package/src/core/CoreTextureManager.ts +69 -57
- package/src/core/Stage.ts +51 -17
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +95 -122
- package/src/core/lib/WebGlContextWrapper.ts +40 -0
- package/src/core/lib/collectionUtils.ts +118 -0
- package/src/core/lib/textureCompression.ts +433 -77
- package/src/core/platforms/web/WebPlatform.ts +2 -2
- package/src/core/renderers/CoreContextTexture.ts +1 -0
- package/src/core/renderers/CoreRenderer.ts +3 -2
- package/src/core/renderers/CoreShaderNode.ts +7 -0
- package/src/core/renderers/canvas/CanvasTexture.ts +5 -1
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +8 -0
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +58 -15
- package/src/core/renderers/webgl/WebGlRenderOp.ts +4 -1
- package/src/core/renderers/webgl/WebGlRenderer.ts +66 -68
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +16 -0
- package/src/core/shaders/webgl/Rounded.ts +3 -1
- package/src/core/shaders/webgl/RoundedWithBorder.ts +3 -2
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +3 -2
- package/src/core/shaders/webgl/RoundedWithShadow.ts +2 -1
- package/src/core/text-rendering/SdfFontHandler.ts +1 -1
- package/src/core/textures/ColorTexture.ts +6 -4
- package/src/core/textures/ImageTexture.ts +35 -42
- package/src/core/textures/NoiseTexture.ts +6 -4
- package/src/core/textures/RenderTexture.ts +6 -4
- package/src/core/textures/SubTexture.ts +17 -38
- package/src/core/textures/Texture.ts +159 -20
- package/src/main-api/Renderer.ts +36 -14
- package/dist/src/core/AutosizeManager.d.ts +0 -29
- package/dist/src/core/AutosizeManager.js +0 -171
- package/dist/src/core/AutosizeManager.js.map +0 -1
- package/dist/src/core/animations/Animation.d.ts +0 -16
- package/dist/src/core/animations/Animation.js +0 -111
- package/dist/src/core/animations/Animation.js.map +0 -1
- package/dist/src/core/animations/CoreTransition.d.ts +0 -24
- package/dist/src/core/animations/CoreTransition.js +0 -63
- package/dist/src/core/animations/CoreTransition.js.map +0 -1
- package/dist/src/core/animations/Playback.d.ts +0 -62
- package/dist/src/core/animations/Playback.js +0 -155
- package/dist/src/core/animations/Playback.js.map +0 -1
- package/dist/src/core/animations/Transition.d.ts +0 -25
- package/dist/src/core/animations/Transition.js +0 -63
- package/dist/src/core/animations/Transition.js.map +0 -1
- package/dist/src/core/animations/utils.d.ts +0 -2
- package/dist/src/core/animations/utils.js +0 -137
- package/dist/src/core/animations/utils.js.map +0 -1
- package/dist/src/core/platform.d.ts +0 -10
- package/dist/src/core/platform.js +0 -81
- package/dist/src/core/platform.js.map +0 -1
- package/dist/src/core/renderers/CoreShader.d.ts +0 -9
- package/dist/src/core/renderers/CoreShader.js +0 -28
- package/dist/src/core/renderers/CoreShader.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -17
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -125
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -14
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -138
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -19
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -58
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -58
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -69
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -272
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -645
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -78
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -202
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -84
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -108
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -408
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -126
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -148
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -134
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -40
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -143
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
- package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
- package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
- package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
- package/dist/src/core/text-rendering/TrFontManager.js +0 -131
- package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
- package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -120
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -92
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -607
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -373
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
- package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
- package/dist/src/main-api/DynamicShaderController.js +0 -58
- package/dist/src/main-api/DynamicShaderController.js.map +0 -1
- package/dist/src/main-api/ShaderController.d.ts +0 -31
- package/dist/src/main-api/ShaderController.js +0 -37
- package/dist/src/main-api/ShaderController.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/RenderTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAoB,MAAM,cAAc,CAAC;AAmBtE,MAAM,OAAO,aAAc,SAAQ,OAAO;IACxC,KAAK,CAA+B;IAEpB,IAAI,GAAgB,WAAW,CAAC,eAAe,CAAC;IAEhE,
|
|
1
|
+
{"version":3,"file":"RenderTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/RenderTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAoB,MAAM,cAAc,CAAC;AAmBtE,MAAM,OAAO,aAAc,SAAQ,OAAO;IACxC,KAAK,CAA+B;IAEpB,IAAI,GAAgB,WAAW,CAAC,eAAe,CAAC;IAEhE,YACE,SAA6B,EAC7B,KAAmC;QAEnC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,CAAC,KAAa;QACjB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,CAAC,KAAa;QACjB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IAEQ,KAAK,CAAC,gBAAgB;QAC7B,mEAAmE;QACnE,OAAO;YACL,IAAI,EAAE,IAAI;YACV,gBAAgB,EAAE,IAAI;SACvB,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,eAAe,CAC7B,KAAyB;QAEzB,OAAO;YACL,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG;YACjB,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG;SAClB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,eAAe,CAAqB;CAC5C"}
|
|
@@ -47,14 +47,12 @@ export declare class SubTexture extends Texture {
|
|
|
47
47
|
props: Required<SubTextureProps>;
|
|
48
48
|
parentTexture: Texture;
|
|
49
49
|
type: TextureType;
|
|
50
|
-
|
|
50
|
+
subtextureId: string;
|
|
51
|
+
constructor(txManager: CoreTextureManager, props: Required<SubTextureProps>);
|
|
51
52
|
private onParentTxLoaded;
|
|
52
53
|
private onParentTxFailed;
|
|
53
|
-
private onParentTxFetched;
|
|
54
|
-
private onParentTxFetching;
|
|
55
54
|
private onParentTxLoading;
|
|
56
55
|
private onParentTxFreed;
|
|
57
|
-
private forwardParentTxState;
|
|
58
56
|
onChangeIsRenderable(isRenderable: boolean): void;
|
|
59
57
|
getTextureSource(): Promise<TextureData>;
|
|
60
58
|
static makeCacheKey(props: SubTextureProps): string | false;
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
import { assertTruthy } from '../../utils.js';
|
|
20
20
|
import { ImageTexture } from './ImageTexture.js';
|
|
21
21
|
import { Texture, TextureType, } from './Texture.js';
|
|
22
|
+
let subTextureId = 0;
|
|
22
23
|
/**
|
|
23
24
|
* A Texture that is a sub-region of another Texture.
|
|
24
25
|
*
|
|
@@ -33,15 +34,16 @@ export class SubTexture extends Texture {
|
|
|
33
34
|
props;
|
|
34
35
|
parentTexture;
|
|
35
36
|
type = TextureType.subTexture;
|
|
37
|
+
subtextureId = `subtexture-${subTextureId++}`;
|
|
36
38
|
constructor(txManager, props) {
|
|
37
39
|
super(txManager);
|
|
38
|
-
this.props =
|
|
40
|
+
this.props = props;
|
|
39
41
|
assertTruthy(this.props.texture, 'SubTexture requires a parent texture');
|
|
40
42
|
assertTruthy(this.props.texture instanceof ImageTexture, 'SubTexture requires an ImageTexture parent');
|
|
41
43
|
// Resolve parent texture from cache or fallback to provided texture
|
|
42
44
|
this.parentTexture = txManager.resolveParentTexture(this.props.texture);
|
|
43
|
-
if (this.renderableOwners.
|
|
44
|
-
this.parentTexture.setRenderableOwner(this, true);
|
|
45
|
+
if (this.renderableOwners.length > 0) {
|
|
46
|
+
this.parentTexture.setRenderableOwner(this.subtextureId, true);
|
|
45
47
|
}
|
|
46
48
|
// If parent texture is already loaded / failed, trigger loaded event manually
|
|
47
49
|
// so that users get a consistent event experience.
|
|
@@ -49,27 +51,19 @@ export class SubTexture extends Texture {
|
|
|
49
51
|
// synchronous task after calling loadTexture()
|
|
50
52
|
queueMicrotask(() => {
|
|
51
53
|
const parentTx = this.parentTexture;
|
|
52
|
-
if (parentTx.state === 'loaded') {
|
|
54
|
+
if (parentTx.state === 'loaded' && parentTx.dimensions !== null) {
|
|
53
55
|
this.onParentTxLoaded(parentTx, parentTx.dimensions);
|
|
54
56
|
}
|
|
55
|
-
else if (parentTx.state === 'fetching') {
|
|
56
|
-
this.onParentTxFetching();
|
|
57
|
-
}
|
|
58
|
-
else if (parentTx.state === 'fetched') {
|
|
59
|
-
this.onParentTxFetched();
|
|
60
|
-
}
|
|
61
57
|
else if (parentTx.state === 'loading') {
|
|
62
58
|
this.onParentTxLoading();
|
|
63
59
|
}
|
|
64
|
-
else if (parentTx.state === 'failed') {
|
|
60
|
+
else if (parentTx.state === 'failed' && parentTx.error !== null) {
|
|
65
61
|
this.onParentTxFailed(parentTx, parentTx.error);
|
|
66
62
|
}
|
|
67
63
|
else if (parentTx.state === 'freed') {
|
|
68
64
|
this.onParentTxFreed();
|
|
69
65
|
}
|
|
70
|
-
parentTx.on('fetched', this.onParentTxFetched);
|
|
71
66
|
parentTx.on('loading', this.onParentTxLoading);
|
|
72
|
-
parentTx.on('fetching', this.onParentTxFetching);
|
|
73
67
|
parentTx.on('loaded', this.onParentTxLoaded);
|
|
74
68
|
parentTx.on('failed', this.onParentTxFailed);
|
|
75
69
|
parentTx.on('freed', this.onParentTxFreed);
|
|
@@ -78,40 +72,28 @@ export class SubTexture extends Texture {
|
|
|
78
72
|
onParentTxLoaded = () => {
|
|
79
73
|
// We ignore the parent's passed dimensions, and simply use the SubTexture's
|
|
80
74
|
// configured dimensions (because that's all that matters here)
|
|
81
|
-
this.
|
|
75
|
+
this.setState('loaded', {
|
|
82
76
|
w: this.props.w,
|
|
83
77
|
h: this.props.h,
|
|
84
78
|
});
|
|
85
79
|
};
|
|
86
80
|
onParentTxFailed = (target, error) => {
|
|
87
|
-
this.
|
|
88
|
-
|
|
89
|
-
onParentTxFetched = () => {
|
|
90
|
-
this.forwardParentTxState('fetched', {
|
|
91
|
-
w: this.props.w,
|
|
92
|
-
h: this.props.h,
|
|
93
|
-
});
|
|
94
|
-
};
|
|
95
|
-
onParentTxFetching = () => {
|
|
96
|
-
this.forwardParentTxState('fetching');
|
|
81
|
+
this.retryCount = this.parentTexture.retryCount - 1;
|
|
82
|
+
this.setState('failed', error);
|
|
97
83
|
};
|
|
98
84
|
onParentTxLoading = () => {
|
|
99
|
-
this.
|
|
85
|
+
this.setState('loading');
|
|
100
86
|
};
|
|
101
87
|
onParentTxFreed = () => {
|
|
102
|
-
this.
|
|
88
|
+
this.setState('freed');
|
|
103
89
|
};
|
|
104
|
-
forwardParentTxState(state, errorOrDimensions) {
|
|
105
|
-
this.setState(state, errorOrDimensions);
|
|
106
|
-
}
|
|
107
90
|
onChangeIsRenderable(isRenderable) {
|
|
108
91
|
// Propagate the renderable owner change to the parent texture
|
|
109
|
-
this.parentTexture.setRenderableOwner(this, isRenderable);
|
|
92
|
+
this.parentTexture.setRenderableOwner(this.subtextureId, isRenderable);
|
|
110
93
|
}
|
|
111
94
|
async getTextureSource() {
|
|
112
95
|
// Check if parent texture is loaded
|
|
113
96
|
return new Promise((resolve, reject) => {
|
|
114
|
-
this.setState('fetched');
|
|
115
97
|
resolve({
|
|
116
98
|
data: this.props,
|
|
117
99
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/SubTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,OAAO,EACP,WAAW,GAKZ,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"SubTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/SubTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,OAAO,EACP,WAAW,GAKZ,MAAM,cAAc,CAAC;AAEtB,IAAI,YAAY,GAAG,CAAC,CAAC;AAwCrB;;;;;;;;;GASG;AACH,MAAM,OAAO,UAAW,SAAQ,OAAO;IACrC,KAAK,CAA4B;IACjC,aAAa,CAAU;IAEP,IAAI,GAAgB,WAAW,CAAC,UAAU,CAAC;IACpD,YAAY,GAAG,cAAc,YAAY,EAAE,EAAE,CAAC;IAErD,YAAY,SAA6B,EAAE,KAAgC;QACzE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,sCAAsC,CAAC,CAAC;QACzE,YAAY,CACV,IAAI,CAAC,KAAK,CAAC,OAAO,YAAY,YAAY,EAC1C,4CAA4C,CAC7C,CAAC;QAEF,oEAAoE;QACpE,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAExE,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACjE,CAAC;QAED,8EAA8E;QAC9E,mDAAmD;QACnD,0EAA0E;QAC1E,+CAA+C;QAC/C,cAAc,CAAC,GAAG,EAAE;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;YACpC,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAChE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBAClE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClD,CAAC;iBAAM,IAAI,QAAQ,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;gBACtC,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,CAAC;YAED,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/C,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC7C,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC7C,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB,GAA8B,GAAG,EAAE;QACzD,4EAA4E;QAC5E,+DAA+D;QAC/D,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YACtB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACf,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAChB,CAAC,CAAC;IACL,CAAC,CAAC;IAEM,gBAAgB,GAA8B,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACtE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC;IAEM,iBAAiB,GAAG,GAAG,EAAE;QAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEM,eAAe,GAAG,GAAG,EAAE;QAC7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC;IAEO,oBAAoB,CAAC,YAAqB;QACjD,8DAA8D;QAC9D,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACzE,CAAC;IAEQ,KAAK,CAAC,gBAAgB;QAC7B,oCAAoC;QACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,OAAO,CAAC;gBACN,IAAI,EAAE,IAAI,CAAC,KAAK;aACjB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAU,YAAY,CAAC,KAAsB;QACjD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAU,eAAe,CAC7B,KAAsB;QAEtB,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;YACf,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;YACf,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;YACf,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;SAChB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,eAAe,CAAkB;CACzC"}
|
|
@@ -27,11 +27,11 @@ export interface CompressedData {
|
|
|
27
27
|
/**
|
|
28
28
|
* All mipmap levels
|
|
29
29
|
*/
|
|
30
|
-
mipmaps
|
|
30
|
+
mipmaps: ArrayBuffer[];
|
|
31
31
|
/**
|
|
32
32
|
* Supported container types ('pvr' or 'ktx').
|
|
33
33
|
*/
|
|
34
|
-
type: 'pvr' | 'ktx';
|
|
34
|
+
type: 'pvr' | 'ktx' | 'astc';
|
|
35
35
|
/**
|
|
36
36
|
* The width of the compressed texture in pixels. Defaults to 0.
|
|
37
37
|
*
|
|
@@ -42,6 +42,14 @@ export interface CompressedData {
|
|
|
42
42
|
* The height of the compressed texture in pixels.
|
|
43
43
|
**/
|
|
44
44
|
h: number;
|
|
45
|
+
/**
|
|
46
|
+
* block info compressed texture format
|
|
47
|
+
*/
|
|
48
|
+
blockInfo: {
|
|
49
|
+
width: number;
|
|
50
|
+
height: number;
|
|
51
|
+
bytes: number;
|
|
52
|
+
};
|
|
45
53
|
}
|
|
46
54
|
/**
|
|
47
55
|
* Event handler for when a Texture fails to load
|
|
@@ -95,20 +103,50 @@ export declare abstract class Texture extends EventEmitter {
|
|
|
95
103
|
*/
|
|
96
104
|
private _dimensions;
|
|
97
105
|
private _error;
|
|
98
|
-
/**
|
|
99
|
-
* Texture states that are considered transitional and should be skipped during cleanup
|
|
100
|
-
*/
|
|
101
|
-
static readonly TRANSITIONAL_TEXTURE_STATES: readonly TextureState[];
|
|
102
106
|
state: TextureState;
|
|
103
|
-
readonly renderableOwners:
|
|
107
|
+
readonly renderableOwners: any[];
|
|
104
108
|
readonly renderable: boolean;
|
|
105
109
|
type: TextureType;
|
|
106
110
|
preventCleanup: boolean;
|
|
107
111
|
ctxTexture: CoreContextTexture | undefined;
|
|
108
112
|
textureData: TextureData | null;
|
|
113
|
+
memUsed: number;
|
|
114
|
+
/**
|
|
115
|
+
* Memory used by this texture in bytes
|
|
116
|
+
*
|
|
117
|
+
* @remarks
|
|
118
|
+
* This is tracked by the TextureMemoryManager and updated when the texture
|
|
119
|
+
* is loaded/freed. Set to 0 when texture is not loaded.
|
|
120
|
+
*/
|
|
121
|
+
retryCount: number;
|
|
122
|
+
maxRetryCount: number;
|
|
123
|
+
/**
|
|
124
|
+
* Timestamp when texture was created (for startup grace period)
|
|
125
|
+
*/
|
|
126
|
+
private createdAt;
|
|
127
|
+
/**
|
|
128
|
+
* Flag to track if grace period has expired to avoid repeated Date.now() calls
|
|
129
|
+
*/
|
|
130
|
+
private gracePeriodExpired;
|
|
131
|
+
/**
|
|
132
|
+
* Grace period in milliseconds to prevent premature cleanup during app startup
|
|
133
|
+
* This helps prevent race conditions when bounds calculation is delayed
|
|
134
|
+
*/
|
|
135
|
+
private static readonly STARTUP_GRACE_PERIOD;
|
|
109
136
|
constructor(txManager: CoreTextureManager);
|
|
110
137
|
get dimensions(): Dimensions | null;
|
|
111
138
|
get error(): Error | null;
|
|
139
|
+
/**
|
|
140
|
+
* Checks if the texture is within the startup grace period.
|
|
141
|
+
* During this period, textures are protected from cleanup to prevent
|
|
142
|
+
* race conditions during app initialization.
|
|
143
|
+
*/
|
|
144
|
+
isWithinStartupGracePeriod(): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Checks if the texture can be safely cleaned up.
|
|
147
|
+
* Considers the renderable state, startup grace period, and renderable owners.
|
|
148
|
+
*/
|
|
149
|
+
canBeCleanedUp(): boolean;
|
|
112
150
|
/**
|
|
113
151
|
* Add/remove an owner to/from the Texture based on its renderability.
|
|
114
152
|
*
|
|
@@ -123,7 +161,7 @@ export declare abstract class Texture extends EventEmitter {
|
|
|
123
161
|
* @param owner
|
|
124
162
|
* @param renderable
|
|
125
163
|
*/
|
|
126
|
-
setRenderableOwner(owner:
|
|
164
|
+
setRenderableOwner(owner: string | number, renderable: boolean): void;
|
|
127
165
|
load(): void;
|
|
128
166
|
/**
|
|
129
167
|
* Event called when the Texture becomes renderable or unrenderable.
|
|
@@ -149,6 +187,13 @@ export declare abstract class Texture extends EventEmitter {
|
|
|
149
187
|
* The ctxTexture is created by the renderer and lives on the GPU.
|
|
150
188
|
*/
|
|
151
189
|
free(): void;
|
|
190
|
+
/**
|
|
191
|
+
* Release the texture data and core context texture for this Texture without changing state.
|
|
192
|
+
*
|
|
193
|
+
* @remarks
|
|
194
|
+
* The ctxTexture is created by the renderer and lives on the GPU.
|
|
195
|
+
*/
|
|
196
|
+
release(): void;
|
|
152
197
|
/**
|
|
153
198
|
* Destroy the texture.
|
|
154
199
|
*
|
|
@@ -177,6 +222,20 @@ export declare abstract class Texture extends EventEmitter {
|
|
|
177
222
|
* The texture data for this texture.
|
|
178
223
|
*/
|
|
179
224
|
getTextureData(): Promise<TextureData>;
|
|
225
|
+
/**
|
|
226
|
+
* Task for queueMicrotask to free texture data.
|
|
227
|
+
*
|
|
228
|
+
* @remarks
|
|
229
|
+
* This method is called in a microtask to free the texture data.
|
|
230
|
+
*/
|
|
231
|
+
private freeTextureDataTask;
|
|
232
|
+
/**
|
|
233
|
+
* Task for queueMicrotask to release the texture.
|
|
234
|
+
*
|
|
235
|
+
* @remarks
|
|
236
|
+
* This method is called in a microtask to release the texture.
|
|
237
|
+
*/
|
|
238
|
+
private releaseTask;
|
|
180
239
|
/**
|
|
181
240
|
* Get the texture source for this texture.
|
|
182
241
|
*
|
|
@@ -46,21 +46,41 @@ export class Texture extends EventEmitter {
|
|
|
46
46
|
*/
|
|
47
47
|
_dimensions = null;
|
|
48
48
|
_error = null;
|
|
49
|
-
/**
|
|
50
|
-
* Texture states that are considered transitional and should be skipped during cleanup
|
|
51
|
-
*/
|
|
52
|
-
static TRANSITIONAL_TEXTURE_STATES = ['fetching', 'fetched', 'loading'];
|
|
53
49
|
// aggregate state
|
|
54
50
|
state = 'initial';
|
|
55
|
-
renderableOwners =
|
|
51
|
+
renderableOwners = [];
|
|
56
52
|
renderable = false;
|
|
57
53
|
type = TextureType.generic;
|
|
58
54
|
preventCleanup = false;
|
|
59
55
|
ctxTexture;
|
|
60
56
|
textureData = null;
|
|
57
|
+
memUsed = 0;
|
|
58
|
+
/**
|
|
59
|
+
* Memory used by this texture in bytes
|
|
60
|
+
*
|
|
61
|
+
* @remarks
|
|
62
|
+
* This is tracked by the TextureMemoryManager and updated when the texture
|
|
63
|
+
* is loaded/freed. Set to 0 when texture is not loaded.
|
|
64
|
+
*/
|
|
65
|
+
retryCount = 0;
|
|
66
|
+
maxRetryCount;
|
|
67
|
+
/**
|
|
68
|
+
* Timestamp when texture was created (for startup grace period)
|
|
69
|
+
*/
|
|
70
|
+
createdAt = Date.now();
|
|
71
|
+
/**
|
|
72
|
+
* Flag to track if grace period has expired to avoid repeated Date.now() calls
|
|
73
|
+
*/
|
|
74
|
+
gracePeriodExpired = false;
|
|
75
|
+
/**
|
|
76
|
+
* Grace period in milliseconds to prevent premature cleanup during app startup
|
|
77
|
+
* This helps prevent race conditions when bounds calculation is delayed
|
|
78
|
+
*/
|
|
79
|
+
static STARTUP_GRACE_PERIOD = 2000; // 2 seconds
|
|
61
80
|
constructor(txManager) {
|
|
62
81
|
super();
|
|
63
82
|
this.txManager = txManager;
|
|
83
|
+
this.maxRetryCount = this.txManager.maxRetryCount;
|
|
64
84
|
}
|
|
65
85
|
get dimensions() {
|
|
66
86
|
return this._dimensions;
|
|
@@ -68,6 +88,49 @@ export class Texture extends EventEmitter {
|
|
|
68
88
|
get error() {
|
|
69
89
|
return this._error;
|
|
70
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Checks if the texture is within the startup grace period.
|
|
93
|
+
* During this period, textures are protected from cleanup to prevent
|
|
94
|
+
* race conditions during app initialization.
|
|
95
|
+
*/
|
|
96
|
+
isWithinStartupGracePeriod() {
|
|
97
|
+
// If grace period already expired, return false immediately
|
|
98
|
+
if (this.gracePeriodExpired === true) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
// Check if grace period has expired now
|
|
102
|
+
const hasExpired = Date.now() - this.createdAt >= Texture.STARTUP_GRACE_PERIOD;
|
|
103
|
+
if (hasExpired) {
|
|
104
|
+
// Cache the result to avoid future Date.now() calls
|
|
105
|
+
this.gracePeriodExpired = true;
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Checks if the texture can be safely cleaned up.
|
|
112
|
+
* Considers the renderable state, startup grace period, and renderable owners.
|
|
113
|
+
*/
|
|
114
|
+
canBeCleanedUp() {
|
|
115
|
+
// Never cleanup if explicitly prevented
|
|
116
|
+
if (this.preventCleanup) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
// Don't cleanup if still within startup grace period
|
|
120
|
+
if (this.isWithinStartupGracePeriod()) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
// Don't cleanup if not renderable
|
|
124
|
+
if (this.renderable === true) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
// Don't cleanup if there are still renderable owners
|
|
128
|
+
if (this.renderableOwners.length > 0) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
// Safe to cleanup
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
71
134
|
/**
|
|
72
135
|
* Add/remove an owner to/from the Texture based on its renderability.
|
|
73
136
|
*
|
|
@@ -83,30 +146,38 @@ export class Texture extends EventEmitter {
|
|
|
83
146
|
* @param renderable
|
|
84
147
|
*/
|
|
85
148
|
setRenderableOwner(owner, renderable) {
|
|
86
|
-
const oldSize = this.renderableOwners.
|
|
149
|
+
const oldSize = this.renderableOwners.length;
|
|
150
|
+
const hasOwnerIndex = this.renderableOwners.indexOf(owner);
|
|
87
151
|
if (renderable === true) {
|
|
88
|
-
if (
|
|
152
|
+
if (hasOwnerIndex === -1) {
|
|
89
153
|
// Add the owner to the set
|
|
90
|
-
this.renderableOwners.
|
|
154
|
+
this.renderableOwners.push(owner);
|
|
91
155
|
}
|
|
92
|
-
const newSize = this.renderableOwners.
|
|
93
|
-
if (
|
|
156
|
+
const newSize = this.renderableOwners.length;
|
|
157
|
+
if (oldSize !== newSize && newSize === 1) {
|
|
94
158
|
this.renderable = true;
|
|
95
159
|
this.onChangeIsRenderable?.(true);
|
|
96
160
|
this.load();
|
|
97
161
|
}
|
|
98
162
|
}
|
|
99
163
|
else {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
164
|
+
if (hasOwnerIndex !== -1) {
|
|
165
|
+
this.renderableOwners.splice(hasOwnerIndex, 1);
|
|
166
|
+
}
|
|
167
|
+
const newSize = this.renderableOwners.length;
|
|
168
|
+
if (oldSize !== newSize && newSize === 0) {
|
|
103
169
|
this.renderable = false;
|
|
104
170
|
this.onChangeIsRenderable?.(false);
|
|
105
|
-
|
|
171
|
+
// note, not doing a cleanup here, cleanup is managed by the Stage/TextureMemoryManager
|
|
172
|
+
// when it deems appropriate based on memory pressure
|
|
106
173
|
}
|
|
107
174
|
}
|
|
108
175
|
}
|
|
109
176
|
load() {
|
|
177
|
+
if (this.retryCount > this.maxRetryCount) {
|
|
178
|
+
// We've exceeded the max retry count, do not attempt to load again
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
110
181
|
this.txManager.loadTexture(this);
|
|
111
182
|
}
|
|
112
183
|
/**
|
|
@@ -130,6 +201,17 @@ export class Texture extends EventEmitter {
|
|
|
130
201
|
free() {
|
|
131
202
|
this.ctxTexture?.free();
|
|
132
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Release the texture data and core context texture for this Texture without changing state.
|
|
206
|
+
*
|
|
207
|
+
* @remarks
|
|
208
|
+
* The ctxTexture is created by the renderer and lives on the GPU.
|
|
209
|
+
*/
|
|
210
|
+
release() {
|
|
211
|
+
this.ctxTexture?.release();
|
|
212
|
+
this.ctxTexture = undefined;
|
|
213
|
+
this.freeTextureData();
|
|
214
|
+
}
|
|
133
215
|
/**
|
|
134
216
|
* Destroy the texture.
|
|
135
217
|
*
|
|
@@ -153,7 +235,7 @@ export class Texture extends EventEmitter {
|
|
|
153
235
|
* e.g. ImageData that is downloaded from a URL.
|
|
154
236
|
*/
|
|
155
237
|
freeTextureData() {
|
|
156
|
-
this.
|
|
238
|
+
queueMicrotask(this.freeTextureDataTask);
|
|
157
239
|
}
|
|
158
240
|
setState(state, errorOrDimensions) {
|
|
159
241
|
if (this.state === state) {
|
|
@@ -173,6 +255,18 @@ export class Texture extends EventEmitter {
|
|
|
173
255
|
else if (state === 'failed') {
|
|
174
256
|
this._error = errorOrDimensions;
|
|
175
257
|
payload = this._error;
|
|
258
|
+
// increment the retry count for the texture
|
|
259
|
+
// this is used to compare against maxRetryCount, if set
|
|
260
|
+
// to determine if we should try loading again
|
|
261
|
+
this.retryCount += 1;
|
|
262
|
+
queueMicrotask(this.releaseTask);
|
|
263
|
+
}
|
|
264
|
+
else if (state === 'loading') {
|
|
265
|
+
this._error = null;
|
|
266
|
+
this._dimensions = null;
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
this._error = null;
|
|
176
270
|
}
|
|
177
271
|
// emit the new state
|
|
178
272
|
this.state = state;
|
|
@@ -194,6 +288,24 @@ export class Texture extends EventEmitter {
|
|
|
194
288
|
}
|
|
195
289
|
return this.textureData;
|
|
196
290
|
}
|
|
291
|
+
/**
|
|
292
|
+
* Task for queueMicrotask to free texture data.
|
|
293
|
+
*
|
|
294
|
+
* @remarks
|
|
295
|
+
* This method is called in a microtask to free the texture data.
|
|
296
|
+
*/
|
|
297
|
+
freeTextureDataTask = () => {
|
|
298
|
+
this.textureData = null;
|
|
299
|
+
};
|
|
300
|
+
/**
|
|
301
|
+
* Task for queueMicrotask to release the texture.
|
|
302
|
+
*
|
|
303
|
+
* @remarks
|
|
304
|
+
* This method is called in a microtask to release the texture.
|
|
305
|
+
*/
|
|
306
|
+
releaseTask = () => {
|
|
307
|
+
this.release();
|
|
308
|
+
};
|
|
197
309
|
/**
|
|
198
310
|
* Make a cache key for this texture.
|
|
199
311
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Texture.js","sourceRoot":"","sources":["../../../../src/core/textures/Texture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"Texture.js","sourceRoot":"","sources":["../../../../src/core/textures/Texture.ts"],"names":[],"mappings":"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"}
|
|
@@ -372,6 +372,19 @@ export type RendererMainSettings = RendererRuntimeSettings & {
|
|
|
372
372
|
* @defaultValue `null`
|
|
373
373
|
*/
|
|
374
374
|
platform: typeof Platform | null;
|
|
375
|
+
/**
|
|
376
|
+
* Number of times to retry loading a failed texture
|
|
377
|
+
*
|
|
378
|
+
* @remarks
|
|
379
|
+
* When a texture fails to load, Lightning will retry up to this many times
|
|
380
|
+
* before permanently giving up. Each retry will clear the texture ownership
|
|
381
|
+
* and then re-establish it to trigger a new load attempt.
|
|
382
|
+
*
|
|
383
|
+
* Set to null to disable retries. Set to 0 to always try once and never retry.
|
|
384
|
+
* This is typically only used on ImageTexture instances.
|
|
385
|
+
*
|
|
386
|
+
*/
|
|
387
|
+
maxRetryCount?: number;
|
|
375
388
|
};
|
|
376
389
|
/**
|
|
377
390
|
* The Renderer Main API
|
|
@@ -436,7 +449,7 @@ export declare class RendererMain extends EventEmitter {
|
|
|
436
449
|
* @param target Element ID or HTMLElement to insert the canvas into
|
|
437
450
|
* @param driver Core Driver to use
|
|
438
451
|
*/
|
|
439
|
-
constructor(settings: Partial<RendererMainSettings>, target
|
|
452
|
+
constructor(settings: Partial<RendererMainSettings>, target?: string | HTMLElement);
|
|
440
453
|
/**
|
|
441
454
|
* Resolves the Texture Memory Manager values
|
|
442
455
|
*
|
|
@@ -555,7 +568,7 @@ export declare class RendererMain extends EventEmitter {
|
|
|
555
568
|
* **NOTE3**: This will not cleanup textures that are marked as `preventCleanup`.
|
|
556
569
|
* **NOTE4**: This has nothing to do with the garbage collection of JavaScript.
|
|
557
570
|
*/
|
|
558
|
-
cleanup(
|
|
571
|
+
cleanup(): void;
|
|
559
572
|
/**
|
|
560
573
|
* Sets the clear color for the stage.
|
|
561
574
|
*
|
|
@@ -95,7 +95,7 @@ export class RendererMain extends EventEmitter {
|
|
|
95
95
|
textureMemory: resolvedTxSettings,
|
|
96
96
|
boundsMargin: settings.boundsMargin || 0,
|
|
97
97
|
deviceLogicalPixelRatio: settings.deviceLogicalPixelRatio || 1,
|
|
98
|
-
devicePhysicalPixelRatio: settings.devicePhysicalPixelRatio ||
|
|
98
|
+
devicePhysicalPixelRatio: settings.devicePhysicalPixelRatio || window.devicePixelRatio || 1,
|
|
99
99
|
clearColor: settings.clearColor ?? 0x00000000,
|
|
100
100
|
fpsUpdateInterval: settings.fpsUpdateInterval || 0,
|
|
101
101
|
targetFPS: settings.targetFPS || 0,
|
|
@@ -111,6 +111,7 @@ export class RendererMain extends EventEmitter {
|
|
|
111
111
|
canvas: settings.canvas,
|
|
112
112
|
createImageBitmapSupport: settings.createImageBitmapSupport || 'full',
|
|
113
113
|
platform: settings.platform || null,
|
|
114
|
+
maxRetryCount: settings.maxRetryCount ?? 5,
|
|
114
115
|
};
|
|
115
116
|
const { appWidth, appHeight, deviceLogicalPixelRatio, devicePhysicalPixelRatio, inspector, } = settings;
|
|
116
117
|
let platform;
|
|
@@ -154,21 +155,27 @@ export class RendererMain extends EventEmitter {
|
|
|
154
155
|
textureProcessingTimeLimit: settings.textureProcessingTimeLimit,
|
|
155
156
|
createImageBitmapSupport: settings.createImageBitmapSupport,
|
|
156
157
|
platform,
|
|
158
|
+
maxRetryCount: settings.maxRetryCount ?? 5,
|
|
157
159
|
});
|
|
158
160
|
// Extract the root node
|
|
159
161
|
this.root = this.stage.root;
|
|
160
162
|
// Get the target element and attach the canvas to it
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
163
|
+
if (target) {
|
|
164
|
+
let targetEl;
|
|
165
|
+
if (typeof target === 'string') {
|
|
166
|
+
targetEl = document.getElementById(target);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
targetEl = target;
|
|
170
|
+
}
|
|
171
|
+
if (!targetEl) {
|
|
172
|
+
throw new Error('Could not find target element');
|
|
173
|
+
}
|
|
174
|
+
targetEl.appendChild(canvas);
|
|
167
175
|
}
|
|
168
|
-
if (
|
|
169
|
-
throw new Error('
|
|
176
|
+
else if (settings.canvas !== canvas) {
|
|
177
|
+
throw new Error('New canvas element could not be appended to undefined target');
|
|
170
178
|
}
|
|
171
|
-
targetEl.appendChild(canvas);
|
|
172
179
|
// Initialize inspector (if enabled)
|
|
173
180
|
if (inspector && isProductionEnvironment === false) {
|
|
174
181
|
this.inspector = new inspector(canvas, settings);
|
|
@@ -359,8 +366,8 @@ export class RendererMain extends EventEmitter {
|
|
|
359
366
|
* **NOTE3**: This will not cleanup textures that are marked as `preventCleanup`.
|
|
360
367
|
* **NOTE4**: This has nothing to do with the garbage collection of JavaScript.
|
|
361
368
|
*/
|
|
362
|
-
cleanup(
|
|
363
|
-
this.stage.cleanup(
|
|
369
|
+
cleanup() {
|
|
370
|
+
this.stage.cleanup();
|
|
364
371
|
}
|
|
365
372
|
/**
|
|
366
373
|
* Sets the clear color for the stage.
|