forked from Mirror/Ryujinx
Implement gl_ClipDistance on the shader generator (#680)
* Implement gl_ClipDistance on the shader generator, do not return the undef name for unknown built-in attributes * Handle unknown attribute loads aswell
This commit is contained in:
parent
156a32b4d0
commit
26be1cb4e2
2 changed files with 46 additions and 28 deletions
|
@ -34,6 +34,14 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl
|
||||||
{ AttributeConsts.PositionY, new BuiltInAttribute("gl_Position.y", VariableType.F32) },
|
{ AttributeConsts.PositionY, new BuiltInAttribute("gl_Position.y", VariableType.F32) },
|
||||||
{ AttributeConsts.PositionZ, new BuiltInAttribute("gl_Position.z", VariableType.F32) },
|
{ AttributeConsts.PositionZ, new BuiltInAttribute("gl_Position.z", VariableType.F32) },
|
||||||
{ AttributeConsts.PositionW, new BuiltInAttribute("gl_Position.w", VariableType.F32) },
|
{ AttributeConsts.PositionW, new BuiltInAttribute("gl_Position.w", VariableType.F32) },
|
||||||
|
{ AttributeConsts.ClipDistance0, new BuiltInAttribute("gl_ClipDistance[0]", VariableType.F32) },
|
||||||
|
{ AttributeConsts.ClipDistance1, new BuiltInAttribute("gl_ClipDistance[1]", VariableType.F32) },
|
||||||
|
{ AttributeConsts.ClipDistance2, new BuiltInAttribute("gl_ClipDistance[2]", VariableType.F32) },
|
||||||
|
{ AttributeConsts.ClipDistance3, new BuiltInAttribute("gl_ClipDistance[3]", VariableType.F32) },
|
||||||
|
{ AttributeConsts.ClipDistance4, new BuiltInAttribute("gl_ClipDistance[4]", VariableType.F32) },
|
||||||
|
{ AttributeConsts.ClipDistance5, new BuiltInAttribute("gl_ClipDistance[5]", VariableType.F32) },
|
||||||
|
{ AttributeConsts.ClipDistance6, new BuiltInAttribute("gl_ClipDistance[6]", VariableType.F32) },
|
||||||
|
{ AttributeConsts.ClipDistance7, new BuiltInAttribute("gl_ClipDistance[7]", VariableType.F32) },
|
||||||
{ AttributeConsts.PointCoordX, new BuiltInAttribute("gl_PointCoord.x", VariableType.F32) },
|
{ AttributeConsts.PointCoordX, new BuiltInAttribute("gl_PointCoord.x", VariableType.F32) },
|
||||||
{ AttributeConsts.PointCoordY, new BuiltInAttribute("gl_PointCoord.y", VariableType.F32) },
|
{ AttributeConsts.PointCoordY, new BuiltInAttribute("gl_PointCoord.y", VariableType.F32) },
|
||||||
{ AttributeConsts.TessCoordX, new BuiltInAttribute("gl_TessCoord.x", VariableType.F32) },
|
{ AttributeConsts.TessCoordX, new BuiltInAttribute("gl_TessCoord.x", VariableType.F32) },
|
||||||
|
@ -172,7 +180,9 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return DefaultNames.UndefinedName;
|
//TODO: Warn about unknown built-in attribute.
|
||||||
|
|
||||||
|
return isOutAttr ? "// bad_attr0x" + value.ToString("X") : "0.0";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetUbName(GalShaderType shaderType, int slot)
|
public static string GetUbName(GalShaderType shaderType, int slot)
|
||||||
|
|
|
@ -8,6 +8,14 @@ namespace Ryujinx.Graphics.Shader.IntermediateRepresentation
|
||||||
public const int PositionY = 0x074;
|
public const int PositionY = 0x074;
|
||||||
public const int PositionZ = 0x078;
|
public const int PositionZ = 0x078;
|
||||||
public const int PositionW = 0x07c;
|
public const int PositionW = 0x07c;
|
||||||
|
public const int ClipDistance0 = 0x2c0;
|
||||||
|
public const int ClipDistance1 = 0x2c4;
|
||||||
|
public const int ClipDistance2 = 0x2c8;
|
||||||
|
public const int ClipDistance3 = 0x2cc;
|
||||||
|
public const int ClipDistance4 = 0x2d0;
|
||||||
|
public const int ClipDistance5 = 0x2d4;
|
||||||
|
public const int ClipDistance6 = 0x2d8;
|
||||||
|
public const int ClipDistance7 = 0x2dc;
|
||||||
public const int PointCoordX = 0x2e0;
|
public const int PointCoordX = 0x2e0;
|
||||||
public const int PointCoordY = 0x2e4;
|
public const int PointCoordY = 0x2e4;
|
||||||
public const int TessCoordX = 0x2f0;
|
public const int TessCoordX = 0x2f0;
|
||||||
|
|
Loading…
Reference in a new issue