diff options
| author | Lioncash <mathew1800@gmail.com> | 2020-11-09 02:23:32 -0500 |
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2020-11-09 02:31:49 -0500 |
| commit | a5b28f1f07b0f310f407462ebb86eafbf4d63f20 (patch) | |
| tree | 191784de45d42f3d608a2f2fabde4b0d5993deb0 /Source/Core/VideoCommon/LightingShaderGen.cpp | |
| parent | a9ef7e0e436795d1ef842aae7433c6173f623f90 (diff) | |
ShaderGenCommon: Rename WriteFmt() to Write()
Now that we've converted all of the shader generators over to using fmt,
we can drop the old Write() member function and perform a rename
operation on the WriteFmt() to turn it into the new Write() function.
All changes within this are the removal of a <cstdarg> header, since the
previous printf-based Write() required it, and renaming. No functional
changes are made at all.
Diffstat (limited to 'Source/Core/VideoCommon/LightingShaderGen.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/LightingShaderGen.cpp | 101 |
1 files changed, 50 insertions, 51 deletions
diff --git a/Source/Core/VideoCommon/LightingShaderGen.cpp b/Source/Core/VideoCommon/LightingShaderGen.cpp index 0cde653d25..e4b8f16716 100644 --- a/Source/Core/VideoCommon/LightingShaderGen.cpp +++ b/Source/Core/VideoCommon/LightingShaderGen.cpp @@ -24,54 +24,53 @@ static void GenerateLightShader(ShaderCode& object, const LightingUidData& uid_d { case LIGHTATTN_NONE: case LIGHTATTN_DIR: - object.WriteFmt("ldir = normalize(" LIGHT_POS ".xyz - pos.xyz);\n", LIGHT_POS_PARAMS(index)); - object.WriteFmt("attn = 1.0;\n"); - object.WriteFmt("if (length(ldir) == 0.0)\n\t ldir = _norm0;\n"); + object.Write("ldir = normalize(" LIGHT_POS ".xyz - pos.xyz);\n", LIGHT_POS_PARAMS(index)); + object.Write("attn = 1.0;\n"); + object.Write("if (length(ldir) == 0.0)\n\t ldir = _norm0;\n"); break; case LIGHTATTN_SPEC: - object.WriteFmt("ldir = normalize(" LIGHT_POS ".xyz - pos.xyz);\n", LIGHT_POS_PARAMS(index)); - object.WriteFmt("attn = (dot(_norm0, ldir) >= 0.0) ? max(0.0, dot(_norm0, " LIGHT_DIR - ".xyz)) : 0.0;\n", - LIGHT_DIR_PARAMS(index)); - object.WriteFmt("cosAttn = " LIGHT_COSATT ".xyz;\n", LIGHT_COSATT_PARAMS(index)); - object.WriteFmt("distAttn = {}(" LIGHT_DISTATT ".xyz);\n", - (diffusefunc == LIGHTDIF_NONE) ? "" : "normalize", LIGHT_DISTATT_PARAMS(index)); - object.WriteFmt("attn = max(0.0f, dot(cosAttn, float3(1.0, attn, attn*attn))) / dot(distAttn, " - "float3(1.0, attn, attn*attn));\n"); + object.Write("ldir = normalize(" LIGHT_POS ".xyz - pos.xyz);\n", LIGHT_POS_PARAMS(index)); + object.Write("attn = (dot(_norm0, ldir) >= 0.0) ? max(0.0, dot(_norm0, " LIGHT_DIR + ".xyz)) : 0.0;\n", + LIGHT_DIR_PARAMS(index)); + object.Write("cosAttn = " LIGHT_COSATT ".xyz;\n", LIGHT_COSATT_PARAMS(index)); + object.Write("distAttn = {}(" LIGHT_DISTATT ".xyz);\n", + (diffusefunc == LIGHTDIF_NONE) ? "" : "normalize", LIGHT_DISTATT_PARAMS(index)); + object.Write("attn = max(0.0f, dot(cosAttn, float3(1.0, attn, attn*attn))) / dot(distAttn, " + "float3(1.0, attn, attn*attn));\n"); break; case LIGHTATTN_SPOT: - object.WriteFmt("ldir = " LIGHT_POS ".xyz - pos.xyz;\n", LIGHT_POS_PARAMS(index)); - object.WriteFmt("dist2 = dot(ldir, ldir);\n" - "dist = sqrt(dist2);\n" - "ldir = ldir / dist;\n" - "attn = max(0.0, dot(ldir, " LIGHT_DIR ".xyz));\n", - LIGHT_DIR_PARAMS(index)); + object.Write("ldir = " LIGHT_POS ".xyz - pos.xyz;\n", LIGHT_POS_PARAMS(index)); + object.Write("dist2 = dot(ldir, ldir);\n" + "dist = sqrt(dist2);\n" + "ldir = ldir / dist;\n" + "attn = max(0.0, dot(ldir, " LIGHT_DIR ".xyz));\n", + LIGHT_DIR_PARAMS(index)); // attn*attn may overflow - object.WriteFmt("attn = max(0.0, " LIGHT_COSATT ".x + " LIGHT_COSATT ".y*attn + " LIGHT_COSATT - ".z*attn*attn) / dot(" LIGHT_DISTATT ".xyz, float3(1.0,dist,dist2));\n", - LIGHT_COSATT_PARAMS(index), LIGHT_COSATT_PARAMS(index), - LIGHT_COSATT_PARAMS(index), LIGHT_DISTATT_PARAMS(index)); + object.Write("attn = max(0.0, " LIGHT_COSATT ".x + " LIGHT_COSATT ".y*attn + " LIGHT_COSATT + ".z*attn*attn) / dot(" LIGHT_DISTATT ".xyz, float3(1.0,dist,dist2));\n", + LIGHT_COSATT_PARAMS(index), LIGHT_COSATT_PARAMS(index), LIGHT_COSATT_PARAMS(index), + LIGHT_DISTATT_PARAMS(index)); break; } switch (diffusefunc) { case LIGHTDIF_NONE: - object.WriteFmt("lacc.{} += int{}(round(attn * float{}(" LIGHT_COL ")));\n", swizzle, - swizzle_components, swizzle_components, LIGHT_COL_PARAMS(index, swizzle)); + object.Write("lacc.{} += int{}(round(attn * float{}(" LIGHT_COL ")));\n", swizzle, + swizzle_components, swizzle_components, LIGHT_COL_PARAMS(index, swizzle)); break; case LIGHTDIF_SIGN: case LIGHTDIF_CLAMP: - object.WriteFmt("lacc.{} += int{}(round(attn * {}dot(ldir, _norm0)) * float{}(" LIGHT_COL - ")));\n", - swizzle, swizzle_components, diffusefunc != LIGHTDIF_SIGN ? "max(0.0," : "(", - swizzle_components, LIGHT_COL_PARAMS(index, swizzle)); + object.Write("lacc.{} += int{}(round(attn * {}dot(ldir, _norm0)) * float{}(" LIGHT_COL ")));\n", + swizzle, swizzle_components, diffusefunc != LIGHTDIF_SIGN ? "max(0.0," : "(", + swizzle_components, LIGHT_COL_PARAMS(index, swizzle)); break; default: ASSERT(0); } - object.WriteFmt("\n"); + object.Write("\n"); } // vertex shader @@ -84,21 +83,21 @@ void GenerateLightingShaderCode(ShaderCode& object, const LightingUidData& uid_d { for (u32 j = 0; j < NUM_XF_COLOR_CHANNELS; j++) { - object.WriteFmt("{{\n"); + object.Write("{{\n"); const bool colormatsource = !!(uid_data.matsource & (1 << j)); if (colormatsource) // from vertex { if ((components & (VB_HAS_COL0 << j)) != 0) - object.WriteFmt("int4 mat = int4(round({}{} * 255.0));\n", in_color_name, j); + object.Write("int4 mat = int4(round({}{} * 255.0));\n", in_color_name, j); else if ((components & VB_HAS_COL0) != 0) - object.WriteFmt("int4 mat = int4(round({}0 * 255.0));\n", in_color_name); + object.Write("int4 mat = int4(round({}0 * 255.0));\n", in_color_name); else - object.WriteFmt("int4 mat = int4(255, 255, 255, 255);\n"); + object.Write("int4 mat = int4(255, 255, 255, 255);\n"); } else // from color { - object.WriteFmt("int4 mat = {}[{}];\n", I_MATERIALS, j + 2); + object.Write("int4 mat = {}[{}];\n", I_MATERIALS, j + 2); } if ((uid_data.enablelighting & (1 << j)) != 0) @@ -107,28 +106,28 @@ void GenerateLightingShaderCode(ShaderCode& object, const LightingUidData& uid_d { if ((components & (VB_HAS_COL0 << j)) != 0) { - object.WriteFmt("lacc = int4(round({}{} * 255.0));\n", in_color_name, j); + object.Write("lacc = int4(round({}{} * 255.0));\n", in_color_name, j); } else if ((components & VB_HAS_COL0) != 0) { - object.WriteFmt("lacc = int4(round({}0 * 255.0));\n", in_color_name); + object.Write("lacc = int4(round({}0 * 255.0));\n", in_color_name); } else { // TODO: this isn't verified. Here we want to read the ambient from the vertex, // but the vertex itself has no color. So we don't know which value to read. // Returning 1.0 is the same as disabled lightning, so this could be fine - object.WriteFmt("lacc = int4(255, 255, 255, 255);\n"); + object.Write("lacc = int4(255, 255, 255, 255);\n"); } } else // from color { - object.WriteFmt("lacc = {}[{}];\n", I_MATERIALS, j); + object.Write("lacc = {}[{}];\n", I_MATERIALS, j); } } else { - object.WriteFmt("lacc = int4(255, 255, 255, 255);\n"); + object.Write("lacc = int4(255, 255, 255, 255);\n"); } // check if alpha is different @@ -138,15 +137,15 @@ void GenerateLightingShaderCode(ShaderCode& object, const LightingUidData& uid_d if (alphamatsource) // from vertex { if ((components & (VB_HAS_COL0 << j)) != 0) - object.WriteFmt("mat.w = int(round({}{}.w * 255.0));\n", in_color_name, j); + object.Write("mat.w = int(round({}{}.w * 255.0));\n", in_color_name, j); else if ((components & VB_HAS_COL0) != 0) - object.WriteFmt("mat.w = int(round({}0.w * 255.0));\n", in_color_name); + object.Write("mat.w = int(round({}0.w * 255.0));\n", in_color_name); else - object.WriteFmt("mat.w = 255;\n"); + object.Write("mat.w = 255;\n"); } else // from color { - object.WriteFmt("mat.w = {}[{}].w;\n", I_MATERIALS, j + 2); + object.Write("mat.w = {}[{}].w;\n", I_MATERIALS, j + 2); } } @@ -156,26 +155,26 @@ void GenerateLightingShaderCode(ShaderCode& object, const LightingUidData& uid_d { if ((components & (VB_HAS_COL0 << j)) != 0) { - object.WriteFmt("lacc.w = int(round({}{}.w * 255.0));\n", in_color_name, j); + object.Write("lacc.w = int(round({}{}.w * 255.0));\n", in_color_name, j); } else if ((components & VB_HAS_COL0) != 0) { - object.WriteFmt("lacc.w = int(round({}0.w * 255.0));\n", in_color_name); + object.Write("lacc.w = int(round({}0.w * 255.0));\n", in_color_name); } else { // TODO: The same for alpha: We want to read from vertex, but the vertex has no color - object.WriteFmt("lacc.w = 255;\n"); + object.Write("lacc.w = 255;\n"); } } else // from color { - object.WriteFmt("lacc.w = {}[{}].w;\n", I_MATERIALS, j); + object.Write("lacc.w = {}[{}].w;\n", I_MATERIALS, j); } } else { - object.WriteFmt("lacc.w = 255;\n"); + object.Write("lacc.w = 255;\n"); } if ((uid_data.enablelighting & (1 << j)) != 0) // Color lights @@ -194,9 +193,9 @@ void GenerateLightingShaderCode(ShaderCode& object, const LightingUidData& uid_d GenerateLightShader(object, uid_data, i, j + 2, true); } } - object.WriteFmt("lacc = clamp(lacc, 0, 255);\n"); - object.WriteFmt("{}{} = float4((mat * (lacc + (lacc >> 7))) >> 8) / 255.0;\n", dest, j); - object.WriteFmt("}}\n"); + object.Write("lacc = clamp(lacc, 0, 255);\n"); + object.Write("{}{} = float4((mat * (lacc + (lacc >> 7))) >> 8) / 255.0;\n", dest, j); + object.Write("}}\n"); } } |
