Do not add more code after alpha test discard on fragment shader (#5529)
* Do not add more code after alpha test discard on fragment shader * Shader cache version bump
This commit is contained in:
parent
3ab0a71c7b
commit
42750a74f8
3 changed files with 23 additions and 9 deletions
|
@ -304,11 +304,11 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|||
PrepareForVertexReturn();
|
||||
}
|
||||
|
||||
public void PrepareForReturn()
|
||||
public bool PrepareForReturn()
|
||||
{
|
||||
if (IsNonMain)
|
||||
{
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (Config.LastInVertexPipeline &&
|
||||
|
@ -383,13 +383,13 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|||
|
||||
AlphaTestOp alphaTestOp = Config.GpuAccessor.QueryAlphaTestCompare();
|
||||
|
||||
if (alphaTestOp != AlphaTestOp.Always && (Config.OmapTargets & 8) != 0)
|
||||
if (alphaTestOp != AlphaTestOp.Always)
|
||||
{
|
||||
if (alphaTestOp == AlphaTestOp.Never)
|
||||
{
|
||||
this.Discard();
|
||||
}
|
||||
else
|
||||
else if ((Config.OmapTargets & 8) != 0)
|
||||
{
|
||||
Instruction comparator = alphaTestOp switch
|
||||
{
|
||||
|
@ -415,6 +415,12 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|||
}
|
||||
}
|
||||
|
||||
// We don't need to output anything if alpha test always fails.
|
||||
if (alphaTestOp == AlphaTestOp.Never)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
int regIndexBase = 0;
|
||||
|
||||
for (int rtIndex = 0; rtIndex < 8; rtIndex++)
|
||||
|
@ -462,6 +468,8 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void GenerateAlphaToCoverageDitherDiscard()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue