diff options
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 12 | 
1 files changed, 6 insertions, 6 deletions
| diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index 09b003c59..98a983d2d 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp @@ -2742,12 +2742,12 @@ private:                  }                  case 3: {                      if (is_array) { -                        UNIMPLEMENTED_MSG("3-coordinate arrays not fully implemented"); -                        const std::string x = regs.GetRegisterAsFloat(instr.gpr8); -                        const std::string y = regs.GetRegisterAsFloat(instr.gpr20); -                        coord = "vec2 coords = vec2(" + x + ", " + y + ");"; -                        texture_type = Tegra::Shader::TextureType::Texture2D; -                        is_array = false; +                        const std::string index = regs.GetRegisterAsInteger(instr.gpr8); +                        const std::string x = regs.GetRegisterAsFloat(instr.gpr8.Value() + 1); +                        const std::string y = regs.GetRegisterAsFloat(instr.gpr8.Value() + 2); +                        const std::string z = regs.GetRegisterAsFloat(instr.gpr20); +                        coord = +                            "vec4 coords = vec4(" + x + ", " + y + ", " + z + ", " + index + ");";                      } else {                          const std::string x = regs.GetRegisterAsFloat(instr.gpr8);                          const std::string y = regs.GetRegisterAsFloat(instr.gpr8.Value() + 1); | 
