summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/GeometryShaderGen.cpp
diff options
context:
space:
mode:
authorJules Blok <jules.blok@gmail.com>2014-12-16 16:53:49 +0100
committerJules Blok <jules.blok@gmail.com>2014-12-18 00:36:47 +0100
commitf2e52b46c3293228759d2db373a6e11c5c4513cf (patch)
tree3b00f1e1d3ed07b09d0365578063d3b817bc9549 /Source/Core/VideoCommon/GeometryShaderGen.cpp
parent2850c9a206fe69e569d3458f350045ca31a2ba97 (diff)
GeometryShaderGen: Cosmetics.
Diffstat (limited to 'Source/Core/VideoCommon/GeometryShaderGen.cpp')
-rw-r--r--Source/Core/VideoCommon/GeometryShaderGen.cpp60
1 files changed, 31 insertions, 29 deletions
diff --git a/Source/Core/VideoCommon/GeometryShaderGen.cpp b/Source/Core/VideoCommon/GeometryShaderGen.cpp
index e10b919dd4..bf40056a8d 100644
--- a/Source/Core/VideoCommon/GeometryShaderGen.cpp
+++ b/Source/Core/VideoCommon/GeometryShaderGen.cpp
@@ -27,7 +27,7 @@ static const char* primitives_d3d[] =
"triangle"
};
-template<class T> static inline void EmitVertex(T& out, const char *vertex, API_TYPE ApiType);
+template<class T> static inline void EmitVertex(T& out, const char* vertex, API_TYPE ApiType);
template<class T>
static inline void GenerateGeometryShader(T& out, u32 primitive_type, API_TYPE ApiType)
@@ -124,20 +124,20 @@ static inline void GenerateGeometryShader(T& out, u32 primitive_type, API_TYPE A
// GameCube/Wii's line drawing algorithm is a little quirky. It does not
// use the correct line caps. Instead, the line caps are vertical or
// horizontal depending the slope of the line.
-
- out.Write("\tfloat2 offset;\n");
- out.Write("\tfloat2 to = abs(o[1].pos.xy - o[0].pos.xy);\n");
- // FIXME: What does real hardware do when line is at a 45-degree angle?
- // FIXME: Lines aren't drawn at the correct width. See Twilight Princess map.
- out.Write("\tif (" I_LINEPTPARAMS".y * to.y > " I_LINEPTPARAMS".x * to.x) {\n");
- // Line is more tall. Extend geometry left and right.
- // Lerp LineWidth/2 from [0..VpWidth] to [-1..1]
- out.Write("\t\toffset = float2(" I_LINEPTPARAMS".z / " I_LINEPTPARAMS".x, 0);\n");
- out.Write("\t} else {\n");
- // Line is more wide. Extend geometry up and down.
- // Lerp LineWidth/2 from [0..VpHeight] to [1..-1]
- out.Write("\t\toffset = float2(0, -" I_LINEPTPARAMS".z / " I_LINEPTPARAMS".y);\n");
- out.Write("\t}\n");
+ out.Write(
+ "\tfloat2 offset;\n"
+ "\tfloat2 to = abs(o[1].pos.xy - o[0].pos.xy);\n"
+ // FIXME: What does real hardware do when line is at a 45-degree angle?
+ // FIXME: Lines aren't drawn at the correct width. See Twilight Princess map.
+ "\tif (" I_LINEPTPARAMS".y * to.y > " I_LINEPTPARAMS".x * to.x) {\n"
+ // Line is more tall. Extend geometry left and right.
+ // Lerp LineWidth/2 from [0..VpWidth] to [-1..1]
+ "\t\toffset = float2(" I_LINEPTPARAMS".z / " I_LINEPTPARAMS".x, 0);\n"
+ "\t} else {\n"
+ // Line is more wide. Extend geometry up and down.
+ // Lerp LineWidth/2 from [0..VpHeight] to [1..-1]
+ "\t\toffset = float2(0, -" I_LINEPTPARAMS".z / " I_LINEPTPARAMS".y);\n"
+ "\t}\n");
}
else if (primitive_type == PRIMITIVE_POINTS)
{
@@ -168,7 +168,9 @@ static inline void GenerateGeometryShader(T& out, u32 primitive_type, API_TYPE A
out.Write("\tlayer = eye;\n");
}
else
+ {
out.Write("\tgs.layer = eye;\n");
+ }
// For stereoscopy add a small horizontal offset in Normalized Device Coordinates proportional
// to the depth of the vertex. We retrieve the depth value from the w-component of the projected
@@ -183,11 +185,11 @@ static inline void GenerateGeometryShader(T& out, u32 primitive_type, API_TYPE A
if (primitive_type == PRIMITIVE_LINES)
{
- out.Write("\tVS_OUTPUT l = f;\n");
- out.Write("\tVS_OUTPUT r = f;\n");
+ out.Write("\tVS_OUTPUT l = f;\n"
+ "\tVS_OUTPUT r = f;\n");
- out.Write("\tl.pos.xy -= offset * l.pos.w;\n");
- out.Write("\tr.pos.xy += offset * r.pos.w;\n");
+ out.Write("\tl.pos.xy -= offset * l.pos.w;\n"
+ "\tr.pos.xy += offset * r.pos.w;\n");
out.Write("\tif (" I_TEXOFFSET"[2] != 0) {\n");
out.Write("\tfloat texOffset = 1.0 / float(" I_TEXOFFSET"[2]);\n");
@@ -204,15 +206,15 @@ static inline void GenerateGeometryShader(T& out, u32 primitive_type, API_TYPE A
}
else if (primitive_type == PRIMITIVE_POINTS)
{
- out.Write("\tVS_OUTPUT ll = f;\n");
- out.Write("\tVS_OUTPUT lr = f;\n");
- out.Write("\tVS_OUTPUT ul = f;\n");
- out.Write("\tVS_OUTPUT ur = f;\n");
+ out.Write("\tVS_OUTPUT ll = f;\n"
+ "\tVS_OUTPUT lr = f;\n"
+ "\tVS_OUTPUT ul = f;\n"
+ "\tVS_OUTPUT ur = f;\n");
- out.Write("\tll.pos.xy += float2(-1,-1) * offset;\n");
- out.Write("\tlr.pos.xy += float2(1,-1) * offset;\n");
- out.Write("\tul.pos.xy += float2(-1,1) * offset;\n");
- out.Write("\tur.pos.xy += offset;\n");
+ out.Write("\tll.pos.xy += float2(-1,-1) * offset;\n"
+ "\tlr.pos.xy += float2(1,-1) * offset;\n"
+ "\tul.pos.xy += float2(-1,1) * offset;\n"
+ "\tur.pos.xy += offset;\n");
out.Write("\tif (" I_TEXOFFSET"[3] != 0) {\n");
out.Write("\tfloat2 texOffset = float2(1.0 / float(" I_TEXOFFSET"[3]), 1.0 / float(" I_TEXOFFSET"[3]));\n");
@@ -245,7 +247,7 @@ static inline void GenerateGeometryShader(T& out, u32 primitive_type, API_TYPE A
out.Write("\toutput.RestartStrip();\n");
if (g_ActiveConfig.iStereoMode > 0 && !g_ActiveConfig.backend_info.bSupportsGSInstancing)
- out.Write("\t}\n");
+ out.Write("\t}\n");
out.Write("}\n");
@@ -257,7 +259,7 @@ static inline void GenerateGeometryShader(T& out, u32 primitive_type, API_TYPE A
}
template<class T>
-static inline void EmitVertex(T& out, const char *vertex, API_TYPE ApiType)
+static inline void EmitVertex(T& out, const char* vertex, API_TYPE ApiType)
{
if (ApiType == API_OPENGL)
out.Write("\tgl_Position = %s.pos;\n", vertex);