diff --git a/Ryujinx.Graphics.Shader/Translation/Translator.cs b/Ryujinx.Graphics.Shader/Translation/Translator.cs
index e594c818a0..5119dfb645 100644
--- a/Ryujinx.Graphics.Shader/Translation/Translator.cs
+++ b/Ryujinx.Graphics.Shader/Translation/Translator.cs
@@ -218,10 +218,17 @@ namespace Ryujinx.Graphics.Shader.Translation
             while (usedAttributes != UInt128.Zero)
             {
                 int index = usedAttributes.TrailingZeroCount();
-
-                InitializeOutputComponent(context, AttributeConsts.UserAttributeBase + index * 4, perPatch: false);
+                int vecIndex = index / 4;
 
                 usedAttributes &= ~UInt128.Pow2(index);
+
+                // We don't need to initialize passthrough attributes.
+                if ((context.Config.PassthroughAttributes & (1 << vecIndex)) != 0)
+                {
+                    continue;
+                }
+
+                InitializeOutputComponent(context, AttributeConsts.UserAttributeBase + index * 4, perPatch: false);
             }
 
             UInt128 usedAttributesPerPatch = context.Config.NextInputAttributesPerPatchComponents;