From 1f8400a6ff2da8f627285f2fdccd03803dedb19c Mon Sep 17 00:00:00 2001 From: Jumar Macato Date: Mon, 25 Jun 2018 17:09:53 +0800 Subject: [PATCH 1/4] Fix ghosting artifacts on both Renderers #1687 --- src/Avalonia.Visuals/Rendering/DeferredRenderer.cs | 2 ++ src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs b/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs index a14923b410..ed557b8b74 100644 --- a/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs +++ b/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs @@ -337,6 +337,8 @@ namespace Avalonia.Rendering private void RenderComposite(Scene scene, IDrawingContextImpl context) { + context.Clear(Colors.Transparent); + var clientRect = new Rect(scene.Size); foreach (var layer in scene.Layers) diff --git a/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs b/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs index 2118b66de2..93bb36c3cd 100644 --- a/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs +++ b/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs @@ -224,6 +224,9 @@ namespace Avalonia.Rendering var clipToBounds = visual.ClipToBounds; var bounds = new Rect(visual.Bounds.Size); + if (visual == _root) + context.PlatformImpl.Clear(Colors.Transparent); + if (visual.IsVisible && opacity > 0) { var m = Matrix.CreateTranslation(visual.Bounds.Position); From db50c65340da5ec073389d45dbad87d1f518b4c9 Mon Sep 17 00:00:00 2001 From: Jumar Macato Date: Wed, 27 Jun 2018 08:08:47 +0800 Subject: [PATCH 2/4] Move ImmediateRenderer clearing code to Paint(). --- src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs b/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs index 93bb36c3cd..a9e251865b 100644 --- a/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs +++ b/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs @@ -54,6 +54,9 @@ namespace Avalonia.Rendering { using (var context = new DrawingContext(_renderTarget.CreateDrawingContext(this))) { + + context.PlatformImpl.Clear(Colors.Transparent); + using (context.PushTransformContainer()) { Render(context, _root, _root.Bounds); @@ -224,9 +227,6 @@ namespace Avalonia.Rendering var clipToBounds = visual.ClipToBounds; var bounds = new Rect(visual.Bounds.Size); - if (visual == _root) - context.PlatformImpl.Clear(Colors.Transparent); - if (visual.IsVisible && opacity > 0) { var m = Matrix.CreateTranslation(visual.Bounds.Position); From f92339b251458f1cf7e417097618c33dbc7d74c7 Mon Sep 17 00:00:00 2001 From: Jumar Macato Date: Wed, 27 Jun 2018 13:48:59 +0800 Subject: [PATCH 3/4] Fix nit --- src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs b/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs index a9e251865b..24638ad150 100644 --- a/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs +++ b/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs @@ -54,7 +54,6 @@ namespace Avalonia.Rendering { using (var context = new DrawingContext(_renderTarget.CreateDrawingContext(this))) { - context.PlatformImpl.Clear(Colors.Transparent); using (context.PushTransformContainer()) From bf104a1e902e478be7c6afb250b69695e1beb167 Mon Sep 17 00:00:00 2001 From: Jumar Macato Date: Thu, 19 Jul 2018 01:00:15 +0800 Subject: [PATCH 4/4] Set AlphaMode to Premultiplied in SwapChainRenderTarget.cs --- src/Windows/Avalonia.Direct2D1/SwapChainRenderTarget.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Windows/Avalonia.Direct2D1/SwapChainRenderTarget.cs b/src/Windows/Avalonia.Direct2D1/SwapChainRenderTarget.cs index 0a23c63498..ea52081393 100644 --- a/src/Windows/Avalonia.Direct2D1/SwapChainRenderTarget.cs +++ b/src/Windows/Avalonia.Direct2D1/SwapChainRenderTarget.cs @@ -119,7 +119,7 @@ namespace Avalonia.Direct2D1 new BitmapProperties1( new PixelFormat { - AlphaMode = AlphaMode.Ignore, + AlphaMode = AlphaMode.Premultiplied, Format = Format.B8G8R8A8_UNorm }, _savedDpi.Width,