@lightningjs/renderer 2.12.1 → 2.13.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/COPYING +1 -0
- package/LICENSE +202 -202
- package/NOTICE +3 -3
- package/README.md +147 -147
- package/dist/src/core/CoreNode.d.ts +10 -0
- package/dist/src/core/CoreNode.js +90 -14
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +13 -7
- package/dist/src/core/CoreTextureManager.js +92 -105
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +4 -2
- package/dist/src/core/Stage.js +23 -7
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +16 -6
- package/dist/src/core/TextureMemoryManager.js +75 -17
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.d.ts +1 -1
- package/dist/src/core/lib/ImageWorker.js +13 -11
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +6 -0
- package/dist/src/core/lib/validateImageBitmap.js +68 -0
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -0
- package/dist/src/core/platform.js +3 -3
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +7 -12
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +45 -45
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +61 -61
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +93 -93
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +63 -63
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +62 -62
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +6 -6
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +42 -42
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +44 -44
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +3 -3
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +22 -22
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +28 -28
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +10 -10
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +37 -37
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +19 -19
- package/dist/src/core/textures/ImageTexture.js +10 -16
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/main-api/Inspector.js +16 -2
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +27 -1
- package/dist/src/main-api/Renderer.js +8 -3
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/canvas.ts +39 -39
- package/exports/index.ts +89 -89
- package/exports/inspector.ts +24 -24
- package/exports/utils.ts +44 -44
- package/exports/webgl.ts +38 -38
- package/package.json +1 -2
- package/scripts/please-use-pnpm.js +13 -13
- package/src/common/CommonTypes.ts +146 -146
- package/src/common/EventEmitter.ts +77 -77
- package/src/common/IAnimationController.ts +92 -92
- package/src/common/IEventEmitter.ts +28 -28
- package/src/core/CoreNode.test.ts +202 -199
- package/src/core/CoreNode.ts +2455 -2341
- package/src/core/CoreShaderManager.ts +292 -292
- package/src/core/CoreTextNode.ts +455 -455
- package/src/core/CoreTextureManager.ts +597 -596
- package/src/core/Stage.ts +743 -722
- package/src/core/TextureMemoryManager.ts +395 -314
- package/src/core/animations/AnimationManager.ts +38 -38
- package/src/core/animations/CoreAnimation.ts +340 -340
- package/src/core/animations/CoreAnimationController.ts +157 -157
- package/src/core/lib/ContextSpy.ts +41 -41
- package/src/core/lib/ImageWorker.ts +279 -271
- package/src/core/lib/Matrix3d.ts +244 -244
- package/src/core/lib/RenderCoords.ts +86 -86
- package/src/core/lib/WebGlContextWrapper.ts +1332 -1332
- package/src/core/lib/textureCompression.ts +152 -152
- package/src/core/lib/textureSvg.ts +78 -78
- package/src/core/lib/utils.ts +310 -310
- package/src/core/lib/validateImageBitmap.ts +76 -0
- package/src/core/platform.ts +63 -61
- package/src/core/renderers/CoreContextTexture.ts +43 -43
- package/src/core/renderers/CoreRenderOp.ts +22 -22
- package/src/core/renderers/CoreRenderer.ts +115 -115
- package/src/core/renderers/CoreShader.ts +41 -41
- package/src/core/renderers/canvas/CanvasCoreRenderer.ts +375 -375
- package/src/core/renderers/canvas/CanvasCoreTexture.ts +153 -153
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +231 -231
- package/src/core/renderers/canvas/internal/ColorUtils.ts +69 -69
- package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +48 -48
- package/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.ts +86 -86
- package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +50 -50
- package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +301 -303
- package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +125 -125
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +815 -815
- package/src/core/renderers/webgl/WebGlCoreShader.ts +362 -362
- package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
- package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -143
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
- package/src/core/renderers/webgl/shaders/DefaultShader.ts +93 -93
- package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +132 -132
- package/src/core/renderers/webgl/shaders/DynamicShader.ts +580 -580
- package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +167 -167
- package/src/core/renderers/webgl/shaders/SdfShader.ts +204 -204
- package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +101 -101
- package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +87 -87
- package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +101 -101
- package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +101 -101
- package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +101 -101
- package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +159 -159
- package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +127 -127
- package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +148 -148
- package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +67 -67
- package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +157 -157
- package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +171 -171
- package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +168 -168
- package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +187 -187
- package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +110 -110
- package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +196 -196
- package/src/core/text-rendering/TextRenderingUtils.ts +36 -36
- package/src/core/text-rendering/TextTextureRendererUtils.ts +263 -263
- package/src/core/text-rendering/TrFontManager.ts +183 -183
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +176 -176
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +171 -171
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +187 -187
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +94 -94
- package/src/core/text-rendering/font-face-types/utils.ts +39 -39
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +509 -509
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +808 -808
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +853 -853
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +117 -117
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +408 -408
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +52 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
- package/src/core/text-rendering/renderers/TextRenderer.ts +557 -557
- package/src/core/textures/ColorTexture.ts +102 -102
- package/src/core/textures/ImageTexture.ts +376 -382
- package/src/core/textures/NoiseTexture.ts +104 -104
- package/src/core/textures/RenderTexture.ts +85 -85
- package/src/core/textures/SubTexture.ts +205 -205
- package/src/core/textures/Texture.ts +337 -337
- package/src/core/utils.ts +227 -227
- package/src/env.d.ts +7 -7
- package/src/main-api/DynamicShaderController.ts +104 -104
- package/src/main-api/INode.ts +101 -101
- package/src/main-api/Inspector.ts +522 -505
- package/src/main-api/Renderer.ts +751 -720
- package/src/main-api/ShaderController.ts +80 -80
- package/src/main-api/utils.ts +45 -45
- package/src/utils.ts +248 -248
- 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/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 +0 -20
- 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 +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/README.md
CHANGED
|
@@ -1,147 +1,147 @@
|
|
|
1
|
-
# Lightning 3 Renderer
|
|
2
|
-
|
|
3
|
-
A powerful 2D scene renderer designed for rendering highly performant user
|
|
4
|
-
interfaces on web browsers running on embedded devices using WebGL.
|
|
5
|
-
|
|
6
|
-
The Renderer is part of the [LightningJS](https://lightningjs.io) project. While it is possible to use the renderer directly, it is not recommended. Instead, Lightning 3 works best when combined with [Blits](https://lightningjs.io/v3-docs/blits/getting_started/intro.html).
|
|
7
|
-
|
|
8
|
-
## Setup & Commands
|
|
9
|
-
|
|
10
|
-
```
|
|
11
|
-
# Install renderer + example dependencies
|
|
12
|
-
pnpm install
|
|
13
|
-
|
|
14
|
-
# Build Renderer
|
|
15
|
-
pnpm build
|
|
16
|
-
|
|
17
|
-
# Build Renderer (watch mode)
|
|
18
|
-
pnpm watch
|
|
19
|
-
|
|
20
|
-
# Run unit tests
|
|
21
|
-
pnpm test
|
|
22
|
-
|
|
23
|
-
# Run Visual Regression Tests
|
|
24
|
-
pnpm test:visual
|
|
25
|
-
|
|
26
|
-
# Build API Documentation (builds into ./typedocs folder)
|
|
27
|
-
pnpm typedoc
|
|
28
|
-
|
|
29
|
-
# Launch Example Tests in dev mode (includes Build Renderer (watch mode))
|
|
30
|
-
pnpm start
|
|
31
|
-
|
|
32
|
-
# Launch Example Tests in production mode
|
|
33
|
-
# IMPORTANT: To run test examples on embedded devices that use older browser versions
|
|
34
|
-
# you MUST run the examples in this mode.
|
|
35
|
-
pnpm start:prod
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Browser Targets
|
|
39
|
-
|
|
40
|
-
The Lightning 3 Renderer's goal is to work with the following browser versions and above:
|
|
41
|
-
|
|
42
|
-
- Chrome v38 (Released October 7, 2014)
|
|
43
|
-
|
|
44
|
-
Any JavaScript language features or browser APIs that cannot be automatically transpiled or polyfilled by industry standard transpilers (such as Babel) to target these versions must be carefully considered before use.
|
|
45
|
-
|
|
46
|
-
For a more detailed and comprehensive list of browsers and their features please see [browsers](./BROWSERS.md).
|
|
47
|
-
|
|
48
|
-
## Example Tests
|
|
49
|
-
|
|
50
|
-
The Example Tests sub-project define a set of tests for various Renderer
|
|
51
|
-
features. This is NOT an automated test. The command below will launch a
|
|
52
|
-
web server which can be accessed by a web browser for manual testing. However,
|
|
53
|
-
many of the Example Tests define Snapshots for the Visual Regression Test Runner
|
|
54
|
-
(see below).
|
|
55
|
-
|
|
56
|
-
The Example Tests can be launched with:
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
pnpm start
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
A hosted version can be found [here](https://lightning-js.github.io/renderer/).
|
|
63
|
-
|
|
64
|
-
This supports modern browsers as well as Chrome 38 and above through a legacy build.
|
|
65
|
-
|
|
66
|
-
See [examples/README.md](./examples/README.md) for more info.
|
|
67
|
-
|
|
68
|
-
## Visual Regression Tests
|
|
69
|
-
|
|
70
|
-
In order to prevent bugs on existing Renderer features when new features or bug
|
|
71
|
-
fixes are added, the Renderer includes a Visual Regression Test Runner along
|
|
72
|
-
with a set of certified snapshot files that are checked into the repository.
|
|
73
|
-
|
|
74
|
-
These tests can be launched with:
|
|
75
|
-
|
|
76
|
-
```
|
|
77
|
-
pnpm test:visual
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
The captured Snapshots of these tests are optionally defined in the individual
|
|
81
|
-
Example Tests.
|
|
82
|
-
|
|
83
|
-
See [visual-regression/README.md](./visual-regression/README.md) for more info.
|
|
84
|
-
|
|
85
|
-
## Manual Regression Tests
|
|
86
|
-
|
|
87
|
-
See [docs/ManualRegressionTests.md].
|
|
88
|
-
|
|
89
|
-
## Release Procedure
|
|
90
|
-
|
|
91
|
-
See [RELEASE.md](./RELEASE.md)
|
|
92
|
-
|
|
93
|
-
## Installing Fonts
|
|
94
|
-
|
|
95
|
-
Fonts can be installed into the Font Manager exposed by the Renderer's Stage.
|
|
96
|
-
There are two types of fonts that you can install, Web/Canvas2D fonts (WebTrFontFace)
|
|
97
|
-
and SDF fonts (SdfTrFontFace). Install that fonts that your applications needs
|
|
98
|
-
at start up so they are ready when your application is rendered.
|
|
99
|
-
|
|
100
|
-
```ts
|
|
101
|
-
import {
|
|
102
|
-
RendererMain,
|
|
103
|
-
WebTrFontFace,
|
|
104
|
-
SdfTrFontFace,
|
|
105
|
-
} from '@lightningjs/renderer';
|
|
106
|
-
|
|
107
|
-
import {
|
|
108
|
-
WebGlCoreRenderer,
|
|
109
|
-
SdfTextRenderer,
|
|
110
|
-
} from '@lightningjs/renderer/webgl';
|
|
111
|
-
import { CanvasTextRenderer } from '@lightningjs/renderer/canvas';
|
|
112
|
-
|
|
113
|
-
const renderer = new RendererMain(
|
|
114
|
-
{
|
|
115
|
-
appWidth: 1920,
|
|
116
|
-
appHeight: 1080,
|
|
117
|
-
renderEngine: WebGlCoreRenderer,
|
|
118
|
-
fontEngines: [SdfTextRenderer, CanvasTextRenderer],
|
|
119
|
-
// ...Other Renderer Config
|
|
120
|
-
},
|
|
121
|
-
'app', // id of div to insert Canvas.
|
|
122
|
-
);
|
|
123
|
-
|
|
124
|
-
// Load fonts into renderer
|
|
125
|
-
renderer.stage.fontManager.addFontFace(
|
|
126
|
-
new WebTrFontFace('Ubuntu', {}, '/fonts/Ubuntu-Regular.ttf'),
|
|
127
|
-
);
|
|
128
|
-
|
|
129
|
-
renderer.stage.fontManager.addFontFace(
|
|
130
|
-
new SdfTrFontFace(
|
|
131
|
-
'Ubuntu',
|
|
132
|
-
{},
|
|
133
|
-
'msdf',
|
|
134
|
-
stage,
|
|
135
|
-
'/fonts/Ubuntu-Regular.msdf.png',
|
|
136
|
-
'/fonts/Ubuntu-Regular.msdf.json',
|
|
137
|
-
),
|
|
138
|
-
);
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
Please note that the WebGL renderer supports both SDF Fonts and Web Fonts, however the
|
|
142
|
-
Canvas renderer only supports Web Fonts:
|
|
143
|
-
|
|
144
|
-
| Font Type Renderer | SDF Font | Web Font |
|
|
145
|
-
| ------------------ | -------- | -------- |
|
|
146
|
-
| WebGL | Y | Y |
|
|
147
|
-
| Canvas | N | Y |
|
|
1
|
+
# Lightning 3 Renderer
|
|
2
|
+
|
|
3
|
+
A powerful 2D scene renderer designed for rendering highly performant user
|
|
4
|
+
interfaces on web browsers running on embedded devices using WebGL.
|
|
5
|
+
|
|
6
|
+
The Renderer is part of the [LightningJS](https://lightningjs.io) project. While it is possible to use the renderer directly, it is not recommended. Instead, Lightning 3 works best when combined with [Blits](https://lightningjs.io/v3-docs/blits/getting_started/intro.html).
|
|
7
|
+
|
|
8
|
+
## Setup & Commands
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
# Install renderer + example dependencies
|
|
12
|
+
pnpm install
|
|
13
|
+
|
|
14
|
+
# Build Renderer
|
|
15
|
+
pnpm build
|
|
16
|
+
|
|
17
|
+
# Build Renderer (watch mode)
|
|
18
|
+
pnpm watch
|
|
19
|
+
|
|
20
|
+
# Run unit tests
|
|
21
|
+
pnpm test
|
|
22
|
+
|
|
23
|
+
# Run Visual Regression Tests
|
|
24
|
+
pnpm test:visual
|
|
25
|
+
|
|
26
|
+
# Build API Documentation (builds into ./typedocs folder)
|
|
27
|
+
pnpm typedoc
|
|
28
|
+
|
|
29
|
+
# Launch Example Tests in dev mode (includes Build Renderer (watch mode))
|
|
30
|
+
pnpm start
|
|
31
|
+
|
|
32
|
+
# Launch Example Tests in production mode
|
|
33
|
+
# IMPORTANT: To run test examples on embedded devices that use older browser versions
|
|
34
|
+
# you MUST run the examples in this mode.
|
|
35
|
+
pnpm start:prod
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Browser Targets
|
|
39
|
+
|
|
40
|
+
The Lightning 3 Renderer's goal is to work with the following browser versions and above:
|
|
41
|
+
|
|
42
|
+
- Chrome v38 (Released October 7, 2014)
|
|
43
|
+
|
|
44
|
+
Any JavaScript language features or browser APIs that cannot be automatically transpiled or polyfilled by industry standard transpilers (such as Babel) to target these versions must be carefully considered before use.
|
|
45
|
+
|
|
46
|
+
For a more detailed and comprehensive list of browsers and their features please see [browsers](./BROWSERS.md).
|
|
47
|
+
|
|
48
|
+
## Example Tests
|
|
49
|
+
|
|
50
|
+
The Example Tests sub-project define a set of tests for various Renderer
|
|
51
|
+
features. This is NOT an automated test. The command below will launch a
|
|
52
|
+
web server which can be accessed by a web browser for manual testing. However,
|
|
53
|
+
many of the Example Tests define Snapshots for the Visual Regression Test Runner
|
|
54
|
+
(see below).
|
|
55
|
+
|
|
56
|
+
The Example Tests can be launched with:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
pnpm start
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
A hosted version can be found [here](https://lightning-js.github.io/renderer/).
|
|
63
|
+
|
|
64
|
+
This supports modern browsers as well as Chrome 38 and above through a legacy build.
|
|
65
|
+
|
|
66
|
+
See [examples/README.md](./examples/README.md) for more info.
|
|
67
|
+
|
|
68
|
+
## Visual Regression Tests
|
|
69
|
+
|
|
70
|
+
In order to prevent bugs on existing Renderer features when new features or bug
|
|
71
|
+
fixes are added, the Renderer includes a Visual Regression Test Runner along
|
|
72
|
+
with a set of certified snapshot files that are checked into the repository.
|
|
73
|
+
|
|
74
|
+
These tests can be launched with:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
pnpm test:visual
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The captured Snapshots of these tests are optionally defined in the individual
|
|
81
|
+
Example Tests.
|
|
82
|
+
|
|
83
|
+
See [visual-regression/README.md](./visual-regression/README.md) for more info.
|
|
84
|
+
|
|
85
|
+
## Manual Regression Tests
|
|
86
|
+
|
|
87
|
+
See [docs/ManualRegressionTests.md].
|
|
88
|
+
|
|
89
|
+
## Release Procedure
|
|
90
|
+
|
|
91
|
+
See [RELEASE.md](./RELEASE.md)
|
|
92
|
+
|
|
93
|
+
## Installing Fonts
|
|
94
|
+
|
|
95
|
+
Fonts can be installed into the Font Manager exposed by the Renderer's Stage.
|
|
96
|
+
There are two types of fonts that you can install, Web/Canvas2D fonts (WebTrFontFace)
|
|
97
|
+
and SDF fonts (SdfTrFontFace). Install that fonts that your applications needs
|
|
98
|
+
at start up so they are ready when your application is rendered.
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
import {
|
|
102
|
+
RendererMain,
|
|
103
|
+
WebTrFontFace,
|
|
104
|
+
SdfTrFontFace,
|
|
105
|
+
} from '@lightningjs/renderer';
|
|
106
|
+
|
|
107
|
+
import {
|
|
108
|
+
WebGlCoreRenderer,
|
|
109
|
+
SdfTextRenderer,
|
|
110
|
+
} from '@lightningjs/renderer/webgl';
|
|
111
|
+
import { CanvasTextRenderer } from '@lightningjs/renderer/canvas';
|
|
112
|
+
|
|
113
|
+
const renderer = new RendererMain(
|
|
114
|
+
{
|
|
115
|
+
appWidth: 1920,
|
|
116
|
+
appHeight: 1080,
|
|
117
|
+
renderEngine: WebGlCoreRenderer,
|
|
118
|
+
fontEngines: [SdfTextRenderer, CanvasTextRenderer],
|
|
119
|
+
// ...Other Renderer Config
|
|
120
|
+
},
|
|
121
|
+
'app', // id of div to insert Canvas.
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
// Load fonts into renderer
|
|
125
|
+
renderer.stage.fontManager.addFontFace(
|
|
126
|
+
new WebTrFontFace('Ubuntu', {}, '/fonts/Ubuntu-Regular.ttf'),
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
renderer.stage.fontManager.addFontFace(
|
|
130
|
+
new SdfTrFontFace(
|
|
131
|
+
'Ubuntu',
|
|
132
|
+
{},
|
|
133
|
+
'msdf',
|
|
134
|
+
stage,
|
|
135
|
+
'/fonts/Ubuntu-Regular.msdf.png',
|
|
136
|
+
'/fonts/Ubuntu-Regular.msdf.json',
|
|
137
|
+
),
|
|
138
|
+
);
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Please note that the WebGL renderer supports both SDF Fonts and Web Fonts, however the
|
|
142
|
+
Canvas renderer only supports Web Fonts:
|
|
143
|
+
|
|
144
|
+
| Font Type Renderer | SDF Font | Web Font |
|
|
145
|
+
| ------------------ | -------- | -------- |
|
|
146
|
+
| WebGL | Y | Y |
|
|
147
|
+
| Canvas | N | Y |
|
|
@@ -197,6 +197,12 @@ export interface CoreNodeProps {
|
|
|
197
197
|
* @default `false`
|
|
198
198
|
*/
|
|
199
199
|
autosize: boolean;
|
|
200
|
+
/**
|
|
201
|
+
* Margin around the Node's bounds for preloading
|
|
202
|
+
*
|
|
203
|
+
* @default `null`
|
|
204
|
+
*/
|
|
205
|
+
boundsMargin: number | [number, number, number, number] | null;
|
|
200
206
|
/**
|
|
201
207
|
* Clipping Mode
|
|
202
208
|
*
|
|
@@ -643,7 +649,9 @@ export declare class CoreNode extends EventEmitter {
|
|
|
643
649
|
globalTransform?: Matrix3d;
|
|
644
650
|
scaleRotateTransform?: Matrix3d;
|
|
645
651
|
localTransform?: Matrix3d;
|
|
652
|
+
sceneGlobalTransform?: Matrix3d;
|
|
646
653
|
renderCoords?: RenderCoords;
|
|
654
|
+
sceneRenderCoords?: RenderCoords;
|
|
647
655
|
renderBound?: Bound;
|
|
648
656
|
strictBound?: Bound;
|
|
649
657
|
preloadBound?: Bound;
|
|
@@ -774,6 +782,8 @@ export declare class CoreNode extends EventEmitter {
|
|
|
774
782
|
set alpha(value: number);
|
|
775
783
|
get autosize(): boolean;
|
|
776
784
|
set autosize(value: boolean);
|
|
785
|
+
get boundsMargin(): number | [number, number, number, number] | null;
|
|
786
|
+
set boundsMargin(value: number | [number, number, number, number] | null);
|
|
777
787
|
get clipping(): boolean;
|
|
778
788
|
set clipping(value: boolean);
|
|
779
789
|
get color(): number;
|
|
@@ -166,7 +166,9 @@ export class CoreNode extends EventEmitter {
|
|
|
166
166
|
globalTransform;
|
|
167
167
|
scaleRotateTransform;
|
|
168
168
|
localTransform;
|
|
169
|
+
sceneGlobalTransform;
|
|
169
170
|
renderCoords;
|
|
171
|
+
sceneRenderCoords;
|
|
170
172
|
renderBound;
|
|
171
173
|
strictBound;
|
|
172
174
|
preloadBound;
|
|
@@ -203,6 +205,16 @@ export class CoreNode extends EventEmitter {
|
|
|
203
205
|
this.texture = props.texture;
|
|
204
206
|
this.src = props.src;
|
|
205
207
|
this.rtt = props.rtt;
|
|
208
|
+
if (props.boundsMargin) {
|
|
209
|
+
this.boundsMargin = Array.isArray(props.boundsMargin)
|
|
210
|
+
? props.boundsMargin
|
|
211
|
+
: [
|
|
212
|
+
props.boundsMargin,
|
|
213
|
+
props.boundsMargin,
|
|
214
|
+
props.boundsMargin,
|
|
215
|
+
props.boundsMargin,
|
|
216
|
+
];
|
|
217
|
+
}
|
|
206
218
|
this.setUpdateType(UpdateType.ScaleRotate |
|
|
207
219
|
UpdateType.Local |
|
|
208
220
|
UpdateType.RenderBounds |
|
|
@@ -418,11 +430,25 @@ export class CoreNode extends EventEmitter {
|
|
|
418
430
|
}
|
|
419
431
|
if (this.updateType & UpdateType.Global) {
|
|
420
432
|
assertTruthy(this.localTransform);
|
|
421
|
-
this.
|
|
422
|
-
|
|
433
|
+
if (this.parentHasRenderTexture === true && parent?.rtt === true) {
|
|
434
|
+
// we are at the start of the RTT chain, so we need to reset the globalTransform
|
|
435
|
+
// for correct RTT rendering
|
|
423
436
|
this.globalTransform = Matrix3d.identity();
|
|
437
|
+
// Maintain a full scene global transform for bounds detection
|
|
438
|
+
this.sceneGlobalTransform = Matrix3d.copy(parent?.globalTransform || Matrix3d.identity()).multiply(this.localTransform);
|
|
424
439
|
}
|
|
425
|
-
if (
|
|
440
|
+
else if (this.parentHasRenderTexture === true &&
|
|
441
|
+
parent?.rtt === false) {
|
|
442
|
+
// we're part of an RTT chain but our parent is not the main RTT node
|
|
443
|
+
// so we need to propogate the sceneGlobalTransform of the parent
|
|
444
|
+
// to maintain a full scene global transform for bounds detection
|
|
445
|
+
this.sceneGlobalTransform = Matrix3d.copy(parent?.sceneGlobalTransform || this.localTransform).multiply(this.localTransform);
|
|
446
|
+
this.globalTransform = Matrix3d.copy(parent?.globalTransform || this.localTransform, this.globalTransform);
|
|
447
|
+
}
|
|
448
|
+
else {
|
|
449
|
+
this.globalTransform = Matrix3d.copy(parent?.globalTransform || this.localTransform, this.globalTransform);
|
|
450
|
+
}
|
|
451
|
+
if (parent !== null) {
|
|
426
452
|
this.globalTransform.multiply(this.localTransform);
|
|
427
453
|
}
|
|
428
454
|
this.calculateRenderCoords();
|
|
@@ -438,6 +464,7 @@ export class CoreNode extends EventEmitter {
|
|
|
438
464
|
this.createRenderBounds();
|
|
439
465
|
this.setUpdateType(UpdateType.RenderState);
|
|
440
466
|
this.setUpdateType(UpdateType.Children);
|
|
467
|
+
this.childUpdateType |= UpdateType.RenderBounds;
|
|
441
468
|
}
|
|
442
469
|
if (this.updateType & UpdateType.RenderState) {
|
|
443
470
|
renderState = this.checkRenderBounds();
|
|
@@ -495,6 +522,7 @@ export class CoreNode extends EventEmitter {
|
|
|
495
522
|
}
|
|
496
523
|
if (this.props.strictBounds === true &&
|
|
497
524
|
this.renderState === CoreNodeRenderState.OutOfBounds) {
|
|
525
|
+
this.updateType &= ~UpdateType.RenderBounds; // remove render bounds update
|
|
498
526
|
return;
|
|
499
527
|
}
|
|
500
528
|
if (this.updateType & UpdateType.Children && this.children.length > 0) {
|
|
@@ -589,10 +617,6 @@ export class CoreNode extends EventEmitter {
|
|
|
589
617
|
assertTruthy(this.renderBound);
|
|
590
618
|
assertTruthy(this.strictBound);
|
|
591
619
|
assertTruthy(this.preloadBound);
|
|
592
|
-
// if we are part of a parent render texture, we're always in bounds
|
|
593
|
-
if (this.parentHasRenderTexture === true) {
|
|
594
|
-
return this.getRTTParentRenderState() || CoreNodeRenderState.OutOfBounds;
|
|
595
|
-
}
|
|
596
620
|
if (boundInsideBound(this.renderBound, this.strictBound)) {
|
|
597
621
|
return CoreNodeRenderState.InViewport;
|
|
598
622
|
}
|
|
@@ -611,7 +635,8 @@ export class CoreNode extends EventEmitter {
|
|
|
611
635
|
return CoreNodeRenderState.OutOfBounds;
|
|
612
636
|
}
|
|
613
637
|
updateBoundingRect() {
|
|
614
|
-
const
|
|
638
|
+
const transform = this.sceneGlobalTransform || this.globalTransform;
|
|
639
|
+
const renderCoords = this.sceneRenderCoords || this.renderCoords;
|
|
615
640
|
assertTruthy(transform);
|
|
616
641
|
assertTruthy(renderCoords);
|
|
617
642
|
const { tb, tc } = transform;
|
|
@@ -630,7 +655,7 @@ export class CoreNode extends EventEmitter {
|
|
|
630
655
|
// we have a parent with a valid bound, copy it
|
|
631
656
|
const parentBound = this.parent.strictBound;
|
|
632
657
|
this.strictBound = createBound(parentBound.x1, parentBound.y1, parentBound.x2, parentBound.y2);
|
|
633
|
-
this.preloadBound = createPreloadBounds(this.strictBound, this.
|
|
658
|
+
this.preloadBound = createPreloadBounds(this.strictBound, this.boundsMargin);
|
|
634
659
|
}
|
|
635
660
|
else {
|
|
636
661
|
// no parent or parent does not have a bound, take the stage boundaries
|
|
@@ -652,11 +677,13 @@ export class CoreNode extends EventEmitter {
|
|
|
652
677
|
}
|
|
653
678
|
// clipping is enabled and we are in bounds create our own bounds
|
|
654
679
|
const { x, y, width, height } = this.props;
|
|
655
|
-
|
|
680
|
+
// Pick the global transform if available, otherwise use the local transform
|
|
681
|
+
// global transform is only available if the node in an RTT chain
|
|
682
|
+
const { tx, ty } = this.sceneGlobalTransform || this.globalTransform || {};
|
|
656
683
|
const _x = tx ?? x;
|
|
657
684
|
const _y = ty ?? y;
|
|
658
685
|
this.strictBound = createBound(_x, _y, _x + width, _y + height, this.strictBound);
|
|
659
|
-
this.preloadBound = createPreloadBounds(this.strictBound, this.
|
|
686
|
+
this.preloadBound = createPreloadBounds(this.strictBound, this.boundsMargin);
|
|
660
687
|
}
|
|
661
688
|
updateRenderState(renderState) {
|
|
662
689
|
if (renderState === this.renderState) {
|
|
@@ -753,9 +780,8 @@ export class CoreNode extends EventEmitter {
|
|
|
753
780
|
return this.props.shader !== null;
|
|
754
781
|
}
|
|
755
782
|
calculateRenderCoords() {
|
|
756
|
-
const { width, height
|
|
757
|
-
|
|
758
|
-
const { tx, ty, ta, tb, tc, td } = transform;
|
|
783
|
+
const { width, height } = this;
|
|
784
|
+
const { tx, ty, ta, tb, tc, td } = this.globalTransform;
|
|
759
785
|
if (tb === 0 && tc === 0) {
|
|
760
786
|
const minX = tx;
|
|
761
787
|
const maxX = tx + width * ta;
|
|
@@ -782,6 +808,36 @@ export class CoreNode extends EventEmitter {
|
|
|
782
808
|
//bottom-left
|
|
783
809
|
tx + height * tb, ty + height * td, this.renderCoords);
|
|
784
810
|
}
|
|
811
|
+
if (this.sceneGlobalTransform === undefined) {
|
|
812
|
+
return;
|
|
813
|
+
}
|
|
814
|
+
const { tx: stx, ty: sty, ta: sta, tb: stb, tc: stc, td: std, } = this.sceneGlobalTransform;
|
|
815
|
+
if (stb === 0 && stc === 0) {
|
|
816
|
+
const minX = stx;
|
|
817
|
+
const maxX = stx + width * sta;
|
|
818
|
+
const minY = sty;
|
|
819
|
+
const maxY = sty + height * std;
|
|
820
|
+
this.sceneRenderCoords = RenderCoords.translate(
|
|
821
|
+
//top-left
|
|
822
|
+
minX, minY,
|
|
823
|
+
//top-right
|
|
824
|
+
maxX, minY,
|
|
825
|
+
//bottom-right
|
|
826
|
+
maxX, maxY,
|
|
827
|
+
//bottom-left
|
|
828
|
+
minX, maxY, this.sceneRenderCoords);
|
|
829
|
+
}
|
|
830
|
+
else {
|
|
831
|
+
this.sceneRenderCoords = RenderCoords.translate(
|
|
832
|
+
//top-left
|
|
833
|
+
stx, sty,
|
|
834
|
+
//top-right
|
|
835
|
+
stx + width * sta, sty + width * stc,
|
|
836
|
+
//bottom-right
|
|
837
|
+
stx + width * sta + height * stb, sty + width * stc + height * std,
|
|
838
|
+
//bottom-left
|
|
839
|
+
stx + height * stb, sty + height * std, this.sceneRenderCoords);
|
|
840
|
+
}
|
|
785
841
|
}
|
|
786
842
|
/**
|
|
787
843
|
* This function calculates the clipping rectangle for a node.
|
|
@@ -1078,6 +1134,26 @@ export class CoreNode extends EventEmitter {
|
|
|
1078
1134
|
set autosize(value) {
|
|
1079
1135
|
this.props.autosize = value;
|
|
1080
1136
|
}
|
|
1137
|
+
get boundsMargin() {
|
|
1138
|
+
return (this.props.boundsMargin ??
|
|
1139
|
+
this.parent?.boundsMargin ??
|
|
1140
|
+
this.stage.boundsMargin);
|
|
1141
|
+
}
|
|
1142
|
+
set boundsMargin(value) {
|
|
1143
|
+
if (value === this.props.boundsMargin) {
|
|
1144
|
+
return;
|
|
1145
|
+
}
|
|
1146
|
+
if (value === null) {
|
|
1147
|
+
this.props.boundsMargin = value;
|
|
1148
|
+
}
|
|
1149
|
+
else {
|
|
1150
|
+
const bm = Array.isArray(value)
|
|
1151
|
+
? value
|
|
1152
|
+
: [value, value, value, value];
|
|
1153
|
+
this.props.boundsMargin = bm;
|
|
1154
|
+
}
|
|
1155
|
+
this.setUpdateType(UpdateType.RenderBounds);
|
|
1156
|
+
}
|
|
1081
1157
|
get clipping() {
|
|
1082
1158
|
return this.props.clipping;
|
|
1083
1159
|
}
|