From 96e2c9bb797aefefa8403c5585841af44170a891 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Mon, 25 May 2015 13:39:38 +0200 Subject: [PATCH] use premultiplied alpha on geometric renderers to fix transparency again --- OpenRA.Game/Graphics/LineRenderer.cs | 4 ++++ OpenRA.Game/Graphics/QuadRenderer.cs | 1 + 2 files changed, 5 insertions(+) diff --git a/OpenRA.Game/Graphics/LineRenderer.cs b/OpenRA.Game/Graphics/LineRenderer.cs index 6ed142fdcc..75260e484b 100644 --- a/OpenRA.Game/Graphics/LineRenderer.cs +++ b/OpenRA.Game/Graphics/LineRenderer.cs @@ -83,6 +83,7 @@ namespace OpenRA.Graphics if (nv + 2 > renderer.TempBufferSize) Flush(); + color = Util.PremultiplyAlpha(color); var r = color.R / 255.0f; var g = color.G / 255.0f; var b = color.B / 255.0f; @@ -98,12 +99,14 @@ namespace OpenRA.Graphics if (nv + 2 > renderer.TempBufferSize) Flush(); + startColor = Util.PremultiplyAlpha(startColor); var r = startColor.R / 255.0f; var g = startColor.G / 255.0f; var b = startColor.B / 255.0f; var a = startColor.A / 255.0f; vertices[nv++] = new Vertex(start + Offset, r, g, b, a); + endColor = Util.PremultiplyAlpha(endColor); r = endColor.R / 255.0f; g = endColor.G / 255.0f; b = endColor.B / 255.0f; @@ -115,6 +118,7 @@ namespace OpenRA.Graphics { renderer.CurrentBatchRenderer = this; + color = Util.PremultiplyAlpha(color); var r = color.R / 255.0f; var g = color.G / 255.0f; var b = color.B / 255.0f; diff --git a/OpenRA.Game/Graphics/QuadRenderer.cs b/OpenRA.Game/Graphics/QuadRenderer.cs index 0cce401aa5..edec7ecd3f 100644 --- a/OpenRA.Game/Graphics/QuadRenderer.cs +++ b/OpenRA.Game/Graphics/QuadRenderer.cs @@ -51,6 +51,7 @@ namespace OpenRA.Graphics if (nv + 4 > renderer.TempBufferSize) Flush(); + color = Util.PremultiplyAlpha(color); var r = color.R / 255.0f; var g = color.G / 255.0f; var b = color.B / 255.0f;