diff --git a/src/renderer/wg_engine/tvgWgCompositor.cpp b/src/renderer/wg_engine/tvgWgCompositor.cpp index 98107c2e..fdf41db3 100755 --- a/src/renderer/wg_engine/tvgWgCompositor.cpp +++ b/src/renderer/wg_engine/tvgWgCompositor.cpp @@ -88,7 +88,7 @@ RenderRegion WgCompositor::shrinkRenderRegion(RenderRegion& rect) } -void WgCompositor::beginRenderPass(WGPUCommandEncoder commandEncoder, WgRenderStorage* target, bool clear) +void WgCompositor::beginRenderPass(WGPUCommandEncoder commandEncoder, WgRenderStorage* target, bool clear, WGPUColor clearColor) { assert(commandEncoder); assert(target); @@ -105,6 +105,7 @@ void WgCompositor::beginRenderPass(WGPUCommandEncoder commandEncoder, WgRenderSt colorAttachment.loadOp = clear ? WGPULoadOp_Clear : WGPULoadOp_Load, colorAttachment.storeOp = WGPUStoreOp_Store; colorAttachment.resolveTarget = target->texView; + colorAttachment.clearValue = clearColor; #ifdef __EMSCRIPTEN__ colorAttachment.depthSlice = WGPU_DEPTH_SLICE_UNDEFINED; #endif diff --git a/src/renderer/wg_engine/tvgWgCompositor.h b/src/renderer/wg_engine/tvgWgCompositor.h index 715e8331..0739e276 100755 --- a/src/renderer/wg_engine/tvgWgCompositor.h +++ b/src/renderer/wg_engine/tvgWgCompositor.h @@ -67,7 +67,7 @@ public: void release(WgContext& context); // render passes workflow - void beginRenderPass(WGPUCommandEncoder encoder, WgRenderStorage* target, bool clear); + void beginRenderPass(WGPUCommandEncoder encoder, WgRenderStorage* target, bool clear, WGPUColor clearColor = { 0.0, 0.0, 0.0, 0.0 }); void endRenderPass(); // render shapes, images and scenes diff --git a/src/renderer/wg_engine/tvgWgRenderer.cpp b/src/renderer/wg_engine/tvgWgRenderer.cpp index e6c78fa0..3c9e6cd4 100755 --- a/src/renderer/wg_engine/tvgWgRenderer.cpp +++ b/src/renderer/wg_engine/tvgWgRenderer.cpp @@ -368,7 +368,9 @@ bool WgRenderer::beginComposite(RenderCompositor* cmp, MaskMethod method, uint8_ WgRenderStorage* storage = mRenderStoragePool.allocate(mContext); mRenderStorageStack.push(storage); // begin newly added render pass - mCompositor.beginRenderPass(mCommandEncoder, mRenderStorageStack.last(), true); + WGPUColor color{}; + if ((method == MaskMethod::None) && (opacity != 255)) color = { 1.0, 1.0, 1.0, 0.0 }; + mCompositor.beginRenderPass(mCommandEncoder, mRenderStorageStack.last(), true, color); return true; }