aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.OpenGL/VertexArray.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2020-03-29 23:11:24 -0300
committerGitHub <noreply@github.com>2020-03-30 13:11:24 +1100
commit9948a7be53a9846b9de493653aa76819ff1b9bd3 (patch)
treee5a60c309ac22d3077e6d80c67e03bb4920c0b42 /Ryujinx.Graphics.OpenGL/VertexArray.cs
parent8f21db810d0e8dc5577780dee3001117084768d4 (diff)
Support constant attributes (with a value of zero) (#1066)
* Support constant attributes (with a value of zero) * Remove extra line
Diffstat (limited to 'Ryujinx.Graphics.OpenGL/VertexArray.cs')
-rw-r--r--Ryujinx.Graphics.OpenGL/VertexArray.cs15
1 files changed, 12 insertions, 3 deletions
diff --git a/Ryujinx.Graphics.OpenGL/VertexArray.cs b/Ryujinx.Graphics.OpenGL/VertexArray.cs
index 721a90f0..43d200a4 100644
--- a/Ryujinx.Graphics.OpenGL/VertexArray.cs
+++ b/Ryujinx.Graphics.OpenGL/VertexArray.cs
@@ -58,8 +58,17 @@ namespace Ryujinx.Graphics.OpenGL
{
FormatInfo fmtInfo = FormatTable.GetFormatInfo(attrib.Format);
- GL.EnableVertexAttribArray(attribIndex);
-
+ if (attrib.IsZero)
+ {
+ // Disabling the attribute causes the shader to read a constant value.
+ // The value is configurable, but by default is a vector of (0, 0, 0, 1).
+ GL.DisableVertexAttribArray(attribIndex);
+ }
+ else
+ {
+ GL.EnableVertexAttribArray(attribIndex);
+ }
+
int offset = attrib.Offset;
int size = fmtInfo.Components;
@@ -117,7 +126,7 @@ namespace Ryujinx.Graphics.OpenGL
continue;
}
- if (_needsAttribsUpdate)
+ if (_needsAttribsUpdate && !attrib.IsZero)
{
GL.EnableVertexAttribArray(attribIndex);
}