diff options
| author | JMC47 <JMC4789@gmail.com> | 2022-07-08 15:29:58 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-08 15:29:58 -0400 |
| commit | 828afc67356c2299c6056d618eb6b7afe4c843b9 (patch) | |
| tree | cb7809cf9aad689968ec209e8d886b5457ca68dc /Source/Core/VideoCommon/GeometryShaderGen.cpp | |
| parent | 7cc89f5642cab3b91aef1c8255af857a1607ddf6 (diff) | |
| parent | a8b52663479effc0f404f7c0f8b52bc0ee37b742 (diff) | |
Merge pull request #10673 from iwubcode/spirv-backends
D3D: Generate HLSL from SPIRV*
Diffstat (limited to 'Source/Core/VideoCommon/GeometryShaderGen.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/GeometryShaderGen.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/Source/Core/VideoCommon/GeometryShaderGen.cpp b/Source/Core/VideoCommon/GeometryShaderGen.cpp index 150354e4f3..10895ccf88 100644 --- a/Source/Core/VideoCommon/GeometryShaderGen.cpp +++ b/Source/Core/VideoCommon/GeometryShaderGen.cpp @@ -103,7 +103,8 @@ ShaderCode GenerateGeometryShaderCode(APIType api_type, const ShaderHostConfig& "}};\n"); out.Write("struct VS_OUTPUT {{\n"); - GenerateVSOutputMembers(out, api_type, uid_data->numTexGens, host_config, ""); + GenerateVSOutputMembers(out, api_type, uid_data->numTexGens, host_config, "", + ShaderStage::Geometry); out.Write("}};\n"); if (api_type == APIType::OpenGL || api_type == APIType::Vulkan) @@ -113,15 +114,14 @@ ShaderCode GenerateGeometryShaderCode(APIType api_type, const ShaderHostConfig& out.Write("VARYING_LOCATION(0) in VertexData {{\n"); GenerateVSOutputMembers(out, api_type, uid_data->numTexGens, host_config, - GetInterpolationQualifier(msaa, ssaa, true, true)); + GetInterpolationQualifier(msaa, ssaa, true, true), + ShaderStage::Geometry); out.Write("}} vs[{}];\n", vertex_in); out.Write("VARYING_LOCATION(0) out VertexData {{\n"); GenerateVSOutputMembers(out, api_type, uid_data->numTexGens, host_config, - GetInterpolationQualifier(msaa, ssaa, true, false)); - - if (stereo) - out.Write("\tflat int layer;\n"); + GetInterpolationQualifier(msaa, ssaa, true, false), + ShaderStage::Geometry); out.Write("}} ps;\n"); @@ -133,7 +133,10 @@ ShaderCode GenerateGeometryShaderCode(APIType api_type, const ShaderHostConfig& out.Write("\tVS_OUTPUT o;\n"); if (stereo) + { out.Write("\tuint layer : SV_RenderTargetArrayIndex;\n"); + } + out.Write("\tfloat4 posout : SV_Position;\n"); out.Write("}};\n"); @@ -344,14 +347,18 @@ static void EmitVertex(ShaderCode& out, const ShaderHostConfig& host_config, else { out.Write("\tps.o = {};\n", vertex); + out.Write("\tps.posout = {}.pos;\n", vertex); } if (stereo) { // Select the output layer - out.Write("\tps.layer = eye;\n"); if (api_type == APIType::OpenGL || api_type == APIType::Vulkan) out.Write("\tgl_Layer = eye;\n"); + else + { + out.Write("\tps.layer = eye;\n"); + } } if (api_type == APIType::OpenGL || api_type == APIType::Vulkan) |
