@lightningjs/renderer 2.12.0 → 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 +12 -1
- package/dist/src/core/CoreNode.js +113 -34
- 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 +17 -6
- package/dist/src/core/TextureMemoryManager.js +78 -18
- 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/WebGlContextWrapper.d.ts +7 -0
- package/dist/src/core/lib/WebGlContextWrapper.js +9 -0
- package/dist/src/core/lib/WebGlContextWrapper.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/WebGlCoreCtxRenderTexture.d.ts +2 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +9 -5
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.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/WebGlCoreRenderer.d.ts +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +18 -18
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.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 -2335
- 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 -310
- 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 -1322
- 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 -79
- 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 -814
- 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;
|
|
@@ -684,6 +692,8 @@ export declare class CoreNode extends EventEmitter {
|
|
|
684
692
|
*/
|
|
685
693
|
update(delta: number, parentClippingRect: RectWithValid): void;
|
|
686
694
|
private findParentRTTNode;
|
|
695
|
+
private getRTTParentRenderState;
|
|
696
|
+
private notifyChildrenRTTOfUpdate;
|
|
687
697
|
private notifyParentRTTOfUpdate;
|
|
688
698
|
checkRenderBounds(): CoreNodeRenderState;
|
|
689
699
|
updateBoundingRect(): void;
|
|
@@ -772,6 +782,8 @@ export declare class CoreNode extends EventEmitter {
|
|
|
772
782
|
set alpha(value: number);
|
|
773
783
|
get autosize(): boolean;
|
|
774
784
|
set autosize(value: boolean);
|
|
785
|
+
get boundsMargin(): number | [number, number, number, number] | null;
|
|
786
|
+
set boundsMargin(value: number | [number, number, number, number] | null);
|
|
775
787
|
get clipping(): boolean;
|
|
776
788
|
set clipping(value: boolean);
|
|
777
789
|
get color(): number;
|
|
@@ -803,7 +815,6 @@ export declare class CoreNode extends EventEmitter {
|
|
|
803
815
|
get rtt(): boolean;
|
|
804
816
|
set rtt(value: boolean);
|
|
805
817
|
private initRenderTexture;
|
|
806
|
-
private loadRenderTexture;
|
|
807
818
|
private cleanupRenderTexture;
|
|
808
819
|
private markChildrenWithRTT;
|
|
809
820
|
private applyRTTInheritance;
|
|
@@ -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 |
|
|
@@ -414,17 +426,29 @@ export class CoreNode extends EventEmitter {
|
|
|
414
426
|
let renderState = null;
|
|
415
427
|
// Handle specific RTT updates at this node level
|
|
416
428
|
if (this.updateType & UpdateType.RenderTexture && this.rtt) {
|
|
417
|
-
// Only the RTT node itself triggers `renderToTexture`
|
|
418
429
|
this.hasRTTupdates = true;
|
|
419
|
-
this.loadRenderTexture();
|
|
420
430
|
}
|
|
421
431
|
if (this.updateType & UpdateType.Global) {
|
|
422
432
|
assertTruthy(this.localTransform);
|
|
423
|
-
this.
|
|
424
|
-
|
|
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
|
|
425
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);
|
|
426
439
|
}
|
|
427
|
-
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) {
|
|
428
452
|
this.globalTransform.multiply(this.localTransform);
|
|
429
453
|
}
|
|
430
454
|
this.calculateRenderCoords();
|
|
@@ -440,6 +464,7 @@ export class CoreNode extends EventEmitter {
|
|
|
440
464
|
this.createRenderBounds();
|
|
441
465
|
this.setUpdateType(UpdateType.RenderState);
|
|
442
466
|
this.setUpdateType(UpdateType.Children);
|
|
467
|
+
this.childUpdateType |= UpdateType.RenderBounds;
|
|
443
468
|
}
|
|
444
469
|
if (this.updateType & UpdateType.RenderState) {
|
|
445
470
|
renderState = this.checkRenderBounds();
|
|
@@ -497,6 +522,7 @@ export class CoreNode extends EventEmitter {
|
|
|
497
522
|
}
|
|
498
523
|
if (this.props.strictBounds === true &&
|
|
499
524
|
this.renderState === CoreNodeRenderState.OutOfBounds) {
|
|
525
|
+
this.updateType &= ~UpdateType.RenderBounds; // remove render bounds update
|
|
500
526
|
return;
|
|
501
527
|
}
|
|
502
528
|
if (this.updateType & UpdateType.Children && this.children.length > 0) {
|
|
@@ -537,6 +563,13 @@ export class CoreNode extends EventEmitter {
|
|
|
537
563
|
if (renderState === CoreNodeRenderState.OutOfBounds) {
|
|
538
564
|
this.updateRenderState(renderState);
|
|
539
565
|
this.updateIsRenderable();
|
|
566
|
+
if (this.rtt === true &&
|
|
567
|
+
renderState === CoreNodeRenderState.OutOfBounds) {
|
|
568
|
+
// notify children that we are going out of bounds
|
|
569
|
+
// we have to do this now before we stop processing the render tree
|
|
570
|
+
this.notifyChildrenRTTOfUpdate(renderState);
|
|
571
|
+
// this.childUpdateType |= UpdateType.RenderState;
|
|
572
|
+
}
|
|
540
573
|
}
|
|
541
574
|
// reset update type
|
|
542
575
|
this.updateType = 0;
|
|
@@ -549,6 +582,21 @@ export class CoreNode extends EventEmitter {
|
|
|
549
582
|
}
|
|
550
583
|
return rttNode;
|
|
551
584
|
}
|
|
585
|
+
getRTTParentRenderState() {
|
|
586
|
+
const rttNode = this.rttParent || this.findParentRTTNode();
|
|
587
|
+
if (!rttNode) {
|
|
588
|
+
return null;
|
|
589
|
+
}
|
|
590
|
+
return rttNode.renderState;
|
|
591
|
+
}
|
|
592
|
+
notifyChildrenRTTOfUpdate(renderState) {
|
|
593
|
+
for (const child of this.children) {
|
|
594
|
+
// force child to update render state
|
|
595
|
+
child.updateRenderState(renderState);
|
|
596
|
+
child.updateIsRenderable();
|
|
597
|
+
child.notifyChildrenRTTOfUpdate(renderState);
|
|
598
|
+
}
|
|
599
|
+
}
|
|
552
600
|
notifyParentRTTOfUpdate() {
|
|
553
601
|
if (this.parent === null) {
|
|
554
602
|
return;
|
|
@@ -579,10 +627,6 @@ export class CoreNode extends EventEmitter {
|
|
|
579
627
|
if (boundLargeThanBound(this.renderBound, this.strictBound)) {
|
|
580
628
|
return CoreNodeRenderState.InViewport;
|
|
581
629
|
}
|
|
582
|
-
// if we are part of a parent render texture, we're always in bounds
|
|
583
|
-
if (this.parentHasRenderTexture === true) {
|
|
584
|
-
return CoreNodeRenderState.InBounds;
|
|
585
|
-
}
|
|
586
630
|
// check if we dont have dimensions, take our parent's render state
|
|
587
631
|
if (this.parent !== null &&
|
|
588
632
|
(this.props.width === 0 || this.props.height === 0)) {
|
|
@@ -591,7 +635,8 @@ export class CoreNode extends EventEmitter {
|
|
|
591
635
|
return CoreNodeRenderState.OutOfBounds;
|
|
592
636
|
}
|
|
593
637
|
updateBoundingRect() {
|
|
594
|
-
const
|
|
638
|
+
const transform = this.sceneGlobalTransform || this.globalTransform;
|
|
639
|
+
const renderCoords = this.sceneRenderCoords || this.renderCoords;
|
|
595
640
|
assertTruthy(transform);
|
|
596
641
|
assertTruthy(renderCoords);
|
|
597
642
|
const { tb, tc } = transform;
|
|
@@ -610,7 +655,7 @@ export class CoreNode extends EventEmitter {
|
|
|
610
655
|
// we have a parent with a valid bound, copy it
|
|
611
656
|
const parentBound = this.parent.strictBound;
|
|
612
657
|
this.strictBound = createBound(parentBound.x1, parentBound.y1, parentBound.x2, parentBound.y2);
|
|
613
|
-
this.preloadBound = createPreloadBounds(this.strictBound, this.
|
|
658
|
+
this.preloadBound = createPreloadBounds(this.strictBound, this.boundsMargin);
|
|
614
659
|
}
|
|
615
660
|
else {
|
|
616
661
|
// no parent or parent does not have a bound, take the stage boundaries
|
|
@@ -632,11 +677,13 @@ export class CoreNode extends EventEmitter {
|
|
|
632
677
|
}
|
|
633
678
|
// clipping is enabled and we are in bounds create our own bounds
|
|
634
679
|
const { x, y, width, height } = this.props;
|
|
635
|
-
|
|
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 || {};
|
|
636
683
|
const _x = tx ?? x;
|
|
637
684
|
const _y = ty ?? y;
|
|
638
685
|
this.strictBound = createBound(_x, _y, _x + width, _y + height, this.strictBound);
|
|
639
|
-
this.preloadBound = createPreloadBounds(this.strictBound, this.
|
|
686
|
+
this.preloadBound = createPreloadBounds(this.strictBound, this.boundsMargin);
|
|
640
687
|
}
|
|
641
688
|
updateRenderState(renderState) {
|
|
642
689
|
if (renderState === this.renderState) {
|
|
@@ -733,9 +780,8 @@ export class CoreNode extends EventEmitter {
|
|
|
733
780
|
return this.props.shader !== null;
|
|
734
781
|
}
|
|
735
782
|
calculateRenderCoords() {
|
|
736
|
-
const { width, height
|
|
737
|
-
|
|
738
|
-
const { tx, ty, ta, tb, tc, td } = transform;
|
|
783
|
+
const { width, height } = this;
|
|
784
|
+
const { tx, ty, ta, tb, tc, td } = this.globalTransform;
|
|
739
785
|
if (tb === 0 && tc === 0) {
|
|
740
786
|
const minX = tx;
|
|
741
787
|
const maxX = tx + width * ta;
|
|
@@ -762,6 +808,36 @@ export class CoreNode extends EventEmitter {
|
|
|
762
808
|
//bottom-left
|
|
763
809
|
tx + height * tb, ty + height * td, this.renderCoords);
|
|
764
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
|
+
}
|
|
765
841
|
}
|
|
766
842
|
/**
|
|
767
843
|
* This function calculates the clipping rectangle for a node.
|
|
@@ -1058,6 +1134,26 @@ export class CoreNode extends EventEmitter {
|
|
|
1058
1134
|
set autosize(value) {
|
|
1059
1135
|
this.props.autosize = value;
|
|
1060
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
|
+
}
|
|
1061
1157
|
get clipping() {
|
|
1062
1158
|
return this.props.clipping;
|
|
1063
1159
|
}
|
|
@@ -1235,28 +1331,11 @@ export class CoreNode extends EventEmitter {
|
|
|
1235
1331
|
width: this.width,
|
|
1236
1332
|
height: this.height,
|
|
1237
1333
|
});
|
|
1238
|
-
this.
|
|
1239
|
-
}
|
|
1240
|
-
loadRenderTexture() {
|
|
1241
|
-
if (this.texture === null) {
|
|
1242
|
-
return;
|
|
1243
|
-
}
|
|
1244
|
-
// If the texture is already loaded, render to it immediately
|
|
1245
|
-
if (this.texture.state === 'loaded') {
|
|
1246
|
-
this.stage.renderer?.renderToTexture(this);
|
|
1247
|
-
return;
|
|
1248
|
-
}
|
|
1249
|
-
// call load immediately to ensure the texture is created
|
|
1250
|
-
this.stage.txManager.loadTexture(this.texture, true);
|
|
1251
|
-
this.texture.once('loaded', () => {
|
|
1252
|
-
this.stage.renderer?.renderToTexture(this); // Only this RTT node
|
|
1253
|
-
this.setUpdateType(UpdateType.IsRenderable);
|
|
1254
|
-
});
|
|
1334
|
+
this.stage.renderer.renderToTexture(this);
|
|
1255
1335
|
}
|
|
1256
1336
|
cleanupRenderTexture() {
|
|
1257
1337
|
this.unloadTexture();
|
|
1258
1338
|
this.clearRTTInheritance();
|
|
1259
|
-
this.stage.renderer?.removeRTTNode(this);
|
|
1260
1339
|
this.hasRTTupdates = false;
|
|
1261
1340
|
this.texture = null;
|
|
1262
1341
|
}
|