diff options
| author | JMC47 <JMC4789@gmail.com> | 2022-04-07 17:01:56 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-07 17:01:56 -0400 |
| commit | e02194057bde797c03de9a4e29f522d361ed87b4 (patch) | |
| tree | 8109ff0b0404ec9c544ed666abeeab327d9af7fc /Source/Core/VideoBackends/Software/SWRenderer.cpp | |
| parent | 7a33659e7bd7b6504f37b80d8c8ce605dca655cd (diff) | |
| parent | af316f7bfe7bd6470204abf4a98ef2430467e589 (diff) | |
Merge pull request #10412 from Pokechu22/sw-efb-peek-alpha
Software: Implement pixel engine alpha read mode
Diffstat (limited to 'Source/Core/VideoBackends/Software/SWRenderer.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/Software/SWRenderer.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/Source/Core/VideoBackends/Software/SWRenderer.cpp b/Source/Core/VideoBackends/Software/SWRenderer.cpp index 84fe951fcd..e5b0f08987 100644 --- a/Source/Core/VideoBackends/Software/SWRenderer.cpp +++ b/Source/Core/VideoBackends/Software/SWRenderer.cpp @@ -20,6 +20,7 @@ #include "VideoCommon/AbstractShader.h" #include "VideoCommon/AbstractTexture.h" #include "VideoCommon/NativeVertexFormat.h" +#include "VideoCommon/PixelEngine.h" #include "VideoCommon/VideoBackendBase.h" #include "VideoCommon/VideoCommon.h" @@ -132,6 +133,27 @@ u32 SWRenderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 InputData) // rgba to argb value = (color >> 8) | (color & 0xff) << 24; + + // check what to do with the alpha channel (GX_PokeAlphaRead) + PixelEngine::AlphaReadMode alpha_read_mode = PixelEngine::GetAlphaReadMode(); + + if (alpha_read_mode == PixelEngine::AlphaReadMode::ReadNone) + { + // value is OK as it is + } + else if (alpha_read_mode == PixelEngine::AlphaReadMode::ReadFF) + { + value |= 0xFF000000; + } + else + { + if (alpha_read_mode != PixelEngine::AlphaReadMode::Read00) + { + PanicAlertFmt("Invalid PE alpha read mode: {}", static_cast<u16>(alpha_read_mode)); + } + value &= 0x00FFFFFF; + } + break; } default: |
