mirror of
https://github.com/aharabada/glitchy-engine-beef.git
synced 2026-09-05 13:01:52 +00:00
93 lines
3.1 KiB
Beef
93 lines
3.1 KiB
Beef
using GlitchyEngine.Core;
|
|
|
|
namespace GlitchyEngine.Renderer
|
|
{
|
|
/// The stencil operations that can be performed during depth-stencil testing.
|
|
public enum StencilOperation : uint32
|
|
{
|
|
/// Keep the existing stencil data.
|
|
Keep = 1,
|
|
/// Set the stencil data to 0.
|
|
Zero= 2,
|
|
/// Set the stencil data to the reference value set by calling ID3D11DeviceContext::OMSetDepthStencilState.
|
|
Replace = 3,
|
|
/// Increment the stencil value by 1, and clamp the result.
|
|
IncrementAndClamp = 4,
|
|
/// Decrement the stencil value by 1, and clamp the result.
|
|
DecrementAndClamp = 5,
|
|
/// Invert the stencil data.
|
|
Invert = 6,
|
|
/// Increment the stencil value by 1, and wrap the result if necessary.
|
|
Increment = 7,
|
|
/// Decrement the stencil value by 1, and wrap the result if necessary.
|
|
Decrement = 8
|
|
}
|
|
|
|
public struct DepthStencilOperationDescription
|
|
{
|
|
/// The stencil operation to perform when stencil testing fails.
|
|
public StencilOperation StencilFailOperation = .Keep;
|
|
|
|
/// The stencil operation to perform when stencil testing passes and depth testing fails.
|
|
public StencilOperation StencilDepthFailOperation = .Keep;
|
|
|
|
/// The stencil operation to perform when stencil testing and depth testing both pass.
|
|
public StencilOperation StencilPassOperation = .Keep;
|
|
|
|
/// A function that compares stencil data against existing stencil data.
|
|
public ComparisonFunction StencilFunction = .Always;
|
|
|
|
public this(StencilOperation stencilFailOperation = .Keep, StencilOperation stencilDepthFailOperation = .Keep,
|
|
StencilOperation stencilPassOperation = .Keep, ComparisonFunction stencilFunction = .Always)
|
|
{
|
|
StencilFunction = stencilFunction;
|
|
}
|
|
|
|
public const Self Default = Self();
|
|
}
|
|
|
|
public struct DepthStencilStateDescription
|
|
{
|
|
/// True if depth testing is enabled.
|
|
public bool DepthEnabled = true;
|
|
|
|
/// If true writing to the depth-stencil buffer is enabled.
|
|
public bool WriteDepth = true;
|
|
|
|
/// The function that is used to compare depth data against the existing depth data.
|
|
public ComparisonFunction DepthFunction = .Less;
|
|
|
|
/// True if stencil testing is enabled.
|
|
public bool StencilEnabled = false;
|
|
|
|
public uint8 StencilReadMask = 255;
|
|
public uint8 StencilWriteMask = 255;
|
|
|
|
public DepthStencilOperationDescription FrontFace = .();
|
|
public DepthStencilOperationDescription BackFace = .();
|
|
|
|
public this(bool depthEnabled = true, bool writeDepth = true, ComparisonFunction depthFunction = .Less,
|
|
bool stencilEnabled = false, uint8 stencilReadMask = 255, uint8 stencilWriteMask = 255,
|
|
DepthStencilOperationDescription frontFace = .(),
|
|
DepthStencilOperationDescription backFace = .())
|
|
{
|
|
DepthEnabled = depthEnabled;
|
|
WriteDepth = writeDepth;
|
|
DepthFunction = depthFunction;
|
|
StencilEnabled = stencilEnabled;
|
|
StencilReadMask = stencilReadMask;
|
|
StencilWriteMask = stencilWriteMask;
|
|
FrontFace = frontFace;
|
|
BackFace = backFace;
|
|
}
|
|
|
|
public const DepthStencilStateDescription Default = Self();
|
|
}
|
|
|
|
class DepthStencilState : RefCounter
|
|
{
|
|
public DepthStencilStateDescription _description;
|
|
|
|
public extern this(DepthStencilStateDescription description);
|
|
}
|
|
} |