136 lines
5.1 KiB
C#
136 lines
5.1 KiB
C#
using RefreshCS;
|
|
|
|
namespace MoonWorks.Graphics
|
|
{
|
|
public struct SamplerState
|
|
{
|
|
public Refresh.Filter MinFilter;
|
|
public Refresh.Filter MagFilter;
|
|
public Refresh.SamplerMipmapMode MipmapMode;
|
|
public Refresh.SamplerAddressMode AddressModeU;
|
|
public Refresh.SamplerAddressMode AddressModeV;
|
|
public Refresh.SamplerAddressMode AddressModeW;
|
|
public float MipLodBias;
|
|
public bool AnisotropyEnable;
|
|
public float MaxAnisotropy;
|
|
public bool CompareEnable;
|
|
public Refresh.CompareOp CompareOp;
|
|
public float MinLod;
|
|
public float MaxLod;
|
|
public Refresh.BorderColor BorderColor;
|
|
|
|
public static readonly SamplerState AnisotropicClamp = new SamplerState
|
|
{
|
|
MinFilter = Refresh.Filter.Linear,
|
|
MagFilter = Refresh.Filter.Linear,
|
|
MipmapMode = Refresh.SamplerMipmapMode.Linear,
|
|
AddressModeU = Refresh.SamplerAddressMode.ClampToEdge,
|
|
AddressModeV = Refresh.SamplerAddressMode.ClampToEdge,
|
|
AddressModeW = Refresh.SamplerAddressMode.ClampToEdge,
|
|
CompareEnable = false,
|
|
AnisotropyEnable = true,
|
|
MaxAnisotropy = 4,
|
|
MipLodBias = 0f,
|
|
MinLod = 0,
|
|
MaxLod = 1000 /* VK_LOD_CLAMP_NONE */
|
|
};
|
|
|
|
public static readonly SamplerState AnisotropicWrap = new SamplerState
|
|
{
|
|
MinFilter = Refresh.Filter.Linear,
|
|
MagFilter = Refresh.Filter.Linear,
|
|
MipmapMode = Refresh.SamplerMipmapMode.Linear,
|
|
AddressModeU = Refresh.SamplerAddressMode.Repeat,
|
|
AddressModeV = Refresh.SamplerAddressMode.Repeat,
|
|
AddressModeW = Refresh.SamplerAddressMode.Repeat,
|
|
CompareEnable = false,
|
|
AnisotropyEnable = true,
|
|
MaxAnisotropy = 4,
|
|
MipLodBias = 0f,
|
|
MinLod = 0,
|
|
MaxLod = 1000 /* VK_LOD_CLAMP_NONE */
|
|
};
|
|
|
|
public static readonly SamplerState LinearClamp = new SamplerState
|
|
{
|
|
MinFilter = Refresh.Filter.Linear,
|
|
MagFilter = Refresh.Filter.Linear,
|
|
MipmapMode = Refresh.SamplerMipmapMode.Linear,
|
|
AddressModeU = Refresh.SamplerAddressMode.ClampToEdge,
|
|
AddressModeV = Refresh.SamplerAddressMode.ClampToEdge,
|
|
AddressModeW = Refresh.SamplerAddressMode.ClampToEdge,
|
|
CompareEnable = false,
|
|
AnisotropyEnable = false,
|
|
MipLodBias = 0f,
|
|
MinLod = 0,
|
|
MaxLod = 1000
|
|
};
|
|
|
|
public static readonly SamplerState LinearWrap = new SamplerState
|
|
{
|
|
MinFilter = Refresh.Filter.Linear,
|
|
MagFilter = Refresh.Filter.Linear,
|
|
MipmapMode = Refresh.SamplerMipmapMode.Linear,
|
|
AddressModeU = Refresh.SamplerAddressMode.Repeat,
|
|
AddressModeV = Refresh.SamplerAddressMode.Repeat,
|
|
AddressModeW = Refresh.SamplerAddressMode.Repeat,
|
|
CompareEnable = false,
|
|
AnisotropyEnable = false,
|
|
MipLodBias = 0f,
|
|
MinLod = 0,
|
|
MaxLod = 1000
|
|
};
|
|
|
|
public static readonly SamplerState PointClamp = new SamplerState
|
|
{
|
|
MinFilter = Refresh.Filter.Nearest,
|
|
MagFilter = Refresh.Filter.Nearest,
|
|
MipmapMode = Refresh.SamplerMipmapMode.Nearest,
|
|
AddressModeU = Refresh.SamplerAddressMode.ClampToEdge,
|
|
AddressModeV = Refresh.SamplerAddressMode.ClampToEdge,
|
|
AddressModeW = Refresh.SamplerAddressMode.ClampToEdge,
|
|
CompareEnable = false,
|
|
AnisotropyEnable = false,
|
|
MipLodBias = 0f,
|
|
MinLod = 0,
|
|
MaxLod = 1000
|
|
};
|
|
|
|
public static readonly SamplerState PointWrap = new SamplerState
|
|
{
|
|
MinFilter = Refresh.Filter.Nearest,
|
|
MagFilter = Refresh.Filter.Nearest,
|
|
MipmapMode = Refresh.SamplerMipmapMode.Nearest,
|
|
AddressModeU = Refresh.SamplerAddressMode.Repeat,
|
|
AddressModeV = Refresh.SamplerAddressMode.Repeat,
|
|
AddressModeW = Refresh.SamplerAddressMode.Repeat,
|
|
CompareEnable = false,
|
|
AnisotropyEnable = false,
|
|
MipLodBias = 0f,
|
|
MinLod = 0,
|
|
MaxLod = 1000
|
|
};
|
|
|
|
public Refresh.SamplerStateCreateInfo ToRefreshSamplerStateCreateInfo()
|
|
{
|
|
return new Refresh.SamplerStateCreateInfo
|
|
{
|
|
minFilter = MinFilter,
|
|
magFilter = MagFilter,
|
|
mipmapMode = MipmapMode,
|
|
addressModeU = AddressModeU,
|
|
addressModeV = AddressModeV,
|
|
addressModeW = AddressModeW,
|
|
mipLodBias = MipLodBias,
|
|
anisotropyEnable = Conversions.BoolToByte(AnisotropyEnable),
|
|
maxAnisotropy = MaxAnisotropy,
|
|
compareEnable = Conversions.BoolToByte(CompareEnable),
|
|
compareOp = CompareOp,
|
|
minLod = MinLod,
|
|
maxLod = MaxLod,
|
|
borderColor = BorderColor
|
|
};
|
|
}
|
|
}
|
|
}
|