@lightningjs/renderer 2.12.1 → 3.0.0-beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/exports/canvas-shaders.d.ts +10 -0
- package/dist/exports/canvas-shaders.js +27 -0
- package/dist/exports/canvas-shaders.js.map +1 -0
- package/dist/exports/canvas.d.ts +7 -1
- package/dist/exports/canvas.js +7 -1
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +15 -8
- package/dist/exports/index.js +7 -4
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/webgl-shaders.d.ts +11 -0
- package/dist/exports/webgl-shaders.js +28 -0
- package/dist/exports/webgl-shaders.js.map +1 -0
- package/dist/exports/webgl.d.ts +9 -1
- package/dist/exports/webgl.js +9 -1
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/core/CoreNode.d.ts +19 -5
- package/dist/src/core/CoreNode.js +117 -24
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +29 -71
- package/dist/src/core/CoreShaderManager.js +110 -97
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.js +1 -1
- package/dist/src/core/CoreTextNode.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 +15 -16
- package/dist/src/core/Stage.js +45 -32
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +16 -6
- package/dist/src/core/TextureMemoryManager.js +75 -17
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.d.ts +0 -1
- package/dist/src/core/animations/CoreAnimation.js +6 -52
- package/dist/src/core/animations/CoreAnimation.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 +67 -54
- package/dist/src/core/lib/WebGlContextWrapper.js +126 -157
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/textureCompression.js +0 -1
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +4 -0
- package/dist/src/core/lib/utils.js +26 -0
- package/dist/src/core/lib/utils.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 +4 -3
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +11 -21
- package/dist/src/core/renderers/CoreRenderer.js +0 -6
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +59 -0
- package/dist/src/core/renderers/CoreShaderNode.js +107 -0
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -0
- package/dist/src/core/renderers/CoreShaderProgram.d.ts +4 -0
- package/{src/core/renderers/CoreShader.ts → dist/src/core/renderers/CoreShaderProgram.js} +2 -23
- package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +36 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +212 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +21 -0
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +60 -0
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +16 -0
- package/dist/src/core/renderers/canvas/CanvasTexture.js +123 -0
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -13
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +192 -113
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +2 -0
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +14 -0
- package/dist/src/core/renderers/canvas/internal/ColorUtils.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/WebGlCtxRenderTexture.d.ts +12 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +55 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +9 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +38 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +57 -0
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +227 -0
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +36 -0
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +107 -0
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +134 -0
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +546 -0
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +221 -0
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +334 -0
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +35 -0
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +195 -0
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -0
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -0
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
- package/dist/src/core/shaders/canvas/Border.d.ts +9 -0
- package/dist/src/core/shaders/canvas/Border.js +57 -0
- package/dist/src/core/shaders/canvas/Border.js.map +1 -0
- package/dist/src/core/shaders/canvas/HolePunch.d.ts +7 -0
- package/dist/src/core/shaders/canvas/HolePunch.js +38 -0
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -0
- package/dist/src/core/shaders/canvas/LinearGradient.d.ts +10 -0
- package/dist/src/core/shaders/canvas/LinearGradient.js +46 -0
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -0
- package/dist/src/core/shaders/canvas/RadialGradient.d.ts +11 -0
- package/dist/src/core/shaders/canvas/RadialGradient.js +68 -0
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -0
- package/dist/src/core/shaders/canvas/Rounded.d.ts +7 -0
- package/dist/src/core/shaders/canvas/Rounded.js +33 -0
- package/dist/src/core/shaders/canvas/Rounded.js.map +1 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +7 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +35 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +8 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +39 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -0
- package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +7 -0
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +38 -0
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -0
- package/dist/src/core/shaders/canvas/Shadow.d.ts +8 -0
- package/dist/src/core/shaders/canvas/Shadow.js +31 -0
- package/dist/src/core/shaders/canvas/Shadow.js.map +1 -0
- package/dist/src/core/shaders/canvas/utils/render.d.ts +5 -0
- package/dist/src/core/shaders/canvas/utils/render.js +84 -0
- package/dist/src/core/shaders/canvas/utils/render.js.map +1 -0
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +37 -0
- package/dist/src/core/shaders/templates/BorderTemplate.js +73 -0
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +46 -0
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +35 -0
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +23 -0
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js +47 -0
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +31 -0
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +49 -0
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +29 -0
- package/dist/src/core/shaders/templates/RoundedTemplate.js +67 -0
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +7 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +24 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +6 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +23 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +6 -0
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +23 -0
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +34 -0
- package/dist/src/core/shaders/templates/ShadowTemplate.js +66 -0
- package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/shaderUtils.d.ts +5 -0
- package/dist/src/core/shaders/templates/shaderUtils.js +41 -0
- package/dist/src/core/shaders/templates/shaderUtils.js.map +1 -0
- package/dist/src/core/shaders/webgl/Border.d.ts +3 -0
- package/dist/src/core/shaders/webgl/Border.js +87 -0
- package/dist/src/core/shaders/webgl/Border.js.map +1 -0
- package/dist/src/core/shaders/webgl/Default.d.ts +2 -0
- package/dist/src/core/shaders/webgl/Default.js +86 -0
- package/dist/src/core/shaders/webgl/Default.js.map +1 -0
- package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +2 -0
- package/dist/src/core/shaders/webgl/DefaultBatched.js +104 -0
- package/dist/src/core/shaders/webgl/DefaultBatched.js.map +1 -0
- package/dist/src/core/shaders/webgl/HolePunch.d.ts +3 -0
- package/dist/src/core/shaders/webgl/HolePunch.js +64 -0
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -0
- package/dist/src/core/shaders/webgl/LinearGradient.d.ts +3 -0
- package/dist/src/core/shaders/webgl/LinearGradient.js +75 -0
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -0
- package/dist/src/core/shaders/webgl/RadialGradient.d.ts +3 -0
- package/dist/src/core/shaders/webgl/RadialGradient.js +73 -0
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -0
- package/dist/src/core/shaders/webgl/Rounded.d.ts +7 -0
- package/dist/src/core/shaders/webgl/Rounded.js +86 -0
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +3 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +97 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +3 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +112 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -0
- package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +3 -0
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +84 -0
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -0
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +32 -0
- package/dist/src/core/shaders/webgl/SdfShader.js +116 -0
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -0
- package/dist/src/core/shaders/webgl/Shadow.d.ts +3 -0
- package/dist/src/core/shaders/webgl/Shadow.js +110 -0
- package/dist/src/core/shaders/webgl/Shadow.js.map +1 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +6 -0
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +2 -3
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +34 -30
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +1 -4
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.js +10 -16
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +1 -1
- package/dist/src/main-api/INode.d.ts +9 -9
- 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 +35 -92
- package/dist/src/main-api/Renderer.js +11 -57
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +6 -0
- package/dist/src/utils.js +18 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/canvas-shaders.ts +28 -0
- package/exports/canvas.ts +7 -1
- package/exports/index.ts +17 -17
- package/exports/webgl-shaders.ts +28 -0
- package/exports/webgl.ts +13 -1
- package/package.json +3 -1
- package/src/core/CoreNode.test.ts +157 -153
- package/src/core/CoreNode.ts +173 -38
- package/src/core/CoreShaderManager.ts +127 -226
- package/src/core/CoreTextNode.ts +1 -8
- package/src/core/CoreTextureManager.ts +127 -126
- package/src/core/Stage.ts +62 -44
- package/src/core/TextureMemoryManager.ts +108 -27
- package/src/core/animations/CoreAnimation.ts +8 -64
- package/src/core/lib/ImageWorker.ts +20 -12
- package/src/core/lib/WebGlContextWrapper.ts +228 -236
- package/src/core/lib/textureCompression.ts +3 -3
- package/src/core/lib/utils.ts +51 -0
- package/src/core/lib/validateImageBitmap.ts +76 -0
- package/src/core/platform.ts +6 -3
- package/src/core/renderers/CoreRenderer.ts +19 -27
- package/src/core/renderers/CoreShaderNode.ts +171 -0
- package/src/core/renderers/{canvas/shaders/UnsupportedShader.ts → CoreShaderProgram.ts} +3 -28
- package/src/core/renderers/canvas/CanvasRenderer.ts +299 -0
- package/src/core/renderers/canvas/CanvasShaderNode.ts +99 -0
- package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +1 -1
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +2 -13
- package/src/core/renderers/canvas/internal/ColorUtils.ts +16 -0
- package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +2 -2
- package/src/core/renderers/webgl/{WebGlCoreCtxSubTexture.ts → WebGlCtxSubTexture.ts} +2 -2
- package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +12 -14
- package/src/core/renderers/webgl/{WebGlCoreRenderOp.ts → WebGlRenderOp.ts} +56 -36
- package/src/core/renderers/webgl/{WebGlCoreRenderer.ts → WebGlRenderer.ts} +143 -243
- package/src/core/renderers/webgl/WebGlShaderNode.ts +433 -0
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +310 -0
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -5
- package/src/core/shaders/canvas/Border.ts +78 -0
- package/src/core/shaders/canvas/HolePunch.ts +62 -0
- package/src/core/shaders/canvas/LinearGradient.ts +69 -0
- package/src/core/shaders/canvas/RadialGradient.ts +113 -0
- package/src/core/shaders/canvas/Rounded.ts +55 -0
- package/src/core/shaders/canvas/RoundedWithBorder.ts +68 -0
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +88 -0
- package/src/core/shaders/canvas/RoundedWithShadow.ts +69 -0
- package/src/core/shaders/canvas/Shadow.ts +52 -0
- package/src/core/shaders/canvas/utils/render.ts +151 -0
- package/src/core/shaders/templates/BorderTemplate.ts +115 -0
- package/src/core/shaders/templates/HolePunchTemplate.ts +82 -0
- package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -0
- package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -0
- package/src/core/shaders/templates/RoundedTemplate.ts +98 -0
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -0
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -0
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -0
- package/src/core/shaders/templates/ShadowTemplate.ts +106 -0
- package/src/core/shaders/templates/shaderUtils.ts +47 -0
- package/src/core/shaders/webgl/Border.ts +96 -0
- package/src/core/shaders/webgl/Default.ts +89 -0
- package/src/core/shaders/webgl/DefaultBatched.ts +129 -0
- package/src/core/shaders/webgl/HolePunch.ts +78 -0
- package/src/core/shaders/webgl/LinearGradient.ts +81 -0
- package/src/core/shaders/webgl/RadialGradient.ts +84 -0
- package/src/core/shaders/webgl/Rounded.ts +117 -0
- package/src/core/shaders/webgl/RoundedWithBorder.ts +114 -0
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +133 -0
- package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -0
- package/src/core/shaders/webgl/SdfShader.ts +137 -0
- package/src/core/shaders/webgl/Shadow.ts +115 -0
- package/src/core/text-rendering/TextTextureRendererUtils.ts +1 -1
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +2 -2
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +12 -5
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +44 -56
- package/src/core/text-rendering/renderers/TextRenderer.ts +2 -9
- package/src/core/textures/ImageTexture.ts +11 -17
- package/src/core/textures/Texture.ts +1 -1
- package/src/main-api/INode.ts +11 -13
- package/src/main-api/Inspector.ts +19 -2
- package/src/main-api/Renderer.ts +59 -130
- package/src/utils.ts +19 -0
- package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
- package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -362
- 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/main-api/DynamicShaderController.ts +0 -104
- package/src/main-api/ShaderController.ts +0 -80
|
@@ -28,6 +28,10 @@ import { TextureType, type Texture } from './textures/Texture.js';
|
|
|
28
28
|
import { EventEmitter } from '../common/EventEmitter.js';
|
|
29
29
|
import { getTimeStamp } from './platform.js';
|
|
30
30
|
import type { Stage } from './Stage.js';
|
|
31
|
+
import {
|
|
32
|
+
validateCreateImageBitmap,
|
|
33
|
+
type CreateImageBitmapSupport,
|
|
34
|
+
} from './lib/validateImageBitmap.js';
|
|
31
35
|
|
|
32
36
|
/**
|
|
33
37
|
* Augmentable map of texture class types
|
|
@@ -45,12 +49,6 @@ export interface TextureMap {
|
|
|
45
49
|
RenderTexture: typeof RenderTexture;
|
|
46
50
|
}
|
|
47
51
|
|
|
48
|
-
export interface CreateImageBitmapSupport {
|
|
49
|
-
basic: boolean; // Supports createImageBitmap(image)
|
|
50
|
-
options: boolean; // Supports createImageBitmap(image, options)
|
|
51
|
-
full: boolean; // Supports createImageBitmap(image, sx, sy, sw, sh, options)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
52
|
export type ExtractProps<Type> = Type extends { z$__type__Props: infer Props }
|
|
55
53
|
? Props
|
|
56
54
|
: never;
|
|
@@ -63,6 +61,11 @@ export interface TextureManagerDebugInfo {
|
|
|
63
61
|
keyCacheSize: number;
|
|
64
62
|
}
|
|
65
63
|
|
|
64
|
+
export interface TextureManagerSettings {
|
|
65
|
+
numImageWorkers: number;
|
|
66
|
+
createImageBitmapSupport: 'auto' | 'basic' | 'options' | 'full';
|
|
67
|
+
}
|
|
68
|
+
|
|
66
69
|
export type ResizeModeOptions =
|
|
67
70
|
| {
|
|
68
71
|
/**
|
|
@@ -180,6 +183,7 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
180
183
|
private uploadTextureQueue: Array<Texture> = [];
|
|
181
184
|
private initialized = false;
|
|
182
185
|
private stage: Stage;
|
|
186
|
+
private numImageWorkers: number;
|
|
183
187
|
|
|
184
188
|
imageWorkerManager: ImageWorkerManager | null = null;
|
|
185
189
|
hasCreateImageBitmap = !!self.createImageBitmap;
|
|
@@ -210,48 +214,34 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
210
214
|
*/
|
|
211
215
|
frameTime = 0;
|
|
212
216
|
|
|
213
|
-
constructor(stage: Stage,
|
|
217
|
+
constructor(stage: Stage, settings: TextureManagerSettings) {
|
|
214
218
|
super();
|
|
219
|
+
|
|
220
|
+
const { numImageWorkers, createImageBitmapSupport } = settings;
|
|
215
221
|
this.stage = stage;
|
|
216
|
-
this.
|
|
217
|
-
.then((result) => {
|
|
218
|
-
this.hasCreateImageBitmap =
|
|
219
|
-
result.basic || result.options || result.full;
|
|
220
|
-
this.imageBitmapSupported = result;
|
|
222
|
+
this.numImageWorkers = numImageWorkers;
|
|
221
223
|
|
|
222
|
-
|
|
224
|
+
if (createImageBitmapSupport === 'auto') {
|
|
225
|
+
validateCreateImageBitmap()
|
|
226
|
+
.then((result) => {
|
|
227
|
+
this.initialize(result);
|
|
228
|
+
})
|
|
229
|
+
.catch((e) => {
|
|
223
230
|
console.warn(
|
|
224
231
|
'[Lightning] createImageBitmap is not supported on this browser. ImageTexture will be slower.',
|
|
225
232
|
);
|
|
226
|
-
}
|
|
227
233
|
|
|
228
|
-
|
|
229
|
-
this.
|
|
230
|
-
this.
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
} else {
|
|
238
|
-
console.warn(
|
|
239
|
-
'[Lightning] Imageworker is 0 or not supported on this browser. Image loading will be slower.',
|
|
240
|
-
);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
this.initialized = true;
|
|
244
|
-
this.emit('initialized');
|
|
245
|
-
})
|
|
246
|
-
.catch((e) => {
|
|
247
|
-
console.warn(
|
|
248
|
-
'[Lightning] createImageBitmap is not supported on this browser. ImageTexture will be slower.',
|
|
249
|
-
);
|
|
250
|
-
|
|
251
|
-
// initialized without image worker manager and createImageBitmap
|
|
252
|
-
this.initialized = true;
|
|
253
|
-
this.emit('initialized');
|
|
234
|
+
// initialized without image worker manager and createImageBitmap
|
|
235
|
+
this.initialized = true;
|
|
236
|
+
this.emit('initialized');
|
|
237
|
+
});
|
|
238
|
+
} else {
|
|
239
|
+
this.initialize({
|
|
240
|
+
basic: createImageBitmapSupport === 'basic',
|
|
241
|
+
options: createImageBitmapSupport === 'options',
|
|
242
|
+
full: createImageBitmapSupport === 'full',
|
|
254
243
|
});
|
|
244
|
+
}
|
|
255
245
|
|
|
256
246
|
this.registerTextureType('ImageTexture', ImageTexture);
|
|
257
247
|
this.registerTextureType('ColorTexture', ColorTexture);
|
|
@@ -260,77 +250,6 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
260
250
|
this.registerTextureType('RenderTexture', RenderTexture);
|
|
261
251
|
}
|
|
262
252
|
|
|
263
|
-
private async validateCreateImageBitmap(): Promise<CreateImageBitmapSupport> {
|
|
264
|
-
// Test if createImageBitmap is supported using a simple 1x1 PNG image
|
|
265
|
-
// prettier-ignore
|
|
266
|
-
const pngBinaryData = new Uint8Array([
|
|
267
|
-
0x89, 0x50, 0x4e, 0x47,
|
|
268
|
-
0x0d, 0x0a, 0x1a, 0x0a, // PNG signature
|
|
269
|
-
0x00, 0x00, 0x00, 0x0d, // IHDR chunk length
|
|
270
|
-
0x49, 0x48, 0x44, 0x52, // "IHDR" chunk type
|
|
271
|
-
0x00, 0x00, 0x00, 0x01, // Width: 1
|
|
272
|
-
0x00, 0x00, 0x00, 0x01, // Height: 1
|
|
273
|
-
0x01, // Bit depth: 1
|
|
274
|
-
0x03, // Color type: Indexed
|
|
275
|
-
0x00, // Compression method: Deflate
|
|
276
|
-
0x00, // Filter method: None
|
|
277
|
-
0x00, // Interlace method: None
|
|
278
|
-
0x25, 0xdb, 0x56, 0xca, // CRC for IHDR
|
|
279
|
-
0x00, 0x00, 0x00, 0x03, // PLTE chunk length
|
|
280
|
-
0x50, 0x4c, 0x54, 0x45, // "PLTE" chunk type
|
|
281
|
-
0x00, 0x00, 0x00, // Palette entry: Black
|
|
282
|
-
0xa7, 0x7a, 0x3d, 0xda, // CRC for PLTE
|
|
283
|
-
0x00, 0x00, 0x00, 0x01, // tRNS chunk length
|
|
284
|
-
0x74, 0x52, 0x4e, 0x53, // "tRNS" chunk type
|
|
285
|
-
0x00, // Transparency for black: Fully transparent
|
|
286
|
-
0x40, 0xe6, 0xd8, 0x66, // CRC for tRNS
|
|
287
|
-
0x00, 0x00, 0x00, 0x0a, // IDAT chunk length
|
|
288
|
-
0x49, 0x44, 0x41, 0x54, // "IDAT" chunk type
|
|
289
|
-
0x08, 0xd7, // Deflate header
|
|
290
|
-
0x63, 0x60, 0x00, 0x00,
|
|
291
|
-
0x00, 0x02, 0x00, 0x01, // Zlib-compressed data
|
|
292
|
-
0xe2, 0x21, 0xbc, 0x33, // CRC for IDAT
|
|
293
|
-
0x00, 0x00, 0x00, 0x00, // IEND chunk length
|
|
294
|
-
0x49, 0x45, 0x4e, 0x44, // "IEND" chunk type
|
|
295
|
-
0xae, 0x42, 0x60, 0x82, // CRC for IEND
|
|
296
|
-
]);
|
|
297
|
-
|
|
298
|
-
const support: CreateImageBitmapSupport = {
|
|
299
|
-
basic: false,
|
|
300
|
-
options: false,
|
|
301
|
-
full: false,
|
|
302
|
-
};
|
|
303
|
-
|
|
304
|
-
// Test basic createImageBitmap support
|
|
305
|
-
const blob = new Blob([pngBinaryData], { type: 'image/png' });
|
|
306
|
-
const bitmap = await createImageBitmap(blob);
|
|
307
|
-
bitmap.close?.();
|
|
308
|
-
support.basic = true;
|
|
309
|
-
|
|
310
|
-
// Test createImageBitmap with options support
|
|
311
|
-
try {
|
|
312
|
-
const options = { premultiplyAlpha: 'none' as const };
|
|
313
|
-
const bitmapWithOptions = await createImageBitmap(blob, options);
|
|
314
|
-
bitmapWithOptions.close?.();
|
|
315
|
-
support.options = true;
|
|
316
|
-
} catch (e) {
|
|
317
|
-
/* ignore */
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
// Test createImageBitmap with full options support
|
|
321
|
-
try {
|
|
322
|
-
const bitmapWithFullOptions = await createImageBitmap(blob, 0, 0, 1, 1, {
|
|
323
|
-
premultiplyAlpha: 'none',
|
|
324
|
-
});
|
|
325
|
-
bitmapWithFullOptions.close?.();
|
|
326
|
-
support.full = true;
|
|
327
|
-
} catch (e) {
|
|
328
|
-
/* ignore */
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
return support;
|
|
332
|
-
}
|
|
333
|
-
|
|
334
253
|
registerTextureType<Type extends keyof TextureMap>(
|
|
335
254
|
textureType: Type,
|
|
336
255
|
textureClass: TextureMap[Type],
|
|
@@ -338,6 +257,36 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
338
257
|
this.txConstructors[textureType] = textureClass;
|
|
339
258
|
}
|
|
340
259
|
|
|
260
|
+
private initialize(support: CreateImageBitmapSupport) {
|
|
261
|
+
this.hasCreateImageBitmap =
|
|
262
|
+
support.basic || support.options || support.full;
|
|
263
|
+
this.imageBitmapSupported = support;
|
|
264
|
+
|
|
265
|
+
if (!this.hasCreateImageBitmap) {
|
|
266
|
+
console.warn(
|
|
267
|
+
'[Lightning] createImageBitmap is not supported on this browser. ImageTexture will be slower.',
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
if (
|
|
272
|
+
this.hasCreateImageBitmap &&
|
|
273
|
+
this.hasWorker &&
|
|
274
|
+
this.numImageWorkers > 0
|
|
275
|
+
) {
|
|
276
|
+
this.imageWorkerManager = new ImageWorkerManager(
|
|
277
|
+
this.numImageWorkers,
|
|
278
|
+
support,
|
|
279
|
+
);
|
|
280
|
+
} else {
|
|
281
|
+
console.warn(
|
|
282
|
+
'[Lightning] Imageworker is 0 or not supported on this browser. Image loading will be slower.',
|
|
283
|
+
);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
this.initialized = true;
|
|
287
|
+
this.emit('initialized');
|
|
288
|
+
}
|
|
289
|
+
|
|
341
290
|
/**
|
|
342
291
|
* Enqueue a texture for downloading its source image.
|
|
343
292
|
*/
|
|
@@ -392,15 +341,7 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
392
341
|
|
|
393
342
|
orphanTexture(texture: Texture): void {
|
|
394
343
|
// if it is part of the download or upload queue, remove it
|
|
395
|
-
|
|
396
|
-
if (downloadIndex !== -1) {
|
|
397
|
-
this.downloadTextureSourceQueue.splice(downloadIndex, 1);
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
const uploadIndex = this.uploadTextureQueue.indexOf(texture);
|
|
401
|
-
if (uploadIndex !== -1) {
|
|
402
|
-
this.uploadTextureQueue.splice(uploadIndex, 1);
|
|
403
|
-
}
|
|
344
|
+
this.removeTextureFromQueue(texture);
|
|
404
345
|
|
|
405
346
|
if (texture.type === TextureType.subTexture) {
|
|
406
347
|
// ignore subtextures
|
|
@@ -419,11 +360,42 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
419
360
|
loadTexture(texture: Texture, priority?: boolean): void {
|
|
420
361
|
this.stage.txMemManager.removeFromOrphanedTextures(texture);
|
|
421
362
|
|
|
422
|
-
if (texture.
|
|
363
|
+
if (texture.type === TextureType.subTexture) {
|
|
364
|
+
// ignore subtextures - they get loaded through their parent
|
|
423
365
|
return;
|
|
424
366
|
}
|
|
425
367
|
|
|
426
|
-
texture
|
|
368
|
+
// if the texture is already loaded, don't load it again
|
|
369
|
+
if (
|
|
370
|
+
texture.ctxTexture !== undefined &&
|
|
371
|
+
texture.ctxTexture.state === 'loaded'
|
|
372
|
+
) {
|
|
373
|
+
texture.setState('loaded');
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
// if the texture is already being processed, don't load it again
|
|
378
|
+
if (
|
|
379
|
+
this.downloadTextureSourceQueue.includes(texture) === true ||
|
|
380
|
+
this.uploadTextureQueue.includes(texture) === true
|
|
381
|
+
) {
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
// if the texture is already loading, free it, this can happen if the texture is
|
|
386
|
+
// orphaned and then reloaded
|
|
387
|
+
if (
|
|
388
|
+
texture.ctxTexture !== undefined &&
|
|
389
|
+
texture.ctxTexture.state === 'loading'
|
|
390
|
+
) {
|
|
391
|
+
// if the texture has texture data, queue it for upload
|
|
392
|
+
if (texture.textureData !== null) {
|
|
393
|
+
this.enqueueUploadTexture(texture);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
// else we will have to re-download the texture
|
|
397
|
+
texture.free();
|
|
398
|
+
}
|
|
427
399
|
|
|
428
400
|
// if we're not initialized, just queue the texture into the priority queue
|
|
429
401
|
if (this.initialized === false) {
|
|
@@ -435,15 +407,17 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
435
407
|
// Technically the noise texture shouldn't either, but it's a special case
|
|
436
408
|
// and not really used in production so who cares ¯\_(ツ)_/¯
|
|
437
409
|
if (
|
|
438
|
-
texture.type === TextureType.
|
|
439
|
-
|
|
440
|
-
texture.
|
|
410
|
+
(texture.type === TextureType.color ||
|
|
411
|
+
texture.type === TextureType.renderToTexture) &&
|
|
412
|
+
texture.state !== 'initial'
|
|
441
413
|
) {
|
|
442
414
|
texture.setState('fetched');
|
|
443
415
|
this.enqueueUploadTexture(texture);
|
|
444
416
|
return;
|
|
445
417
|
}
|
|
446
418
|
|
|
419
|
+
texture.setState('loading');
|
|
420
|
+
|
|
447
421
|
// prioritize the texture for immediate loading
|
|
448
422
|
if (priority === true) {
|
|
449
423
|
texture
|
|
@@ -466,11 +440,21 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
466
440
|
* @param texture Texture to upload
|
|
467
441
|
*/
|
|
468
442
|
uploadTexture(texture: Texture): void {
|
|
469
|
-
if (
|
|
443
|
+
if (
|
|
444
|
+
this.stage.txMemManager.doNotExceedCriticalThreshold === true &&
|
|
445
|
+
this.stage.txMemManager.criticalCleanupRequested === true
|
|
446
|
+
) {
|
|
447
|
+
// we're at a critical memory threshold, don't upload textures
|
|
448
|
+
this.enqueueUploadTexture(texture);
|
|
470
449
|
return;
|
|
471
450
|
}
|
|
472
451
|
|
|
473
452
|
const coreContext = texture.loadCtxTexture();
|
|
453
|
+
if (coreContext !== null && coreContext.state === 'loaded') {
|
|
454
|
+
texture.setState('loaded');
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
457
|
+
|
|
474
458
|
coreContext.load();
|
|
475
459
|
}
|
|
476
460
|
|
|
@@ -576,6 +560,23 @@ export class CoreTextureManager extends EventEmitter {
|
|
|
576
560
|
}
|
|
577
561
|
}
|
|
578
562
|
|
|
563
|
+
/**
|
|
564
|
+
* Remove texture from the queue's
|
|
565
|
+
*
|
|
566
|
+
* @param texture - The texture to remove
|
|
567
|
+
*/
|
|
568
|
+
removeTextureFromQueue(texture: Texture): void {
|
|
569
|
+
const downloadIndex = this.downloadTextureSourceQueue.indexOf(texture);
|
|
570
|
+
if (downloadIndex !== -1) {
|
|
571
|
+
this.downloadTextureSourceQueue.splice(downloadIndex, 1);
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
const uploadIndex = this.uploadTextureQueue.indexOf(texture);
|
|
575
|
+
if (uploadIndex !== -1) {
|
|
576
|
+
this.uploadTextureQueue.splice(uploadIndex, 1);
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
|
|
579
580
|
/**
|
|
580
581
|
* Resolve a parent texture from the cache or fallback to the provided texture.
|
|
581
582
|
*
|
package/src/core/Stage.ts
CHANGED
|
@@ -20,13 +20,14 @@ import { startLoop, getTimeStamp } from './platform.js';
|
|
|
20
20
|
import { assertTruthy, setPremultiplyMode } from '../utils.js';
|
|
21
21
|
import { AnimationManager } from './animations/AnimationManager.js';
|
|
22
22
|
import {
|
|
23
|
+
UpdateType,
|
|
23
24
|
CoreNode,
|
|
24
25
|
CoreNodeRenderState,
|
|
25
26
|
type CoreNodeProps,
|
|
26
27
|
} from './CoreNode.js';
|
|
27
28
|
import { CoreTextureManager } from './CoreTextureManager.js';
|
|
28
29
|
import { TrFontManager } from './text-rendering/TrFontManager.js';
|
|
29
|
-
import { CoreShaderManager
|
|
30
|
+
import { CoreShaderManager } from './CoreShaderManager.js';
|
|
30
31
|
import {
|
|
31
32
|
TextRenderer,
|
|
32
33
|
type TextRendererMap,
|
|
@@ -44,15 +45,14 @@ import {
|
|
|
44
45
|
TextureMemoryManager,
|
|
45
46
|
type TextureMemoryManagerSettings,
|
|
46
47
|
} from './TextureMemoryManager.js';
|
|
47
|
-
import type { CoreRendererOptions } from './renderers/CoreRenderer.js';
|
|
48
48
|
import { CoreRenderer } from './renderers/CoreRenderer.js';
|
|
49
|
-
import type {
|
|
50
|
-
import type {
|
|
51
|
-
import type { BaseShaderController } from '../main-api/ShaderController.js';
|
|
49
|
+
import type { WebGlRenderer } from './renderers/webgl/WebGlRenderer.js';
|
|
50
|
+
import type { CanvasRenderer } from './renderers/canvas/CanvasRenderer.js';
|
|
52
51
|
import { CoreTextNode, type CoreTextNodeProps } from './CoreTextNode.js';
|
|
53
52
|
import { santizeCustomDataMap } from '../main-api/utils.js';
|
|
54
53
|
import type { SdfTextRenderer } from './text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js';
|
|
55
54
|
import type { CanvasTextRenderer } from './text-rendering/renderers/CanvasTextRenderer.js';
|
|
55
|
+
import type { CoreShaderNode } from './renderers/CoreShaderNode.js';
|
|
56
56
|
import { createBound, createPreloadBounds, type Bound } from './lib/utils.js';
|
|
57
57
|
import type { Texture } from './textures/Texture.js';
|
|
58
58
|
import { ColorTexture } from './textures/ColorTexture.js';
|
|
@@ -70,13 +70,14 @@ export interface StageOptions {
|
|
|
70
70
|
enableContextSpy: boolean;
|
|
71
71
|
forceWebGL2: boolean;
|
|
72
72
|
numImageWorkers: number;
|
|
73
|
-
renderEngine: typeof
|
|
73
|
+
renderEngine: typeof WebGlRenderer | typeof CanvasRenderer;
|
|
74
74
|
eventBus: EventEmitter;
|
|
75
75
|
quadBufferSize: number;
|
|
76
76
|
fontEngines: (typeof CanvasTextRenderer | typeof SdfTextRenderer)[];
|
|
77
77
|
inspector: boolean;
|
|
78
78
|
strictBounds: boolean;
|
|
79
79
|
textureProcessingTimeLimit: number;
|
|
80
|
+
createImageBitmapSupport: 'auto' | 'basic' | 'options' | 'full';
|
|
80
81
|
}
|
|
81
82
|
|
|
82
83
|
export type StageFpsUpdateHandler = (
|
|
@@ -89,7 +90,6 @@ export type StageFrameTickHandler = (
|
|
|
89
90
|
frameTickData: FrameTickPayload,
|
|
90
91
|
) => void;
|
|
91
92
|
|
|
92
|
-
const bufferMemory = 2e6;
|
|
93
93
|
const autoStart = true;
|
|
94
94
|
|
|
95
95
|
export class Stage {
|
|
@@ -102,13 +102,14 @@ export class Stage {
|
|
|
102
102
|
public readonly shManager: CoreShaderManager;
|
|
103
103
|
public readonly renderer: CoreRenderer;
|
|
104
104
|
public readonly root: CoreNode;
|
|
105
|
-
public
|
|
106
|
-
public readonly
|
|
105
|
+
public boundsMargin: [number, number, number, number];
|
|
106
|
+
public readonly defShaderNode: CoreShaderNode | null = null;
|
|
107
107
|
public readonly strictBound: Bound;
|
|
108
108
|
public readonly preloadBound: Bound;
|
|
109
109
|
public readonly strictBounds: boolean;
|
|
110
110
|
public readonly defaultTexture: Texture | null = null;
|
|
111
|
-
|
|
111
|
+
public readonly pixelRatio: number;
|
|
112
|
+
public readonly bufferMemory: number = 2e6;
|
|
112
113
|
/**
|
|
113
114
|
* Renderer Event Bus for the Stage to emit events onto
|
|
114
115
|
*
|
|
@@ -123,6 +124,7 @@ export class Stage {
|
|
|
123
124
|
deltaTime = 0;
|
|
124
125
|
lastFrameTime = 0;
|
|
125
126
|
currentFrameTime = 0;
|
|
127
|
+
private clrColor = 0x00000000;
|
|
126
128
|
private fpsNumFrames = 0;
|
|
127
129
|
private fpsElapsedTime = 0;
|
|
128
130
|
private numQuadsRendered = 0;
|
|
@@ -150,10 +152,14 @@ export class Stage {
|
|
|
150
152
|
textureMemory,
|
|
151
153
|
renderEngine,
|
|
152
154
|
fontEngines,
|
|
155
|
+
createImageBitmapSupport,
|
|
153
156
|
} = options;
|
|
154
157
|
|
|
155
158
|
this.eventBus = options.eventBus;
|
|
156
|
-
this.txManager = new CoreTextureManager(this,
|
|
159
|
+
this.txManager = new CoreTextureManager(this, {
|
|
160
|
+
numImageWorkers,
|
|
161
|
+
createImageBitmapSupport,
|
|
162
|
+
});
|
|
157
163
|
|
|
158
164
|
// Wait for the Texture Manager to initialize
|
|
159
165
|
// once it does, request a render
|
|
@@ -162,7 +168,7 @@ export class Stage {
|
|
|
162
168
|
});
|
|
163
169
|
|
|
164
170
|
this.txMemManager = new TextureMemoryManager(this, textureMemory);
|
|
165
|
-
|
|
171
|
+
|
|
166
172
|
this.animationManager = new AnimationManager();
|
|
167
173
|
this.contextSpy = enableContextSpy ? new ContextSpy() : null;
|
|
168
174
|
this.strictBounds = options.strictBounds;
|
|
@@ -179,25 +185,25 @@ export class Stage {
|
|
|
179
185
|
this.strictBound = createBound(0, 0, appWidth, appHeight);
|
|
180
186
|
this.preloadBound = createPreloadBounds(this.strictBound, bm);
|
|
181
187
|
|
|
182
|
-
|
|
188
|
+
this.clrColor = clearColor;
|
|
189
|
+
|
|
190
|
+
this.pixelRatio =
|
|
191
|
+
options.devicePhysicalPixelRatio * options.deviceLogicalPixelRatio;
|
|
192
|
+
|
|
193
|
+
this.renderer = new renderEngine({
|
|
183
194
|
stage: this,
|
|
184
195
|
canvas,
|
|
185
|
-
pixelRatio:
|
|
186
|
-
options.devicePhysicalPixelRatio * options.deviceLogicalPixelRatio,
|
|
187
|
-
clearColor: clearColor ?? 0xff000000,
|
|
188
|
-
bufferMemory,
|
|
189
|
-
txManager: this.txManager,
|
|
190
|
-
txMemManager: this.txMemManager,
|
|
191
|
-
shManager: this.shManager,
|
|
192
196
|
contextSpy: this.contextSpy,
|
|
193
197
|
forceWebGL2,
|
|
194
|
-
};
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
this.shManager = new CoreShaderManager(this);
|
|
201
|
+
|
|
202
|
+
this.defShaderNode = this.renderer.getDefaultShaderNode();
|
|
195
203
|
|
|
196
|
-
this.renderer = new renderEngine(rendererOptions);
|
|
197
204
|
const renderMode = this.renderer.mode || 'webgl';
|
|
198
205
|
|
|
199
206
|
this.createDefaultTexture();
|
|
200
|
-
this.defShaderCtr = this.renderer.getDefShaderCtr();
|
|
201
207
|
setPremultiplyMode(renderMode);
|
|
202
208
|
|
|
203
209
|
// Must do this after renderer is created
|
|
@@ -240,6 +246,7 @@ export class Stage {
|
|
|
240
246
|
height: appHeight,
|
|
241
247
|
alpha: 1,
|
|
242
248
|
autosize: false,
|
|
249
|
+
boundsMargin: null,
|
|
243
250
|
clipping: false,
|
|
244
251
|
color: 0x00000000,
|
|
245
252
|
colorTop: 0x00000000,
|
|
@@ -264,7 +271,7 @@ export class Stage {
|
|
|
264
271
|
parent: null,
|
|
265
272
|
texture: null,
|
|
266
273
|
textureOptions: {},
|
|
267
|
-
shader: this.
|
|
274
|
+
shader: this.defShaderNode,
|
|
268
275
|
rtt: false,
|
|
269
276
|
src: null,
|
|
270
277
|
scale: 1,
|
|
@@ -281,6 +288,7 @@ export class Stage {
|
|
|
281
288
|
}
|
|
282
289
|
|
|
283
290
|
setClearColor(color: number) {
|
|
291
|
+
this.clearColor = color;
|
|
284
292
|
this.renderer.updateClearColor(color);
|
|
285
293
|
this.renderRequested = true;
|
|
286
294
|
}
|
|
@@ -307,6 +315,7 @@ export class Stage {
|
|
|
307
315
|
* Create default PixelTexture
|
|
308
316
|
*/
|
|
309
317
|
createDefaultTexture() {
|
|
318
|
+
console.log('Creating default texture');
|
|
310
319
|
(this.defaultTexture as ColorTexture) = this.txManager.createTexture(
|
|
311
320
|
'ColorTexture',
|
|
312
321
|
{
|
|
@@ -315,7 +324,6 @@ export class Stage {
|
|
|
315
324
|
);
|
|
316
325
|
|
|
317
326
|
assertTruthy(this.defaultTexture instanceof ColorTexture);
|
|
318
|
-
|
|
319
327
|
this.txManager.loadTexture(this.defaultTexture, true);
|
|
320
328
|
|
|
321
329
|
// Mark the default texture as ALWAYS renderable
|
|
@@ -372,8 +380,13 @@ export class Stage {
|
|
|
372
380
|
renderer.reset();
|
|
373
381
|
|
|
374
382
|
// Check if we need to cleanup textures
|
|
375
|
-
if (this.txMemManager.criticalCleanupRequested) {
|
|
376
|
-
this.txMemManager.cleanup();
|
|
383
|
+
if (this.txMemManager.criticalCleanupRequested === true) {
|
|
384
|
+
this.txMemManager.cleanup(false);
|
|
385
|
+
|
|
386
|
+
if (this.txMemManager.criticalCleanupRequested === true) {
|
|
387
|
+
// If we still need to cleanup, request another but aggressive cleanup
|
|
388
|
+
this.txMemManager.cleanup(true);
|
|
389
|
+
}
|
|
377
390
|
}
|
|
378
391
|
|
|
379
392
|
// If we have RTT nodes draw them first
|
|
@@ -577,20 +590,6 @@ export class Stage {
|
|
|
577
590
|
return resolvedTextRenderer as unknown as TextRenderer;
|
|
578
591
|
}
|
|
579
592
|
|
|
580
|
-
/**
|
|
581
|
-
* Create a shader controller instance
|
|
582
|
-
*
|
|
583
|
-
* @param type
|
|
584
|
-
* @param props
|
|
585
|
-
* @returns
|
|
586
|
-
*/
|
|
587
|
-
createShaderCtr(
|
|
588
|
-
type: keyof ShaderMap,
|
|
589
|
-
props: Record<string, unknown>,
|
|
590
|
-
): BaseShaderController {
|
|
591
|
-
return this.shManager.loadShader(type, props);
|
|
592
|
-
}
|
|
593
|
-
|
|
594
593
|
createNode(props: Partial<CoreNodeProps>) {
|
|
595
594
|
const resolvedProps = this.resolveNodeDefaults(props);
|
|
596
595
|
return new CoreNode(this, resolvedProps);
|
|
@@ -636,6 +635,14 @@ export class Stage {
|
|
|
636
635
|
return new CoreTextNode(this, resolvedProps, resolvedTextRenderer);
|
|
637
636
|
}
|
|
638
637
|
|
|
638
|
+
setBoundsMargin(value: number | [number, number, number, number]) {
|
|
639
|
+
this.boundsMargin = Array.isArray(value)
|
|
640
|
+
? value
|
|
641
|
+
: [value, value, value, value];
|
|
642
|
+
|
|
643
|
+
this.root.setUpdateType(UpdateType.RenderBounds);
|
|
644
|
+
}
|
|
645
|
+
|
|
639
646
|
/**
|
|
640
647
|
* Resolves the default property values for a Node
|
|
641
648
|
*
|
|
@@ -669,6 +676,7 @@ export class Stage {
|
|
|
669
676
|
height: props.height ?? 0,
|
|
670
677
|
alpha: props.alpha ?? 1,
|
|
671
678
|
autosize: props.autosize ?? false,
|
|
679
|
+
boundsMargin: props.boundsMargin ?? null,
|
|
672
680
|
clipping: props.clipping ?? false,
|
|
673
681
|
color,
|
|
674
682
|
colorTop: props.colorTop ?? color,
|
|
@@ -684,7 +692,7 @@ export class Stage {
|
|
|
684
692
|
parent: props.parent ?? null,
|
|
685
693
|
texture: props.texture ?? null,
|
|
686
694
|
textureOptions: props.textureOptions ?? {},
|
|
687
|
-
shader: props.shader ?? this.
|
|
695
|
+
shader: props.shader ?? this.defShaderNode,
|
|
688
696
|
// Since setting the `src` will trigger a texture load, we need to set it after
|
|
689
697
|
// we set the texture. Otherwise, problems happen.
|
|
690
698
|
src: props.src ?? null,
|
|
@@ -716,7 +724,17 @@ export class Stage {
|
|
|
716
724
|
* @remarks
|
|
717
725
|
* This method is used to cleanup orphaned textures that are no longer in use.
|
|
718
726
|
*/
|
|
719
|
-
cleanup() {
|
|
720
|
-
this.txMemManager.cleanup();
|
|
727
|
+
cleanup(aggressive: boolean) {
|
|
728
|
+
this.txMemManager.cleanup(aggressive);
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
set clearColor(value: number) {
|
|
732
|
+
this.renderer.updateClearColor(value);
|
|
733
|
+
this.renderRequested = true;
|
|
734
|
+
this.clrColor = value;
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
get clearColor() {
|
|
738
|
+
return this.clrColor;
|
|
721
739
|
}
|
|
722
740
|
}
|