Просмотр исходного кода

Fix gl_in being used with built-in variables that are not per-vertex (#1624)

gdkchan 5 лет назад
Родитель
Сommit
5264d55b39

+ 1 - 1
Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs

@@ -206,7 +206,7 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl
 
                     string name = builtInAttr.Name;
 
-                    if (config.Stage == ShaderStage.Geometry && !isOutAttr)
+                    if (config.Stage == ShaderStage.Geometry && (value & AttributeConsts.SpecialMask) == 0 && !isOutAttr)
                     {
                         name = $"gl_in[{indexExpr}].{name}";
                     }

+ 1 - 0
Ryujinx.Graphics.Shader/Translation/AttributeConsts.cs

@@ -31,6 +31,7 @@ namespace Ryujinx.Graphics.Shader.Translation
 
         // Note: Those attributes are used internally by the translator
         // only, they don't exist on Maxwell.
+        public const int SpecialMask             = 0xff << 24;
         public const int FragmentOutputDepth     = 0x1000000;
         public const int FragmentOutputColorBase = 0x1000010;
         public const int FragmentOutputColorEnd  = FragmentOutputColorBase + 8 * 16;