@lightningjs/renderer 0.9.4 → 1.0.0-rc.0
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 +0 -82
- package/dist/exports/index.d.ts +40 -3
- package/dist/exports/index.js +35 -3
- package/dist/exports/index.js.map +1 -1
- package/dist/src/core/CoreNode.d.ts +462 -46
- package/dist/src/core/CoreNode.js +171 -103
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +16 -6
- package/dist/src/core/CoreShaderManager.js +20 -20
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +30 -4
- package/dist/src/core/CoreTextNode.js +24 -1
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +31 -82
- package/dist/src/core/CoreTextureManager.js +39 -126
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +67 -9
- package/dist/src/core/Stage.js +174 -30
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +97 -8
- package/dist/src/core/TextureMemoryManager.js +142 -19
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.d.ts +14 -6
- package/dist/src/core/animations/CoreAnimation.js +136 -44
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.js +59 -52
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/platform.js +7 -1
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/renderers/CoreContextTexture.d.ts +3 -2
- package/dist/src/core/renderers/CoreContextTexture.js +7 -1
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +5 -1
- package/dist/src/core/renderers/CoreRenderer.js +0 -1
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +3 -0
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +16 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +2 -5
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +2 -2
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +7 -10
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +3 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +47 -9
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +24 -8
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +70 -37
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +2 -2
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +2 -2
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +2 -2
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +2 -2
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +2 -2
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +8 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +103 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +3 -18
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +5 -2
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +4 -36
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +3 -2
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +4 -2
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +2 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +4 -36
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +11 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +5 -2
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -1
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +10 -26
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +116 -365
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -2
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +2 -2
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +2 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +3 -2
- 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 +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +1 -1
- package/dist/src/core/textures/NoiseTexture.js +3 -0
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +2 -2
- package/dist/src/core/textures/SubTexture.js +5 -1
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +23 -2
- package/dist/src/core/textures/Texture.js +32 -3
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +7 -0
- package/dist/src/core/utils.js +12 -10
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/DynamicShaderController.d.ts +3 -9
- package/dist/src/main-api/DynamicShaderController.js +18 -17
- package/dist/src/main-api/DynamicShaderController.js.map +1 -1
- package/dist/src/main-api/INode.d.ts +43 -463
- package/dist/src/main-api/INode.js +1 -19
- package/dist/src/main-api/INode.js.map +1 -1
- package/dist/src/main-api/Inspector.d.ts +10 -10
- package/dist/src/main-api/Inspector.js +18 -15
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +27 -21
- package/dist/src/main-api/Renderer.js +38 -107
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/main-api/ShaderController.d.ts +3 -8
- package/dist/src/main-api/ShaderController.js +8 -3
- package/dist/src/main-api/ShaderController.js.map +1 -1
- package/dist/src/utils.d.ts +1 -0
- package/dist/src/utils.js +7 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/index.ts +60 -3
- package/package.json +8 -7
- package/src/core/CoreNode.test.ts +93 -0
- package/src/core/CoreNode.ts +675 -187
- package/src/core/CoreShaderManager.ts +56 -29
- package/src/core/CoreTextNode.ts +41 -9
- package/src/core/CoreTextureManager.ts +55 -175
- package/src/core/Stage.ts +199 -43
- package/src/core/TextureMemoryManager.ts +231 -22
- package/src/core/animations/CoreAnimation.ts +193 -68
- package/src/core/lib/ImageWorker.ts +79 -52
- package/src/core/lib/utils.ts +1 -0
- package/src/core/platform.ts +8 -1
- package/src/core/renderers/CoreContextTexture.ts +9 -2
- package/src/core/renderers/CoreRenderer.ts +5 -2
- package/src/core/renderers/canvas/CanvasCoreRenderer.ts +20 -1
- package/src/core/renderers/canvas/CanvasCoreTexture.ts +2 -6
- package/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.ts +2 -2
- package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +7 -11
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +51 -9
- package/src/core/renderers/webgl/shaders/DynamicShader.ts +114 -55
- package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +2 -2
- package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +2 -2
- package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +2 -2
- package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +2 -2
- package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +2 -2
- package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +129 -3
- package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +7 -15
- package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +5 -2
- package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +6 -15
- package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +6 -2
- package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +10 -2
- package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +2 -1
- package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +6 -15
- package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +20 -0
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +14 -15
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -2
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -1
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +139 -447
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -3
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +2 -2
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +4 -2
- package/src/core/text-rendering/renderers/TextRenderer.ts +3 -2
- package/src/core/textures/ColorTexture.ts +1 -1
- package/src/core/textures/ImageTexture.ts +1 -1
- package/src/core/textures/NoiseTexture.ts +4 -1
- package/src/core/textures/SubTexture.ts +7 -7
- package/src/core/textures/Texture.ts +46 -3
- package/src/core/utils.ts +12 -11
- package/src/main-api/DynamicShaderController.ts +97 -0
- package/src/main-api/INode.ts +56 -479
- package/src/main-api/Inspector.ts +37 -39
- package/src/main-api/Renderer.ts +543 -0
- package/src/main-api/ShaderController.ts +81 -0
- package/src/main-api/utils.ts +45 -0
- package/src/utils.ts +8 -0
- 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/renderers/SpecificNode.d.ts +0 -1
- package/dist/src/core/renderers/SpecificNode.js +0 -19
- package/dist/src/core/renderers/SpecificNode.js.map +0 -1
- package/dist/src/core/renderers/webgl/newShader/effectsMock.d.ts +0 -13
- package/dist/src/core/renderers/webgl/newShader/effectsMock.js +0 -62
- package/dist/src/core/renderers/webgl/newShader/effectsMock.js.map +0 -1
- package/dist/src/main-api/ICoreDriver.d.ts +0 -24
- package/dist/src/main-api/ICoreDriver.js +0 -20
- package/dist/src/main-api/ICoreDriver.js.map +0 -1
- package/dist/src/main-api/RendererMain.d.ts +0 -378
- package/dist/src/main-api/RendererMain.js +0 -367
- 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 -21
- package/dist/src/render-drivers/main/MainCoreDriver.js +0 -115
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -101
- package/dist/src/render-drivers/main/MainOnlyNode.js +0 -425
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -204
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -93
- package/dist/src/render-drivers/threadx/NodeStruct.js +0 -290
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -40
- package/dist/src/render-drivers/threadx/SharedNode.js +0 -61
- 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 -203
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -25
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -232
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -24
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -113
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -46
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -160
- package/dist/src/render-drivers/threadx/ThreadXMainNode.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/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 -184
- 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 -109
- 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 -147
- 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 -74
- package/dist/src/render-drivers/utils.js.map +0 -1
- package/exports/core-api.ts +0 -102
- package/exports/main-api.ts +0 -62
- package/src/core/CoreExtension.ts +0 -32
- package/src/main-api/ICoreDriver.ts +0 -68
- package/src/main-api/RendererMain.ts +0 -685
- package/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.ts +0 -45
- package/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.ts +0 -154
- package/src/main-api/texture-usage-trackers/TextureUsageTracker.ts +0 -54
- package/src/render-drivers/main/MainCoreDriver.ts +0 -159
- package/src/render-drivers/main/MainOnlyNode.ts +0 -553
- package/src/render-drivers/main/MainOnlyTextNode.ts +0 -261
- package/src/render-drivers/threadx/NodeStruct.ts +0 -320
- package/src/render-drivers/threadx/SharedNode.ts +0 -101
- package/src/render-drivers/threadx/TextNodeStruct.ts +0 -213
- package/src/render-drivers/threadx/ThreadXCoreDriver.ts +0 -291
- package/src/render-drivers/threadx/ThreadXMainAnimationController.ts +0 -135
- package/src/render-drivers/threadx/ThreadXMainNode.ts +0 -201
- package/src/render-drivers/threadx/ThreadXMainTextNode.ts +0 -85
- package/src/render-drivers/threadx/ThreadXRendererMessage.ts +0 -112
- package/src/render-drivers/threadx/worker/ThreadXRendererNode.ts +0 -253
- package/src/render-drivers/threadx/worker/ThreadXRendererTextNode.ts +0 -151
- package/src/render-drivers/threadx/worker/renderer.ts +0 -156
- package/src/render-drivers/utils.ts +0 -102
|
@@ -166,7 +166,6 @@ export class LightningTextTextureRenderer {
|
|
|
166
166
|
| OffscreenCanvasRenderingContext2D
|
|
167
167
|
| CanvasRenderingContext2D;
|
|
168
168
|
private _settings: Settings;
|
|
169
|
-
private renderInfo: RenderInfo | undefined;
|
|
170
169
|
|
|
171
170
|
constructor(
|
|
172
171
|
canvas: OffscreenCanvas | HTMLCanvasElement,
|
|
@@ -619,8 +618,6 @@ export class LightningTextTextureRenderer {
|
|
|
619
618
|
if (renderInfo.cutSx || renderInfo.cutSy) {
|
|
620
619
|
this._context.translate(renderInfo.cutSx, renderInfo.cutSy);
|
|
621
620
|
}
|
|
622
|
-
|
|
623
|
-
this.renderInfo = renderInfo;
|
|
624
621
|
}
|
|
625
622
|
|
|
626
623
|
wrapWord(word: string, wordWrapWidth: number, suffix: string) {
|
|
@@ -403,7 +403,7 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
|
|
|
403
403
|
this.setStatus(state, 'failed', new Error(msg));
|
|
404
404
|
return;
|
|
405
405
|
}
|
|
406
|
-
trFontFace.texture.setRenderableOwner(state,
|
|
406
|
+
trFontFace.texture.setRenderableOwner(state, true);
|
|
407
407
|
}
|
|
408
408
|
|
|
409
409
|
// If the font hasn't been loaded yet, stop here.
|
|
@@ -712,7 +712,7 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
|
|
|
712
712
|
|
|
713
713
|
const texture = state.trFontFace?.texture;
|
|
714
714
|
assertTruthy(texture);
|
|
715
|
-
const ctxTexture =
|
|
715
|
+
const ctxTexture = texture.ctxTexture;
|
|
716
716
|
|
|
717
717
|
renderOp.addTexture(ctxTexture as WebGlCoreCtxTexture);
|
|
718
718
|
renderOp.length = state.bufferNumFloats;
|
|
@@ -360,7 +360,8 @@ export function layoutText(
|
|
|
360
360
|
|
|
361
361
|
const xOffset = (vertexTextW - lineWidth) / 2;
|
|
362
362
|
for (let j = line.bufferStart; j < line.bufferEnd; j += 4) {
|
|
363
|
-
|
|
363
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
364
|
+
vertexBuffer[j]! += xOffset;
|
|
364
365
|
}
|
|
365
366
|
}
|
|
366
367
|
} else if (textAlign === 'right') {
|
|
@@ -376,7 +377,8 @@ export function layoutText(
|
|
|
376
377
|
|
|
377
378
|
const xOffset = vertexTextW - lineWidth;
|
|
378
379
|
for (let j = line.bufferStart; j < line.bufferEnd; j += 4) {
|
|
379
|
-
|
|
380
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
381
|
+
vertexBuffer[j]! += xOffset;
|
|
380
382
|
}
|
|
381
383
|
}
|
|
382
384
|
}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
import type { Dimensions } from '../../../common/CommonTypes.js';
|
|
21
21
|
import type { EventEmitter } from '../../../common/EventEmitter.js';
|
|
22
|
+
import type { CoreTextNode } from '../../CoreTextNode.js';
|
|
22
23
|
import type { Stage } from '../../Stage.js';
|
|
23
24
|
import type { Matrix3d } from '../../lib/Matrix3d.js';
|
|
24
25
|
import type { Rect, RectWithValid } from '../../lib/utils.js';
|
|
@@ -501,7 +502,7 @@ export abstract class TextRenderer<
|
|
|
501
502
|
*/
|
|
502
503
|
abstract addFontFace(fontFace: TrFontFace): void;
|
|
503
504
|
|
|
504
|
-
abstract createState(props: TrProps): StateT;
|
|
505
|
+
abstract createState(props: TrProps, node: CoreTextNode): StateT;
|
|
505
506
|
|
|
506
507
|
/**
|
|
507
508
|
* Destroy/Clean up the state object
|
|
@@ -544,7 +545,7 @@ export abstract class TextRenderer<
|
|
|
544
545
|
|
|
545
546
|
abstract updateState(state: StateT): void;
|
|
546
547
|
|
|
547
|
-
|
|
548
|
+
renderQuads?(
|
|
548
549
|
state: StateT,
|
|
549
550
|
transform: Matrix3d,
|
|
550
551
|
clippingRect: RectWithValid,
|
|
@@ -39,7 +39,7 @@ export interface ColorTextureProps {
|
|
|
39
39
|
* The pixel color is set with the {@link ColorTextureProps.color} prop.
|
|
40
40
|
*
|
|
41
41
|
* This is the default texture used for a Node if it's
|
|
42
|
-
* {@link
|
|
42
|
+
* {@link INodeProps.texture} prop is set to `null` (the default)
|
|
43
43
|
*
|
|
44
44
|
* Generally the 1x1 color pixel is stretched to whatever the set dimensions of
|
|
45
45
|
* a Node are.
|
|
@@ -38,7 +38,7 @@ export interface ImageTextureProps {
|
|
|
38
38
|
*
|
|
39
39
|
* @default ''
|
|
40
40
|
*/
|
|
41
|
-
src?: string | ImageData | (() => ImageData);
|
|
41
|
+
src?: string | ImageData | (() => ImageData | null);
|
|
42
42
|
/**
|
|
43
43
|
* Whether to premultiply the alpha channel into the color channels of the
|
|
44
44
|
* image.
|
|
@@ -77,7 +77,10 @@ export class NoiseTexture extends Texture {
|
|
|
77
77
|
};
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
static override makeCacheKey(props: NoiseTextureProps): string {
|
|
80
|
+
static override makeCacheKey(props: NoiseTextureProps): string | false {
|
|
81
|
+
if (props.cacheId === undefined) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
81
84
|
const resolvedProps = NoiseTexture.resolveDefaults(props);
|
|
82
85
|
return `NoiseTexture,${resolvedProps.width},${resolvedProps.height},${resolvedProps.cacheId}`;
|
|
83
86
|
}
|
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
|
-
import type { TextureRef } from '../../main-api/RendererMain.js';
|
|
21
20
|
import type { CoreTextureManager } from '../CoreTextureManager.js';
|
|
22
21
|
import {
|
|
23
22
|
Texture,
|
|
@@ -33,7 +32,7 @@ export interface SubTextureProps {
|
|
|
33
32
|
/**
|
|
34
33
|
* The texture that this sub-texture is a sub-region of.
|
|
35
34
|
*/
|
|
36
|
-
texture:
|
|
35
|
+
texture: Texture;
|
|
37
36
|
|
|
38
37
|
/**
|
|
39
38
|
* The x pixel position of the top-left of the sub-texture within the parent
|
|
@@ -80,12 +79,8 @@ export class SubTexture extends Texture {
|
|
|
80
79
|
|
|
81
80
|
constructor(txManager: CoreTextureManager, props: SubTextureProps) {
|
|
82
81
|
super(txManager);
|
|
83
|
-
this.parentTexture = this.txManager.loadTexture(
|
|
84
|
-
props.texture.txType,
|
|
85
|
-
props.texture.props,
|
|
86
|
-
props.texture.options,
|
|
87
|
-
);
|
|
88
82
|
this.props = SubTexture.resolveDefaults(props || {});
|
|
83
|
+
this.parentTexture = this.props.texture;
|
|
89
84
|
|
|
90
85
|
// If parent texture is already loaded / failed, trigger loaded event manually
|
|
91
86
|
// so that users get a consistent event experience.
|
|
@@ -116,6 +111,11 @@ export class SubTexture extends Texture {
|
|
|
116
111
|
this.setState('failed', error);
|
|
117
112
|
};
|
|
118
113
|
|
|
114
|
+
override onChangeIsRenderable(isRenderable: boolean): void {
|
|
115
|
+
// Propagate the renderable owner change to the parent texture
|
|
116
|
+
this.parentTexture.setRenderableOwner(this, isRenderable);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
119
|
override async getTextureData(): Promise<TextureData> {
|
|
120
120
|
return {
|
|
121
121
|
data: this.props,
|
|
@@ -21,6 +21,7 @@ import type { CoreTextureManager } from '../CoreTextureManager.js';
|
|
|
21
21
|
import type { SubTextureProps } from './SubTexture.js';
|
|
22
22
|
import type { Dimensions } from '../../common/CommonTypes.js';
|
|
23
23
|
import { EventEmitter } from '../../common/EventEmitter.js';
|
|
24
|
+
import type { CoreContextTexture } from '../renderers/CoreContextTexture.js';
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
27
|
* Event handler for when a Texture is freed
|
|
@@ -145,6 +146,10 @@ export abstract class Texture extends EventEmitter {
|
|
|
145
146
|
|
|
146
147
|
readonly renderableOwners = new Set<unknown>();
|
|
147
148
|
|
|
149
|
+
readonly renderable: boolean = false;
|
|
150
|
+
|
|
151
|
+
readonly lastRenderableChangeTime = 0;
|
|
152
|
+
|
|
148
153
|
constructor(protected txManager: CoreTextureManager) {
|
|
149
154
|
super();
|
|
150
155
|
}
|
|
@@ -164,18 +169,56 @@ export abstract class Texture extends EventEmitter {
|
|
|
164
169
|
* @param renderable
|
|
165
170
|
*/
|
|
166
171
|
setRenderableOwner(owner: unknown, renderable: boolean): void {
|
|
172
|
+
const oldSize = this.renderableOwners.size;
|
|
167
173
|
if (renderable) {
|
|
168
174
|
this.renderableOwners.add(owner);
|
|
175
|
+
const newSize = this.renderableOwners.size;
|
|
176
|
+
if (newSize > oldSize && newSize === 1) {
|
|
177
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
178
|
+
(this.renderable as boolean) = true;
|
|
179
|
+
(this.lastRenderableChangeTime as number) = this.txManager.frameTime;
|
|
180
|
+
this.onChangeIsRenderable?.(true);
|
|
181
|
+
}
|
|
169
182
|
} else {
|
|
170
183
|
this.renderableOwners.delete(owner);
|
|
184
|
+
const newSize = this.renderableOwners.size;
|
|
185
|
+
if (newSize < oldSize && newSize === 0) {
|
|
186
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
187
|
+
(this.renderable as boolean) = false;
|
|
188
|
+
(this.lastRenderableChangeTime as number) = this.txManager.frameTime;
|
|
189
|
+
this.onChangeIsRenderable?.(false);
|
|
190
|
+
}
|
|
171
191
|
}
|
|
172
192
|
}
|
|
173
193
|
|
|
174
194
|
/**
|
|
175
|
-
*
|
|
195
|
+
* Event called when the Texture becomes renderable or unrenderable.
|
|
196
|
+
*
|
|
197
|
+
* @remarks
|
|
198
|
+
* Used by subclasses like SubTexture propogate then renderability of the
|
|
199
|
+
* Texture to other referenced Textures.
|
|
200
|
+
*
|
|
201
|
+
* @param isRenderable `true` if this Texture has renderable owners.
|
|
202
|
+
*/
|
|
203
|
+
onChangeIsRenderable?(isRenderable: boolean): void;
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Get the CoreContextTexture for this Texture
|
|
207
|
+
*
|
|
208
|
+
* @remarks
|
|
209
|
+
* Each Texture has a corresponding CoreContextTexture that is used to
|
|
210
|
+
* manage the texture's native data depending on the renderer's mode
|
|
211
|
+
* (WebGL, Canvas, etc).
|
|
212
|
+
*
|
|
213
|
+
* The Texture and CoreContextTexture are always linked together in a 1:1
|
|
214
|
+
* relationship.
|
|
176
215
|
*/
|
|
177
|
-
get
|
|
178
|
-
|
|
216
|
+
get ctxTexture() {
|
|
217
|
+
// The first time this is called, create the ctxTexture
|
|
218
|
+
const ctxTexture = this.txManager.renderer.createCtxTexture(this);
|
|
219
|
+
// And replace this getter with the value for future calls
|
|
220
|
+
Object.defineProperty(this, 'ctxTexture', { value: ctxTexture });
|
|
221
|
+
return ctxTexture;
|
|
179
222
|
}
|
|
180
223
|
|
|
181
224
|
/**
|
package/src/core/utils.ts
CHANGED
|
@@ -197,10 +197,11 @@ export const getTimingFunction = (
|
|
|
197
197
|
};
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
-
|
|
200
|
+
const lookup = timingLookup[str];
|
|
201
|
+
if (lookup !== undefined) {
|
|
202
|
+
const [a, b, c, d] = lookup;
|
|
201
203
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
202
204
|
// @ts-ignore - TS doesn't understand that we've checked for undefined
|
|
203
|
-
const [a, b, c, d] = timingLookup[str];
|
|
204
205
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
205
206
|
const timing = getTimingBezier(a, b, c, d);
|
|
206
207
|
timingMapping[str] = timing;
|
|
@@ -215,12 +216,12 @@ export const getTimingFunction = (
|
|
|
215
216
|
return defaultTiming;
|
|
216
217
|
};
|
|
217
218
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
219
|
+
/**
|
|
220
|
+
* Convert bytes to string of megabytes with 2 decimal points
|
|
221
|
+
*
|
|
222
|
+
* @param bytes
|
|
223
|
+
* @returns
|
|
224
|
+
*/
|
|
225
|
+
export function bytesToMb(bytes: number) {
|
|
226
|
+
return (bytes / 1024 / 1024).toFixed(2);
|
|
227
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { ShaderEffectValueMap } from '../../exports/index.js';
|
|
2
|
+
import type {
|
|
3
|
+
CoreShaderManager,
|
|
4
|
+
EffectMap,
|
|
5
|
+
ShaderMap,
|
|
6
|
+
} from '../core/CoreShaderManager.js';
|
|
7
|
+
import type { ExtractProps } from '../core/CoreTextureManager.js';
|
|
8
|
+
import type { EffectDesc } from '../core/renderers/webgl/shaders/DynamicShader.js';
|
|
9
|
+
import type { BaseShaderController } from './ShaderController.js';
|
|
10
|
+
|
|
11
|
+
type MapEffectProps<
|
|
12
|
+
Effects extends [...{ name: string; type: keyof EffectMap }[]],
|
|
13
|
+
> = {
|
|
14
|
+
[K in Effects[number] as K['name']]: ExtractProps<EffectMap[K['type']]>;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export type DynamicEffects<
|
|
18
|
+
T extends [...{ name: string; type: keyof EffectMap }[]],
|
|
19
|
+
> = {
|
|
20
|
+
[K in keyof T]: EffectDesc<T[K]>;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export class DynamicShaderController<
|
|
24
|
+
Effects extends [...{ name: string; type: keyof EffectMap }[]],
|
|
25
|
+
> implements BaseShaderController
|
|
26
|
+
{
|
|
27
|
+
private resolvedProps: ExtractProps<ShaderMap['DynamicShader']>;
|
|
28
|
+
props: MapEffectProps<Effects>;
|
|
29
|
+
type: 'DynamicShader';
|
|
30
|
+
|
|
31
|
+
constructor(
|
|
32
|
+
readonly shader: InstanceType<ShaderMap['DynamicShader']>,
|
|
33
|
+
props: ExtractProps<ShaderMap['DynamicShader']>,
|
|
34
|
+
shManager: CoreShaderManager,
|
|
35
|
+
) {
|
|
36
|
+
this.type = 'DynamicShader';
|
|
37
|
+
this.resolvedProps = props;
|
|
38
|
+
const effectConstructors = shManager.getRegisteredEffects();
|
|
39
|
+
const definedProps = {};
|
|
40
|
+
|
|
41
|
+
const effects = props.effects!;
|
|
42
|
+
const effectsLength = effects.length;
|
|
43
|
+
|
|
44
|
+
for (let i = 0; i < effectsLength; i++) {
|
|
45
|
+
const {
|
|
46
|
+
name: effectName,
|
|
47
|
+
props: effectProps,
|
|
48
|
+
type: effectType,
|
|
49
|
+
} = effects[i]!;
|
|
50
|
+
const definedEffectProps = {};
|
|
51
|
+
const propEntries = Object.keys(effectProps);
|
|
52
|
+
const propEntriesLength = propEntries.length;
|
|
53
|
+
for (let j = 0; j < propEntriesLength; j++) {
|
|
54
|
+
const propName = propEntries[j]!;
|
|
55
|
+
Object.defineProperty(definedEffectProps, propName, {
|
|
56
|
+
get: () => {
|
|
57
|
+
return (
|
|
58
|
+
this.resolvedProps.effects![i]!.props[propName] as Record<
|
|
59
|
+
string,
|
|
60
|
+
any
|
|
61
|
+
>
|
|
62
|
+
).value;
|
|
63
|
+
},
|
|
64
|
+
set: (value) => {
|
|
65
|
+
const target = this.resolvedProps.effects![i]!.props[
|
|
66
|
+
propName
|
|
67
|
+
] as Record<string, any>;
|
|
68
|
+
target.value = value;
|
|
69
|
+
if (target.hasValidator) {
|
|
70
|
+
value = target.validatedValue = effectConstructors[effectType]!
|
|
71
|
+
.uniforms[propName]?.validator!(value, effectProps);
|
|
72
|
+
}
|
|
73
|
+
if (target.hasProgramValueUpdater) {
|
|
74
|
+
effectConstructors[effectType]!.uniforms[propName]
|
|
75
|
+
?.updateProgramValue!(target as ShaderEffectValueMap);
|
|
76
|
+
} else {
|
|
77
|
+
target.programValue = value;
|
|
78
|
+
}
|
|
79
|
+
shManager.renderer.stage.requestRender();
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
Object.defineProperty(definedProps, effectName, {
|
|
85
|
+
get: () => {
|
|
86
|
+
return definedEffectProps;
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
this.props = definedProps as MapEffectProps<Effects>;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
getResolvedProps() {
|
|
95
|
+
return this.resolvedProps;
|
|
96
|
+
}
|
|
97
|
+
}
|