diff --git a/src/video_core/vertex_shader.cpp b/src/video_core/vertex_shader.cpp
index fbec1bcc80a51c16dc46316d4a02c00f50218df4..742e5a9f21a24d3a7152b16f7db4da721a78258d 100644
--- a/src/video_core/vertex_shader.cpp
+++ b/src/video_core/vertex_shader.cpp
@@ -197,6 +197,15 @@ static void ProcessShaderCode(VertexShaderState& state) {
                 break;
             }
 
+            case Instruction::OpCode::MAX:
+                for (int i = 0; i < 4; ++i) {
+                    if (!swizzle.DestComponentEnabled(i))
+                        continue;
+
+                    dest[i] = std::max(src1[i], src2[i]);
+                }
+                break;
+
             case Instruction::OpCode::DP3:
             case Instruction::OpCode::DP4:
             {