diff options
| author | TellowKrinkle <tellowkrinkle@gmail.com> | 2022-06-21 02:07:35 -0500 |
|---|---|---|
| committer | TellowKrinkle <tellowkrinkle@gmail.com> | 2022-07-21 20:44:19 -0500 |
| commit | 6ee0248eab7622d2db19f28f120b447b5db11379 (patch) | |
| tree | f1c1001e82f488ed774bdf04f44613b2875e99be /Source/Core/VideoCommon/FramebufferShaderGen.cpp | |
| parent | c0fd1281713f0ffe8bcfb628f8d328c7a1b5ae09 (diff) | |
VideoBackends:Metal: MSAA support
Diffstat (limited to 'Source/Core/VideoCommon/FramebufferShaderGen.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/FramebufferShaderGen.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/FramebufferShaderGen.cpp b/Source/Core/VideoCommon/FramebufferShaderGen.cpp index 6426b259b4..49684bb518 100644 --- a/Source/Core/VideoCommon/FramebufferShaderGen.cpp +++ b/Source/Core/VideoCommon/FramebufferShaderGen.cpp @@ -338,6 +338,22 @@ std::string GenerateColorPixelShader() return code.GetBuffer(); } +std::string GenerateResolveColorPixelShader(u32 samples) +{ + ShaderCode code; + EmitSamplerDeclarations(code, 0, 1, true); + EmitPixelMainDeclaration(code, 1, 0); + code.Write("{{\n" + " int layer = int(v_tex0.z);\n" + " int3 coords = int3(int2(gl_FragCoord.xy), layer);\n" + " ocol0 = float4(0.0f);\n"); + code.Write(" for (int i = 0; i < {}; i++)\n", samples); + code.Write(" ocol0 += texelFetch(samp0, coords, i);\n"); + code.Write(" ocol0 /= {}.0f;\n", samples); + code.Write("}}\n"); + return code.GetBuffer(); +} + std::string GenerateResolveDepthPixelShader(u32 samples) { ShaderCode code; |
