Implement Constant Color blends (#1119)

* Implement Constant Color blends and init blend states

* Address gdkchan's comments

Also adds Set methods to GpuState

* Fix descriptions of QueryModified
This commit is contained in:
mageven 2020-04-25 18:30:43 +05:30 committed by GitHub
parent 75ec30c962
commit a728610b40
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 140 additions and 16 deletions

View file

@ -4,6 +4,7 @@ namespace Ryujinx.Graphics.GAL
{
public bool Enable { get; }
public ColorF BlendConstant { get; }
public BlendOp ColorOp { get; }
public BlendFactor ColorSrcFactor { get; }
public BlendFactor ColorDstFactor { get; }
@ -13,6 +14,7 @@ namespace Ryujinx.Graphics.GAL
public BlendDescriptor(
bool enable,
ColorF blendConstant,
BlendOp colorOp,
BlendFactor colorSrcFactor,
BlendFactor colorDstFactor,
@ -21,6 +23,7 @@ namespace Ryujinx.Graphics.GAL
BlendFactor alphaDstFactor)
{
Enable = enable;
BlendConstant = blendConstant;
ColorOp = colorOp;
ColorSrcFactor = colorSrcFactor;
ColorDstFactor = colorDstFactor;

View file

@ -1,6 +1,8 @@
using System;
namespace Ryujinx.Graphics.GAL
{
public struct ColorF
public struct ColorF : IEquatable<ColorF>
{
public float Red { get; }
public float Green { get; }
@ -14,5 +16,17 @@ namespace Ryujinx.Graphics.GAL
Blue = blue;
Alpha = alpha;
}
public bool Equals(ColorF color) => Red == color.Red &&
Green == color.Green &&
Blue == color.Blue &&
Alpha == color.Alpha;
public override bool Equals(object obj) => (obj is ColorF color) && Equals(color);
public override int GetHashCode() => HashCode.Combine(Red, Green, Blue, Alpha);
public static bool operator ==(ColorF l, ColorF r) => l.Equals(r);
public static bool operator !=(ColorF l, ColorF r) => !l.Equals(r);
}
}

View file

@ -26,8 +26,6 @@ namespace Ryujinx.Graphics.GAL
void SetBlendState(int index, BlendDescriptor blend);
void SetBlendColor(ColorF color);
void SetDepthBias(PolygonModeMask enables, float factor, float units, float clamp);
void SetDepthClamp(bool clampNear, bool clampFar);
void SetDepthMode(DepthMode mode);