From 8aba68a853639bbb7fd8f6959b8ba76301338952 Mon Sep 17 00:00:00 2001 From: Mirko Pecora Date: Fri, 24 Jan 2025 19:05:43 +0100 Subject: [PATCH 1/2] fix: subTexture in canvas renderer --- src/core/renderers/canvas/CanvasCoreRenderer.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/core/renderers/canvas/CanvasCoreRenderer.ts b/src/core/renderers/canvas/CanvasCoreRenderer.ts index 8d6f3a6f..ab04ebe8 100644 --- a/src/core/renderers/canvas/CanvasCoreRenderer.ts +++ b/src/core/renderers/canvas/CanvasCoreRenderer.ts @@ -122,10 +122,11 @@ export class CanvasCoreRenderer extends CoreRenderer { const textureType = texture?.type; assertTruthy(textureType, 'Texture type is not defined'); - // The Canvas2D renderer only supports image and color textures + // The Canvas2D renderer only supports image and color textures and subTexture images if ( textureType !== TextureType.image && - textureType !== TextureType.color + textureType !== TextureType.color && + textureType !== TextureType.subTexture ) { return; } @@ -140,7 +141,10 @@ export class CanvasCoreRenderer extends CoreRenderer { if (texture.state === 'freed') { return; } - if (texture.state !== 'loaded') { + if ( + texture.state !== 'loaded' || + (textureType === TextureType.subTexture && !ctxTexture.hasImage()) + ) { return; } } @@ -185,7 +189,11 @@ export class CanvasCoreRenderer extends CoreRenderer { ctx.clip(path); } - if (textureType === TextureType.image && ctxTexture) { + if ( + (textureType === TextureType.image || + textureType === TextureType.subTexture) && + ctxTexture + ) { const image = ctxTexture.getImage(color); ctx.globalAlpha = color.a ?? alpha; if (frame) { From bd5353a83b8e2bbc0e0dcb2ddb6edb4b729d9ba4 Mon Sep 17 00:00:00 2001 From: Mirko Pecora Date: Mon, 27 Jan 2025 11:48:44 +0100 Subject: [PATCH 2/2] fx: removed hasImage check --- src/core/renderers/canvas/CanvasCoreRenderer.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/core/renderers/canvas/CanvasCoreRenderer.ts b/src/core/renderers/canvas/CanvasCoreRenderer.ts index ab04ebe8..cb480d95 100644 --- a/src/core/renderers/canvas/CanvasCoreRenderer.ts +++ b/src/core/renderers/canvas/CanvasCoreRenderer.ts @@ -141,10 +141,7 @@ export class CanvasCoreRenderer extends CoreRenderer { if (texture.state === 'freed') { return; } - if ( - texture.state !== 'loaded' || - (textureType === TextureType.subTexture && !ctxTexture.hasImage()) - ) { + if (texture.state !== 'loaded') { return; } }