mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-17 07:49:21 +00:00
VideoSW: allow disabling the copy filter
This commit is contained in:
parent
812c6c2ea4
commit
9ff5943ac6
1 changed files with 21 additions and 4 deletions
|
@ -11,6 +11,8 @@
|
|||
#include "Common/CommonTypes.h"
|
||||
#include "Common/Logging/Log.h"
|
||||
|
||||
#include "Core/Config/GraphicsSettings.h"
|
||||
|
||||
#include "VideoBackends/Software/CopyRegion.h"
|
||||
#include "VideoCommon/BPMemory.h"
|
||||
#include "VideoCommon/LookUpTables.h"
|
||||
|
@ -494,10 +496,25 @@ static u32 VerticalFilter(const std::array<u32, 3>& colors,
|
|||
// * Coefficients 2, 3 and 4 sample from the current pixel.
|
||||
// * Coefficients 0 and 1 sample from the pixel above this one
|
||||
// * Coefficients 5 and 6 sample from the pixel below this one
|
||||
int sum =
|
||||
in_colors[0][i] * (filterCoefficients[0] + filterCoefficients[1]) +
|
||||
in_colors[1][i] * (filterCoefficients[2] + filterCoefficients[3] + filterCoefficients[4]) +
|
||||
in_colors[2][i] * (filterCoefficients[5] + filterCoefficients[6]);
|
||||
//
|
||||
// We normally don't implement enhancements in the software renderer.
|
||||
// However, disabling the copy filter is useful for debugging.
|
||||
const bool disable_copy_filter = Config::Get(Config::GFX_ENHANCE_DISABLE_COPY_FILTER);
|
||||
int sum;
|
||||
if (disable_copy_filter)
|
||||
{
|
||||
sum =
|
||||
in_colors[1][i] * (filterCoefficients[0] + filterCoefficients[1] + filterCoefficients[2] +
|
||||
filterCoefficients[3] + filterCoefficients[4] + filterCoefficients[5] +
|
||||
filterCoefficients[6]);
|
||||
}
|
||||
else
|
||||
{
|
||||
sum = in_colors[0][i] * (filterCoefficients[0] + filterCoefficients[1]) +
|
||||
in_colors[1][i] *
|
||||
(filterCoefficients[2] + filterCoefficients[3] + filterCoefficients[4]) +
|
||||
in_colors[2][i] * (filterCoefficients[5] + filterCoefficients[6]);
|
||||
}
|
||||
|
||||
// TODO: this clamping behavior appears to be correct, but isn't confirmed on hardware.
|
||||
out_color[i] = std::min(255, sum >> 6); // clamp larger values to 255
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue