From f8c90f04849d1acadc1774b79769b8dadd622a8e Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 4 Dec 2019 23:29:11 -0500 Subject: [PATCH] VideoCommon/FramebufferShaderGen: Collapse stream insertions No behavioral change. This is intended to make the transition to fmt less noisy in subsequent changes by combining insertions of multiple string literals into one where applicable. --- .../Core/VideoCommon/FramebufferShaderGen.cpp | 285 +++++++++--------- 1 file changed, 146 insertions(+), 139 deletions(-) diff --git a/Source/Core/VideoCommon/FramebufferShaderGen.cpp b/Source/Core/VideoCommon/FramebufferShaderGen.cpp index ca00f2c332..b3e641a14e 100644 --- a/Source/Core/VideoCommon/FramebufferShaderGen.cpp +++ b/Source/Core/VideoCommon/FramebufferShaderGen.cpp @@ -56,12 +56,12 @@ static void EmitSampleTexture(std::stringstream& ss, u32 n, const char* coords) switch (GetAPIType()) { case APIType::D3D: - ss << "tex" << n << ".Sample(samp" << n << ", " << coords << ")"; + ss << "tex" << n << ".Sample(samp" << n << ", " << coords << ')'; break; case APIType::OpenGL: case APIType::Vulkan: - ss << "texture(samp" << n << ", " << coords << ")"; + ss << "texture(samp" << n << ", " << coords << ')'; break; default: @@ -76,7 +76,7 @@ static void EmitTextureLoad(std::stringstream& ss, u32 n, const char* coords) switch (GetAPIType()) { case APIType::D3D: - ss << "tex" << n << ".Load(" << coords << ")"; + ss << "tex" << n << ".Load(" << coords << ')'; break; case APIType::OpenGL: @@ -118,11 +118,15 @@ static void EmitVertexMainDeclaration(std::stringstream& ss, u32 num_tex_inputs, case APIType::Vulkan: { for (u32 i = 0; i < num_tex_inputs; i++) + { ss << "ATTRIBUTE_LOCATION(" << (SHADER_TEXTURE0_ATTRIB + i) << ") in float3 rawtex" << i << ";\n"; + } for (u32 i = 0; i < num_color_inputs; i++) + { ss << "ATTRIBUTE_LOCATION(" << (SHADER_COLOR0_ATTRIB + i) << ") in float4 rawcolor" << i << ";\n"; + } if (position_input) ss << "ATTRIBUTE_LOCATION(" << SHADER_POSITION_ATTRIB << ") in float4 rawpos;\n"; @@ -143,7 +147,7 @@ static void EmitVertexMainDeclaration(std::stringstream& ss, u32 num_tex_inputs, ss << "VARYING_LOCATION(" << (num_tex_inputs + i) << ") out float4 v_col" << i << ";\n"; } ss << "#define opos gl_Position\n"; - ss << extra_inputs << "\n"; + ss << extra_inputs << '\n'; ss << "void main()\n"; } break; @@ -210,9 +214,9 @@ std::string GenerateScreenQuadVertexShader() EmitVertexMainDeclaration(ss, 0, 0, false, 1, 0, GetAPIType() == APIType::D3D ? "in uint id : SV_VertexID, " : "#define id gl_VertexID\n"); - ss << "{\n"; - ss << " v_tex0 = float3(float((id << 1) & 2), float(id & 2), 0.0f);\n"; - ss << " opos = float4(v_tex0.xy * float2(2.0f, -2.0f) + float2(-1.0f, 1.0f), 0.0f, 1.0f);\n"; + ss << "{\n" + " v_tex0 = float3(float((id << 1) & 2), float(id & 2), 0.0f);\n" + " opos = float4(v_tex0.xy * float2(2.0f, -2.0f) + float2(-1.0f, 1.0f), 0.0f, 1.0f);\n"; // NDC space is flipped in Vulkan. We also flip in GL so that (0,0) is in the lower-left. if (GetAPIType() == APIType::Vulkan || GetAPIType() == APIType::OpenGL) @@ -228,47 +232,49 @@ std::string GeneratePassthroughGeometryShader(u32 num_tex, u32 num_colors) std::stringstream ss; if (GetAPIType() == APIType::D3D) { - ss << "struct VS_OUTPUT\n"; - ss << "{\n"; + ss << "struct VS_OUTPUT\n" + "{\n"; for (u32 i = 0; i < num_tex; i++) ss << " float3 tex" << i << " : TEXCOORD" << i << ";\n"; for (u32 i = 0; i < num_colors; i++) ss << " float4 color" << i << " : COLOR" << i << ";\n"; - ss << " float4 position : SV_Position;\n"; - ss << "};\n"; - ss << "struct GS_OUTPUT\n"; - ss << "{"; + ss << " float4 position : SV_Position;\n" + "};\n"; + + ss << "struct GS_OUTPUT\n" + "{"; for (u32 i = 0; i < num_tex; i++) ss << " float3 tex" << i << " : TEXCOORD" << i << ";\n"; for (u32 i = 0; i < num_colors; i++) ss << " float4 color" << i << " : COLOR" << i << ";\n"; - ss << " float4 position : SV_Position;\n"; - ss << " uint slice : SV_RenderTargetArrayIndex;\n"; - ss << "};\n\n"; - ss << "[maxvertexcount(6)]\n"; - ss << "void main(triangle VS_OUTPUT vso[3], inout TriangleStream output)\n"; - ss << "{\n"; - ss << " for (uint slice = 0; slice < 2u; slice++)\n"; - ss << " {\n"; - ss << " for (int i = 0; i < 3; i++)\n"; - ss << " {\n"; - ss << " GS_OUTPUT gso;\n"; - ss << " gso.position = vso[i].position;\n"; + ss << " float4 position : SV_Position;\n" + " uint slice : SV_RenderTargetArrayIndex;\n" + "};\n\n"; + + ss << "[maxvertexcount(6)]\n" + "void main(triangle VS_OUTPUT vso[3], inout TriangleStream output)\n" + "{\n" + " for (uint slice = 0; slice < 2u; slice++)\n" + " {\n" + " for (int i = 0; i < 3; i++)\n" + " {\n" + " GS_OUTPUT gso;\n" + " gso.position = vso[i].position;\n"; for (u32 i = 0; i < num_tex; i++) ss << " gso.tex" << i << " = float3(vso[i].tex" << i << ".xy, float(slice));\n"; for (u32 i = 0; i < num_colors; i++) ss << " gso.color" << i << " = vso[i].color" << i << ";\n"; - ss << " gso.slice = slice;\n"; - ss << " output.Append(gso);\n"; - ss << " }\n"; - ss << " output.RestartStrip();\n"; - ss << " }\n"; - ss << "}\n"; + ss << " gso.slice = slice;\n" + " output.Append(gso);\n" + " }\n" + " output.RestartStrip();\n" + " }\n" + "}\n"; } else if (GetAPIType() == APIType::OpenGL || GetAPIType() == APIType::Vulkan) { - ss << "layout(triangles) in;\n"; - ss << "layout(triangle_strip, max_vertices = 6) out;\n"; + ss << "layout(triangles) in;\n" + "layout(triangle_strip, max_vertices = 6) out;\n"; if (num_tex > 0 || num_colors > 0) { ss << "VARYING_LOCATION(0) in VertexData {\n"; @@ -277,6 +283,7 @@ std::string GeneratePassthroughGeometryShader(u32 num_tex, u32 num_colors) for (u32 i = 0; i < num_colors; i++) ss << " float4 v_col" << i << ";\n"; ss << "} v_in[];\n"; + ss << "VARYING_LOCATION(0) out VertexData {\n"; for (u32 i = 0; i < num_tex; i++) ss << " float3 v_tex" << i << ";\n"; @@ -284,12 +291,12 @@ std::string GeneratePassthroughGeometryShader(u32 num_tex, u32 num_colors) ss << " float4 v_col" << i << ";\n"; ss << "} v_out;\n"; } - ss << "\n"; - ss << "void main()\n"; - ss << "{\n"; - ss << " for (int j = 0; j < 2; j++)\n"; - ss << " {\n"; - ss << " gl_Layer = j;\n"; + ss << "\n" + "void main()\n" + "{\n" + " for (int j = 0; j < 2; j++)\n" + " {\n" + " gl_Layer = j;\n"; // We have to explicitly unroll this loop otherwise the GL compiler gets cranky. for (u32 v = 0; v < 3; v++) @@ -302,9 +309,9 @@ std::string GeneratePassthroughGeometryShader(u32 num_tex, u32 num_colors) ss << " v_out.v_col" << i << " = v_in[" << v << "].v_col" << i << ";\n"; ss << " EmitVertex();\n\n"; } - ss << " EndPrimitive();\n"; - ss << " }\n"; - ss << "}\n"; + ss << " EndPrimitive();\n" + " }\n" + "}\n"; } return ss.str(); @@ -314,18 +321,18 @@ std::string GenerateTextureCopyVertexShader() { std::stringstream ss; EmitUniformBufferDeclaration(ss); - ss << "{"; - ss << " float2 src_offset;\n"; - ss << " float2 src_size;\n"; - ss << "};\n\n"; + ss << "{" + " float2 src_offset;\n" + " float2 src_size;\n" + "};\n\n"; EmitVertexMainDeclaration(ss, 0, 0, false, 1, 0, GetAPIType() == APIType::D3D ? "in uint id : SV_VertexID, " : "#define id gl_VertexID"); - ss << "{\n"; - ss << " v_tex0 = float3(float((id << 1) & 2), float(id & 2), 0.0f);\n"; - ss << " opos = float4(v_tex0.xy * float2(2.0f, -2.0f) + float2(-1.0f, 1.0f), 0.0f, 1.0f);\n"; - ss << " v_tex0 = float3(src_offset + (src_size * v_tex0.xy), 0.0f);\n"; + ss << "{\n" + " v_tex0 = float3(float((id << 1) & 2), float(id & 2), 0.0f);\n" + " opos = float4(v_tex0.xy * float2(2.0f, -2.0f) + float2(-1.0f, 1.0f), 0.0f, 1.0f);\n" + " v_tex0 = float3(src_offset + (src_size * v_tex0.xy), 0.0f);\n"; // NDC space is flipped in Vulkan. We also flip in GL so that (0,0) is in the lower-left. if (GetAPIType() == APIType::Vulkan || GetAPIType() == APIType::OpenGL) @@ -341,11 +348,11 @@ std::string GenerateTextureCopyPixelShader() std::stringstream ss; EmitSamplerDeclarations(ss, 0, 1, false); EmitPixelMainDeclaration(ss, 1, 0); - ss << "{\n"; - ss << " ocol0 = "; + ss << "{\n" + " ocol0 = "; EmitSampleTexture(ss, 0, "v_tex0"); - ss << ";\n"; - ss << "}\n"; + ss << ";\n" + "}\n"; return ss.str(); } @@ -353,9 +360,9 @@ std::string GenerateColorPixelShader() { std::stringstream ss; EmitPixelMainDeclaration(ss, 0, 1); - ss << "{\n"; - ss << " ocol0 = v_col0;\n"; - ss << "}\n"; + ss << "{\n" + " ocol0 = v_col0;\n" + "}\n"; return ss.str(); } @@ -365,8 +372,8 @@ std::string GenerateResolveDepthPixelShader(u32 samples) EmitSamplerDeclarations(ss, 0, 1, true); EmitPixelMainDeclaration(ss, 1, 0, "float", GetAPIType() == APIType::D3D ? "in float4 ipos : SV_Position, " : ""); - ss << "{\n"; - ss << " int layer = int(v_tex0.z);\n"; + ss << "{\n" + " int layer = int(v_tex0.z);\n"; if (GetAPIType() == APIType::D3D) ss << " int3 coords = int3(int2(ipos.xy), layer);\n"; else @@ -391,18 +398,18 @@ std::string GenerateClearVertexShader() { std::stringstream ss; EmitUniformBufferDeclaration(ss); - ss << "{\n"; - ss << " float4 clear_color;\n"; - ss << " float clear_depth;\n"; - ss << "};\n"; + ss << "{\n" + " float4 clear_color;\n" + " float clear_depth;\n" + "};\n"; EmitVertexMainDeclaration(ss, 0, 0, false, 0, 1, GetAPIType() == APIType::D3D ? "in uint id : SV_VertexID, " : "#define id gl_VertexID\n"); - ss << "{\n"; - ss << " float2 coord = float2(float((id << 1) & 2), float(id & 2));\n"; - ss << " opos = float4(coord * float2(2.0f, -2.0f) + float2(-1.0f, 1.0f), clear_depth, 1.0f);\n"; - ss << " v_col0 = clear_color;\n"; + ss << "{\n" + " float2 coord = float2(float((id << 1) & 2), float(id & 2));\n" + " opos = float4(coord * float2(2.0f, -2.0f) + float2(-1.0f, 1.0f), clear_depth, 1.0f);\n" + " v_col0 = clear_color;\n"; // NDC space is flipped in Vulkan if (GetAPIType() == APIType::Vulkan) @@ -417,9 +424,9 @@ std::string GenerateEFBPokeVertexShader() { std::stringstream ss; EmitVertexMainDeclaration(ss, 0, 1, true, 0, 1); - ss << "{\n"; - ss << " v_col0 = rawcolor0;\n"; - ss << " opos = float4(rawpos.xyz, 1.0f);\n"; + ss << "{\n" + " v_col0 = rawcolor0;\n" + " opos = float4(rawpos.xyz, 1.0f);\n"; if (g_ActiveConfig.backend_info.bSupportsLargePoints) ss << " gl_PointSize = rawpos.w;\n"; @@ -442,8 +449,8 @@ std::string GenerateFormatConversionShader(EFBReinterpretType convtype, u32 samp "in float4 ipos : SV_Position, in uint isample : SV_SampleIndex, " : "in float4 ipos : SV_Position, ") : ""); - ss << "{\n"; - ss << " int layer = int(v_tex0.z);\n"; + ss << "{\n" + " int layer = int(v_tex0.z);\n"; if (GetAPIType() == APIType::D3D) ss << " int3 coords = int3(int2(ipos.xy), layer);\n"; else @@ -480,13 +487,13 @@ std::string GenerateFormatConversionShader(EFBReinterpretType convtype, u32 samp switch (convtype) { case EFBReinterpretType::RGB8ToRGBA6: - ss << " int4 src8 = int4(round(val * 255.f));\n"; - ss << " int4 dst6;\n"; - ss << " dst6.r = src8.r >> 2;\n"; - ss << " dst6.g = ((src8.r & 0x3) << 4) | (src8.g >> 4);\n"; - ss << " dst6.b = ((src8.g & 0xF) << 2) | (src8.b >> 6);\n"; - ss << " dst6.a = src8.b & 0x3F;\n"; - ss << " ocol0 = float4(dst6) / 63.f;\n"; + ss << " int4 src8 = int4(round(val * 255.f));\n" + " int4 dst6;\n" + " dst6.r = src8.r >> 2;\n" + " dst6.g = ((src8.r & 0x3) << 4) | (src8.g >> 4);\n" + " dst6.b = ((src8.g & 0xF) << 2) | (src8.b >> 6);\n" + " dst6.a = src8.b & 0x3F;\n" + " ocol0 = float4(dst6) / 63.f;\n"; break; case EFBReinterpretType::RGB8ToRGB565: @@ -494,13 +501,13 @@ std::string GenerateFormatConversionShader(EFBReinterpretType convtype, u32 samp break; case EFBReinterpretType::RGBA6ToRGB8: - ss << " int4 src6 = int4(round(val * 63.f));\n"; - ss << " int4 dst8;\n"; - ss << " dst8.r = (src6.r << 2) | (src6.g >> 4);\n"; - ss << " dst8.g = ((src6.g & 0xF) << 4) | (src6.b >> 2);\n"; - ss << " dst8.b = ((src6.b & 0x3) << 6) | src6.a;\n"; - ss << " dst8.a = 255;\n"; - ss << " ocol0 = float4(dst8) / 255.f;\n"; + ss << " int4 src6 = int4(round(val * 63.f));\n" + " int4 dst8;\n" + " dst8.r = (src6.r << 2) | (src6.g >> 4);\n" + " dst8.g = ((src6.g & 0xF) << 4) | (src6.b >> 2);\n" + " dst8.b = ((src6.b & 0x3) << 6) | src6.a;\n" + " dst8.a = 255;\n" + " ocol0 = float4(dst8) / 255.f;\n"; break; case EFBReinterpretType::RGBA6ToRGB565: @@ -526,9 +533,9 @@ std::string GenerateTextureReinterpretShader(TextureFormat from_format, TextureF std::stringstream ss; EmitSamplerDeclarations(ss, 0, 1, false); EmitPixelMainDeclaration(ss, 1, 0, "float4", "", true); - ss << "{\n"; - ss << " int layer = int(v_tex0.z);\n"; - ss << " int4 coords = int4(int2(frag_coord.xy), layer, 0);\n"; + ss << "{\n" + " int layer = int(v_tex0.z);\n" + " int4 coords = int4(int2(frag_coord.xy), layer, 0);\n"; // Convert to a 32-bit value encompassing all channels, filling the most significant bits with // zeroes. @@ -540,8 +547,8 @@ std::string GenerateTextureReinterpretShader(TextureFormat from_format, TextureF { ss << " float4 temp_value = "; EmitTextureLoad(ss, 0, "coords"); - ss << ";\n"; - ss << " raw_value = uint(temp_value.r * 255.0);\n"; + ss << ";\n" + " raw_value = uint(temp_value.r * 255.0);\n"; } break; @@ -549,8 +556,8 @@ std::string GenerateTextureReinterpretShader(TextureFormat from_format, TextureF { ss << " float4 temp_value = "; EmitTextureLoad(ss, 0, "coords"); - ss << ";\n"; - ss << " raw_value = uint(temp_value.r * 255.0) | (uint(temp_value.a * 255.0) << 8);\n"; + ss << ";\n" + " raw_value = uint(temp_value.r * 255.0) | (uint(temp_value.a * 255.0) << 8);\n"; } break; @@ -558,8 +565,8 @@ std::string GenerateTextureReinterpretShader(TextureFormat from_format, TextureF { ss << " float4 temp_value = "; EmitTextureLoad(ss, 0, "coords"); - ss << ";\n"; - ss << " raw_value = uint(temp_value.r * 15.0) | (uint(temp_value.a * 15.0) << 4);\n"; + ss << ";\n" + " raw_value = uint(temp_value.r * 15.0) | (uint(temp_value.a * 15.0) << 4);\n"; } break; @@ -567,9 +574,9 @@ std::string GenerateTextureReinterpretShader(TextureFormat from_format, TextureF { ss << " float4 temp_value = "; EmitTextureLoad(ss, 0, "coords"); - ss << ";\n"; - ss << " raw_value = uint(temp_value.b * 31.0) | (uint(temp_value.g * 63.0) << 5) |\n"; - ss << " (uint(temp_value.r * 31.0) << 11);\n"; + ss << ";\n" + " raw_value = uint(temp_value.b * 31.0) | (uint(temp_value.g * 63.0) << 5) |\n" + " (uint(temp_value.r * 31.0) << 11);\n"; } break; @@ -580,13 +587,13 @@ std::string GenerateTextureReinterpretShader(TextureFormat from_format, TextureF ss << ";\n"; // 0.8784 = 224 / 255 which is the maximum alpha value that can be represented in 3 bits - ss << " if (temp_value.a > 0.878f) {\n"; - ss << " raw_value = (uint(temp_value.b * 31.0)) | (uint(temp_value.g * 31.0) << 5) |\n"; - ss << " (uint(temp_value.r * 31.0) << 10) | 0x8000u;\n"; - ss << " } else {\n"; - ss << " raw_value = (uint(temp_value.b * 15.0)) | (uint(temp_value.g * 15.0) << 4) |\n"; - ss << " (uint(temp_value.r * 15.0) << 8) | (uint(temp_value.a * 7.0) << 12);\n"; - ss << " }\n"; + ss << " if (temp_value.a > 0.878f) {\n" + " raw_value = (uint(temp_value.b * 31.0)) | (uint(temp_value.g * 31.0) << 5) |\n" + " (uint(temp_value.r * 31.0) << 10) | 0x8000u;\n" + " } else {\n" + " raw_value = (uint(temp_value.b * 15.0)) | (uint(temp_value.g * 15.0) << 4) |\n" + " (uint(temp_value.r * 15.0) << 8) | (uint(temp_value.a * 7.0) << 12);\n" + " }\n"; } break; } @@ -597,45 +604,45 @@ std::string GenerateTextureReinterpretShader(TextureFormat from_format, TextureF case TextureFormat::I8: case TextureFormat::C8: { - ss << " float orgba = float(raw_value & 0xFFu) / 255.0;\n"; - ss << " ocol0 = float4(orgba, orgba, orgba, orgba);\n"; + ss << " float orgba = float(raw_value & 0xFFu) / 255.0;\n" + " ocol0 = float4(orgba, orgba, orgba, orgba);\n"; } break; case TextureFormat::IA8: { - ss << " float orgb = float(raw_value & 0xFFu) / 255.0;\n"; - ss << " ocol0 = float4(orgb, orgb, orgb, float((raw_value >> 8) & 0xFFu) / 255.0);\n"; + ss << " float orgb = float(raw_value & 0xFFu) / 255.0;\n" + " ocol0 = float4(orgb, orgb, orgb, float((raw_value >> 8) & 0xFFu) / 255.0);\n"; } break; case TextureFormat::IA4: { - ss << " float orgb = float(raw_value & 0xFu) / 15.0;\n"; - ss << " ocol0 = float4(orgb, orgb, orgb, float((raw_value >> 4) & 0xFu) / 15.0);\n"; + ss << " float orgb = float(raw_value & 0xFu) / 15.0;\n" + " ocol0 = float4(orgb, orgb, orgb, float((raw_value >> 4) & 0xFu) / 15.0);\n"; } break; case TextureFormat::RGB565: { - ss << " ocol0 = float4(float((raw_value >> 10) & 0x1Fu) / 31.0,\n"; - ss << " float((raw_value >> 5) & 0x1Fu) / 31.0,\n"; - ss << " float(raw_value & 0x1Fu) / 31.0, 1.0);\n"; + ss << " ocol0 = float4(float((raw_value >> 10) & 0x1Fu) / 31.0,\n" + " float((raw_value >> 5) & 0x1Fu) / 31.0,\n" + " float(raw_value & 0x1Fu) / 31.0, 1.0);\n"; } break; case TextureFormat::RGB5A3: { - ss << " if ((raw_value & 0x8000u) != 0u) {\n"; - ss << " ocol0 = float4(float((raw_value >> 10) & 0x1Fu) / 31.0,\n"; - ss << " float((raw_value >> 5) & 0x1Fu) / 31.0,\n"; - ss << " float(raw_value & 0x1Fu) / 31.0, 1.0);\n"; - ss << " } else {\n"; - ss << " ocol0 = float4(float((raw_value >> 8) & 0x0Fu) / 15.0,\n"; - ss << " float((raw_value >> 4) & 0x0Fu) / 15.0,\n"; - ss << " float(raw_value & 0x0Fu) / 15.0,\n"; - ss << " float((raw_value >> 12) & 0x07u) / 7.0);\n"; - ss << " }\n"; + ss << " if ((raw_value & 0x8000u) != 0u) {\n" + " ocol0 = float4(float((raw_value >> 10) & 0x1Fu) / 31.0,\n" + " float((raw_value >> 5) & 0x1Fu) / 31.0,\n" + " float(raw_value & 0x1Fu) / 31.0, 1.0);\n" + " } else {\n" + " ocol0 = float4(float((raw_value >> 8) & 0x0Fu) / 15.0,\n" + " float((raw_value >> 4) & 0x0Fu) / 15.0,\n" + " float(raw_value & 0x0Fu) / 15.0,\n" + " float((raw_value >> 12) & 0x07u) / 7.0);\n" + " }\n"; } break; } @@ -650,14 +657,14 @@ std::string GenerateEFBRestorePixelShader() EmitSamplerDeclarations(ss, 0, 2, false); EmitPixelMainDeclaration(ss, 1, 0, "float4", GetAPIType() == APIType::D3D ? "out float depth : SV_Depth, " : ""); - ss << "{\n"; - ss << " ocol0 = "; + ss << "{\n" + " ocol0 = "; EmitSampleTexture(ss, 0, "v_tex0"); ss << ";\n"; ss << " " << (GetAPIType() == APIType::D3D ? "depth" : "gl_FragDepth") << " = "; EmitSampleTexture(ss, 1, "v_tex0"); - ss << ".r;\n"; - ss << "}\n"; + ss << ".r;\n" + "}\n"; return ss.str(); } @@ -667,16 +674,16 @@ std::string GenerateImGuiVertexShader() // Uniform buffer contains the viewport size, and we transform in the vertex shader. EmitUniformBufferDeclaration(ss); - ss << "{\n"; - ss << "float2 u_rcp_viewport_size_mul2;\n"; - ss << "};\n\n"; + ss << "{\n" + "float2 u_rcp_viewport_size_mul2;\n" + "};\n\n"; EmitVertexMainDeclaration(ss, 1, 1, true, 1, 1); ss << "{\n" - << " v_tex0 = float3(rawtex0.xy, 0.0);\n" - << " v_col0 = rawcolor0;\n" - << " opos = float4(rawpos.x * u_rcp_viewport_size_mul2.x - 1.0," - << " 1.0 - rawpos.y * u_rcp_viewport_size_mul2.y, 0.0, 1.0);\n"; + " v_tex0 = float3(rawtex0.xy, 0.0);\n" + " v_col0 = rawcolor0;\n" + " opos = float4(rawpos.x * u_rcp_viewport_size_mul2.x - 1.0," + " 1.0 - rawpos.y * u_rcp_viewport_size_mul2.y, 0.0, 1.0);\n"; // NDC space is flipped in Vulkan. if (GetAPIType() == APIType::Vulkan) @@ -691,11 +698,11 @@ std::string GenerateImGuiPixelShader() std::stringstream ss; EmitSamplerDeclarations(ss, 0, 1, false); EmitPixelMainDeclaration(ss, 1, 1); - ss << "{\n"; - ss << " ocol0 = "; + ss << "{\n" + " ocol0 = "; EmitSampleTexture(ss, 0, "float3(v_tex0.xy, 0.0)"); - ss << " * v_col0;\n"; - ss << "}\n"; + ss << " * v_col0;\n" + "}\n"; return ss.str(); }