From d4bd5fde71d7899181cba0d8af10b1abdf7fec15 Mon Sep 17 00:00:00 2001
From: Ryan Houdek <Sonicadvance1@gmail.com>
Date: Sun, 6 Oct 2013 20:07:16 -0500
Subject: [PATCH] Only emit the texgens if they are used, not every single time
 do all of them.

---
 Source/Core/VideoCommon/Src/PixelShaderGen.cpp  | 6 ++++--
 Source/Core/VideoCommon/Src/VertexShaderGen.cpp | 7 ++-----
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/Source/Core/VideoCommon/Src/PixelShaderGen.cpp b/Source/Core/VideoCommon/Src/PixelShaderGen.cpp
index afbd5861e9..e4d2bc569f 100644
--- a/Source/Core/VideoCommon/Src/PixelShaderGen.cpp
+++ b/Source/Core/VideoCommon/Src/PixelShaderGen.cpp
@@ -319,7 +319,8 @@ static inline void GeneratePixelShader(T& out, DSTALPHA_MODE dstAlphaMode, API_T
 		if (xfregs.numTexGen.numTexGens < 7)
 		{
 			for (int i = 0; i < 8; ++i)
-				out.Write("VARYIN float3 uv%d_2;\n", i);
+				if(i < xfregs.numTexGen.numTexGens)
+					out.Write("VARYIN float3 uv%d_2;\n", i);
 			out.Write("VARYIN float4 clipPos_2;\n");
 			if (g_ActiveConfig.bEnablePixelLighting && g_ActiveConfig.backend_info.bSupportsPixelLighting)
 			{
@@ -437,7 +438,8 @@ static inline void GeneratePixelShader(T& out, DSTALPHA_MODE dstAlphaMode, API_T
 		{
 			if(numTexgen)
 				for (int i = 0; i < 8; ++i)
-					out.Write("float3 uv%d = uv%d_2;\n", i, i);
+					if(i < xfregs.numTexGen.numTexGens)
+						out.Write("float3 uv%d = uv%d_2;\n", i, i);
 			out.Write("float4 clipPos = clipPos_2;\n");
 			if (g_ActiveConfig.bEnablePixelLighting && g_ActiveConfig.backend_info.bSupportsPixelLighting)
 			{
diff --git a/Source/Core/VideoCommon/Src/VertexShaderGen.cpp b/Source/Core/VideoCommon/Src/VertexShaderGen.cpp
index 336979a09b..f8adbec049 100644
--- a/Source/Core/VideoCommon/Src/VertexShaderGen.cpp
+++ b/Source/Core/VideoCommon/Src/VertexShaderGen.cpp
@@ -143,7 +143,8 @@ static inline void GenerateVertexShader(T& out, u32 components, API_TYPE api_typ
 		if (xfregs.numTexGen.numTexGens < 7)
 		{
 			for (int i = 0; i < 8; ++i)
-				out.Write("VARYOUT  float3 uv%d_2;\n", i);
+				if (i < xfregs.numTexGen.numTexGens)
+					out.Write("VARYOUT  float3 uv%d_2;\n", i);
 			out.Write("VARYOUT   float4 clipPos_2;\n");
 			if (g_ActiveConfig.bEnablePixelLighting && g_ActiveConfig.backend_info.bSupportsPixelLighting)
 				out.Write("VARYOUT   float4 Normal_2;\n");
@@ -483,12 +484,8 @@ static inline void GenerateVertexShader(T& out, u32 components, API_TYPE api_typ
 		if (xfregs.numTexGen.numTexGens < 7)
 		{
 			for (unsigned int i = 0; i < 8; ++i)
-			{
 				if(i < xfregs.numTexGen.numTexGens)
 					out.Write(" uv%d_2.xyz =  o.tex%d;\n", i, i);
-				else
-					out.Write(" uv%d_2.xyz =  float3(0.0, 0.0, 0.0);\n", i);
-			}
 			out.Write("  clipPos_2 = o.clipPos;\n");
 			if(g_ActiveConfig.bEnablePixelLighting && g_ActiveConfig.backend_info.bSupportsPixelLighting)
 				out.Write("  Normal_2 = o.Normal;\n");