diff --git a/OpenRA.Game/Graphics/IGraphicsDevice.cs b/OpenRA.Game/Graphics/IGraphicsDevice.cs index 7d60e911bb..8c54c606c2 100755 --- a/OpenRA.Game/Graphics/IGraphicsDevice.cs +++ b/OpenRA.Game/Graphics/IGraphicsDevice.cs @@ -41,8 +41,6 @@ namespace OpenRA Additive, Subtractive, Multiply, - SoftAdditive, - Translucency, Multiplicative, DoubleMultiplicative } @@ -70,7 +68,7 @@ namespace OpenRA void EnableDepthBuffer(); void DisableDepthBuffer(); - void SetBlendMode(BlendMode mode, float alpha = 1f); + void SetBlendMode(BlendMode mode); void GrabWindowMouseFocus(); void ReleaseWindowMouseFocus(); diff --git a/OpenRA.Game/Graphics/Sprite.cs b/OpenRA.Game/Graphics/Sprite.cs index 7da65692e7..89916c6b3c 100644 --- a/OpenRA.Game/Graphics/Sprite.cs +++ b/OpenRA.Game/Graphics/Sprite.cs @@ -17,7 +17,6 @@ namespace OpenRA.Graphics public readonly Rectangle Bounds; public readonly Sheet Sheet; public readonly BlendMode BlendMode; - public readonly float Alpha; public readonly TextureChannel Channel; public readonly float2 Size; public readonly float2 Offset; @@ -27,7 +26,7 @@ namespace OpenRA.Graphics public Sprite(Sheet sheet, Rectangle bounds, TextureChannel channel) : this(sheet, bounds, float2.Zero, channel) { } - public Sprite(Sheet sheet, Rectangle bounds, float2 offset, TextureChannel channel, BlendMode blendMode = BlendMode.Alpha, float alpha = 1f) + public Sprite(Sheet sheet, Rectangle bounds, float2 offset, TextureChannel channel, BlendMode blendMode = BlendMode.Alpha) { Sheet = sheet; Bounds = bounds; @@ -35,7 +34,6 @@ namespace OpenRA.Graphics Channel = channel; Size = new float2(bounds.Size); BlendMode = blendMode; - Alpha = alpha; FractionalOffset = offset / Size; diff --git a/OpenRA.Game/Graphics/SpriteRenderer.cs b/OpenRA.Game/Graphics/SpriteRenderer.cs index 941201082a..7becc7c6b5 100644 --- a/OpenRA.Game/Graphics/SpriteRenderer.cs +++ b/OpenRA.Game/Graphics/SpriteRenderer.cs @@ -21,7 +21,6 @@ namespace OpenRA.Graphics readonly Vertex[] vertices; Sheet currentSheet; BlendMode currentBlend = BlendMode.Alpha; - float currentAlpha = 1f; int nv = 0; public SpriteRenderer(Renderer renderer, IShader shader) @@ -37,14 +36,14 @@ namespace OpenRA.Graphics { shader.SetTexture("DiffuseTexture", currentSheet.GetTexture()); - renderer.Device.SetBlendMode(currentBlend, currentAlpha); + renderer.Device.SetBlendMode(currentBlend); shader.Render(() => { var vb = renderer.GetTempVertexBuffer(); vb.SetData(vertices, nv); renderer.DrawBatch(vb, 0, nv, PrimitiveType.QuadList); }); - renderer.Device.SetBlendMode(BlendMode.None, currentAlpha); + renderer.Device.SetBlendMode(BlendMode.None); nv = 0; currentSheet = null; @@ -55,10 +54,9 @@ namespace OpenRA.Graphics { renderer.CurrentBatchRenderer = this; - if (s.Alpha != currentAlpha || s.BlendMode != currentBlend || s.Sheet != currentSheet || nv + 4 > renderer.TempBufferSize) + if (s.BlendMode != currentBlend || s.Sheet != currentSheet || nv + 4 > renderer.TempBufferSize) Flush(); - currentAlpha = s.Alpha; currentBlend = s.BlendMode; currentSheet = s.Sheet; } diff --git a/OpenRA.Mods.Common/Graphics/DefaultSpriteSequence.cs b/OpenRA.Mods.Common/Graphics/DefaultSpriteSequence.cs index f89937090e..89cbdcdad2 100644 --- a/OpenRA.Mods.Common/Graphics/DefaultSpriteSequence.cs +++ b/OpenRA.Mods.Common/Graphics/DefaultSpriteSequence.cs @@ -119,13 +119,12 @@ namespace OpenRA.Mods.Common.Graphics var offset = LoadField(d, "Offset", float2.Zero); var blendMode = LoadField(d, "BlendMode", BlendMode.Alpha); - var alpha = LoadField(d, "Alpha", 1f); // Apply offset to each sprite in the sequence // Different sequences may apply different offsets to the same frame var src = GetSpriteSrc(modData, tileSet, sequence, animation, info.Value, d); sprites = cache[src].Select( - s => new Sprite(s.Sheet, s.Bounds, s.Offset + offset, s.Channel, blendMode, alpha)).ToArray(); + s => new Sprite(s.Sheet, s.Bounds, s.Offset + offset, s.Channel, blendMode)).ToArray(); MiniYaml length; if (d.TryGetValue("Length", out length) && length.Value == "*") diff --git a/OpenRA.Renderer.Null/NullGraphicsDevice.cs b/OpenRA.Renderer.Null/NullGraphicsDevice.cs index 25e8436850..98c05946e3 100644 --- a/OpenRA.Renderer.Null/NullGraphicsDevice.cs +++ b/OpenRA.Renderer.Null/NullGraphicsDevice.cs @@ -43,7 +43,7 @@ namespace OpenRA.Renderer.Null public void EnableDepthBuffer() { } public void DisableDepthBuffer() { } - public void SetBlendMode(BlendMode mode, float alpha = 1f) { } + public void SetBlendMode(BlendMode mode) { } public void GrabWindowMouseFocus() { } public void ReleaseWindowMouseFocus() { } diff --git a/OpenRA.Renderer.Sdl2/Sdl2GraphicsDevice.cs b/OpenRA.Renderer.Sdl2/Sdl2GraphicsDevice.cs index 691ba5b972..0153b30c84 100755 --- a/OpenRA.Renderer.Sdl2/Sdl2GraphicsDevice.cs +++ b/OpenRA.Renderer.Sdl2/Sdl2GraphicsDevice.cs @@ -246,7 +246,7 @@ namespace OpenRA.Renderer.Sdl2 ErrorHandler.CheckGlError(); } - public void SetBlendMode(BlendMode mode, float alpha = 1f) + public void SetBlendMode(BlendMode mode) { GL.BlendEquation(BlendEquationMode.FuncAdd); ErrorHandler.CheckGlError(); @@ -262,16 +262,16 @@ namespace OpenRA.Renderer.Sdl2 GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.OneMinusSrcAlpha); break; case BlendMode.Additive: - GL.Enable(EnableCap.Blend); - ErrorHandler.CheckGlError(); - GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.One); - break; case BlendMode.Subtractive: GL.Enable(EnableCap.Blend); ErrorHandler.CheckGlError(); GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.One); - ErrorHandler.CheckGlError(); - GL.BlendEquation(BlendEquationMode.FuncReverseSubtract); + if (mode == BlendMode.Subtractive) + { + ErrorHandler.CheckGlError(); + GL.BlendEquation(BlendEquationMode.FuncReverseSubtract); + } + break; case BlendMode.Multiply: GL.Enable(EnableCap.Blend); @@ -279,17 +279,6 @@ namespace OpenRA.Renderer.Sdl2 GL.BlendFunc(BlendingFactorSrc.DstColor, BlendingFactorDest.OneMinusSrcAlpha); ErrorHandler.CheckGlError(); break; - case BlendMode.SoftAdditive: - GL.Enable(EnableCap.Blend); - ErrorHandler.CheckGlError(); - GL.BlendFunc(BlendingFactorSrc.OneMinusDstColor, BlendingFactorDest.One); - break; - case BlendMode.Translucency: - GL.Enable(EnableCap.Blend); - ErrorHandler.CheckGlError(); - GL.BlendFunc(BlendingFactorSrc.OneMinusConstantAlpha, BlendingFactorDest.One); - ErrorHandler.CheckGlError(); - break; case BlendMode.Multiplicative: GL.Enable(EnableCap.Blend); ErrorHandler.CheckGlError(); @@ -302,9 +291,6 @@ namespace OpenRA.Renderer.Sdl2 break; } - if (alpha != 1f) - GL.BlendColor(1f, 1f, 1f, alpha); - ErrorHandler.CheckGlError(); }