Remove now-redundant blend code.
This commit is contained in:
@@ -41,8 +41,6 @@ namespace OpenRA
|
|||||||
Additive,
|
Additive,
|
||||||
Subtractive,
|
Subtractive,
|
||||||
Multiply,
|
Multiply,
|
||||||
SoftAdditive,
|
|
||||||
Translucency,
|
|
||||||
Multiplicative,
|
Multiplicative,
|
||||||
DoubleMultiplicative
|
DoubleMultiplicative
|
||||||
}
|
}
|
||||||
@@ -70,7 +68,7 @@ namespace OpenRA
|
|||||||
void EnableDepthBuffer();
|
void EnableDepthBuffer();
|
||||||
void DisableDepthBuffer();
|
void DisableDepthBuffer();
|
||||||
|
|
||||||
void SetBlendMode(BlendMode mode, float alpha = 1f);
|
void SetBlendMode(BlendMode mode);
|
||||||
|
|
||||||
void GrabWindowMouseFocus();
|
void GrabWindowMouseFocus();
|
||||||
void ReleaseWindowMouseFocus();
|
void ReleaseWindowMouseFocus();
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ namespace OpenRA.Graphics
|
|||||||
public readonly Rectangle Bounds;
|
public readonly Rectangle Bounds;
|
||||||
public readonly Sheet Sheet;
|
public readonly Sheet Sheet;
|
||||||
public readonly BlendMode BlendMode;
|
public readonly BlendMode BlendMode;
|
||||||
public readonly float Alpha;
|
|
||||||
public readonly TextureChannel Channel;
|
public readonly TextureChannel Channel;
|
||||||
public readonly float2 Size;
|
public readonly float2 Size;
|
||||||
public readonly float2 Offset;
|
public readonly float2 Offset;
|
||||||
@@ -27,7 +26,7 @@ namespace OpenRA.Graphics
|
|||||||
public Sprite(Sheet sheet, Rectangle bounds, TextureChannel channel)
|
public Sprite(Sheet sheet, Rectangle bounds, TextureChannel channel)
|
||||||
: this(sheet, bounds, float2.Zero, 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;
|
Sheet = sheet;
|
||||||
Bounds = bounds;
|
Bounds = bounds;
|
||||||
@@ -35,7 +34,6 @@ namespace OpenRA.Graphics
|
|||||||
Channel = channel;
|
Channel = channel;
|
||||||
Size = new float2(bounds.Size);
|
Size = new float2(bounds.Size);
|
||||||
BlendMode = blendMode;
|
BlendMode = blendMode;
|
||||||
Alpha = alpha;
|
|
||||||
|
|
||||||
FractionalOffset = offset / Size;
|
FractionalOffset = offset / Size;
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ namespace OpenRA.Graphics
|
|||||||
readonly Vertex[] vertices;
|
readonly Vertex[] vertices;
|
||||||
Sheet currentSheet;
|
Sheet currentSheet;
|
||||||
BlendMode currentBlend = BlendMode.Alpha;
|
BlendMode currentBlend = BlendMode.Alpha;
|
||||||
float currentAlpha = 1f;
|
|
||||||
int nv = 0;
|
int nv = 0;
|
||||||
|
|
||||||
public SpriteRenderer(Renderer renderer, IShader shader)
|
public SpriteRenderer(Renderer renderer, IShader shader)
|
||||||
@@ -37,14 +36,14 @@ namespace OpenRA.Graphics
|
|||||||
{
|
{
|
||||||
shader.SetTexture("DiffuseTexture", currentSheet.GetTexture());
|
shader.SetTexture("DiffuseTexture", currentSheet.GetTexture());
|
||||||
|
|
||||||
renderer.Device.SetBlendMode(currentBlend, currentAlpha);
|
renderer.Device.SetBlendMode(currentBlend);
|
||||||
shader.Render(() =>
|
shader.Render(() =>
|
||||||
{
|
{
|
||||||
var vb = renderer.GetTempVertexBuffer();
|
var vb = renderer.GetTempVertexBuffer();
|
||||||
vb.SetData(vertices, nv);
|
vb.SetData(vertices, nv);
|
||||||
renderer.DrawBatch(vb, 0, nv, PrimitiveType.QuadList);
|
renderer.DrawBatch(vb, 0, nv, PrimitiveType.QuadList);
|
||||||
});
|
});
|
||||||
renderer.Device.SetBlendMode(BlendMode.None, currentAlpha);
|
renderer.Device.SetBlendMode(BlendMode.None);
|
||||||
|
|
||||||
nv = 0;
|
nv = 0;
|
||||||
currentSheet = null;
|
currentSheet = null;
|
||||||
@@ -55,10 +54,9 @@ namespace OpenRA.Graphics
|
|||||||
{
|
{
|
||||||
renderer.CurrentBatchRenderer = this;
|
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();
|
Flush();
|
||||||
|
|
||||||
currentAlpha = s.Alpha;
|
|
||||||
currentBlend = s.BlendMode;
|
currentBlend = s.BlendMode;
|
||||||
currentSheet = s.Sheet;
|
currentSheet = s.Sheet;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -119,13 +119,12 @@ namespace OpenRA.Mods.Common.Graphics
|
|||||||
|
|
||||||
var offset = LoadField<float2>(d, "Offset", float2.Zero);
|
var offset = LoadField<float2>(d, "Offset", float2.Zero);
|
||||||
var blendMode = LoadField<BlendMode>(d, "BlendMode", BlendMode.Alpha);
|
var blendMode = LoadField<BlendMode>(d, "BlendMode", BlendMode.Alpha);
|
||||||
var alpha = LoadField<float>(d, "Alpha", 1f);
|
|
||||||
|
|
||||||
// Apply offset to each sprite in the sequence
|
// Apply offset to each sprite in the sequence
|
||||||
// Different sequences may apply different offsets to the same frame
|
// Different sequences may apply different offsets to the same frame
|
||||||
var src = GetSpriteSrc(modData, tileSet, sequence, animation, info.Value, d);
|
var src = GetSpriteSrc(modData, tileSet, sequence, animation, info.Value, d);
|
||||||
sprites = cache[src].Select(
|
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;
|
MiniYaml length;
|
||||||
if (d.TryGetValue("Length", out length) && length.Value == "*")
|
if (d.TryGetValue("Length", out length) && length.Value == "*")
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace OpenRA.Renderer.Null
|
|||||||
public void EnableDepthBuffer() { }
|
public void EnableDepthBuffer() { }
|
||||||
public void DisableDepthBuffer() { }
|
public void DisableDepthBuffer() { }
|
||||||
|
|
||||||
public void SetBlendMode(BlendMode mode, float alpha = 1f) { }
|
public void SetBlendMode(BlendMode mode) { }
|
||||||
|
|
||||||
public void GrabWindowMouseFocus() { }
|
public void GrabWindowMouseFocus() { }
|
||||||
public void ReleaseWindowMouseFocus() { }
|
public void ReleaseWindowMouseFocus() { }
|
||||||
|
|||||||
@@ -246,7 +246,7 @@ namespace OpenRA.Renderer.Sdl2
|
|||||||
ErrorHandler.CheckGlError();
|
ErrorHandler.CheckGlError();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetBlendMode(BlendMode mode, float alpha = 1f)
|
public void SetBlendMode(BlendMode mode)
|
||||||
{
|
{
|
||||||
GL.BlendEquation(BlendEquationMode.FuncAdd);
|
GL.BlendEquation(BlendEquationMode.FuncAdd);
|
||||||
ErrorHandler.CheckGlError();
|
ErrorHandler.CheckGlError();
|
||||||
@@ -262,16 +262,16 @@ namespace OpenRA.Renderer.Sdl2
|
|||||||
GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.OneMinusSrcAlpha);
|
GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.OneMinusSrcAlpha);
|
||||||
break;
|
break;
|
||||||
case BlendMode.Additive:
|
case BlendMode.Additive:
|
||||||
GL.Enable(EnableCap.Blend);
|
|
||||||
ErrorHandler.CheckGlError();
|
|
||||||
GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.One);
|
|
||||||
break;
|
|
||||||
case BlendMode.Subtractive:
|
case BlendMode.Subtractive:
|
||||||
GL.Enable(EnableCap.Blend);
|
GL.Enable(EnableCap.Blend);
|
||||||
ErrorHandler.CheckGlError();
|
ErrorHandler.CheckGlError();
|
||||||
GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.One);
|
GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.One);
|
||||||
ErrorHandler.CheckGlError();
|
if (mode == BlendMode.Subtractive)
|
||||||
GL.BlendEquation(BlendEquationMode.FuncReverseSubtract);
|
{
|
||||||
|
ErrorHandler.CheckGlError();
|
||||||
|
GL.BlendEquation(BlendEquationMode.FuncReverseSubtract);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case BlendMode.Multiply:
|
case BlendMode.Multiply:
|
||||||
GL.Enable(EnableCap.Blend);
|
GL.Enable(EnableCap.Blend);
|
||||||
@@ -279,17 +279,6 @@ namespace OpenRA.Renderer.Sdl2
|
|||||||
GL.BlendFunc(BlendingFactorSrc.DstColor, BlendingFactorDest.OneMinusSrcAlpha);
|
GL.BlendFunc(BlendingFactorSrc.DstColor, BlendingFactorDest.OneMinusSrcAlpha);
|
||||||
ErrorHandler.CheckGlError();
|
ErrorHandler.CheckGlError();
|
||||||
break;
|
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:
|
case BlendMode.Multiplicative:
|
||||||
GL.Enable(EnableCap.Blend);
|
GL.Enable(EnableCap.Blend);
|
||||||
ErrorHandler.CheckGlError();
|
ErrorHandler.CheckGlError();
|
||||||
@@ -302,9 +291,6 @@ namespace OpenRA.Renderer.Sdl2
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (alpha != 1f)
|
|
||||||
GL.BlendColor(1f, 1f, 1f, alpha);
|
|
||||||
|
|
||||||
ErrorHandler.CheckGlError();
|
ErrorHandler.CheckGlError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user