@lightningjs/renderer 3.0.0-beta10 → 3.0.0-beta12
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/LICENSE +202 -202
- package/NOTICE +3 -3
- package/README.md +133 -133
- package/dist/src/common/CommonTypes.d.ts +2 -2
- package/dist/src/core/CoreNode.d.ts +8 -7
- package/dist/src/core/CoreNode.js +57 -61
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +3 -0
- package/dist/src/core/CoreTextNode.js +54 -19
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/Stage.js +4 -4
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/lib/textureCompression.js +4 -4
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/platform.d.ts +10 -0
- package/dist/src/core/platform.js +81 -0
- package/dist/src/core/platform.js.map +1 -0
- package/dist/src/core/renderers/CoreShader.d.ts +9 -0
- package/dist/src/core/renderers/CoreShader.js +28 -0
- package/dist/src/core/renderers/CoreShader.js.map +1 -0
- package/dist/src/core/renderers/CoreShaderNode.js +2 -2
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +33 -0
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +250 -0
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +16 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +124 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.js +5 -5
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +10 -0
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +43 -0
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +12 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +58 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +9 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +38 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +56 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +239 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +34 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +114 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +133 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +616 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +83 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +233 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +5 -6
- 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 -5
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +21 -21
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +12 -11
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +2 -2
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +35 -35
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +9 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +87 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +10 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +119 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +29 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +413 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +28 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +131 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +47 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +160 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +30 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +58 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +9 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +136 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +36 -0
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +85 -0
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +45 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +104 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +22 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +45 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +58 -0
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +80 -0
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +35 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +129 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +39 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +116 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +61 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +127 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +40 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +115 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +61 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -0
- package/dist/src/core/shaders/canvas/Border.js +4 -4
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/HolePunch.js +3 -3
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +2 -2
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +4 -4
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +3 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +3 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.js +10 -10
- 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 -2
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +2 -2
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -2
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
- 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.js +83 -83
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Default.js +47 -47
- package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
- package/dist/src/core/shaders/webgl/HolePunch.js +34 -34
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +36 -36
- package/dist/src/core/shaders/webgl/RadialGradient.js +35 -35
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +72 -72
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +113 -113
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +132 -132
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +55 -55
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.js +62 -62
- package/dist/src/core/shaders/webgl/Shadow.js +83 -83
- package/dist/src/core/shaders/webgl/Spinner.d.ts +1 -0
- package/dist/src/core/shaders/webgl/Spinner.js +2 -0
- package/dist/src/core/shaders/webgl/Spinner.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +16 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +29 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -1
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +15 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +34 -2
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
- package/dist/src/core/text-rendering/TextRenderer.d.ts +2 -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/CanvasTextRenderer.js +0 -5
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +1 -7
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +2 -50
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +83 -42
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +8 -66
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -14
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -3
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.d.ts +12 -0
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.js +61 -0
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.js.map +1 -0
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.d.ts +45 -0
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js +69 -0
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js.map +1 -0
- package/dist/src/core/textures/ColorTexture.js +1 -1
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +2 -2
- package/dist/src/core/textures/ImageTexture.js +11 -11
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +2 -2
- package/dist/src/core/textures/NoiseTexture.js +6 -6
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +6 -6
- package/dist/src/core/textures/RenderTexture.js +10 -10
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +4 -4
- package/dist/src/core/textures/SubTexture.js +8 -8
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +3 -4
- package/dist/src/core/textures/Texture.js +4 -4
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/main-api/DynamicShaderController.d.ts +29 -0
- package/dist/src/main-api/DynamicShaderController.js +58 -0
- package/dist/src/main-api/DynamicShaderController.js.map +1 -0
- package/dist/src/main-api/Inspector.js +7 -7
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.js +2 -2
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/main-api/ShaderController.d.ts +31 -0
- package/dist/src/main-api/ShaderController.js +37 -0
- package/dist/src/main-api/ShaderController.js.map +1 -0
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/canvas-shaders.ts +28 -28
- package/exports/canvas.ts +45 -45
- package/exports/index.ts +82 -82
- package/exports/inspector.ts +24 -24
- package/exports/utils.ts +50 -50
- package/exports/webgl-shaders.ts +28 -28
- package/exports/webgl.ts +52 -52
- package/package.json +2 -1
- package/src/common/CommonTypes.ts +146 -146
- package/src/common/EventEmitter.ts +77 -77
- package/src/common/IAnimationController.ts +92 -92
- package/src/common/IEventEmitter.ts +28 -28
- package/src/core/CoreNode.test.ts +202 -202
- package/src/core/CoreNode.ts +2481 -2491
- package/src/core/CoreShaderManager.ts +188 -188
- package/src/core/CoreTextNode.ts +483 -443
- package/src/core/CoreTextureManager.ts +565 -565
- package/src/core/Stage.ts +906 -906
- package/src/core/TextureMemoryManager.ts +445 -445
- package/src/core/animations/AnimationManager.ts +38 -38
- package/src/core/animations/CoreAnimation.ts +291 -291
- package/src/core/animations/CoreAnimationController.ts +166 -166
- package/src/core/lib/ContextSpy.ts +41 -41
- package/src/core/lib/ImageWorker.ts +286 -286
- package/src/core/lib/Matrix3d.ts +244 -244
- package/src/core/lib/RenderCoords.ts +71 -71
- package/src/core/lib/WebGlContextWrapper.ts +1381 -1381
- package/src/core/lib/colorCache.ts +20 -20
- package/src/core/lib/colorParser.ts +85 -85
- package/src/core/lib/textureCompression.ts +152 -152
- package/src/core/lib/textureSvg.ts +78 -78
- package/src/core/lib/utils.ts +412 -412
- package/src/core/lib/validateImageBitmap.ts +87 -87
- package/src/core/platforms/Platform.ts +77 -77
- package/src/core/platforms/web/WebPlatform.ts +121 -121
- package/src/core/renderers/CoreContextTexture.ts +43 -43
- package/src/core/renderers/CoreRenderOp.ts +22 -22
- package/src/core/renderers/CoreRenderer.ts +110 -110
- package/src/core/renderers/CoreShaderNode.ts +175 -175
- package/src/core/renderers/CoreShaderProgram.ts +23 -23
- package/src/core/renderers/canvas/CanvasRenderer.ts +283 -283
- package/src/core/renderers/canvas/CanvasShaderNode.ts +96 -96
- package/src/core/renderers/canvas/CanvasTexture.ts +156 -156
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +81 -91
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +95 -50
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +301 -310
- package/src/core/renderers/webgl/WebGlRenderOp.ts +167 -167
- package/src/core/renderers/webgl/WebGlRenderer.ts +746 -747
- package/src/core/renderers/webgl/WebGlShaderNode.ts +435 -435
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +341 -341
- package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
- package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +281 -281
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
- package/src/core/shaders/canvas/Border.ts +75 -75
- package/src/core/shaders/canvas/HolePunch.ts +55 -62
- package/src/core/shaders/canvas/LinearGradient.ts +71 -71
- package/src/core/shaders/canvas/RadialGradient.ts +99 -99
- package/src/core/shaders/canvas/Rounded.ts +55 -55
- package/src/core/shaders/canvas/RoundedWithBorder.ts +72 -74
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +88 -90
- package/src/core/shaders/canvas/RoundedWithShadow.ts +70 -70
- package/src/core/shaders/canvas/Shadow.ts +52 -52
- package/src/core/shaders/canvas/utils/render.ts +151 -151
- package/src/core/shaders/templates/BorderTemplate.ts +115 -115
- package/src/core/shaders/templates/HolePunchTemplate.ts +82 -82
- package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -71
- package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -81
- package/src/core/shaders/templates/RoundedTemplate.ts +98 -98
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -38
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -35
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -35
- package/src/core/shaders/templates/ShadowTemplate.ts +106 -106
- package/src/core/shaders/utils.ts +46 -46
- package/src/core/shaders/webgl/Border.ts +116 -116
- package/src/core/shaders/webgl/Default.ts +89 -89
- package/src/core/shaders/webgl/DefaultBatched.ts +129 -129
- package/src/core/shaders/webgl/HolePunch.ts +75 -75
- package/src/core/shaders/webgl/LinearGradient.ts +82 -82
- package/src/core/shaders/webgl/RadialGradient.ts +85 -85
- package/src/core/shaders/webgl/Rounded.ts +113 -117
- package/src/core/shaders/webgl/RoundedWithBorder.ts +151 -155
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +175 -175
- package/src/core/shaders/webgl/RoundedWithShadow.ts +94 -98
- package/src/core/shaders/webgl/SdfShader.ts +134 -134
- package/src/core/shaders/webgl/Shadow.ts +115 -115
- package/src/core/text-rendering/CanvasFontHandler.ts +210 -176
- package/src/core/text-rendering/CanvasTextRenderer.ts +622 -622
- package/src/core/text-rendering/SdfFontHandler.ts +554 -517
- package/src/core/text-rendering/SdfTextRenderer.ts +466 -466
- package/src/core/text-rendering/TextRenderer.ts +406 -404
- package/src/core/text-rendering/Utils.ts +257 -257
- package/src/core/text-rendering/canvas/Settings.ts +99 -99
- package/src/core/text-rendering/canvas/Utils.test.ts +206 -206
- package/src/core/text-rendering/canvas/Utils.ts +178 -178
- package/src/core/text-rendering/canvas/calculateRenderInfo.ts +299 -299
- package/src/core/text-rendering/canvas/draw.ts +165 -165
- package/src/core/text-rendering/sdf/Utils.test.ts +402 -402
- package/src/core/text-rendering/sdf/Utils.ts +436 -436
- package/src/core/text-rendering/sdf/index.ts +20 -20
- package/src/core/textures/ColorTexture.ts +102 -102
- package/src/core/textures/ImageTexture.ts +418 -418
- package/src/core/textures/NoiseTexture.ts +104 -104
- package/src/core/textures/RenderTexture.ts +85 -85
- package/src/core/textures/SubTexture.ts +205 -205
- package/src/core/textures/Texture.ts +381 -381
- package/src/core/utils.ts +227 -227
- package/src/env.d.ts +7 -7
- package/src/main-api/INode.ts +100 -100
- package/src/main-api/Inspector.ts +567 -567
- package/src/main-api/Renderer.ts +873 -873
- package/src/main-api/utils.ts +45 -45
- package/src/utils.ts +267 -267
- package/COPYING +0 -1
package/README.md
CHANGED
|
@@ -1,133 +1,133 @@
|
|
|
1
|
-
# Lightning 3 Renderer
|
|
2
|
-
|
|
3
|
-
A powerful 2D scene renderer designed for rendering highly performant user
|
|
4
|
-
interfaces on web browsers running on embedded devices using WebGL.
|
|
5
|
-
|
|
6
|
-
The Renderer is part of the [LightningJS](https://lightningjs.io) project. While it is possible to use the renderer directly, it is not recommended. Instead, Lightning 3 works best when combined with [Blits](https://lightningjs.io/v3-docs/blits/getting_started/intro.html).
|
|
7
|
-
|
|
8
|
-
## Setup & Commands
|
|
9
|
-
|
|
10
|
-
```
|
|
11
|
-
# Install renderer + example dependencies
|
|
12
|
-
pnpm install
|
|
13
|
-
|
|
14
|
-
# Build Renderer
|
|
15
|
-
pnpm build
|
|
16
|
-
|
|
17
|
-
# Build Renderer (watch mode)
|
|
18
|
-
pnpm watch
|
|
19
|
-
|
|
20
|
-
# Run unit tests
|
|
21
|
-
pnpm test
|
|
22
|
-
|
|
23
|
-
# Run Visual Regression Tests
|
|
24
|
-
pnpm test:visual
|
|
25
|
-
|
|
26
|
-
# Build API Documentation (builds into ./typedocs folder)
|
|
27
|
-
pnpm typedoc
|
|
28
|
-
|
|
29
|
-
# Launch Example Tests in dev mode (includes Build Renderer (watch mode))
|
|
30
|
-
pnpm start
|
|
31
|
-
|
|
32
|
-
# Launch Example Tests in production mode
|
|
33
|
-
# IMPORTANT: To run test examples on embedded devices that use older browser versions
|
|
34
|
-
# you MUST run the examples in this mode.
|
|
35
|
-
pnpm start:prod
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Browser Targets
|
|
39
|
-
|
|
40
|
-
The Lightning 3 Renderer's goal is to work with the following browser versions and above:
|
|
41
|
-
|
|
42
|
-
- Chrome v38 (Released October 7, 2014)
|
|
43
|
-
|
|
44
|
-
Any JavaScript language features or browser APIs that cannot be automatically transpiled or polyfilled by industry standard transpilers (such as Babel) to target these versions must be carefully considered before use.
|
|
45
|
-
|
|
46
|
-
For a more detailed and comprehensive list of browsers and their features please see [browsers](./BROWSERS.md).
|
|
47
|
-
|
|
48
|
-
## Example Tests
|
|
49
|
-
|
|
50
|
-
The Example Tests sub-project define a set of tests for various Renderer
|
|
51
|
-
features. This is NOT an automated test. The command below will launch a
|
|
52
|
-
web server which can be accessed by a web browser for manual testing. However,
|
|
53
|
-
many of the Example Tests define Snapshots for the Visual Regression Test Runner
|
|
54
|
-
(see below).
|
|
55
|
-
|
|
56
|
-
The Example Tests can be launched with:
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
pnpm start
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
A hosted version can be found [here](https://lightning-js.github.io/renderer/).
|
|
63
|
-
|
|
64
|
-
This supports modern browsers as well as Chrome 38 and above through a legacy build.
|
|
65
|
-
|
|
66
|
-
See [examples/README.md](./examples/README.md) for more info.
|
|
67
|
-
|
|
68
|
-
## Visual Regression Tests
|
|
69
|
-
|
|
70
|
-
In order to prevent bugs on existing Renderer features when new features or bug
|
|
71
|
-
fixes are added, the Renderer includes a Visual Regression Test Runner along
|
|
72
|
-
with a set of certified snapshot files that are checked into the repository.
|
|
73
|
-
|
|
74
|
-
These tests can be launched with:
|
|
75
|
-
|
|
76
|
-
```
|
|
77
|
-
pnpm test:visual
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
The captured Snapshots of these tests are optionally defined in the individual
|
|
81
|
-
Example Tests.
|
|
82
|
-
|
|
83
|
-
See [visual-regression/README.md](./visual-regression/README.md) for more info.
|
|
84
|
-
|
|
85
|
-
## Manual Regression Tests
|
|
86
|
-
|
|
87
|
-
See [docs/ManualRegressionTests.md].
|
|
88
|
-
|
|
89
|
-
## Release Procedure
|
|
90
|
-
|
|
91
|
-
See [RELEASE.md](./RELEASE.md)
|
|
92
|
-
|
|
93
|
-
## Installing Fonts
|
|
94
|
-
|
|
95
|
-
Fonts can be installed into the Font Manager exposed by the Renderer's Stage.
|
|
96
|
-
There are two types of fonts that you can install, Web/Canvas2D fonts (WebTrFontFace)
|
|
97
|
-
and SDF fonts (SdfTrFontFace). Install that fonts that your applications needs
|
|
98
|
-
at start up so they are ready when your application is rendered.
|
|
99
|
-
|
|
100
|
-
```ts
|
|
101
|
-
import { RendererMain } from '@lightningjs/renderer';
|
|
102
|
-
|
|
103
|
-
import {
|
|
104
|
-
WebGlCoreRenderer,
|
|
105
|
-
SdfTextRenderer,
|
|
106
|
-
} from '@lightningjs/renderer/webgl';
|
|
107
|
-
import { CanvasTextRenderer } from '@lightningjs/renderer/canvas';
|
|
108
|
-
|
|
109
|
-
const renderer = new RendererMain(
|
|
110
|
-
{
|
|
111
|
-
appWidth: 1920,
|
|
112
|
-
appHeight: 1080,
|
|
113
|
-
renderEngine: WebGlCoreRenderer,
|
|
114
|
-
fontEngines: [SdfTextRenderer, CanvasTextRenderer],
|
|
115
|
-
// ...Other Renderer Config
|
|
116
|
-
},
|
|
117
|
-
'app', // id of div to insert Canvas.
|
|
118
|
-
);
|
|
119
|
-
|
|
120
|
-
// Load fonts by explicitly specifying the renderer type
|
|
121
|
-
await stage.loadFont('canvas', {
|
|
122
|
-
fontFamily: 'myWebFont',
|
|
123
|
-
fontUrl: '/fonts/my-font.ttf',
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
await stage.loadFont('sdf', {
|
|
127
|
-
fontFamily: 'mySdfFont',
|
|
128
|
-
atlasUrl: '/fonts/my-font-atlas.png',
|
|
129
|
-
atlasDataUrl: '/fonts/my-font-data.json',
|
|
130
|
-
});
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
For more information see [Font Loading](./docs/fontLoading.md)
|
|
1
|
+
# Lightning 3 Renderer
|
|
2
|
+
|
|
3
|
+
A powerful 2D scene renderer designed for rendering highly performant user
|
|
4
|
+
interfaces on web browsers running on embedded devices using WebGL.
|
|
5
|
+
|
|
6
|
+
The Renderer is part of the [LightningJS](https://lightningjs.io) project. While it is possible to use the renderer directly, it is not recommended. Instead, Lightning 3 works best when combined with [Blits](https://lightningjs.io/v3-docs/blits/getting_started/intro.html).
|
|
7
|
+
|
|
8
|
+
## Setup & Commands
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
# Install renderer + example dependencies
|
|
12
|
+
pnpm install
|
|
13
|
+
|
|
14
|
+
# Build Renderer
|
|
15
|
+
pnpm build
|
|
16
|
+
|
|
17
|
+
# Build Renderer (watch mode)
|
|
18
|
+
pnpm watch
|
|
19
|
+
|
|
20
|
+
# Run unit tests
|
|
21
|
+
pnpm test
|
|
22
|
+
|
|
23
|
+
# Run Visual Regression Tests
|
|
24
|
+
pnpm test:visual
|
|
25
|
+
|
|
26
|
+
# Build API Documentation (builds into ./typedocs folder)
|
|
27
|
+
pnpm typedoc
|
|
28
|
+
|
|
29
|
+
# Launch Example Tests in dev mode (includes Build Renderer (watch mode))
|
|
30
|
+
pnpm start
|
|
31
|
+
|
|
32
|
+
# Launch Example Tests in production mode
|
|
33
|
+
# IMPORTANT: To run test examples on embedded devices that use older browser versions
|
|
34
|
+
# you MUST run the examples in this mode.
|
|
35
|
+
pnpm start:prod
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Browser Targets
|
|
39
|
+
|
|
40
|
+
The Lightning 3 Renderer's goal is to work with the following browser versions and above:
|
|
41
|
+
|
|
42
|
+
- Chrome v38 (Released October 7, 2014)
|
|
43
|
+
|
|
44
|
+
Any JavaScript language features or browser APIs that cannot be automatically transpiled or polyfilled by industry standard transpilers (such as Babel) to target these versions must be carefully considered before use.
|
|
45
|
+
|
|
46
|
+
For a more detailed and comprehensive list of browsers and their features please see [browsers](./BROWSERS.md).
|
|
47
|
+
|
|
48
|
+
## Example Tests
|
|
49
|
+
|
|
50
|
+
The Example Tests sub-project define a set of tests for various Renderer
|
|
51
|
+
features. This is NOT an automated test. The command below will launch a
|
|
52
|
+
web server which can be accessed by a web browser for manual testing. However,
|
|
53
|
+
many of the Example Tests define Snapshots for the Visual Regression Test Runner
|
|
54
|
+
(see below).
|
|
55
|
+
|
|
56
|
+
The Example Tests can be launched with:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
pnpm start
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
A hosted version can be found [here](https://lightning-js.github.io/renderer/).
|
|
63
|
+
|
|
64
|
+
This supports modern browsers as well as Chrome 38 and above through a legacy build.
|
|
65
|
+
|
|
66
|
+
See [examples/README.md](./examples/README.md) for more info.
|
|
67
|
+
|
|
68
|
+
## Visual Regression Tests
|
|
69
|
+
|
|
70
|
+
In order to prevent bugs on existing Renderer features when new features or bug
|
|
71
|
+
fixes are added, the Renderer includes a Visual Regression Test Runner along
|
|
72
|
+
with a set of certified snapshot files that are checked into the repository.
|
|
73
|
+
|
|
74
|
+
These tests can be launched with:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
pnpm test:visual
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The captured Snapshots of these tests are optionally defined in the individual
|
|
81
|
+
Example Tests.
|
|
82
|
+
|
|
83
|
+
See [visual-regression/README.md](./visual-regression/README.md) for more info.
|
|
84
|
+
|
|
85
|
+
## Manual Regression Tests
|
|
86
|
+
|
|
87
|
+
See [docs/ManualRegressionTests.md].
|
|
88
|
+
|
|
89
|
+
## Release Procedure
|
|
90
|
+
|
|
91
|
+
See [RELEASE.md](./RELEASE.md)
|
|
92
|
+
|
|
93
|
+
## Installing Fonts
|
|
94
|
+
|
|
95
|
+
Fonts can be installed into the Font Manager exposed by the Renderer's Stage.
|
|
96
|
+
There are two types of fonts that you can install, Web/Canvas2D fonts (WebTrFontFace)
|
|
97
|
+
and SDF fonts (SdfTrFontFace). Install that fonts that your applications needs
|
|
98
|
+
at start up so they are ready when your application is rendered.
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
import { RendererMain } from '@lightningjs/renderer';
|
|
102
|
+
|
|
103
|
+
import {
|
|
104
|
+
WebGlCoreRenderer,
|
|
105
|
+
SdfTextRenderer,
|
|
106
|
+
} from '@lightningjs/renderer/webgl';
|
|
107
|
+
import { CanvasTextRenderer } from '@lightningjs/renderer/canvas';
|
|
108
|
+
|
|
109
|
+
const renderer = new RendererMain(
|
|
110
|
+
{
|
|
111
|
+
appWidth: 1920,
|
|
112
|
+
appHeight: 1080,
|
|
113
|
+
renderEngine: WebGlCoreRenderer,
|
|
114
|
+
fontEngines: [SdfTextRenderer, CanvasTextRenderer],
|
|
115
|
+
// ...Other Renderer Config
|
|
116
|
+
},
|
|
117
|
+
'app', // id of div to insert Canvas.
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
// Load fonts by explicitly specifying the renderer type
|
|
121
|
+
await stage.loadFont('canvas', {
|
|
122
|
+
fontFamily: 'myWebFont',
|
|
123
|
+
fontUrl: '/fonts/my-font.ttf',
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
await stage.loadFont('sdf', {
|
|
127
|
+
fontFamily: 'mySdfFont',
|
|
128
|
+
atlasUrl: '/fonts/my-font-atlas.png',
|
|
129
|
+
atlasDataUrl: '/fonts/my-font-data.json',
|
|
130
|
+
});
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
For more information see [Font Loading](./docs/fontLoading.md)
|
|
@@ -160,16 +160,18 @@ export interface CoreNodeProps {
|
|
|
160
160
|
y: number;
|
|
161
161
|
/**
|
|
162
162
|
* The width of the Node.
|
|
163
|
+
* @warning This will be deprecated in favor of `w` and `h` properties in the future.
|
|
163
164
|
*
|
|
164
165
|
* @default `0`
|
|
165
166
|
*/
|
|
166
|
-
|
|
167
|
+
w: number;
|
|
167
168
|
/**
|
|
168
169
|
* The height of the Node.
|
|
170
|
+
* @warning This will be deprecated in favor of `w` and `h` properties in the future.
|
|
169
171
|
*
|
|
170
172
|
* @default `0`
|
|
171
173
|
*/
|
|
172
|
-
|
|
174
|
+
h: number;
|
|
173
175
|
/**
|
|
174
176
|
* The alpha opacity of the Node.
|
|
175
177
|
*
|
|
@@ -671,7 +673,6 @@ export declare class CoreNode extends EventEmitter {
|
|
|
671
673
|
constructor(stage: Stage, props: CoreNodeProps);
|
|
672
674
|
loadTexture(): void;
|
|
673
675
|
unloadTexture(): void;
|
|
674
|
-
autosizeNode(dimensions: Dimensions): void;
|
|
675
676
|
protected onTextureLoaded: TextureLoadedEventHandler;
|
|
676
677
|
private onTextureFailed;
|
|
677
678
|
private onTextureFreed;
|
|
@@ -736,10 +737,10 @@ export declare class CoreNode extends EventEmitter {
|
|
|
736
737
|
get absY(): number;
|
|
737
738
|
get y(): number;
|
|
738
739
|
set y(value: number);
|
|
739
|
-
get
|
|
740
|
-
set
|
|
741
|
-
get
|
|
742
|
-
set
|
|
740
|
+
get w(): number;
|
|
741
|
+
set w(value: number);
|
|
742
|
+
get h(): number;
|
|
743
|
+
set h(value: number);
|
|
743
744
|
get scale(): number;
|
|
744
745
|
set scale(value: number);
|
|
745
746
|
get scaleX(): number;
|
|
@@ -201,8 +201,8 @@ export class CoreNode extends EventEmitter {
|
|
|
201
201
|
// Fast-path assign only known keys
|
|
202
202
|
p.x = props.x;
|
|
203
203
|
p.y = props.y;
|
|
204
|
-
p.
|
|
205
|
-
p.
|
|
204
|
+
p.w = props.w;
|
|
205
|
+
p.h = props.h;
|
|
206
206
|
p.alpha = props.alpha;
|
|
207
207
|
p.autosize = props.autosize;
|
|
208
208
|
p.clipping = props.clipping;
|
|
@@ -305,14 +305,11 @@ export class CoreNode extends EventEmitter {
|
|
|
305
305
|
texture.off('freed', this.onTextureFreed);
|
|
306
306
|
texture.setRenderableOwner(this, false);
|
|
307
307
|
}
|
|
308
|
-
autosizeNode(dimensions) {
|
|
309
|
-
if (this.autosize) {
|
|
310
|
-
this.width = dimensions.width;
|
|
311
|
-
this.height = dimensions.height;
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
308
|
onTextureLoaded = (_, dimensions) => {
|
|
315
|
-
this.
|
|
309
|
+
if (this.autosize === true) {
|
|
310
|
+
this.w = dimensions.w;
|
|
311
|
+
this.h = dimensions.h;
|
|
312
|
+
}
|
|
316
313
|
this.setUpdateType(UpdateType.IsRenderable);
|
|
317
314
|
// Texture was loaded. In case the RAF loop has already stopped, we request
|
|
318
315
|
// a render to ensure the texture is rendered.
|
|
@@ -322,7 +319,7 @@ export class CoreNode extends EventEmitter {
|
|
|
322
319
|
this.notifyParentRTTOfUpdate();
|
|
323
320
|
}
|
|
324
321
|
// ignore 1x1 pixel textures
|
|
325
|
-
if (dimensions.
|
|
322
|
+
if (dimensions.w > 1 && dimensions.h > 1) {
|
|
326
323
|
this.emit('loaded', {
|
|
327
324
|
type: 'texture',
|
|
328
325
|
dimensions,
|
|
@@ -381,12 +378,12 @@ export class CoreNode extends EventEmitter {
|
|
|
381
378
|
}
|
|
382
379
|
updateLocalTransform() {
|
|
383
380
|
const p = this.props;
|
|
384
|
-
const { x, y,
|
|
385
|
-
const mountTranslateX = p.mountX *
|
|
386
|
-
const mountTranslateY = p.mountY *
|
|
381
|
+
const { x, y, w, h } = p;
|
|
382
|
+
const mountTranslateX = p.mountX * w;
|
|
383
|
+
const mountTranslateY = p.mountY * h;
|
|
387
384
|
if (p.rotation !== 0 || p.scaleX !== 1 || p.scaleY !== 1) {
|
|
388
|
-
const pivotTranslateX = p.pivotX *
|
|
389
|
-
const pivotTranslateY = p.pivotY *
|
|
385
|
+
const pivotTranslateX = p.pivotX * w;
|
|
386
|
+
const pivotTranslateY = p.pivotY * h;
|
|
390
387
|
this.localTransform = Matrix3d.translate(x - mountTranslateX + pivotTranslateX, y - mountTranslateY + pivotTranslateY, this.localTransform)
|
|
391
388
|
.rotate(p.rotation)
|
|
392
389
|
.scale(p.scaleX, p.scaleY)
|
|
@@ -404,26 +401,26 @@ export class CoreNode extends EventEmitter {
|
|
|
404
401
|
let resizeModeScaleY = 1;
|
|
405
402
|
let extraX = 0;
|
|
406
403
|
let extraY = 0;
|
|
407
|
-
const {
|
|
404
|
+
const { w: tw, h: th } = texture.dimensions;
|
|
408
405
|
const txAspectRatio = tw / th;
|
|
409
|
-
const nodeAspectRatio =
|
|
406
|
+
const nodeAspectRatio = w / h;
|
|
410
407
|
if (txAspectRatio > nodeAspectRatio) {
|
|
411
408
|
// Texture is wider than node
|
|
412
409
|
// Center the node vertically (shift down by extraY)
|
|
413
410
|
// Scale the node vertically to maintain original aspect ratio
|
|
414
|
-
const scaleX =
|
|
411
|
+
const scaleX = w / tw;
|
|
415
412
|
const scaledTxHeight = th * scaleX;
|
|
416
|
-
extraY = (
|
|
417
|
-
resizeModeScaleY = scaledTxHeight /
|
|
413
|
+
extraY = (h - scaledTxHeight) / 2;
|
|
414
|
+
resizeModeScaleY = scaledTxHeight / h;
|
|
418
415
|
}
|
|
419
416
|
else {
|
|
420
417
|
// Texture is taller than node (or equal)
|
|
421
418
|
// Center the node horizontally (shift right by extraX)
|
|
422
419
|
// Scale the node horizontally to maintain original aspect ratio
|
|
423
|
-
const scaleY =
|
|
420
|
+
const scaleY = h / th;
|
|
424
421
|
const scaledTxWidth = tw * scaleY;
|
|
425
|
-
extraX = (
|
|
426
|
-
resizeModeScaleX = scaledTxWidth /
|
|
422
|
+
extraX = (w - scaledTxWidth) / 2;
|
|
423
|
+
resizeModeScaleX = scaledTxWidth / w;
|
|
427
424
|
}
|
|
428
425
|
// Apply the extra translation and scale to the local transform
|
|
429
426
|
this.localTransform
|
|
@@ -664,8 +661,7 @@ export class CoreNode extends EventEmitter {
|
|
|
664
661
|
return CoreNodeRenderState.InViewport;
|
|
665
662
|
}
|
|
666
663
|
// check if we dont have dimensions, take our parent's render state
|
|
667
|
-
if (this.parent !== null &&
|
|
668
|
-
(this.props.width === 0 || this.props.height === 0)) {
|
|
664
|
+
if (this.parent !== null && (this.props.w === 0 || this.props.h === 0)) {
|
|
669
665
|
return this.parent.renderState;
|
|
670
666
|
}
|
|
671
667
|
return CoreNodeRenderState.OutOfBounds;
|
|
@@ -709,13 +705,13 @@ export class CoreNode extends EventEmitter {
|
|
|
709
705
|
return;
|
|
710
706
|
}
|
|
711
707
|
// clipping is enabled and we are in bounds create our own bounds
|
|
712
|
-
const { x, y,
|
|
708
|
+
const { x, y, w, h } = this.props;
|
|
713
709
|
// Pick the global transform if available, otherwise use the local transform
|
|
714
710
|
// global transform is only available if the node in an RTT chain
|
|
715
711
|
const { tx, ty } = this.sceneGlobalTransform || this.globalTransform || {};
|
|
716
712
|
const _x = tx ?? x;
|
|
717
713
|
const _y = ty ?? y;
|
|
718
|
-
this.strictBound = createBound(_x, _y, _x +
|
|
714
|
+
this.strictBound = createBound(_x, _y, _x + w, _y + h, this.strictBound);
|
|
719
715
|
this.preloadBound = createPreloadBounds(this.strictBound, this.boundsMargin);
|
|
720
716
|
}
|
|
721
717
|
updateRenderState(renderState) {
|
|
@@ -753,7 +749,7 @@ export class CoreNode extends EventEmitter {
|
|
|
753
749
|
// check shader
|
|
754
750
|
(this.props.shader !== null || this.hasColorProps === true) &&
|
|
755
751
|
// check dimensions
|
|
756
|
-
(this.props.
|
|
752
|
+
(this.props.w !== 0 && this.props.h !== 0) === true) {
|
|
757
753
|
// This mean we have dimensions and a color set, so we can render a ColorTexture
|
|
758
754
|
if (this.stage.defaultTexture &&
|
|
759
755
|
this.stage.defaultTexture.state === 'loaded') {
|
|
@@ -782,14 +778,14 @@ export class CoreNode extends EventEmitter {
|
|
|
782
778
|
this.texture?.setRenderableOwner(this, isRenderable);
|
|
783
779
|
}
|
|
784
780
|
calculateRenderCoords() {
|
|
785
|
-
const {
|
|
781
|
+
const { w, h } = this.props;
|
|
786
782
|
const g = this.globalTransform;
|
|
787
783
|
const tx = g.tx, ty = g.ty, ta = g.ta, tb = g.tb, tc = g.tc, td = g.td;
|
|
788
784
|
if (tb === 0 && tc === 0) {
|
|
789
785
|
const minX = tx;
|
|
790
|
-
const maxX = tx +
|
|
786
|
+
const maxX = tx + w * ta;
|
|
791
787
|
const minY = ty;
|
|
792
|
-
const maxY = ty +
|
|
788
|
+
const maxY = ty + h * td;
|
|
793
789
|
this.renderCoords = RenderCoords.translate(
|
|
794
790
|
//top-left
|
|
795
791
|
minX, minY,
|
|
@@ -805,11 +801,11 @@ export class CoreNode extends EventEmitter {
|
|
|
805
801
|
//top-left
|
|
806
802
|
tx, ty,
|
|
807
803
|
//top-right
|
|
808
|
-
tx +
|
|
804
|
+
tx + w * ta, ty + w * tc,
|
|
809
805
|
//bottom-right
|
|
810
|
-
tx +
|
|
806
|
+
tx + w * ta + h * tb, ty + w * tc + h * td,
|
|
811
807
|
//bottom-left
|
|
812
|
-
tx +
|
|
808
|
+
tx + h * tb, ty + h * td, this.renderCoords);
|
|
813
809
|
}
|
|
814
810
|
if (this.sceneGlobalTransform === undefined) {
|
|
815
811
|
return;
|
|
@@ -817,9 +813,9 @@ export class CoreNode extends EventEmitter {
|
|
|
817
813
|
const { tx: stx, ty: sty, ta: sta, tb: stb, tc: stc, td: std, } = this.sceneGlobalTransform;
|
|
818
814
|
if (stb === 0 && stc === 0) {
|
|
819
815
|
const minX = stx;
|
|
820
|
-
const maxX = stx +
|
|
816
|
+
const maxX = stx + w * sta;
|
|
821
817
|
const minY = sty;
|
|
822
|
-
const maxY = sty +
|
|
818
|
+
const maxY = sty + h * std;
|
|
823
819
|
this.sceneRenderCoords = RenderCoords.translate(
|
|
824
820
|
//top-left
|
|
825
821
|
minX, minY,
|
|
@@ -835,11 +831,11 @@ export class CoreNode extends EventEmitter {
|
|
|
835
831
|
//top-left
|
|
836
832
|
stx, sty,
|
|
837
833
|
//top-right
|
|
838
|
-
stx +
|
|
834
|
+
stx + w * sta, sty + w * stc,
|
|
839
835
|
//bottom-right
|
|
840
|
-
stx +
|
|
836
|
+
stx + w * sta + h * stb, sty + w * stc + h * std,
|
|
841
837
|
//bottom-left
|
|
842
|
-
stx +
|
|
838
|
+
stx + h * stb, sty + h * std, this.sceneRenderCoords);
|
|
843
839
|
}
|
|
844
840
|
}
|
|
845
841
|
/**
|
|
@@ -857,8 +853,8 @@ export class CoreNode extends EventEmitter {
|
|
|
857
853
|
if (clipping === true && isRotated === false) {
|
|
858
854
|
clippingRect.x = gt.tx;
|
|
859
855
|
clippingRect.y = gt.ty;
|
|
860
|
-
clippingRect.width = this.
|
|
861
|
-
clippingRect.height = this.
|
|
856
|
+
clippingRect.width = this.props.w * gt.ta;
|
|
857
|
+
clippingRect.height = this.props.h * gt.td;
|
|
862
858
|
clippingRect.valid = true;
|
|
863
859
|
}
|
|
864
860
|
else {
|
|
@@ -922,8 +918,8 @@ export class CoreNode extends EventEmitter {
|
|
|
922
918
|
const coords = this.renderCoords;
|
|
923
919
|
const texture = p.texture || this.stage.defaultTexture;
|
|
924
920
|
renderer.addQuad({
|
|
925
|
-
width: p.
|
|
926
|
-
height: p.
|
|
921
|
+
width: p.w,
|
|
922
|
+
height: p.h,
|
|
927
923
|
colorTl: this.premultipliedColorTl,
|
|
928
924
|
colorTr: this.premultipliedColorTr,
|
|
929
925
|
colorBl: this.premultipliedColorBl,
|
|
@@ -970,12 +966,12 @@ export class CoreNode extends EventEmitter {
|
|
|
970
966
|
}
|
|
971
967
|
get absX() {
|
|
972
968
|
return (this.props.x +
|
|
973
|
-
-this.props.
|
|
969
|
+
-this.props.w * this.props.mountX +
|
|
974
970
|
(this.props.parent?.absX || this.props.parent?.globalTransform?.tx || 0));
|
|
975
971
|
}
|
|
976
972
|
get absY() {
|
|
977
973
|
return (this.props.y +
|
|
978
|
-
-this.props.
|
|
974
|
+
-this.props.h * this.props.mountY +
|
|
979
975
|
(this.props.parent?.absY ?? 0));
|
|
980
976
|
}
|
|
981
977
|
get y() {
|
|
@@ -987,31 +983,31 @@ export class CoreNode extends EventEmitter {
|
|
|
987
983
|
this.setUpdateType(UpdateType.Local);
|
|
988
984
|
}
|
|
989
985
|
}
|
|
990
|
-
get
|
|
991
|
-
return this.props.
|
|
986
|
+
get w() {
|
|
987
|
+
return this.props.w;
|
|
992
988
|
}
|
|
993
|
-
set
|
|
994
|
-
if (this.props.
|
|
989
|
+
set w(value) {
|
|
990
|
+
if (this.props.w !== value) {
|
|
995
991
|
this.textureCoords = undefined;
|
|
996
|
-
this.props.
|
|
992
|
+
this.props.w = value;
|
|
997
993
|
this.setUpdateType(UpdateType.Local);
|
|
998
994
|
if (this.props.rtt === true) {
|
|
999
|
-
this.framebufferDimensions.
|
|
995
|
+
this.framebufferDimensions.w = value;
|
|
1000
996
|
this.texture = this.stage.txManager.createTexture('RenderTexture', this.framebufferDimensions);
|
|
1001
997
|
this.setUpdateType(UpdateType.RenderTexture);
|
|
1002
998
|
}
|
|
1003
999
|
}
|
|
1004
1000
|
}
|
|
1005
|
-
get
|
|
1006
|
-
return this.props.
|
|
1001
|
+
get h() {
|
|
1002
|
+
return this.props.h;
|
|
1007
1003
|
}
|
|
1008
|
-
set
|
|
1009
|
-
if (this.props.
|
|
1004
|
+
set h(value) {
|
|
1005
|
+
if (this.props.h !== value) {
|
|
1010
1006
|
this.textureCoords = undefined;
|
|
1011
|
-
this.props.
|
|
1007
|
+
this.props.h = value;
|
|
1012
1008
|
this.setUpdateType(UpdateType.Local);
|
|
1013
1009
|
if (this.props.rtt === true) {
|
|
1014
|
-
this.framebufferDimensions.
|
|
1010
|
+
this.framebufferDimensions.h = value;
|
|
1015
1011
|
this.texture = this.stage.txManager.createTexture('RenderTexture', this.framebufferDimensions);
|
|
1016
1012
|
this.setUpdateType(UpdateType.RenderTexture);
|
|
1017
1013
|
}
|
|
@@ -1339,8 +1335,8 @@ export class CoreNode extends EventEmitter {
|
|
|
1339
1335
|
}
|
|
1340
1336
|
initRenderTexture() {
|
|
1341
1337
|
this.framebufferDimensions = {
|
|
1342
|
-
|
|
1343
|
-
|
|
1338
|
+
w: this.props.w,
|
|
1339
|
+
h: this.props.h,
|
|
1344
1340
|
};
|
|
1345
1341
|
this.texture = this.stage.txManager.createTexture('RenderTexture', this.framebufferDimensions);
|
|
1346
1342
|
this.stage.renderer.renderToTexture(this);
|
|
@@ -1418,8 +1414,8 @@ export class CoreNode extends EventEmitter {
|
|
|
1418
1414
|
}
|
|
1419
1415
|
this.texture = this.stage.txManager.createTexture('ImageTexture', {
|
|
1420
1416
|
src: imageUrl,
|
|
1421
|
-
|
|
1422
|
-
|
|
1417
|
+
w: this.props.w,
|
|
1418
|
+
h: this.props.h,
|
|
1423
1419
|
type: this.props.imageType,
|
|
1424
1420
|
sx: this.props.srcX,
|
|
1425
1421
|
sy: this.props.srcY,
|