@lightningtv/renderer 2.16.1 → 3.2.3
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/NOTICE +4 -0
- package/README.md +22 -28
- package/dist/exports/canvas-shaders.js +0 -16
- package/dist/exports/canvas-shaders.js.map +1 -1
- package/dist/exports/canvas.d.ts +8 -2
- package/dist/exports/canvas.js +8 -20
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +18 -13
- package/dist/exports/index.js +9 -27
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/inspector.js +0 -18
- package/dist/exports/inspector.js.map +1 -1
- package/dist/exports/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -19
- package/dist/exports/utils.js.map +1 -1
- package/dist/exports/webgl-shaders.js +0 -16
- package/dist/exports/webgl-shaders.js.map +1 -1
- package/dist/exports/webgl.d.ts +11 -2
- package/dist/exports/webgl.js +11 -20
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/common/CommonTypes.d.ts +15 -3
- package/dist/src/common/CommonTypes.js +0 -18
- package/dist/src/common/CommonTypes.js.map +1 -1
- package/dist/src/common/EventEmitter.js +0 -18
- package/dist/src/common/EventEmitter.js.map +1 -1
- package/dist/src/common/IEventEmitter.js +0 -16
- package/dist/src/common/IEventEmitter.js.map +1 -1
- package/dist/src/core/Autosizer.d.ts +35 -0
- package/dist/src/core/Autosizer.js +178 -0
- package/dist/src/core/Autosizer.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +138 -105
- package/dist/src/core/CoreNode.js +805 -526
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +29 -73
- package/dist/src/core/CoreShaderManager.js +92 -97
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +75 -87
- package/dist/src/core/CoreTextNode.js +380 -258
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +18 -3
- package/dist/src/core/CoreTextureManager.js +63 -107
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +82 -55
- package/dist/src/core/Stage.js +410 -247
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureError.d.ts +11 -0
- package/dist/src/core/TextureError.js +37 -0
- package/dist/src/core/TextureError.js.map +1 -0
- package/dist/src/core/TextureMemoryManager.d.ts +4 -3
- package/dist/src/core/TextureMemoryManager.js +103 -135
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/AnimationManager.js +0 -18
- package/dist/src/core/animations/AnimationManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.d.ts +3 -4
- package/dist/src/core/animations/CoreAnimation.js +9 -76
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.js +0 -18
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/ContextSpy.js +0 -18
- package/dist/src/core/lib/ContextSpy.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.d.ts +2 -2
- package/dist/src/core/lib/ImageWorker.js +31 -30
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/Matrix3d.d.ts +1 -0
- package/dist/src/core/lib/Matrix3d.js +7 -19
- package/dist/src/core/lib/Matrix3d.js.map +1 -1
- package/dist/src/core/lib/RenderCoords.d.ts +9 -10
- package/dist/src/core/lib/RenderCoords.js +27 -55
- package/dist/src/core/lib/RenderCoords.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +147 -59
- package/dist/src/core/lib/WebGlContextWrapper.js +252 -158
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/collectionUtils.d.ts +5 -0
- package/dist/src/core/lib/collectionUtils.js +82 -0
- package/dist/src/core/lib/collectionUtils.js.map +1 -0
- package/dist/src/core/lib/colorCache.d.ts +1 -0
- package/dist/src/core/lib/colorCache.js +19 -0
- package/dist/src/core/lib/colorCache.js.map +1 -0
- package/dist/src/core/{renderers/canvas/internal/ColorUtils.d.ts → lib/colorParser.d.ts} +2 -0
- package/dist/src/core/{renderers/canvas/internal/ColorUtils.js → lib/colorParser.js} +15 -19
- package/dist/src/core/lib/colorParser.js.map +1 -0
- package/dist/src/core/lib/textureCompression.d.ts +14 -2
- package/dist/src/core/lib/textureCompression.js +320 -86
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/textureSvg.js +0 -18
- package/dist/src/core/lib/textureSvg.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +8 -2
- package/dist/src/core/lib/utils.js +21 -20
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
- package/dist/src/core/lib/validateImageBitmap.js +4 -4
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
- package/dist/src/core/platforms/Platform.d.ts +5 -0
- package/dist/src/core/platforms/Platform.js +0 -18
- package/dist/src/core/platforms/Platform.js.map +1 -1
- package/dist/src/core/platforms/web/WebPlatform.d.ts +1 -0
- package/dist/src/core/platforms/web/WebPlatform.js +39 -7
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
- package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -0
- package/dist/src/core/renderers/CoreContextTexture.js +0 -18
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderOp.js +0 -18
- package/dist/src/core/renderers/CoreRenderOp.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +25 -23
- package/dist/src/core/renderers/CoreRenderer.js +1 -24
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +10 -0
- package/dist/src/core/renderers/CoreShaderNode.js +19 -2
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderProgram.js +0 -18
- package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +3 -5
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +86 -83
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +2 -17
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
- package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -31
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js +80 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -24
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -23
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +102 -67
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +31 -19
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +297 -200
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -4
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +5 -5
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +61 -34
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +1 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js +12 -21
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -18
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -1
- package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
- package/dist/src/core/shaders/canvas/Border.js +67 -41
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/HolePunch.js +3 -19
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +2 -18
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +5 -21
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js +1 -17
- package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +40 -26
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +2 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +43 -23
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +4 -18
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/Shadow.js +0 -16
- package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
- package/dist/src/core/shaders/canvas/utils/render.js +31 -34
- package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +11 -2
- package/dist/src/core/shaders/templates/BorderTemplate.js +30 -26
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +2 -18
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -16
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -18
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -2
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +3 -17
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/utils.js +0 -16
- package/dist/src/core/shaders/utils.js.map +1 -1
- package/dist/src/core/shaders/webgl/Border.js +75 -31
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Default.js +6 -41
- package/dist/src/core/shaders/webgl/Default.js.map +1 -1
- package/dist/src/core/shaders/webgl/HolePunch.js +2 -18
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +68 -30
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +52 -45
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +25 -23
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +110 -48
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +114 -54
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +73 -34
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
- package/dist/src/core/shaders/webgl/SdfShader.js +7 -35
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/shaders/webgl/Shadow.js +39 -34
- package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +206 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +139 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +167 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +371 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +18 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js +301 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
- package/dist/src/core/text-rendering/TextRenderer.d.ts +384 -0
- package/dist/src/core/text-rendering/TextRenderer.js +2 -0
- package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/Utils.d.ts +30 -0
- package/dist/src/core/text-rendering/Utils.js +66 -0
- package/dist/src/core/text-rendering/Utils.js.map +1 -0
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +3 -22
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +10 -3
- package/dist/src/core/textures/ImageTexture.js +33 -62
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
- package/dist/src/core/textures/NoiseTexture.js +8 -26
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +7 -7
- package/dist/src/core/textures/RenderTexture.js +12 -30
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +6 -8
- package/dist/src/core/textures/SubTexture.js +19 -55
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +80 -16
- package/dist/src/core/textures/Texture.js +131 -37
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +2 -1
- package/dist/src/core/utils.js +1 -19
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/INode.d.ts +9 -9
- package/dist/src/main-api/INode.js.map +1 -1
- package/dist/src/main-api/Inspector.d.ts +135 -2
- package/dist/src/main-api/Inspector.js +507 -30
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +246 -162
- package/dist/src/main-api/Renderer.js +192 -152
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +23 -4
- package/dist/src/utils.js +50 -27
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/exports/canvas-shaders.ts +11 -0
- package/exports/canvas.ts +8 -20
- package/exports/index.ts +24 -44
- package/exports/inspector.ts +0 -19
- package/exports/utils.ts +7 -19
- package/exports/webgl-shaders.ts +12 -0
- package/exports/webgl.ts +15 -20
- package/package.json +23 -20
- package/src/common/CommonTypes.ts +20 -22
- package/src/common/EventEmitter.ts +0 -19
- package/src/common/IAnimationController.ts +0 -18
- package/src/common/IEventEmitter.ts +0 -17
- package/src/core/Autosizer.ts +205 -0
- package/src/core/CoreNode.test.ts +378 -46
- package/src/core/CoreNode.ts +1007 -659
- package/src/core/CoreShaderManager.ts +128 -250
- package/src/core/CoreTextNode.ts +457 -321
- package/src/core/CoreTextureManager.ts +94 -115
- package/src/core/Stage.ts +516 -312
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +139 -175
- package/src/core/animations/AnimationManager.ts +0 -19
- package/src/core/animations/CoreAnimation.ts +16 -96
- package/src/core/animations/CoreAnimationController.ts +0 -19
- package/src/core/lib/ContextSpy.ts +0 -19
- package/src/core/lib/ImageWorker.ts +43 -31
- package/src/core/lib/Matrix3d.ts +7 -20
- package/src/core/lib/RenderCoords.ts +36 -67
- package/src/core/lib/WebGlContextWrapper.ts +353 -237
- package/src/core/lib/collectionUtils.ts +99 -0
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +16 -19
- package/src/core/lib/textureCompression.ts +434 -94
- package/src/core/lib/textureSvg.ts +0 -19
- package/src/core/lib/utils.ts +31 -19
- package/src/core/lib/validateImageBitmap.ts +17 -6
- package/src/core/platforms/Platform.ts +64 -0
- package/src/core/platforms/web/WebPlatform.ts +132 -0
- package/src/core/renderers/CoreContextTexture.ts +1 -19
- package/src/core/renderers/CoreRenderOp.ts +0 -19
- package/src/core/renderers/CoreRenderer.ts +34 -49
- package/src/core/renderers/CoreShaderNode.ts +202 -0
- package/src/core/renderers/CoreShaderProgram.ts +4 -0
- package/src/core/renderers/canvas/CanvasRenderer.ts +270 -0
- package/src/core/renderers/canvas/CanvasShaderNode.ts +79 -0
- package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +15 -27
- package/src/core/renderers/webgl/SdfRenderOp.ts +88 -0
- package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +15 -36
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +76 -0
- package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +89 -70
- package/src/core/renderers/webgl/WebGlRenderer.ts +850 -0
- package/src/core/renderers/webgl/WebGlShaderNode.ts +430 -0
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +356 -0
- package/src/core/renderers/webgl/internal/BufferCollection.ts +15 -23
- package/src/core/renderers/webgl/internal/RendererUtils.ts +0 -19
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -24
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +0 -19
- package/src/core/shaders/canvas/Border.ts +119 -0
- package/src/core/shaders/canvas/HolePunch.ts +38 -0
- package/src/core/shaders/canvas/LinearGradient.ts +54 -0
- package/src/core/shaders/canvas/RadialGradient.ts +82 -0
- package/src/core/shaders/canvas/Rounded.ts +38 -0
- package/src/core/shaders/canvas/RoundedWithBorder.ts +105 -0
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +118 -0
- package/src/core/shaders/canvas/RoundedWithShadow.ts +56 -0
- package/src/core/shaders/canvas/Shadow.ts +35 -0
- package/src/core/shaders/canvas/utils/render.ts +143 -0
- package/src/core/shaders/templates/BorderTemplate.ts +128 -0
- package/src/core/shaders/templates/HolePunchTemplate.ts +65 -0
- package/src/core/shaders/templates/LinearGradientTemplate.ts +54 -0
- package/src/core/shaders/templates/RadialGradientTemplate.ts +66 -0
- package/src/core/shaders/templates/RoundedTemplate.ts +81 -0
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +21 -0
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +23 -0
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +18 -0
- package/src/core/shaders/templates/ShadowTemplate.ts +89 -0
- package/src/core/shaders/utils.ts +30 -0
- package/src/core/shaders/webgl/Border.ts +159 -0
- package/src/core/shaders/webgl/Default.ts +52 -0
- package/src/core/shaders/webgl/HolePunch.ts +58 -0
- package/src/core/shaders/webgl/LinearGradient.ts +119 -0
- package/src/core/shaders/webgl/RadialGradient.ts +91 -0
- package/src/core/shaders/webgl/Rounded.ts +97 -0
- package/src/core/shaders/webgl/RoundedWithBorder.ts +212 -0
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +234 -0
- package/src/core/shaders/webgl/RoundedWithShadow.ts +132 -0
- package/src/core/shaders/webgl/SdfShader.ts +104 -0
- package/src/core/shaders/webgl/Shadow.ts +119 -0
- package/src/core/text-rendering/CanvasFontHandler.ts +285 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +236 -0
- package/src/core/text-rendering/SdfFontHandler.ts +566 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +406 -0
- package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
- package/src/core/text-rendering/TextRenderer.ts +426 -0
- package/src/core/text-rendering/Utils.ts +80 -0
- package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +434 -0
- package/src/core/textures/ColorTexture.ts +7 -24
- package/src/core/textures/ImageTexture.ts +72 -78
- package/src/core/textures/NoiseTexture.ts +14 -31
- package/src/core/textures/RenderTexture.ts +18 -35
- package/src/core/textures/SubTexture.ts +25 -65
- package/src/core/textures/Texture.ts +182 -53
- package/src/core/utils.ts +9 -26
- package/src/main-api/INode.ts +10 -29
- package/src/main-api/Inspector.ts +794 -38
- package/src/main-api/Renderer.ts +476 -274
- package/src/utils.ts +83 -29
- package/dist/src/core/animations/SimpleAnimation.d.ts +0 -28
- package/dist/src/core/animations/SimpleAnimation.js +0 -96
- package/dist/src/core/animations/SimpleAnimation.js.map +0 -1
- package/dist/src/core/platform.d.ts +0 -10
- package/dist/src/core/platform.js +0 -81
- package/dist/src/core/platform.js.map +0 -1
- package/dist/src/core/renderers/CoreShader.d.ts +0 -9
- package/dist/src/core/renderers/CoreShader.js +0 -28
- package/dist/src/core/renderers/CoreShader.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -124
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -14
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -138
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -58
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -56
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -239
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -616
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -233
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -44
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -118
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
- package/dist/src/core/shaders/templates/shaderUtils.d.ts +0 -5
- package/dist/src/core/shaders/templates/shaderUtils.js +0 -41
- package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
- package/dist/src/core/shaders/webgl/Magnifier.d.ts +0 -46
- package/dist/src/core/shaders/webgl/Magnifier.js +0 -107
- package/dist/src/core/shaders/webgl/Magnifier.js.map +0 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder copy.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RoundedWithBorder copy.js +0 -218
- package/dist/src/core/shaders/webgl/RoundedWithBorder copy.js.map +0 -1
- package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
- package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
- package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
- package/dist/src/core/text-rendering/TrFontManager.js +0 -131
- package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
- package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -120
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -92
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -607
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -373
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
- package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
- package/dist/src/main-api/DynamicShaderController.js +0 -58
- package/dist/src/main-api/DynamicShaderController.js.map +0 -1
- package/dist/src/main-api/ShaderController.d.ts +0 -31
- package/dist/src/main-api/ShaderController.js +0 -37
- package/dist/src/main-api/ShaderController.js.map +0 -1
- package/scripts/please-use-pnpm.js +0 -13
- package/src/core/platform.ts +0 -100
- package/src/core/renderers/CoreShader.ts +0 -41
- package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -231
- package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +0 -48
- package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +0 -50
- package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +0 -125
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +0 -821
- package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -365
- package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
- package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
- package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
- package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
- package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
- package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
- package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
- package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
- package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
- package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
- package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
- package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
- package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
- package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
- package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
- package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
- package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
- package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
- package/src/core/text-rendering/TrFontManager.ts +0 -183
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
- package/src/core/text-rendering/font-face-types/utils.ts +0 -39
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -808
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -853
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
- package/src/core/text-rendering/renderers/TextRenderer.ts +0 -557
- package/src/main-api/DynamicShaderController.ts +0 -104
- package/src/main-api/ShaderController.ts +0 -80
package/src/main-api/Renderer.ts
CHANGED
|
@@ -1,110 +1,172 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
21
|
-
import type { EffectMap, ShaderMap } from '../core/CoreShaderManager.js';
|
|
22
1
|
import type { ExtractProps, TextureMap } from '../core/CoreTextureManager.js';
|
|
23
2
|
import { EventEmitter } from '../common/EventEmitter.js';
|
|
24
|
-
import {
|
|
25
|
-
import { Stage } from '../core/Stage.js';
|
|
3
|
+
import { isProductionEnvironment } from '../utils.js';
|
|
4
|
+
import { Stage, type StageOptions } from '../core/Stage.js';
|
|
26
5
|
import { CoreNode, type CoreNodeProps } from '../core/CoreNode.js';
|
|
27
6
|
import { type CoreTextNodeProps } from '../core/CoreTextNode.js';
|
|
28
|
-
import type {
|
|
29
|
-
BaseShaderController,
|
|
30
|
-
ShaderController,
|
|
31
|
-
} from './ShaderController.js';
|
|
32
7
|
import type { INode, INodeProps, ITextNode, ITextNodeProps } from './INode.js';
|
|
33
|
-
import type {
|
|
34
|
-
DynamicEffects,
|
|
35
|
-
DynamicShaderController,
|
|
36
|
-
} from './DynamicShaderController.js';
|
|
37
|
-
import type {
|
|
38
|
-
EffectDesc,
|
|
39
|
-
EffectDescUnion,
|
|
40
|
-
} from '../core/renderers/webgl/shaders/effects/ShaderEffect.js';
|
|
41
8
|
import type { TextureMemoryManagerSettings } from '../core/TextureMemoryManager.js';
|
|
42
|
-
import type {
|
|
43
|
-
import type {
|
|
44
|
-
import type {
|
|
45
|
-
import type {
|
|
46
|
-
import type {
|
|
9
|
+
import type { TextRenderer } from '../core/text-rendering/TextRenderer.js';
|
|
10
|
+
import type { CanvasRenderer } from '../core/renderers/canvas/CanvasRenderer.js';
|
|
11
|
+
import type { WebGlRenderer } from '../core/renderers/webgl/WebGlRenderer.js';
|
|
12
|
+
import type { Inspector, InspectorOptions } from './Inspector.js';
|
|
13
|
+
import type { CoreShaderNode } from '../core/renderers/CoreShaderNode.js';
|
|
14
|
+
import type {
|
|
15
|
+
ExtractShaderProps,
|
|
16
|
+
OptionalShaderProps,
|
|
17
|
+
ShaderMap,
|
|
18
|
+
} from '../core/CoreShaderManager.js';
|
|
19
|
+
import { WebPlatform } from '../core/platforms/web/WebPlatform.js';
|
|
20
|
+
import { Platform } from '../core/platforms/Platform.js';
|
|
47
21
|
|
|
48
22
|
/**
|
|
49
|
-
*
|
|
23
|
+
* FPS Update Event Data
|
|
50
24
|
*
|
|
51
|
-
* @
|
|
52
|
-
*
|
|
25
|
+
* @category Events
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* renderer.on('fpsUpdate', (data) => {
|
|
29
|
+
* console.log(`Current FPS: ${data.fps}`);
|
|
30
|
+
* if (data.contextSpyData) {
|
|
31
|
+
* console.log('WebGL calls:', data.contextSpyData);
|
|
32
|
+
* }
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
53
35
|
*/
|
|
54
|
-
export interface
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
36
|
+
export interface RendererMainFpsUpdateEvent {
|
|
37
|
+
/** Current frames per second */
|
|
38
|
+
fps: number;
|
|
39
|
+
/** Context spy data (if enabled) - contains WebGL call statistics */
|
|
40
|
+
contextSpyData?: unknown;
|
|
58
41
|
}
|
|
59
42
|
|
|
60
|
-
|
|
61
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Frame Tick Event Data
|
|
45
|
+
*
|
|
46
|
+
* @category Events
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* renderer.on('frameTick', (data) => {
|
|
50
|
+
* console.log(`Frame time: ${data.time}ms, delta: ${data.delta}ms`);
|
|
51
|
+
* });
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export interface RendererMainFrameTickEvent {
|
|
55
|
+
/** Current timestamp */
|
|
56
|
+
time: number;
|
|
57
|
+
/** Time delta since last frame */
|
|
58
|
+
delta: number;
|
|
59
|
+
}
|
|
62
60
|
|
|
63
61
|
/**
|
|
64
|
-
*
|
|
62
|
+
* Quads Update Event Data
|
|
65
63
|
*
|
|
64
|
+
* @category Events
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* renderer.on('quadsUpdate', (data) => {
|
|
68
|
+
* console.log(`Rendered quads: ${data.quads}`);
|
|
69
|
+
* });
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export interface RendererMainQuadsUpdateEvent {
|
|
73
|
+
/** Number of rendered quads */
|
|
74
|
+
quads: number;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Idle Event Data
|
|
79
|
+
*
|
|
80
|
+
* @category Events
|
|
66
81
|
* @remarks
|
|
67
|
-
* This
|
|
68
|
-
*
|
|
82
|
+
* This event is emitted when the renderer has no scene updates to process.
|
|
83
|
+
* The event has no payload - use this for performance optimizations during idle periods.
|
|
69
84
|
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* renderer.on('idle', () => {
|
|
88
|
+
* // Renderer is idle - perfect time for cleanup, analytics, etc.
|
|
89
|
+
* console.log('Renderer is idle - no scene changes');
|
|
74
90
|
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
91
|
+
* // Example: Perform background tasks
|
|
92
|
+
* performBackgroundCleanup();
|
|
93
|
+
* sendAnalytics();
|
|
94
|
+
* });
|
|
95
|
+
* ```
|
|
78
96
|
*/
|
|
79
|
-
export
|
|
97
|
+
export interface RendererMainIdleEvent {
|
|
98
|
+
/** This event has no payload - listen without parameters */
|
|
99
|
+
readonly __eventHasNoPayload?: never;
|
|
100
|
+
}
|
|
80
101
|
|
|
81
102
|
/**
|
|
82
|
-
*
|
|
103
|
+
* Critical Cleanup Event Data
|
|
104
|
+
*
|
|
105
|
+
* @category Events
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* renderer.on('criticalCleanup', (data) => {
|
|
109
|
+
* console.log(`Memory cleanup triggered!`);
|
|
110
|
+
* console.log(`Memory used: ${data.memUsed} bytes`);
|
|
111
|
+
* console.log(`Critical threshold: ${data.criticalThreshold} bytes`);
|
|
112
|
+
* });
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
export interface RendererMainCriticalCleanupEvent {
|
|
116
|
+
/** Memory used before cleanup (bytes) */
|
|
117
|
+
memUsed: number;
|
|
118
|
+
/** Critical threshold (bytes) */
|
|
119
|
+
criticalThreshold: number;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Critical Cleanup Failed Event Data
|
|
124
|
+
*
|
|
125
|
+
* @category Events
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* renderer.on('criticalCleanupFailed', (data) => {
|
|
129
|
+
* console.warn(`Memory cleanup failed!`);
|
|
130
|
+
* console.log(`Memory still used: ${data.memUsed} bytes`);
|
|
131
|
+
* console.log(`Critical threshold: ${data.criticalThreshold} bytes`);
|
|
132
|
+
* // Consider reducing texture usage or forcing cleanup
|
|
133
|
+
* });
|
|
134
|
+
* ```
|
|
83
135
|
*/
|
|
84
|
-
export interface
|
|
136
|
+
export interface RendererMainCriticalCleanupFailedEvent {
|
|
137
|
+
/** Memory used after cleanup (bytes) */
|
|
138
|
+
memUsed: number;
|
|
139
|
+
/** Critical threshold (bytes) */
|
|
140
|
+
criticalThreshold: number;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Settings for the Renderer that can be updated during runtime.
|
|
145
|
+
*/
|
|
146
|
+
export interface RendererRuntimeSettings {
|
|
85
147
|
/**
|
|
86
148
|
* Authored logical pixel width of the application
|
|
87
149
|
*
|
|
88
150
|
* @defaultValue `1920`
|
|
89
151
|
*/
|
|
90
|
-
appWidth
|
|
152
|
+
appWidth: number;
|
|
91
153
|
|
|
92
154
|
/**
|
|
93
155
|
* Authored logical pixel height of the application
|
|
94
156
|
*
|
|
95
157
|
* @defaultValue `1080`
|
|
96
158
|
*/
|
|
97
|
-
appHeight
|
|
159
|
+
appHeight: number;
|
|
98
160
|
|
|
99
161
|
/**
|
|
100
162
|
* Texture Memory Manager Settings
|
|
101
163
|
*/
|
|
102
|
-
textureMemory
|
|
164
|
+
textureMemory: Partial<TextureMemoryManagerSettings>;
|
|
103
165
|
|
|
104
166
|
/**
|
|
105
167
|
* Bounds margin to extend the boundary in which a Node is added as Quad.
|
|
106
168
|
*/
|
|
107
|
-
boundsMargin
|
|
169
|
+
boundsMargin: number | [number, number, number, number];
|
|
108
170
|
|
|
109
171
|
/**
|
|
110
172
|
* Factor to convert app-authored logical coorindates to device logical coordinates
|
|
@@ -121,7 +183,7 @@ export interface RendererMainSettings {
|
|
|
121
183
|
*
|
|
122
184
|
* @defaultValue `1`
|
|
123
185
|
*/
|
|
124
|
-
deviceLogicalPixelRatio
|
|
186
|
+
deviceLogicalPixelRatio: number;
|
|
125
187
|
|
|
126
188
|
/**
|
|
127
189
|
* Factor to convert device logical coordinates to device physical coordinates
|
|
@@ -138,14 +200,14 @@ export interface RendererMainSettings {
|
|
|
138
200
|
*
|
|
139
201
|
* @defaultValue `window.devicePixelRatio`
|
|
140
202
|
*/
|
|
141
|
-
devicePhysicalPixelRatio
|
|
203
|
+
devicePhysicalPixelRatio: number;
|
|
142
204
|
|
|
143
205
|
/**
|
|
144
206
|
* RGBA encoded number of the background to use
|
|
145
207
|
*
|
|
146
208
|
* @defaultValue `0x00000000`
|
|
147
209
|
*/
|
|
148
|
-
clearColor
|
|
210
|
+
clearColor: number;
|
|
149
211
|
|
|
150
212
|
/**
|
|
151
213
|
* Interval in milliseconds to receive FPS updates
|
|
@@ -155,7 +217,49 @@ export interface RendererMainSettings {
|
|
|
155
217
|
*
|
|
156
218
|
* @defaultValue `0` (disabled)
|
|
157
219
|
*/
|
|
158
|
-
fpsUpdateInterval
|
|
220
|
+
fpsUpdateInterval: number;
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Clears the render buffer on reset
|
|
224
|
+
*
|
|
225
|
+
* @remarks
|
|
226
|
+
* If false, the renderer will not clear the buffer before rendering a new frame.
|
|
227
|
+
* This is useful if you want to preserve the previous frame.
|
|
228
|
+
*
|
|
229
|
+
* @defaultValue `true`
|
|
230
|
+
*/
|
|
231
|
+
enableClear: boolean;
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* DOM Inspector
|
|
235
|
+
*
|
|
236
|
+
* @remarks
|
|
237
|
+
* The inspector will replicate the state of the Nodes created
|
|
238
|
+
* in the renderer and allow inspection of the state of the nodes.
|
|
239
|
+
*
|
|
240
|
+
*/
|
|
241
|
+
inspector: typeof Inspector | false;
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Inspector Options
|
|
245
|
+
*
|
|
246
|
+
* @remarks
|
|
247
|
+
* Configuration options for the Inspector's performance monitoring features.
|
|
248
|
+
* Only used when inspector is enabled.
|
|
249
|
+
*/
|
|
250
|
+
inspectorOptions?: Partial<InspectorOptions>;
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Texture Processing Limit (in milliseconds)
|
|
254
|
+
*
|
|
255
|
+
* @remarks
|
|
256
|
+
* The maximum amount of time the renderer is allowed to process textures in a
|
|
257
|
+
* single frame. If the processing time exceeds this limit, the renderer will
|
|
258
|
+
* skip processing the remaining textures and continue rendering the frame.
|
|
259
|
+
*
|
|
260
|
+
* @defaultValue `10`
|
|
261
|
+
*/
|
|
262
|
+
textureProcessingTimeLimit: number;
|
|
159
263
|
|
|
160
264
|
/**
|
|
161
265
|
* Target FPS for the global render loop
|
|
@@ -171,8 +275,13 @@ export interface RendererMainSettings {
|
|
|
171
275
|
*
|
|
172
276
|
* @defaultValue `0` (no throttling, use display refresh rate)
|
|
173
277
|
*/
|
|
174
|
-
targetFPS
|
|
278
|
+
targetFPS: number;
|
|
279
|
+
}
|
|
175
280
|
|
|
281
|
+
/**
|
|
282
|
+
* Configuration settings for {@link RendererMain}
|
|
283
|
+
*/
|
|
284
|
+
export type RendererMainSettings = RendererRuntimeSettings & {
|
|
176
285
|
/**
|
|
177
286
|
* Include context call (i.e. WebGL) information in FPS updates
|
|
178
287
|
*
|
|
@@ -186,7 +295,7 @@ export interface RendererMainSettings {
|
|
|
186
295
|
*
|
|
187
296
|
* @defaultValue `false` (disabled)
|
|
188
297
|
*/
|
|
189
|
-
enableContextSpy
|
|
298
|
+
enableContextSpy: boolean;
|
|
190
299
|
|
|
191
300
|
/**
|
|
192
301
|
* Number or Image Workers to use
|
|
@@ -198,17 +307,7 @@ export interface RendererMainSettings {
|
|
|
198
307
|
*
|
|
199
308
|
* @defaultValue `2`
|
|
200
309
|
*/
|
|
201
|
-
numImageWorkers
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* DOM Inspector
|
|
205
|
-
*
|
|
206
|
-
* @remarks
|
|
207
|
-
* The inspector will replicate the state of the Nodes created
|
|
208
|
-
* in the renderer and allow inspection of the state of the nodes.
|
|
209
|
-
*
|
|
210
|
-
*/
|
|
211
|
-
inspector?: typeof Inspector | false;
|
|
310
|
+
numImageWorkers: number;
|
|
212
311
|
|
|
213
312
|
/**
|
|
214
313
|
* Renderer Engine
|
|
@@ -223,14 +322,14 @@ export interface RendererMainSettings {
|
|
|
223
322
|
* both CanvasTextRenderer and SdfTextRenderer for Text Rendering.
|
|
224
323
|
*
|
|
225
324
|
*/
|
|
226
|
-
renderEngine: typeof
|
|
325
|
+
renderEngine: typeof CanvasRenderer | typeof WebGlRenderer;
|
|
227
326
|
|
|
228
327
|
/**
|
|
229
328
|
* Quad buffer size in bytes
|
|
230
329
|
*
|
|
231
330
|
* @defaultValue 4 * 1024 * 1024
|
|
232
331
|
*/
|
|
233
|
-
quadBufferSize
|
|
332
|
+
quadBufferSize: number;
|
|
234
333
|
|
|
235
334
|
/**
|
|
236
335
|
* Font Engines
|
|
@@ -260,7 +359,7 @@ export interface RendererMainSettings {
|
|
|
260
359
|
*
|
|
261
360
|
*
|
|
262
361
|
*/
|
|
263
|
-
fontEngines:
|
|
362
|
+
fontEngines: TextRenderer[];
|
|
264
363
|
|
|
265
364
|
/**
|
|
266
365
|
* Force WebGL2
|
|
@@ -271,30 +370,7 @@ export interface RendererMainSettings {
|
|
|
271
370
|
*
|
|
272
371
|
* @defaultValue `false`
|
|
273
372
|
*/
|
|
274
|
-
forceWebGL2
|
|
275
|
-
|
|
276
|
-
/**
|
|
277
|
-
* Enable strictBounds
|
|
278
|
-
*
|
|
279
|
-
* @remarks
|
|
280
|
-
* Enable strict bounds for the renderer. This will ensure that the renderer
|
|
281
|
-
* will not render outside the bounds of the canvas.
|
|
282
|
-
*
|
|
283
|
-
* @defaultValue `true`
|
|
284
|
-
*/
|
|
285
|
-
strictBounds?: boolean;
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* Texture Processing Limit (in milliseconds)
|
|
289
|
-
*
|
|
290
|
-
* @remarks
|
|
291
|
-
* The maximum amount of time the renderer is allowed to process textures in a
|
|
292
|
-
* single frame. If the processing time exceeds this limit, the renderer will
|
|
293
|
-
* skip processing the remaining textures and continue rendering the frame.
|
|
294
|
-
*
|
|
295
|
-
* @defaultValue `10`
|
|
296
|
-
*/
|
|
297
|
-
textureProcessingTimeLimit?: number;
|
|
373
|
+
forceWebGL2: boolean;
|
|
298
374
|
|
|
299
375
|
/**
|
|
300
376
|
* Canvas object to use for rendering
|
|
@@ -303,7 +379,7 @@ export interface RendererMainSettings {
|
|
|
303
379
|
* This is used to render the scene graph. If not provided, a new canvas
|
|
304
380
|
* element will be created and appended to the target element.
|
|
305
381
|
*/
|
|
306
|
-
canvas
|
|
382
|
+
canvas: HTMLCanvasElement;
|
|
307
383
|
|
|
308
384
|
/**
|
|
309
385
|
* createImageBitmap support for the runtime
|
|
@@ -328,8 +404,34 @@ export interface RendererMainSettings {
|
|
|
328
404
|
*
|
|
329
405
|
* @defaultValue `full`
|
|
330
406
|
*/
|
|
331
|
-
createImageBitmapSupport
|
|
332
|
-
|
|
407
|
+
createImageBitmapSupport: 'auto' | 'basic' | 'options' | 'full';
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* Provide an alternative platform abstraction layer
|
|
411
|
+
*
|
|
412
|
+
* @remarks
|
|
413
|
+
* By default the Lightning 3 renderer will load a webplatform, assuming it runs
|
|
414
|
+
* inside a web browsr. However for special cases there might be a need to provide
|
|
415
|
+
* an abstracted platform layer to run on non-web or non-standard JS engines
|
|
416
|
+
*
|
|
417
|
+
* @defaultValue `null`
|
|
418
|
+
*/
|
|
419
|
+
platform: typeof Platform | null;
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Number of times to retry loading a failed texture
|
|
423
|
+
*
|
|
424
|
+
* @remarks
|
|
425
|
+
* When a texture fails to load, Lightning will retry up to this many times
|
|
426
|
+
* before permanently giving up. Each retry will clear the texture ownership
|
|
427
|
+
* and then re-establish it to trigger a new load attempt.
|
|
428
|
+
*
|
|
429
|
+
* Set to null to disable retries. Set to 0 to always try once and never retry.
|
|
430
|
+
* This is typically only used on ImageTexture instances.
|
|
431
|
+
*
|
|
432
|
+
*/
|
|
433
|
+
maxRetryCount?: number;
|
|
434
|
+
};
|
|
333
435
|
|
|
334
436
|
/**
|
|
335
437
|
* The Renderer Main API
|
|
@@ -355,36 +457,36 @@ export interface RendererMainSettings {
|
|
|
355
457
|
* );
|
|
356
458
|
* ```
|
|
357
459
|
*
|
|
358
|
-
* ##
|
|
359
|
-
*
|
|
360
|
-
*
|
|
361
|
-
*
|
|
362
|
-
*
|
|
363
|
-
*
|
|
364
|
-
*
|
|
365
|
-
*
|
|
366
|
-
*
|
|
367
|
-
*
|
|
368
|
-
*
|
|
369
|
-
*
|
|
370
|
-
*
|
|
371
|
-
*
|
|
372
|
-
*
|
|
373
|
-
*
|
|
374
|
-
*
|
|
375
|
-
*
|
|
376
|
-
*
|
|
377
|
-
*
|
|
378
|
-
*
|
|
379
|
-
*
|
|
380
|
-
*
|
|
381
|
-
*
|
|
382
|
-
*
|
|
460
|
+
* ## Event Handling
|
|
461
|
+
*
|
|
462
|
+
* Listen to events using the standard EventEmitter API:
|
|
463
|
+
* ```typescript
|
|
464
|
+
* renderer.on('fpsUpdate', (data: RendererMainFpsUpdateEvent) => {
|
|
465
|
+
* console.log(`FPS: ${data.fps}`);
|
|
466
|
+
* });
|
|
467
|
+
*
|
|
468
|
+
* renderer.on('idle', (data: RendererMainIdleEvent) => {
|
|
469
|
+
* // Renderer is idle - no scene changes
|
|
470
|
+
* });
|
|
471
|
+
* ```
|
|
472
|
+
*
|
|
473
|
+
* @see {@link RendererMainFpsUpdateEvent}
|
|
474
|
+
* @see {@link RendererMainFrameTickEvent}
|
|
475
|
+
* @see {@link RendererMainQuadsUpdateEvent}
|
|
476
|
+
* @see {@link RendererMainIdleEvent}
|
|
477
|
+
* @see {@link RendererMainCriticalCleanupEvent}
|
|
478
|
+
* @see {@link RendererMainCriticalCleanupFailedEvent}
|
|
479
|
+
*
|
|
480
|
+
* @fires RendererMain#fpsUpdate
|
|
481
|
+
* @fires RendererMain#frameTick
|
|
482
|
+
* @fires RendererMain#quadsUpdate
|
|
483
|
+
* @fires RendererMain#idle
|
|
484
|
+
* @fires RendererMain#criticalCleanup
|
|
485
|
+
* @fires RendererMain#criticalCleanupFailed
|
|
383
486
|
*/
|
|
384
487
|
export class RendererMain extends EventEmitter {
|
|
385
|
-
readonly root: INode
|
|
488
|
+
readonly root: INode;
|
|
386
489
|
readonly canvas: HTMLCanvasElement;
|
|
387
|
-
readonly settings: Readonly<Required<RendererMainSettings>>;
|
|
388
490
|
readonly stage: Stage;
|
|
389
491
|
private inspector: Inspector | null = null;
|
|
390
492
|
|
|
@@ -395,45 +497,43 @@ export class RendererMain extends EventEmitter {
|
|
|
395
497
|
* @param target Element ID or HTMLElement to insert the canvas into
|
|
396
498
|
* @param driver Core Driver to use
|
|
397
499
|
*/
|
|
398
|
-
constructor(
|
|
500
|
+
constructor(
|
|
501
|
+
settings: Partial<RendererMainSettings>,
|
|
502
|
+
target?: string | HTMLElement,
|
|
503
|
+
) {
|
|
399
504
|
super();
|
|
400
505
|
|
|
401
|
-
const resolvedTxSettings
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
cleanupInterval: settings.textureMemory?.cleanupInterval || 5000,
|
|
405
|
-
debugLogging: settings.textureMemory?.debugLogging || false,
|
|
406
|
-
baselineMemoryAllocation:
|
|
407
|
-
settings.textureMemory?.baselineMemoryAllocation || 26e6,
|
|
408
|
-
doNotExceedCriticalThreshold:
|
|
409
|
-
settings.textureMemory?.doNotExceedCriticalThreshold || false,
|
|
410
|
-
};
|
|
506
|
+
const resolvedTxSettings = this.resolveTxSettings(
|
|
507
|
+
settings.textureMemory || {},
|
|
508
|
+
);
|
|
411
509
|
|
|
412
|
-
|
|
510
|
+
settings = {
|
|
413
511
|
appWidth: settings.appWidth || 1920,
|
|
414
512
|
appHeight: settings.appHeight || 1080,
|
|
415
513
|
textureMemory: resolvedTxSettings,
|
|
416
514
|
boundsMargin: settings.boundsMargin || 0,
|
|
417
515
|
deviceLogicalPixelRatio: settings.deviceLogicalPixelRatio || 1,
|
|
418
516
|
devicePhysicalPixelRatio:
|
|
419
|
-
settings.devicePhysicalPixelRatio || window.devicePixelRatio,
|
|
517
|
+
settings.devicePhysicalPixelRatio || window.devicePixelRatio || 1,
|
|
420
518
|
clearColor: settings.clearColor ?? 0x00000000,
|
|
421
519
|
fpsUpdateInterval: settings.fpsUpdateInterval || 0,
|
|
520
|
+
enableClear: settings.enableClear ?? true,
|
|
422
521
|
targetFPS: settings.targetFPS || 0,
|
|
423
522
|
numImageWorkers:
|
|
424
523
|
settings.numImageWorkers !== undefined ? settings.numImageWorkers : 2,
|
|
425
524
|
enableContextSpy: settings.enableContextSpy ?? false,
|
|
426
525
|
forceWebGL2: settings.forceWebGL2 ?? false,
|
|
427
526
|
inspector: settings.inspector ?? false,
|
|
527
|
+
inspectorOptions: settings.inspectorOptions ?? {},
|
|
428
528
|
renderEngine: settings.renderEngine,
|
|
429
529
|
quadBufferSize: settings.quadBufferSize ?? 4 * 1024 * 1024,
|
|
430
|
-
fontEngines: settings.fontEngines,
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
canvas: settings.canvas || document.createElement('canvas'),
|
|
530
|
+
fontEngines: settings.fontEngines ?? [],
|
|
531
|
+
textureProcessingTimeLimit: settings.textureProcessingTimeLimit || 10,
|
|
532
|
+
canvas: settings.canvas,
|
|
434
533
|
createImageBitmapSupport: settings.createImageBitmapSupport || 'full',
|
|
534
|
+
platform: settings.platform || null,
|
|
535
|
+
maxRetryCount: settings.maxRetryCount ?? 5,
|
|
435
536
|
};
|
|
436
|
-
this.settings = resolvedSettings;
|
|
437
537
|
|
|
438
538
|
const {
|
|
439
539
|
appWidth,
|
|
@@ -441,8 +541,21 @@ export class RendererMain extends EventEmitter {
|
|
|
441
541
|
deviceLogicalPixelRatio,
|
|
442
542
|
devicePhysicalPixelRatio,
|
|
443
543
|
inspector,
|
|
444
|
-
|
|
445
|
-
|
|
544
|
+
} = settings as RendererMainSettings;
|
|
545
|
+
|
|
546
|
+
let platform;
|
|
547
|
+
if (
|
|
548
|
+
settings.platform !== undefined &&
|
|
549
|
+
settings.platform !== null &&
|
|
550
|
+
settings.platform.prototype instanceof Platform === true
|
|
551
|
+
) {
|
|
552
|
+
// @ts-ignore - if Platform is a valid class, it will be used
|
|
553
|
+
platform = new settings.platform();
|
|
554
|
+
} else {
|
|
555
|
+
platform = new WebPlatform();
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
const canvas = settings.canvas || platform.createCanvas();
|
|
446
559
|
|
|
447
560
|
const deviceLogicalWidth = appWidth * deviceLogicalPixelRatio;
|
|
448
561
|
const deviceLogicalHeight = appHeight * deviceLogicalPixelRatio;
|
|
@@ -456,54 +569,98 @@ export class RendererMain extends EventEmitter {
|
|
|
456
569
|
|
|
457
570
|
// Initialize the stage
|
|
458
571
|
this.stage = new Stage({
|
|
459
|
-
appWidth
|
|
460
|
-
appHeight
|
|
461
|
-
boundsMargin:
|
|
462
|
-
clearColor:
|
|
572
|
+
appWidth,
|
|
573
|
+
appHeight,
|
|
574
|
+
boundsMargin: settings.boundsMargin!,
|
|
575
|
+
clearColor: settings.clearColor!,
|
|
463
576
|
canvas: this.canvas,
|
|
464
|
-
deviceLogicalPixelRatio
|
|
465
|
-
devicePhysicalPixelRatio
|
|
466
|
-
enableContextSpy:
|
|
467
|
-
forceWebGL2:
|
|
468
|
-
fpsUpdateInterval:
|
|
469
|
-
|
|
470
|
-
numImageWorkers:
|
|
471
|
-
renderEngine:
|
|
577
|
+
deviceLogicalPixelRatio,
|
|
578
|
+
devicePhysicalPixelRatio,
|
|
579
|
+
enableContextSpy: settings.enableContextSpy!,
|
|
580
|
+
forceWebGL2: settings.forceWebGL2!,
|
|
581
|
+
fpsUpdateInterval: settings.fpsUpdateInterval!,
|
|
582
|
+
enableClear: settings.enableClear!,
|
|
583
|
+
numImageWorkers: settings.numImageWorkers!,
|
|
584
|
+
renderEngine: settings.renderEngine!,
|
|
472
585
|
textureMemory: resolvedTxSettings,
|
|
473
586
|
eventBus: this,
|
|
474
|
-
quadBufferSize:
|
|
475
|
-
fontEngines:
|
|
476
|
-
inspector:
|
|
477
|
-
|
|
478
|
-
textureProcessingTimeLimit:
|
|
479
|
-
createImageBitmapSupport:
|
|
587
|
+
quadBufferSize: settings.quadBufferSize!,
|
|
588
|
+
fontEngines: settings.fontEngines!,
|
|
589
|
+
inspector: settings.inspector !== null,
|
|
590
|
+
targetFPS: settings.targetFPS!,
|
|
591
|
+
textureProcessingTimeLimit: settings.textureProcessingTimeLimit!,
|
|
592
|
+
createImageBitmapSupport: settings.createImageBitmapSupport!,
|
|
593
|
+
platform,
|
|
594
|
+
maxRetryCount: settings.maxRetryCount ?? 5,
|
|
480
595
|
});
|
|
481
596
|
|
|
482
597
|
// Extract the root node
|
|
483
|
-
this.root = this.stage.root as unknown as INode
|
|
484
|
-
ShaderController<'DefaultShader'>
|
|
485
|
-
>;
|
|
598
|
+
this.root = this.stage.root as unknown as INode;
|
|
486
599
|
|
|
487
600
|
// Get the target element and attach the canvas to it
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
601
|
+
if (target) {
|
|
602
|
+
let targetEl: HTMLElement | null;
|
|
603
|
+
if (typeof target === 'string') {
|
|
604
|
+
targetEl = document.getElementById(target);
|
|
605
|
+
} else {
|
|
606
|
+
targetEl = target;
|
|
607
|
+
}
|
|
494
608
|
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
609
|
+
if (!targetEl) {
|
|
610
|
+
throw new Error('Could not find target element');
|
|
611
|
+
}
|
|
498
612
|
|
|
499
|
-
|
|
613
|
+
targetEl.appendChild(canvas);
|
|
614
|
+
} else if (settings.canvas !== canvas) {
|
|
615
|
+
throw new Error(
|
|
616
|
+
'New canvas element could not be appended to undefined target',
|
|
617
|
+
);
|
|
618
|
+
}
|
|
500
619
|
|
|
501
620
|
// Initialize inspector (if enabled)
|
|
502
|
-
if (inspector &&
|
|
503
|
-
this.inspector = new inspector(canvas,
|
|
621
|
+
if (inspector && isProductionEnvironment === false) {
|
|
622
|
+
this.inspector = new inspector(canvas, settings as RendererMainSettings);
|
|
504
623
|
}
|
|
505
624
|
}
|
|
506
625
|
|
|
626
|
+
/**
|
|
627
|
+
* Resolves the Texture Memory Manager values
|
|
628
|
+
*
|
|
629
|
+
* @param props
|
|
630
|
+
* @returns
|
|
631
|
+
*/
|
|
632
|
+
private resolveTxSettings(
|
|
633
|
+
textureMemory: Partial<TextureMemoryManagerSettings>,
|
|
634
|
+
): TextureMemoryManagerSettings {
|
|
635
|
+
const currentTxSettings =
|
|
636
|
+
(this.stage && this.stage.options.textureMemory) || {};
|
|
637
|
+
|
|
638
|
+
return {
|
|
639
|
+
criticalThreshold:
|
|
640
|
+
textureMemory?.criticalThreshold ??
|
|
641
|
+
currentTxSettings?.criticalThreshold ??
|
|
642
|
+
200e6,
|
|
643
|
+
targetThresholdLevel:
|
|
644
|
+
textureMemory?.targetThresholdLevel ??
|
|
645
|
+
currentTxSettings?.targetThresholdLevel ??
|
|
646
|
+
0.8,
|
|
647
|
+
cleanupInterval:
|
|
648
|
+
textureMemory?.cleanupInterval ??
|
|
649
|
+
currentTxSettings?.cleanupInterval ??
|
|
650
|
+
5000,
|
|
651
|
+
debugLogging:
|
|
652
|
+
textureMemory?.debugLogging ?? currentTxSettings?.debugLogging ?? false,
|
|
653
|
+
baselineMemoryAllocation:
|
|
654
|
+
textureMemory?.baselineMemoryAllocation ??
|
|
655
|
+
currentTxSettings?.baselineMemoryAllocation ??
|
|
656
|
+
26e6,
|
|
657
|
+
doNotExceedCriticalThreshold:
|
|
658
|
+
textureMemory?.doNotExceedCriticalThreshold ??
|
|
659
|
+
currentTxSettings?.doNotExceedCriticalThreshold ??
|
|
660
|
+
false,
|
|
661
|
+
};
|
|
662
|
+
}
|
|
663
|
+
|
|
507
664
|
/**
|
|
508
665
|
* Create a new scene graph node
|
|
509
666
|
*
|
|
@@ -519,18 +676,16 @@ export class RendererMain extends EventEmitter {
|
|
|
519
676
|
* @param props
|
|
520
677
|
* @returns
|
|
521
678
|
*/
|
|
522
|
-
createNode<
|
|
523
|
-
|
|
524
|
-
|
|
679
|
+
createNode<ShNode extends CoreShaderNode<any>>(
|
|
680
|
+
props: Partial<INodeProps<ShNode>>,
|
|
681
|
+
): INode<ShNode> {
|
|
525
682
|
const node = this.stage.createNode(props as Partial<CoreNodeProps>);
|
|
526
683
|
|
|
527
|
-
if (this.inspector) {
|
|
528
|
-
return this.inspector.createNode(node) as unknown as INode<
|
|
684
|
+
if (!isProductionEnvironment && this.inspector) {
|
|
685
|
+
return this.inspector.createNode(node) as unknown as INode<ShNode>;
|
|
529
686
|
}
|
|
530
687
|
|
|
531
|
-
|
|
532
|
-
// FIXME onCreate event?
|
|
533
|
-
return node as unknown as INode<ShCtr>;
|
|
688
|
+
return node as unknown as INode<ShNode>;
|
|
534
689
|
}
|
|
535
690
|
|
|
536
691
|
/**
|
|
@@ -550,8 +705,8 @@ export class RendererMain extends EventEmitter {
|
|
|
550
705
|
createTextNode(props: Partial<ITextNodeProps>): ITextNode {
|
|
551
706
|
const textNode = this.stage.createTextNode(props as CoreTextNodeProps);
|
|
552
707
|
|
|
553
|
-
if (this.inspector) {
|
|
554
|
-
return this.inspector.createTextNode(textNode);
|
|
708
|
+
if (!isProductionEnvironment && this.inspector) {
|
|
709
|
+
return this.inspector.createTextNode(textNode) as unknown as ITextNode;
|
|
555
710
|
}
|
|
556
711
|
|
|
557
712
|
return textNode as unknown as ITextNode;
|
|
@@ -567,7 +722,7 @@ export class RendererMain extends EventEmitter {
|
|
|
567
722
|
* @returns
|
|
568
723
|
*/
|
|
569
724
|
destroyNode(node: INode) {
|
|
570
|
-
if (this.inspector) {
|
|
725
|
+
if (!isProductionEnvironment && this.inspector) {
|
|
571
726
|
this.inspector.destroyNode(node.id);
|
|
572
727
|
}
|
|
573
728
|
|
|
@@ -612,73 +767,12 @@ export class RendererMain extends EventEmitter {
|
|
|
612
767
|
* @returns
|
|
613
768
|
*/
|
|
614
769
|
createShader<ShType extends keyof ShaderMap>(
|
|
615
|
-
|
|
616
|
-
props?:
|
|
617
|
-
)
|
|
618
|
-
return this.stage.shManager.
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
/**
|
|
622
|
-
* Create a new Dynamic Shader controller
|
|
623
|
-
*
|
|
624
|
-
* @remarks
|
|
625
|
-
* A Dynamic Shader is a shader that can be composed of an array of mulitple
|
|
626
|
-
* effects. Each effect can be animated or changed after creation (provided
|
|
627
|
-
* the effect is given a name).
|
|
628
|
-
*
|
|
629
|
-
* Example:
|
|
630
|
-
* ```ts
|
|
631
|
-
* renderer.createNode({
|
|
632
|
-
* shader: renderer.createDynamicShader([
|
|
633
|
-
* renderer.createEffect('radius', {
|
|
634
|
-
* radius: 0
|
|
635
|
-
* }, 'effect1'),
|
|
636
|
-
* renderer.createEffect('border', {
|
|
637
|
-
* color: 0xff00ffff,
|
|
638
|
-
* width: 10,
|
|
639
|
-
* }, 'effect2'),
|
|
640
|
-
* ]),
|
|
641
|
-
* });
|
|
642
|
-
* ```
|
|
643
|
-
*
|
|
644
|
-
* @param effects
|
|
645
|
-
* @returns
|
|
646
|
-
*/
|
|
647
|
-
createDynamicShader<
|
|
648
|
-
T extends DynamicEffects<[...{ name?: string; type: keyof EffectMap }[]]>,
|
|
649
|
-
>(effects: [...T]): DynamicShaderController<T> {
|
|
650
|
-
return this.stage.shManager.loadDynamicShader({
|
|
651
|
-
effects: effects as EffectDescUnion[],
|
|
652
|
-
});
|
|
653
|
-
}
|
|
654
|
-
|
|
655
|
-
/**
|
|
656
|
-
* Create an effect to be used in a Dynamic Shader
|
|
657
|
-
*
|
|
658
|
-
* @remark
|
|
659
|
-
* The {name} parameter is optional but required if you want to animate the effect
|
|
660
|
-
* or change the effect's properties after creation.
|
|
661
|
-
*
|
|
662
|
-
* See {@link createDynamicShader} for an example.
|
|
663
|
-
*
|
|
664
|
-
* @param type
|
|
665
|
-
* @param props
|
|
666
|
-
* @param name
|
|
667
|
-
* @returns
|
|
668
|
-
*/
|
|
669
|
-
createEffect<
|
|
670
|
-
Type extends keyof EffectMap,
|
|
671
|
-
Name extends string | undefined = undefined,
|
|
672
|
-
>(
|
|
673
|
-
type: Type,
|
|
674
|
-
props: EffectDesc<{ name: Name; type: Type }>['props'],
|
|
675
|
-
name?: Name,
|
|
676
|
-
): EffectDesc<{ name: Name; type: Type }> {
|
|
677
|
-
return {
|
|
678
|
-
name,
|
|
679
|
-
type,
|
|
680
|
-
props,
|
|
681
|
-
};
|
|
770
|
+
shType: ShType,
|
|
771
|
+
props?: OptionalShaderProps<ShType>,
|
|
772
|
+
) {
|
|
773
|
+
return this.stage.shManager.createShader(shType, props) as CoreShaderNode<
|
|
774
|
+
NonNullable<ExtractShaderProps<ShType>>
|
|
775
|
+
>;
|
|
682
776
|
}
|
|
683
777
|
|
|
684
778
|
/**
|
|
@@ -754,8 +848,8 @@ export class RendererMain extends EventEmitter {
|
|
|
754
848
|
* **NOTE3**: This will not cleanup textures that are marked as `preventCleanup`.
|
|
755
849
|
* **NOTE4**: This has nothing to do with the garbage collection of JavaScript.
|
|
756
850
|
*/
|
|
757
|
-
cleanup(
|
|
758
|
-
this.stage.cleanup(
|
|
851
|
+
cleanup() {
|
|
852
|
+
this.stage.cleanup();
|
|
759
853
|
}
|
|
760
854
|
|
|
761
855
|
/**
|
|
@@ -767,6 +861,114 @@ export class RendererMain extends EventEmitter {
|
|
|
767
861
|
this.stage.setClearColor(color);
|
|
768
862
|
}
|
|
769
863
|
|
|
864
|
+
/**
|
|
865
|
+
* Set options for the renderer
|
|
866
|
+
*
|
|
867
|
+
* @param options
|
|
868
|
+
*/
|
|
869
|
+
setOptions(options: Partial<RendererRuntimeSettings>) {
|
|
870
|
+
const stage = this.stage;
|
|
871
|
+
if (options.textureMemory !== undefined) {
|
|
872
|
+
const textureMemory = (options.textureMemory = this.resolveTxSettings(
|
|
873
|
+
options.textureMemory,
|
|
874
|
+
));
|
|
875
|
+
stage.txMemManager.updateSettings(textureMemory);
|
|
876
|
+
stage.txMemManager.cleanup();
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
if (options.boundsMargin !== undefined) {
|
|
880
|
+
let bm = options.boundsMargin!;
|
|
881
|
+
options.boundsMargin = Array.isArray(bm) ? bm : [bm, bm, bm, bm];
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
const stageOptions = stage.options;
|
|
885
|
+
for (let key in options) {
|
|
886
|
+
stageOptions[key] = options[key]!;
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
if (options.inspector !== undefined && !isProductionEnvironment) {
|
|
890
|
+
if (options.inspector === false) {
|
|
891
|
+
this.inspector?.destroy();
|
|
892
|
+
this.inspector = null;
|
|
893
|
+
} else if (
|
|
894
|
+
this.inspector === null ||
|
|
895
|
+
this.inspector.constructor !== options.inspector
|
|
896
|
+
) {
|
|
897
|
+
this.inspector = new options.inspector(
|
|
898
|
+
this.canvas,
|
|
899
|
+
stage.options as unknown as RendererMainSettings,
|
|
900
|
+
);
|
|
901
|
+
this.inspector?.createNodes(this.root as unknown as CoreNode);
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
let needDimensionsUpdate = false;
|
|
906
|
+
|
|
907
|
+
if (
|
|
908
|
+
options.deviceLogicalPixelRatio ||
|
|
909
|
+
options.devicePhysicalPixelRatio !== undefined
|
|
910
|
+
) {
|
|
911
|
+
this.stage.pixelRatio =
|
|
912
|
+
stageOptions.devicePhysicalPixelRatio *
|
|
913
|
+
stageOptions.deviceLogicalPixelRatio;
|
|
914
|
+
this.inspector?.updateViewport(
|
|
915
|
+
stageOptions.appWidth,
|
|
916
|
+
stageOptions.appHeight,
|
|
917
|
+
stageOptions.deviceLogicalPixelRatio,
|
|
918
|
+
);
|
|
919
|
+
needDimensionsUpdate = true;
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
if (options.appWidth !== undefined || options.appHeight !== undefined) {
|
|
923
|
+
this.inspector?.updateViewport(
|
|
924
|
+
stageOptions.appWidth,
|
|
925
|
+
stageOptions.appHeight,
|
|
926
|
+
stageOptions.deviceLogicalPixelRatio,
|
|
927
|
+
);
|
|
928
|
+
needDimensionsUpdate = true;
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
if (options.boundsMargin !== undefined) {
|
|
932
|
+
this.stage.setBoundsMargin(options.boundsMargin);
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
if (options.clearColor !== undefined) {
|
|
936
|
+
this.stage.setClearColor(options.clearColor);
|
|
937
|
+
}
|
|
938
|
+
|
|
939
|
+
if (needDimensionsUpdate) {
|
|
940
|
+
this.updateAppDimensions();
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
|
|
944
|
+
private updateAppDimensions() {
|
|
945
|
+
const {
|
|
946
|
+
appWidth,
|
|
947
|
+
appHeight,
|
|
948
|
+
deviceLogicalPixelRatio,
|
|
949
|
+
devicePhysicalPixelRatio,
|
|
950
|
+
} = this.stage.options;
|
|
951
|
+
|
|
952
|
+
const deviceLogicalWidth = appWidth * deviceLogicalPixelRatio;
|
|
953
|
+
const deviceLogicalHeight = appHeight * deviceLogicalPixelRatio;
|
|
954
|
+
|
|
955
|
+
this.canvas.width = deviceLogicalWidth * devicePhysicalPixelRatio;
|
|
956
|
+
this.canvas.height = deviceLogicalHeight * devicePhysicalPixelRatio;
|
|
957
|
+
|
|
958
|
+
this.canvas.style.width = `${deviceLogicalWidth}px`;
|
|
959
|
+
this.canvas.style.height = `${deviceLogicalHeight}px`;
|
|
960
|
+
|
|
961
|
+
this.stage.renderer.updateViewport();
|
|
962
|
+
|
|
963
|
+
this.root.w = appWidth;
|
|
964
|
+
this.root.h = appHeight;
|
|
965
|
+
this.stage.updateViewportBounds();
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
get settings(): Readonly<StageOptions> {
|
|
969
|
+
return this.stage.options;
|
|
970
|
+
}
|
|
971
|
+
|
|
770
972
|
/**
|
|
771
973
|
* Gets the target FPS for the global render loop
|
|
772
974
|
*
|
|
@@ -777,7 +979,7 @@ export class RendererMain extends EventEmitter {
|
|
|
777
979
|
* When 0, the system runs at display refresh rate.
|
|
778
980
|
*/
|
|
779
981
|
get targetFPS(): number {
|
|
780
|
-
return this.stage.options.targetFPS;
|
|
982
|
+
return this.stage.options.targetFPS || 0;
|
|
781
983
|
}
|
|
782
984
|
|
|
783
985
|
/**
|