@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
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 Comcast Cable Communications Management, LLC
|
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License.
|
|
5
|
+
* You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
* See the License for the specific language governing permissions and
|
|
13
|
+
* limitations under the License.
|
|
14
|
+
*
|
|
15
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import type { WebGlShaderType } from '../../renderers/webgl/WebGlShaderNode.js';
|
|
19
|
+
import {
|
|
20
|
+
ShadowTemplate,
|
|
21
|
+
type ShadowProps,
|
|
22
|
+
} from '../templates/ShadowTemplate.js';
|
|
23
|
+
|
|
24
|
+
export const Shadow: WebGlShaderType<ShadowProps> = {
|
|
25
|
+
props: ShadowTemplate.props,
|
|
26
|
+
update() {
|
|
27
|
+
this.uniformRGBA('u_color', this.props!.color);
|
|
28
|
+
this.uniform4fa('u_shadow', this.props!.projection);
|
|
29
|
+
},
|
|
30
|
+
vertex: `
|
|
31
|
+
# ifdef GL_FRAGMENT_PRECISION_HIGH
|
|
32
|
+
precision highp float;
|
|
33
|
+
# else
|
|
34
|
+
precision mediump float;
|
|
35
|
+
# endif
|
|
36
|
+
|
|
37
|
+
attribute vec2 a_position;
|
|
38
|
+
attribute vec2 a_textureCoords;
|
|
39
|
+
attribute vec4 a_color;
|
|
40
|
+
attribute vec2 a_nodeCoords;
|
|
41
|
+
|
|
42
|
+
uniform vec2 u_resolution;
|
|
43
|
+
uniform float u_pixelRatio;
|
|
44
|
+
uniform float u_rtt;
|
|
45
|
+
uniform vec2 u_dimensions;
|
|
46
|
+
|
|
47
|
+
uniform vec4 u_shadow;
|
|
48
|
+
|
|
49
|
+
varying vec4 v_color;
|
|
50
|
+
varying vec2 v_textureCoords;
|
|
51
|
+
varying vec2 v_nodeCoords;
|
|
52
|
+
|
|
53
|
+
void main() {
|
|
54
|
+
vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y);
|
|
55
|
+
vec2 outerEdge = clamp(a_nodeCoords * 2.0 - vec2(1.0), -1.0, 1.0);
|
|
56
|
+
|
|
57
|
+
vec2 shadowEdge = outerEdge * ((u_shadow.w * 2.0)+ u_shadow.z) + u_shadow.xy;
|
|
58
|
+
vec2 normVertexPos = a_position * u_pixelRatio;
|
|
59
|
+
|
|
60
|
+
vec2 vertexPos = (a_position + outerEdge + shadowEdge) * u_pixelRatio;
|
|
61
|
+
gl_Position = vec4(vertexPos.x * screenSpace.x - 1.0, -sign(screenSpace.y) * (vertexPos.y * -abs(screenSpace.y)) + 1.0, 0.0, 1.0);
|
|
62
|
+
|
|
63
|
+
v_color = a_color;
|
|
64
|
+
v_nodeCoords = a_nodeCoords + (screenSpace + shadowEdge) / (u_dimensions);
|
|
65
|
+
v_textureCoords = a_textureCoords + (screenSpace + shadowEdge) / (u_dimensions);
|
|
66
|
+
}
|
|
67
|
+
`,
|
|
68
|
+
fragment: `
|
|
69
|
+
# ifdef GL_FRAGMENT_PRECISION_HIGH
|
|
70
|
+
precision highp float;
|
|
71
|
+
# else
|
|
72
|
+
precision mediump float;
|
|
73
|
+
# endif
|
|
74
|
+
|
|
75
|
+
uniform vec2 u_resolution;
|
|
76
|
+
uniform float u_pixelRatio;
|
|
77
|
+
uniform float u_alpha;
|
|
78
|
+
uniform vec2 u_dimensions;
|
|
79
|
+
uniform sampler2D u_texture;
|
|
80
|
+
|
|
81
|
+
uniform vec4 u_color;
|
|
82
|
+
uniform vec4 u_shadow;
|
|
83
|
+
|
|
84
|
+
varying vec4 v_color;
|
|
85
|
+
varying vec2 v_textureCoords;
|
|
86
|
+
varying vec2 v_nodeCoords;
|
|
87
|
+
|
|
88
|
+
float box(vec2 p, vec2 s) {
|
|
89
|
+
vec2 q = abs(p) - s;
|
|
90
|
+
return (min(max(q.x, q.y), 0.0) + length(max(q, 0.0))) + 2.0;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
float shadowBox(vec2 p, vec2 s, float r) {
|
|
94
|
+
vec2 q = abs(p) - s + r;
|
|
95
|
+
float dist = min(max(q.x, q.y), 0.0) + length(max(q, 0.0)) - r;
|
|
96
|
+
return 1.0 - smoothstep(-u_shadow.w, u_shadow.w + u_shadow.z, dist);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
void main() {
|
|
100
|
+
vec4 color = texture2D(u_texture, v_textureCoords) * v_color;
|
|
101
|
+
vec2 halfDimensions = (u_dimensions * 0.5);
|
|
102
|
+
|
|
103
|
+
vec2 boxUv = v_nodeCoords.xy * u_dimensions - halfDimensions;
|
|
104
|
+
float boxDist = box(boxUv, halfDimensions);
|
|
105
|
+
|
|
106
|
+
float boxAlpha = 1.0 - smoothstep(0.0, u_pixelRatio, boxDist);
|
|
107
|
+
float shadowDist = shadowBox(boxUv - u_shadow.xy, halfDimensions + u_shadow.w, u_shadow.z);
|
|
108
|
+
|
|
109
|
+
vec4 resColor = vec4(0.0);
|
|
110
|
+
resColor = mix(resColor, u_color, shadowDist);
|
|
111
|
+
resColor = mix(resColor, color, min(color.a, boxAlpha));
|
|
112
|
+
gl_FragColor = resColor * u_alpha;
|
|
113
|
+
}
|
|
114
|
+
`,
|
|
115
|
+
};
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
// import type { Renderer } from '../../../Renderer';
|
|
21
21
|
import { assertTruthy } from '../../../../utils.js';
|
|
22
22
|
import type { Stage } from '../../../Stage.js';
|
|
23
|
-
import {
|
|
23
|
+
import { WebGlRenderer } from '../../../renderers/webgl/WebGlRenderer.js';
|
|
24
24
|
import { ImageTexture } from '../../../textures/ImageTexture.js';
|
|
25
25
|
import {
|
|
26
26
|
TrFontFace,
|
|
@@ -73,7 +73,7 @@ export class SdfTrFontFace<
|
|
|
73
73
|
this.type = type;
|
|
74
74
|
const renderer = stage.renderer;
|
|
75
75
|
assertTruthy(
|
|
76
|
-
renderer instanceof
|
|
76
|
+
renderer instanceof WebGlRenderer,
|
|
77
77
|
'SDF Font Faces can only be used with the WebGL Renderer',
|
|
78
78
|
);
|
|
79
79
|
|
|
@@ -137,6 +137,13 @@ export interface RenderInfo {
|
|
|
137
137
|
metrics: NormalizedFontMetrics;
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
+
export interface LineType {
|
|
141
|
+
text: string;
|
|
142
|
+
x: number;
|
|
143
|
+
y: number;
|
|
144
|
+
w: number;
|
|
145
|
+
}
|
|
146
|
+
|
|
140
147
|
/**
|
|
141
148
|
* Calculate height for the canvas
|
|
142
149
|
*
|
|
@@ -199,10 +206,10 @@ export class LightningTextTextureRenderer {
|
|
|
199
206
|
_getFontSetting() {
|
|
200
207
|
const ff = [this._settings.fontFamily];
|
|
201
208
|
|
|
202
|
-
const ffs = [];
|
|
209
|
+
const ffs: string[] = [];
|
|
203
210
|
for (let i = 0, n = ff.length; i < n; i++) {
|
|
204
211
|
if (ff[i] === 'serif' || ff[i] === 'sans-serif') {
|
|
205
|
-
ffs.push(ff[i]);
|
|
212
|
+
ffs.push(ff[i]!);
|
|
206
213
|
} else {
|
|
207
214
|
ffs.push(`"${ff[i]!}"`);
|
|
208
215
|
}
|
|
@@ -339,7 +346,7 @@ export class LightningTextTextureRenderer {
|
|
|
339
346
|
if (calcMaxLines && lines.length > calcMaxLines) {
|
|
340
347
|
const usedLines = lines.slice(0, calcMaxLines);
|
|
341
348
|
|
|
342
|
-
let otherLines = null;
|
|
349
|
+
let otherLines: string[] | null = null;
|
|
343
350
|
if (this._settings.overflowSuffix) {
|
|
344
351
|
// Wrap again with max lines suffix enabled.
|
|
345
352
|
const w = this._settings.overflowSuffix
|
|
@@ -354,7 +361,7 @@ export class LightningTextTextureRenderer {
|
|
|
354
361
|
usedLines[usedLines.length - 1] = `${al.l[0]!}${
|
|
355
362
|
this._settings.overflowSuffix
|
|
356
363
|
}`;
|
|
357
|
-
otherLines = [al.l.length > 1 ? al.l[1] : ''];
|
|
364
|
+
otherLines = [al.l.length > 1 ? al.l[1]! : ''];
|
|
358
365
|
} else {
|
|
359
366
|
otherLines = [''];
|
|
360
367
|
}
|
|
@@ -515,7 +522,7 @@ export class LightningTextTextureRenderer {
|
|
|
515
522
|
let linePositionX;
|
|
516
523
|
let linePositionY;
|
|
517
524
|
|
|
518
|
-
const drawLines = [];
|
|
525
|
+
const drawLines: LineType[] = [];
|
|
519
526
|
|
|
520
527
|
const { metrics } = renderInfo;
|
|
521
528
|
|
|
@@ -44,21 +44,21 @@ import {
|
|
|
44
44
|
type SdfRenderWindow,
|
|
45
45
|
} from './internal/setRenderWindow.js';
|
|
46
46
|
import type { TrFontFace } from '../../font-face-types/TrFontFace.js';
|
|
47
|
-
import {
|
|
47
|
+
import { type FontFamilyMap } from '../../TrFontManager.js';
|
|
48
48
|
import { assertTruthy, mergeColorAlpha } from '../../../../utils.js';
|
|
49
49
|
import type { Stage } from '../../../Stage.js';
|
|
50
|
-
import {
|
|
50
|
+
import { WebGlRenderOp } from '../../../renderers/webgl/WebGlRenderOp.js';
|
|
51
51
|
import { BufferCollection } from '../../../renderers/webgl/internal/BufferCollection.js';
|
|
52
|
-
import type
|
|
53
|
-
|
|
54
|
-
SdfShaderProps,
|
|
55
|
-
} from '../../../renderers/webgl/shaders/SdfShader.js';
|
|
56
|
-
import type { WebGlCoreCtxTexture } from '../../../renderers/webgl/WebGlCoreCtxTexture.js';
|
|
52
|
+
import { Sdf, type SdfShaderProps } from '../../../shaders/webgl/SdfShader.js';
|
|
53
|
+
import type { WebGlCtxTexture } from '../../../renderers/webgl/WebGlCtxTexture.js';
|
|
57
54
|
import { EventEmitter } from '../../../../common/EventEmitter.js';
|
|
58
55
|
import type { Matrix3d } from '../../../lib/Matrix3d.js';
|
|
59
56
|
import type { Dimensions } from '../../../../common/CommonTypes.js';
|
|
60
|
-
import {
|
|
57
|
+
import { WebGlRenderer } from '../../../renderers/webgl/WebGlRenderer.js';
|
|
61
58
|
import { calcDefaultLineHeight } from '../../TextRenderingUtils.js';
|
|
59
|
+
import type { WebGlShaderProgram } from '../../../renderers/webgl/WebGlShaderProgram.js';
|
|
60
|
+
import type { WebGlShaderNode } from '../../../renderers/webgl/WebGlShaderNode.js';
|
|
61
|
+
import type { CoreTextNode } from '../../../CoreTextNode.js';
|
|
62
62
|
|
|
63
63
|
declare module '../TextRenderer.js' {
|
|
64
64
|
interface TextRendererMap {
|
|
@@ -139,21 +139,17 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
|
|
|
139
139
|
this.ssdfFontFamilies,
|
|
140
140
|
this.msdfFontFamilies,
|
|
141
141
|
];
|
|
142
|
-
private sdfShader:
|
|
142
|
+
private sdfShader: WebGlShaderNode;
|
|
143
143
|
private rendererBounds: Bound;
|
|
144
144
|
|
|
145
145
|
public type: 'canvas' | 'sdf' = 'sdf';
|
|
146
146
|
|
|
147
147
|
constructor(stage: Stage) {
|
|
148
148
|
super(stage);
|
|
149
|
-
this.
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
scrollY: 0,
|
|
154
|
-
distanceRange: 0,
|
|
155
|
-
debug: false,
|
|
156
|
-
}).shader;
|
|
149
|
+
this.stage.shManager.registerShaderType('Sdf', Sdf);
|
|
150
|
+
this.sdfShader = this.stage.shManager.createShader(
|
|
151
|
+
'Sdf',
|
|
152
|
+
) as WebGlShaderNode;
|
|
157
153
|
this.rendererBounds = {
|
|
158
154
|
x1: 0,
|
|
159
155
|
y1: 0,
|
|
@@ -601,21 +597,15 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
|
|
|
601
597
|
this.setStatus(state, 'loaded');
|
|
602
598
|
}
|
|
603
599
|
|
|
604
|
-
override renderQuads(
|
|
605
|
-
state
|
|
606
|
-
transform: Matrix3d,
|
|
607
|
-
clippingRect: Readonly<RectWithValid>,
|
|
608
|
-
alpha: number,
|
|
609
|
-
parentHasRenderTexture: boolean,
|
|
610
|
-
framebufferDimensions: Dimensions,
|
|
611
|
-
): void {
|
|
600
|
+
override renderQuads(node: CoreTextNode): void {
|
|
601
|
+
const state = node.trState as SdfTextRendererState;
|
|
612
602
|
if (!state.vertexBuffer) {
|
|
613
603
|
// Nothing to draw
|
|
614
604
|
return;
|
|
615
605
|
}
|
|
616
606
|
|
|
617
607
|
const renderer = this.stage.renderer;
|
|
618
|
-
assertTruthy(renderer instanceof
|
|
608
|
+
assertTruthy(renderer instanceof WebGlRenderer);
|
|
619
609
|
|
|
620
610
|
const { fontSize, color, contain, scrollable, zIndex, debug } = state.props;
|
|
621
611
|
|
|
@@ -651,8 +641,8 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
|
|
|
651
641
|
stride, // 0 = move forward size * sizeof(type) each iteration to get the next position
|
|
652
642
|
offset: 0, // start at the beginning of the buffer
|
|
653
643
|
},
|
|
654
|
-
|
|
655
|
-
name: '
|
|
644
|
+
a_textureCoords: {
|
|
645
|
+
name: 'a_textureCoords',
|
|
656
646
|
size: 2,
|
|
657
647
|
type: glw.FLOAT,
|
|
658
648
|
normalized: false,
|
|
@@ -670,7 +660,7 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
|
|
|
670
660
|
if (!bufferUploaded) {
|
|
671
661
|
const glw = renderer.glw;
|
|
672
662
|
|
|
673
|
-
const buffer = webGlBuffers?.getBuffer('
|
|
663
|
+
const buffer = webGlBuffers?.getBuffer('a_textureCoords') ?? null;
|
|
674
664
|
glw.arrayBufferData(buffer, vertexBuffer, glw.STATIC_DRAW);
|
|
675
665
|
state.bufferUploaded = true;
|
|
676
666
|
}
|
|
@@ -680,50 +670,48 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
|
|
|
680
670
|
assertTruthy(elementBounds.valid);
|
|
681
671
|
const elementRect = convertBoundToRect(elementBounds, tmpRect);
|
|
682
672
|
|
|
683
|
-
if (clippingRect.valid) {
|
|
673
|
+
if (node.clippingRect.valid) {
|
|
684
674
|
state.clippingRect.valid = true;
|
|
685
|
-
clippingRect = intersectRect(
|
|
686
|
-
clippingRect,
|
|
675
|
+
node.clippingRect = intersectRect(
|
|
676
|
+
node.clippingRect,
|
|
687
677
|
elementRect,
|
|
688
678
|
state.clippingRect,
|
|
689
679
|
);
|
|
690
680
|
} else {
|
|
691
681
|
state.clippingRect.valid = true;
|
|
692
|
-
clippingRect = copyRect(elementRect, state.clippingRect);
|
|
682
|
+
node.clippingRect = copyRect(elementRect, state.clippingRect);
|
|
693
683
|
}
|
|
694
684
|
}
|
|
695
685
|
|
|
696
|
-
const renderOp = new
|
|
697
|
-
renderer
|
|
698
|
-
renderer.options,
|
|
699
|
-
webGlBuffers,
|
|
700
|
-
this.sdfShader,
|
|
686
|
+
const renderOp = new WebGlRenderOp(
|
|
687
|
+
renderer,
|
|
701
688
|
{
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
689
|
+
sdfShaderProps: {
|
|
690
|
+
transform: node.globalTransform!.getFloatArr(),
|
|
691
|
+
color: mergeColorAlpha(color, node.worldAlpha),
|
|
692
|
+
size: fontSize / (trFontFace.data?.info.size || 0),
|
|
693
|
+
scrollY,
|
|
694
|
+
distanceRange,
|
|
695
|
+
debug: debug.sdfShaderDebug,
|
|
696
|
+
},
|
|
697
|
+
sdfBuffers: state.webGlBuffers as BufferCollection,
|
|
698
|
+
shader: this.sdfShader,
|
|
699
|
+
alpha: node.worldAlpha,
|
|
700
|
+
clippingRect: node.clippingRect,
|
|
701
|
+
height: textH,
|
|
702
|
+
width: textW,
|
|
703
|
+
rtt: false,
|
|
704
|
+
parentHasRenderTexture: node.parentHasRenderTexture,
|
|
705
|
+
framebufferDimensions: node.framebufferDimensions,
|
|
706
|
+
},
|
|
715
707
|
0,
|
|
716
|
-
zIndex,
|
|
717
|
-
false,
|
|
718
|
-
parentHasRenderTexture,
|
|
719
|
-
framebufferDimensions,
|
|
720
708
|
);
|
|
721
709
|
|
|
722
710
|
const texture = state.trFontFace?.texture;
|
|
723
711
|
assertTruthy(texture);
|
|
724
712
|
const ctxTexture = texture.ctxTexture;
|
|
725
713
|
|
|
726
|
-
renderOp.addTexture(ctxTexture as
|
|
714
|
+
renderOp.addTexture(ctxTexture as WebGlCtxTexture);
|
|
727
715
|
renderOp.length = state.bufferNumFloats;
|
|
728
716
|
renderOp.numQuads = state.bufferNumQuads;
|
|
729
717
|
|
|
@@ -44,7 +44,7 @@ import type {
|
|
|
44
44
|
* }
|
|
45
45
|
* ```
|
|
46
46
|
*/
|
|
47
|
-
|
|
47
|
+
|
|
48
48
|
export interface TextRendererMap {}
|
|
49
49
|
|
|
50
50
|
export interface TextRendererState {
|
|
@@ -546,12 +546,5 @@ export abstract class TextRenderer<
|
|
|
546
546
|
|
|
547
547
|
abstract updateState(state: StateT): void;
|
|
548
548
|
|
|
549
|
-
renderQuads?(
|
|
550
|
-
state: StateT,
|
|
551
|
-
transform: Matrix3d,
|
|
552
|
-
clippingRect: RectWithValid,
|
|
553
|
-
alpha: number,
|
|
554
|
-
parentHasRenderTexture: boolean,
|
|
555
|
-
framebufferDimensions: Dimensions | undefined,
|
|
556
|
-
): void;
|
|
549
|
+
renderQuads?(node: CoreTextNode): void;
|
|
557
550
|
}
|
|
@@ -170,29 +170,15 @@ export class ImageTexture extends Texture {
|
|
|
170
170
|
const hasAlphaChannel = premultiplyAlpha ?? blob.type.includes('image/png');
|
|
171
171
|
const imageBitmapSupported = this.txManager.imageBitmapSupported;
|
|
172
172
|
|
|
173
|
-
if (
|
|
174
|
-
imageBitmapSupported.full === true &&
|
|
175
|
-
sx !== null &&
|
|
176
|
-
sy !== null &&
|
|
177
|
-
sw !== null &&
|
|
178
|
-
sh !== null
|
|
179
|
-
) {
|
|
173
|
+
if (imageBitmapSupported.full === true && sw !== null && sh !== null) {
|
|
180
174
|
// createImageBitmap with crop
|
|
181
|
-
const bitmap = await createImageBitmap(blob, sx, sy, sw, sh, {
|
|
175
|
+
const bitmap = await createImageBitmap(blob, sx || 0, sy || 0, sw, sh, {
|
|
182
176
|
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
183
177
|
colorSpaceConversion: 'none',
|
|
184
178
|
imageOrientation: 'none',
|
|
185
179
|
});
|
|
186
180
|
return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
|
|
187
|
-
} else if (imageBitmapSupported.
|
|
188
|
-
// createImageBitmap without crop but with options
|
|
189
|
-
const bitmap = await createImageBitmap(blob, {
|
|
190
|
-
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
191
|
-
colorSpaceConversion: 'none',
|
|
192
|
-
imageOrientation: 'none',
|
|
193
|
-
});
|
|
194
|
-
return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
|
|
195
|
-
} else {
|
|
181
|
+
} else if (imageBitmapSupported.basic === true) {
|
|
196
182
|
// basic createImageBitmap without options or crop
|
|
197
183
|
// this is supported for Chrome v50 to v52/54 that doesn't support options
|
|
198
184
|
return {
|
|
@@ -200,6 +186,14 @@ export class ImageTexture extends Texture {
|
|
|
200
186
|
premultiplyAlpha: hasAlphaChannel,
|
|
201
187
|
};
|
|
202
188
|
}
|
|
189
|
+
|
|
190
|
+
// default createImageBitmap without crop but with options
|
|
191
|
+
const bitmap = await createImageBitmap(blob, {
|
|
192
|
+
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
193
|
+
colorSpaceConversion: 'none',
|
|
194
|
+
imageOrientation: 'none',
|
|
195
|
+
});
|
|
196
|
+
return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
|
|
203
197
|
}
|
|
204
198
|
|
|
205
199
|
async loadImage(src: string) {
|
|
@@ -331,7 +331,7 @@ export abstract class Texture extends EventEmitter {
|
|
|
331
331
|
static resolveDefaults(
|
|
332
332
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
333
333
|
props: unknown,
|
|
334
|
-
): Record<string,
|
|
334
|
+
): Record<string, any> {
|
|
335
335
|
return {};
|
|
336
336
|
}
|
|
337
337
|
}
|
package/src/main-api/INode.ts
CHANGED
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
} from '../core/CoreNode.js';
|
|
25
25
|
import type { CoreTextNode, CoreTextNodeProps } from '../core/CoreTextNode.js';
|
|
26
26
|
import type { AnimationSettings } from '../core/animations/CoreAnimation.js';
|
|
27
|
-
import type {
|
|
27
|
+
import type { CoreShaderNode } from '../core/renderers/CoreShaderNode.js';
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
30
|
* A visual Node in the Renderer scene graph.
|
|
@@ -44,11 +44,11 @@ import type { BaseShaderController } from './ShaderController.js';
|
|
|
44
44
|
* Users of the Renderer API, should generally interact with INode objects
|
|
45
45
|
* instead of CoreNode objects.
|
|
46
46
|
*/
|
|
47
|
-
export interface INode<
|
|
47
|
+
export interface INode<ShaderNode extends CoreShaderNode = CoreShaderNode>
|
|
48
48
|
extends Omit<CoreNode, 'shader' | 'animate' | 'parent'> {
|
|
49
|
-
shader:
|
|
49
|
+
shader: ShaderNode;
|
|
50
50
|
animate(
|
|
51
|
-
props: Partial<INodeAnimateProps<
|
|
51
|
+
props: Partial<INodeAnimateProps<ShaderNode>>,
|
|
52
52
|
settings: Partial<AnimationSettings>,
|
|
53
53
|
): IAnimationController;
|
|
54
54
|
parent: INode | null;
|
|
@@ -57,19 +57,17 @@ export interface INode<SC extends BaseShaderController = BaseShaderController>
|
|
|
57
57
|
/**
|
|
58
58
|
* Properties used to animate() a Node
|
|
59
59
|
*/
|
|
60
|
-
export interface INodeAnimateProps<
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
shaderProps: Partial<SC['props']>;
|
|
60
|
+
export interface INodeAnimateProps<ShNode extends CoreShaderNode>
|
|
61
|
+
extends Omit<CoreNodeAnimateProps, 'shaderProps'> {
|
|
62
|
+
shaderProps: Partial<ShNode['props']>;
|
|
64
63
|
}
|
|
65
64
|
|
|
66
65
|
/**
|
|
67
66
|
* Properties used to create a new Node
|
|
68
67
|
*/
|
|
69
|
-
export interface INodeProps<
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
shader: SC;
|
|
68
|
+
export interface INodeProps<ShNode extends CoreShaderNode>
|
|
69
|
+
extends Omit<CoreNodeProps, 'shader' | 'parent'> {
|
|
70
|
+
shader: ShNode;
|
|
73
71
|
parent: INode | null;
|
|
74
72
|
}
|
|
75
73
|
|
|
@@ -87,7 +85,7 @@ export interface INodeProps<
|
|
|
87
85
|
*/
|
|
88
86
|
export interface ITextNode extends Omit<CoreTextNode, 'animate' | 'parent'> {
|
|
89
87
|
animate(
|
|
90
|
-
props: Partial<INodeAnimateProps<
|
|
88
|
+
props: Partial<INodeAnimateProps<CoreShaderNode>>,
|
|
91
89
|
settings: Partial<AnimationSettings>,
|
|
92
90
|
): IAnimationController;
|
|
93
91
|
parent: INode | null;
|
|
@@ -62,13 +62,25 @@ const stylePropertyMap: {
|
|
|
62
62
|
|
|
63
63
|
return { prop: 'height', value: `${h}px` };
|
|
64
64
|
},
|
|
65
|
+
fontSize: (fs) => {
|
|
66
|
+
if (fs === 0) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return { prop: 'font-size', value: `${fs}px` };
|
|
71
|
+
},
|
|
72
|
+
lineHeight: (lh) => {
|
|
73
|
+
if (lh === 0) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return { prop: 'line-height', value: `${lh}px` };
|
|
78
|
+
},
|
|
65
79
|
zIndex: () => 'z-index',
|
|
66
80
|
fontFamily: () => 'font-family',
|
|
67
|
-
fontSize: () => 'font-size',
|
|
68
81
|
fontStyle: () => 'font-style',
|
|
69
82
|
fontWeight: () => 'font-weight',
|
|
70
83
|
fontStretch: () => 'font-stretch',
|
|
71
|
-
lineHeight: () => 'line-height',
|
|
72
84
|
letterSpacing: () => 'letter-spacing',
|
|
73
85
|
textAlign: () => 'text-align',
|
|
74
86
|
overflowSuffix: () => 'overflow-suffix',
|
|
@@ -396,6 +408,11 @@ export class Inspector {
|
|
|
396
408
|
// return;
|
|
397
409
|
// }
|
|
398
410
|
|
|
411
|
+
if (property === 'rtt' && value) {
|
|
412
|
+
div.setAttribute('data-rtt', String(value));
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
|
|
399
416
|
// CSS mappable attribute
|
|
400
417
|
if (stylePropertyMap[property]) {
|
|
401
418
|
const mappedStyleResponse = stylePropertyMap[property]?.(value);
|