diff options
author | gdkchan <gab.dark.100@gmail.com> | 2020-03-29 23:11:24 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-30 13:11:24 +1100 |
commit | 9948a7be53a9846b9de493653aa76819ff1b9bd3 (patch) | |
tree | e5a60c309ac22d3077e6d80c67e03bb4920c0b42 /Ryujinx.Graphics.OpenGL/VertexArray.cs | |
parent | 8f21db810d0e8dc5577780dee3001117084768d4 (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.cs | 15 |
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); } |