mirror of
https://github.com/GreemDev/Ryujinx
synced 2024-12-11 10:39:58 +01:00
Implement SetDepthClamp
This commit is contained in:
parent
f98d9bae24
commit
20e1d1cd33
3 changed files with 21 additions and 1 deletions
|
@ -29,6 +29,7 @@ namespace Ryujinx.Graphics.Metal
|
|||
|
||||
public MTLDepthStencilState? DepthStencilState = null;
|
||||
|
||||
public MTLDepthClipMode DepthClipMode = MTLDepthClipMode.Clip;
|
||||
public MTLCompareFunction DepthCompareFunction = MTLCompareFunction.Always;
|
||||
public bool DepthWriteEnabled = false;
|
||||
|
||||
|
|
|
@ -153,6 +153,7 @@ namespace Ryujinx.Graphics.Metal
|
|||
_currentState.BlendColor.Alpha);
|
||||
|
||||
SetDepthStencilState(renderCommandEncoder, _currentState.DepthStencilState);
|
||||
SetDepthClamp(renderCommandEncoder, _currentState.DepthClipMode);
|
||||
SetScissors(renderCommandEncoder, _currentState.Scissors);
|
||||
SetViewports(renderCommandEncoder, _currentState.Viewports);
|
||||
SetBuffers(renderCommandEncoder, _currentState.VertexBuffers);
|
||||
|
@ -341,6 +342,19 @@ namespace Ryujinx.Graphics.Metal
|
|||
}
|
||||
}
|
||||
|
||||
// Inlineable
|
||||
public void UpdateDepthClamp(bool clamp)
|
||||
{
|
||||
_currentState.DepthClipMode = clamp ? MTLDepthClipMode.Clamp : MTLDepthClipMode.Clip;
|
||||
|
||||
// Inline Update
|
||||
|
||||
if (_pipeline.CurrentEncoderType == EncoderType.Render && _pipeline.CurrentEncoder != null)
|
||||
{
|
||||
var renderCommandEncoder = new MTLRenderCommandEncoder(_pipeline.CurrentEncoder.Value);
|
||||
}
|
||||
}
|
||||
|
||||
// Inlineable
|
||||
public void UpdateScissors(ReadOnlySpan<Rectangle<int>> regions)
|
||||
{
|
||||
|
@ -552,6 +566,11 @@ namespace Ryujinx.Graphics.Metal
|
|||
}
|
||||
}
|
||||
|
||||
private static void SetDepthClamp(MTLRenderCommandEncoder renderCommandEncoder, MTLDepthClipMode depthClipMode)
|
||||
{
|
||||
renderCommandEncoder.SetDepthClipMode(depthClipMode);
|
||||
}
|
||||
|
||||
private unsafe static void SetScissors(MTLRenderCommandEncoder renderCommandEncoder, MTLScissorRect[] scissors)
|
||||
{
|
||||
if (scissors.Length > 0)
|
||||
|
|
|
@ -321,7 +321,7 @@ namespace Ryujinx.Graphics.Metal
|
|||
|
||||
public void SetDepthClamp(bool clamp)
|
||||
{
|
||||
Logger.Warning?.Print(LogClass.Gpu, "Not Implemented!");
|
||||
_encoderStateManager.UpdateDepthClamp(clamp);
|
||||
}
|
||||
|
||||
public void SetDepthMode(DepthMode mode)
|
||||
|
|
Loading…
Reference in a new issue