Remove now-redundant blend code.

This commit is contained in:
Paul Chote
2015-05-16 18:44:24 +01:00
parent 4eb76046f4
commit 5532ed4fc9
6 changed files with 14 additions and 35 deletions

View File

@@ -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();

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -119,13 +119,12 @@ namespace OpenRA.Mods.Common.Graphics
var offset = LoadField<float2>(d, "Offset", float2.Zero);
var blendMode = LoadField<BlendMode>(d, "BlendMode", BlendMode.Alpha);
var alpha = LoadField<float>(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 == "*")

View File

@@ -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() { }

View File

@@ -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();
}