R/Ryujinx.Graphics.Gpu/State/ViewportTransform.cs

58 lines
1.6 KiB
C#
Raw Normal View History

2019-10-13 06:02:07 +00:00
using Ryujinx.Graphics.GAL;
namespace Ryujinx.Graphics.Gpu.State
{
/// <summary>
/// Viewport transform parameters, for viewport transformation.
/// </summary>
2019-10-13 06:02:07 +00:00
struct ViewportTransform
{
#pragma warning disable CS0649
2019-10-13 06:02:07 +00:00
public float ScaleX;
public float ScaleY;
public float ScaleZ;
public float TranslateX;
public float TranslateY;
public float TranslateZ;
public uint Swizzle;
public uint SubpixelPrecisionBias;
#pragma warning restore CS0649
2019-10-13 06:02:07 +00:00
/// <summary>
/// Unpacks viewport swizzle of the position X component.
/// </summary>
/// <returns>Swizzle enum value</returns>
2019-10-13 06:02:07 +00:00
public ViewportSwizzle UnpackSwizzleX()
{
return (ViewportSwizzle)(Swizzle & 7);
}
/// <summary>
/// Unpacks viewport swizzle of the position Y component.
/// </summary>
/// <returns>Swizzle enum value</returns>
2019-10-13 06:02:07 +00:00
public ViewportSwizzle UnpackSwizzleY()
{
return (ViewportSwizzle)((Swizzle >> 4) & 7);
}
/// <summary>
/// Unpacks viewport swizzle of the position Z component.
/// </summary>
/// <returns>Swizzle enum value</returns>
2019-10-13 06:02:07 +00:00
public ViewportSwizzle UnpackSwizzleZ()
{
return (ViewportSwizzle)((Swizzle >> 8) & 7);
}
/// <summary>
/// Unpacks viewport swizzle of the position W component.
/// </summary>
/// <returns>Swizzle enum value</returns>
2019-10-13 06:02:07 +00:00
public ViewportSwizzle UnpackSwizzleW()
{
return (ViewportSwizzle)((Swizzle >> 12) & 7);
}
}
}