From 68f49df0f8a845eecd1e65c4d75dfbee3bdc989e Mon Sep 17 00:00:00 2001 From: TellowKrinkle Date: Sat, 23 Jul 2022 00:47:04 -0500 Subject: VideoCommon: Add vertex shader point and line expansion --- Source/Core/VideoCommon/GeometryShaderGen.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'Source/Core/VideoCommon/GeometryShaderGen.cpp') diff --git a/Source/Core/VideoCommon/GeometryShaderGen.cpp b/Source/Core/VideoCommon/GeometryShaderGen.cpp index 818a22bfa4..04d0062982 100644 --- a/Source/Core/VideoCommon/GeometryShaderGen.cpp +++ b/Source/Core/VideoCommon/GeometryShaderGen.cpp @@ -97,10 +97,8 @@ ShaderCode GenerateGeometryShaderCode(APIType api_type, const ShaderHostConfig& else out.Write("cbuffer GSBlock {{\n"); - out.Write("\tfloat4 " I_STEREOPARAMS ";\n" - "\tfloat4 " I_LINEPTPARAMS ";\n" - "\tint4 " I_TEXOFFSET ";\n" - "}};\n"); + out.Write("{}", s_geometry_shader_uniforms); + out.Write("}};\n"); out.Write("struct VS_OUTPUT {{\n"); GenerateVSOutputMembers(out, api_type, uid_data->numTexGens, host_config, "", -- cgit v1.2.3 From b567f3afcf79ab9333e9f5b17bad9aa17880b74e Mon Sep 17 00:00:00 2001 From: TellowKrinkle Date: Tue, 4 Oct 2022 22:54:30 -0500 Subject: VideoCommon: Move repeated point/line expansion code to ShaderGenCommon --- Source/Core/VideoCommon/GeometryShaderGen.cpp | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) (limited to 'Source/Core/VideoCommon/GeometryShaderGen.cpp') diff --git a/Source/Core/VideoCommon/GeometryShaderGen.cpp b/Source/Core/VideoCommon/GeometryShaderGen.cpp index 04d0062982..2db201c636 100644 --- a/Source/Core/VideoCommon/GeometryShaderGen.cpp +++ b/Source/Core/VideoCommon/GeometryShaderGen.cpp @@ -169,22 +169,7 @@ ShaderCode GenerateGeometryShaderCode(APIType api_type, const ShaderHostConfig& "\tVS_OUTPUT end = o[1];\n"); } - // 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" - "\tfloat2 to = abs(end.pos.xy / end.pos.w - start.pos.xy / start.pos.w);\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"); + GenerateLineOffset(out, "\t", "\t\t", "end.pos", "start.pos", ""); } else if (primitive_type == PrimitiveType::Points) { -- cgit v1.2.3