From: <rog...@us...> - 2016-09-30 05:41:02
|
Revision: 5563 http://sourceforge.net/p/desmume/code/5563 Author: rogerman Date: 2016-09-30 05:41:00 +0000 (Fri, 30 Sep 2016) Log Message: ----------- Filters: - Simplify the functionality of the Deposterize filter by making the threshold a constant value. - Increase the Deposterize threshold from 21 to 23. Modified Paths: -------------- trunk/desmume/src/filter/deposterize.cpp trunk/desmume/src/render3D.cpp trunk/desmume/src/render3D.h Modified: trunk/desmume/src/filter/deposterize.cpp =================================================================== --- trunk/desmume/src/filter/deposterize.cpp 2016-09-30 05:08:23 UTC (rev 5562) +++ trunk/desmume/src/filter/deposterize.cpp 2016-09-30 05:41:00 UTC (rev 5563) @@ -18,7 +18,10 @@ #include "../types.h" #include "filter.h" -static u32 Deposterize_InterpLTE(const u32 pixA, const u32 pixB, const u32 threshold) +#define DEPOSTERIZE_THRESHOLD 23 // Possible values are [0-255], where lower a value prevents blending and a higher value allows for more blending + + +static u32 Deposterize_InterpLTE(const u32 pixA, const u32 pixB) { const u32 aB = (pixB & 0xFF000000) >> 24; if (aB == 0) @@ -35,10 +38,10 @@ const u32 gB = (pixB & 0x0000FF00) >> 8; const u32 bB = (pixB & 0x00FF0000) >> 16; - const u32 rC = ( (rB - rA <= threshold) || (rA - rB <= threshold) ) ? ( ((rA+rB)>>1) ) : rA; - const u32 gC = ( (gB - gA <= threshold) || (gA - gB <= threshold) ) ? ( ((gA+gB)>>1) ) : gA; - const u32 bC = ( (bB - bA <= threshold) || (bA - bB <= threshold) ) ? ( ((bA+bB)>>1) ) : bA; - const u32 aC = ( (bB - aA <= threshold) || (aA - aB <= threshold) ) ? ( ((aA+aB)>>1) ) : aA; + const u32 rC = ( (rB - rA <= DEPOSTERIZE_THRESHOLD) || (rA - rB <= DEPOSTERIZE_THRESHOLD) ) ? ( ((rA+rB)>>1) ) : rA; + const u32 gC = ( (gB - gA <= DEPOSTERIZE_THRESHOLD) || (gA - gB <= DEPOSTERIZE_THRESHOLD) ) ? ( ((gA+gB)>>1) ) : gA; + const u32 bC = ( (bB - bA <= DEPOSTERIZE_THRESHOLD) || (bA - bB <= DEPOSTERIZE_THRESHOLD) ) ? ( ((bA+bB)>>1) ) : bA; + const u32 aC = ( (bB - aA <= DEPOSTERIZE_THRESHOLD) || (aA - aB <= DEPOSTERIZE_THRESHOLD) ) ? ( ((aA+aB)>>1) ) : aA; return (rC | (gC << 8) | (bC << 16) | (aC << 24)); } @@ -84,7 +87,6 @@ u32 *src = (u32 *)Src.Surface; u32 *workingDst = (u32 *)Dst.workingSurface[0]; u32 *finalDst = (u32 *)Dst.Surface; - u32 threshold = *(u32 *)Dst.userData; int i = 0; for (int y = 0; y < h; y++) @@ -108,14 +110,14 @@ color[8] = ((x < w-1) && (y > 0)) ? src[i-w+1] : src[i]; blend[0] = color[0]; - blend[1] = Deposterize_InterpLTE(color[0], color[1], threshold); - blend[2] = Deposterize_InterpLTE(color[0], color[2], threshold); - blend[3] = Deposterize_InterpLTE(color[0], color[3], threshold); - blend[4] = Deposterize_InterpLTE(color[0], color[4], threshold); - blend[5] = Deposterize_InterpLTE(color[0], color[5], threshold); - blend[6] = Deposterize_InterpLTE(color[0], color[6], threshold); - blend[7] = Deposterize_InterpLTE(color[0], color[7], threshold); - blend[8] = Deposterize_InterpLTE(color[0], color[8], threshold); + blend[1] = Deposterize_InterpLTE(color[0], color[1]); + blend[2] = Deposterize_InterpLTE(color[0], color[2]); + blend[3] = Deposterize_InterpLTE(color[0], color[3]); + blend[4] = Deposterize_InterpLTE(color[0], color[4]); + blend[5] = Deposterize_InterpLTE(color[0], color[5]); + blend[6] = Deposterize_InterpLTE(color[0], color[6]); + blend[7] = Deposterize_InterpLTE(color[0], color[7]); + blend[8] = Deposterize_InterpLTE(color[0], color[8]); workingDst[i] = Deposterize_Blend(Deposterize_Blend(Deposterize_Blend(Deposterize_Blend(blend[0], blend[5], 1, 7), Deposterize_Blend(blend[0], blend[1], 1, 7), @@ -157,14 +159,14 @@ color[8] = ((x < w-1) && (y > 0)) ? workingDst[i-w+1] : workingDst[i]; blend[0] = color[0]; - blend[1] = Deposterize_InterpLTE(color[0], color[1], threshold); - blend[2] = Deposterize_InterpLTE(color[0], color[2], threshold); - blend[3] = Deposterize_InterpLTE(color[0], color[3], threshold); - blend[4] = Deposterize_InterpLTE(color[0], color[4], threshold); - blend[5] = Deposterize_InterpLTE(color[0], color[5], threshold); - blend[6] = Deposterize_InterpLTE(color[0], color[6], threshold); - blend[7] = Deposterize_InterpLTE(color[0], color[7], threshold); - blend[8] = Deposterize_InterpLTE(color[0], color[8], threshold); + blend[1] = Deposterize_InterpLTE(color[0], color[1]); + blend[2] = Deposterize_InterpLTE(color[0], color[2]); + blend[3] = Deposterize_InterpLTE(color[0], color[3]); + blend[4] = Deposterize_InterpLTE(color[0], color[4]); + blend[5] = Deposterize_InterpLTE(color[0], color[5]); + blend[6] = Deposterize_InterpLTE(color[0], color[6]); + blend[7] = Deposterize_InterpLTE(color[0], color[7]); + blend[8] = Deposterize_InterpLTE(color[0], color[8]); finalDst[i] = Deposterize_Blend(Deposterize_Blend(Deposterize_Blend(Deposterize_Blend(blend[0], blend[5], 1, 7), Deposterize_Blend(blend[0], blend[1], 1, 7), Modified: trunk/desmume/src/render3D.cpp =================================================================== --- trunk/desmume/src/render3D.cpp 2016-09-30 05:08:23 UTC (rev 5562) +++ trunk/desmume/src/render3D.cpp 2016-09-30 05:41:00 UTC (rev 5563) @@ -32,7 +32,6 @@ #include "./filter/filter.h" #include "./filter/xbrz.h" -#define TEXTURE_DEPOSTERIZE_THRESHOLD 21 // Possible values are [0-255], where lower a value prevents blending and a higher value allows for more blending int cur3DCore = GPU3D_NULL; @@ -238,7 +237,6 @@ _textureScalingFactor = 1; _textureSmooth = false; _textureUpscaleBuffer = NULL; - _textureDeposterizeThreshold = TEXTURE_DEPOSTERIZE_THRESHOLD; memset(&_textureDeposterizeSrcSurface, 0, sizeof(_textureDeposterizeSrcSurface)); memset(&_textureDeposterizeDstSurface, 0, sizeof(_textureDeposterizeDstSurface)); @@ -246,7 +244,6 @@ _textureDeposterizeSrcSurface.Width = _textureDeposterizeDstSurface.Width = 1; _textureDeposterizeSrcSurface.Height = _textureDeposterizeDstSurface.Height = 1; _textureDeposterizeSrcSurface.Pitch = _textureDeposterizeDstSurface.Pitch = 1; - _textureDeposterizeDstSurface.userData = &_textureDeposterizeThreshold; Reset(); } Modified: trunk/desmume/src/render3D.h =================================================================== --- trunk/desmume/src/render3D.h 2016-09-30 05:08:23 UTC (rev 5562) +++ trunk/desmume/src/render3D.h 2016-09-30 05:41:00 UTC (rev 5563) @@ -134,9 +134,7 @@ SSurface _textureDeposterizeSrcSurface; SSurface _textureDeposterizeDstSurface; - u32 _textureDeposterizeThreshold; - //u32 *_textureDeposterizeBuffer; u32 *_textureUpscaleBuffer; CACHE_ALIGN u16 clearImageColor16Buffer[GPU_FRAMEBUFFER_NATIVE_WIDTH * GPU_FRAMEBUFFER_NATIVE_HEIGHT]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |