diff options
Diffstat (limited to 'Source/Core/VideoCommon/TextureConverterShaderGen.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/TextureConverterShaderGen.cpp | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/Source/Core/VideoCommon/TextureConverterShaderGen.cpp b/Source/Core/VideoCommon/TextureConverterShaderGen.cpp index 15de7ba9a7..df46254d91 100644 --- a/Source/Core/VideoCommon/TextureConverterShaderGen.cpp +++ b/Source/Core/VideoCommon/TextureConverterShaderGen.cpp @@ -67,8 +67,17 @@ ShaderCode GenerateVertexShader(APIType api_type) } else if (api_type == APIType::OpenGL || api_type == APIType::Vulkan) { - out.Write("VARYING_LOCATION(0) out float3 v_tex0;\n" - "#define id gl_VertexID\n" + if (g_ActiveConfig.backend_info.bSupportsGeometryShaders) + { + out.Write("VARYING_LOCATION(0) out VertexData {\n"); + out.Write(" float3 v_tex0;\n"); + out.Write("};\n"); + } + else + { + out.Write("VARYING_LOCATION(0) out float3 v_tex0;\n"); + } + out.Write("#define id gl_VertexID\n" "#define opos gl_Position\n" "void main() {\n"); } @@ -112,8 +121,17 @@ ShaderCode GeneratePixelShader(APIType api_type, const UidData* uid_data) "clamp_tb.x, clamp_tb.y), %s));\n" "}\n", mono_depth ? "0.0" : "uv.z"); - out.Write("VARYING_LOCATION(0) in vec3 v_tex0;\n" - "FRAGMENT_OUTPUT_LOCATION(0) out vec4 ocol0;" + if (g_ActiveConfig.backend_info.bSupportsGeometryShaders) + { + out.Write("VARYING_LOCATION(0) in VertexData {\n"); + out.Write(" float3 v_tex0;\n"); + out.Write("};\n"); + } + else + { + out.Write("VARYING_LOCATION(0) in vec3 v_tex0;\n"); + } + out.Write("FRAGMENT_OUTPUT_LOCATION(0) out vec4 ocol0;" "void main()\n{\n"); } |
