| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- namespace Ryujinx.Graphics.Gal
- {
- public struct ColorMaskState
- {
- private static readonly ColorMaskState DefaultBackingField = new ColorMaskState()
- {
- Red = true,
- Green = true,
- Blue = true,
- Alpha = true
- };
- public static ColorMaskState Default => DefaultBackingField;
- public bool Red;
- public bool Green;
- public bool Blue;
- public bool Alpha;
- }
- public struct BlendState
- {
- private static readonly BlendState DefaultBackingField = new BlendState()
- {
- Enabled = false,
- SeparateAlpha = false,
- EquationRgb = GalBlendEquation.FuncAdd,
- FuncSrcRgb = GalBlendFactor.One,
- FuncDstRgb = GalBlendFactor.Zero,
- EquationAlpha = GalBlendEquation.FuncAdd,
- FuncSrcAlpha = GalBlendFactor.One,
- FuncDstAlpha = GalBlendFactor.Zero
- };
- public static BlendState Default => DefaultBackingField;
- public bool Enabled;
- public bool SeparateAlpha;
- public GalBlendEquation EquationRgb;
- public GalBlendFactor FuncSrcRgb;
- public GalBlendFactor FuncDstRgb;
- public GalBlendEquation EquationAlpha;
- public GalBlendFactor FuncSrcAlpha;
- public GalBlendFactor FuncDstAlpha;
- }
- public class GalPipelineState
- {
- public const int Stages = 5;
- public const int ConstBuffersPerStage = 18;
- public const int RenderTargetsCount = 8;
- public long[][] ConstBufferKeys;
- public GalVertexBinding[] VertexBindings;
- public bool FramebufferSrgb;
- public float FlipX;
- public float FlipY;
- public int Instance;
- public GalFrontFace FrontFace;
- public bool CullFaceEnabled;
- public GalCullFace CullFace;
- public bool DepthTestEnabled;
- public bool DepthWriteEnabled;
- public GalComparisonOp DepthFunc;
- public float DepthRangeNear;
- public float DepthRangeFar;
- public bool StencilTestEnabled;
- public bool StencilTwoSideEnabled;
- public GalComparisonOp StencilBackFuncFunc;
- public int StencilBackFuncRef;
- public uint StencilBackFuncMask;
- public GalStencilOp StencilBackOpFail;
- public GalStencilOp StencilBackOpZFail;
- public GalStencilOp StencilBackOpZPass;
- public uint StencilBackMask;
- public GalComparisonOp StencilFrontFuncFunc;
- public int StencilFrontFuncRef;
- public uint StencilFrontFuncMask;
- public GalStencilOp StencilFrontOpFail;
- public GalStencilOp StencilFrontOpZFail;
- public GalStencilOp StencilFrontOpZPass;
- public uint StencilFrontMask;
- public int ScissorTestCount;
- public bool[] ScissorTestEnabled;
- public int[] ScissorTestX;
- public int[] ScissorTestY;
- public int[] ScissorTestWidth;
- public int[] ScissorTestHeight;
- public bool BlendIndependent;
- public BlendState[] Blends;
- public bool ColorMaskCommon;
- public ColorMaskState[] ColorMasks;
- public bool PrimitiveRestartEnabled;
- public uint PrimitiveRestartIndex;
- public GalPipelineState()
- {
- ConstBufferKeys = new long[Stages][];
- for (int stage = 0; stage < Stages; stage++)
- {
- ConstBufferKeys[stage] = new long[ConstBuffersPerStage];
- }
- Blends = new BlendState[RenderTargetsCount];
- ScissorTestEnabled = new bool[RenderTargetsCount];
- ScissorTestY = new int[RenderTargetsCount];
- ScissorTestX = new int[RenderTargetsCount];
- ScissorTestWidth = new int[RenderTargetsCount];
- ScissorTestHeight = new int[RenderTargetsCount];
- ColorMasks = new ColorMaskState[RenderTargetsCount];
- }
- }
- }
|