diff options
| author | Pokechu22 <Pokechu022@gmail.com> | 2022-01-29 13:53:54 -0800 |
|---|---|---|
| committer | Pokechu22 <Pokechu022@gmail.com> | 2022-03-29 15:34:43 -0700 |
| commit | af316f7bfe7bd6470204abf4a98ef2430467e589 (patch) | |
| tree | c4fa17da4daf910bad9da0fb7c1021b361b3a047 /Source/Core/VideoBackends/Software/SWRenderer.cpp | |
| parent | 8882eb040a5e4121d0fb19026862bd456b492b6c (diff) | |
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: |
