SetStencilTest
This commit is contained in:
parent
628772f685
commit
0f52165e86
2 changed files with 30 additions and 1 deletions
|
@ -387,7 +387,34 @@ namespace Ryujinx.Graphics.Metal
|
|||
|
||||
public void SetStencilTest(StencilTestDescriptor stencilTest)
|
||||
{
|
||||
// TODO
|
||||
var depthStencilDescriptor = new MTLDepthStencilDescriptor
|
||||
{
|
||||
BackFaceStencil = new MTLStencilDescriptor
|
||||
{
|
||||
StencilFailureOperation = stencilTest.BackSFail.Convert(),
|
||||
DepthFailureOperation = stencilTest.BackDpFail.Convert(),
|
||||
DepthStencilPassOperation = stencilTest.BackDpPass.Convert(),
|
||||
StencilCompareFunction = stencilTest.BackFunc.Convert(),
|
||||
ReadMask = (uint)stencilTest.BackFuncMask,
|
||||
WriteMask = (uint)stencilTest.BackMask
|
||||
},
|
||||
FrontFaceStencil = new MTLStencilDescriptor
|
||||
{
|
||||
StencilFailureOperation = stencilTest.FrontSFail.Convert(),
|
||||
DepthFailureOperation = stencilTest.FrontDpFail.Convert(),
|
||||
DepthStencilPassOperation = stencilTest.FrontDpPass.Convert(),
|
||||
StencilCompareFunction = stencilTest.FrontFunc.Convert(),
|
||||
ReadMask = (uint)stencilTest.FrontFuncMask,
|
||||
WriteMask = (uint)stencilTest.FrontMask
|
||||
}
|
||||
};
|
||||
|
||||
var depthStencilState = _device.NewDepthStencilState(depthStencilDescriptor);
|
||||
|
||||
if (_currentEncoder is MTLRenderCommandEncoder renderCommandEncoder)
|
||||
{
|
||||
renderCommandEncoder.SetDepthStencilState(depthStencilState);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetStorageBuffers(ReadOnlySpan<BufferAssignment> buffers)
|
||||
|
|
|
@ -11,6 +11,7 @@ namespace Ryujinx.Graphics.Metal
|
|||
public PrimitiveTopology Topology = PrimitiveTopology.Triangles;
|
||||
public MTLCullMode CullMode = MTLCullMode.None;
|
||||
public MTLWinding Winding = MTLWinding.Clockwise;
|
||||
public MTLDepthStencilState DepthStencilState = null;
|
||||
|
||||
public RenderEncoderState(MTLRenderPipelineState renderPipelineState)
|
||||
{
|
||||
|
@ -22,6 +23,7 @@ namespace Ryujinx.Graphics.Metal
|
|||
renderCommandEncoder.SetRenderPipelineState(RenderPipelineState);
|
||||
renderCommandEncoder.SetCullMode(CullMode);
|
||||
renderCommandEncoder.SetFrontFacingWinding(Winding);
|
||||
renderCommandEncoder.SetDepthStencilState(DepthStencilState);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue