Skip to content

Commit

Permalink
etc2comp: Fix max iterations for RGBA channels
Browse files Browse the repository at this point in the history
Those checks were *very likely* meant to clamp the max value,
not the min one.

Fixes godotengine#10059 (comment).

(cherry picked from commit dbf52c6)
  • Loading branch information
akien-mga committed Apr 16, 2020
1 parent 2940080 commit a8bdcd3
Show file tree
Hide file tree
Showing 3 changed files with 248 additions and 24 deletions.
24 changes: 12 additions & 12 deletions thirdparty/etc2comp/EtcBlock4x4Encoding_RGB8.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -508,7 +508,7 @@ namespace Etc
int iMaxRed1 = iColor1Red + (int)a_uiRadius;
if (iMaxRed1 > 15)
{
iMinRed1 = 15;
iMaxRed1 = 15;
}

int iMinGreen1 = iColor1Green - (int)a_uiRadius;
Expand All @@ -519,7 +519,7 @@ namespace Etc
int iMaxGreen1 = iColor1Green + (int)a_uiRadius;
if (iMaxGreen1 > 15)
{
iMinGreen1 = 15;
iMaxGreen1 = 15;
}

int iMinBlue1 = iColor1Blue - (int)a_uiRadius;
Expand All @@ -530,7 +530,7 @@ namespace Etc
int iMaxBlue1 = iColor1Blue + (int)a_uiRadius;
if (iMaxBlue1 > 15)
{
iMinBlue1 = 15;
iMaxBlue1 = 15;
}

int iColor2Red = m_frgbaOriginalColor2_TAndH.IntRed(15.0f);
Expand All @@ -545,7 +545,7 @@ namespace Etc
int iMaxRed2 = iColor2Red + (int)a_uiRadius;
if (iMaxRed2 > 15)
{
iMinRed2 = 15;
iMaxRed2 = 15;
}

int iMinGreen2 = iColor2Green - (int)a_uiRadius;
Expand All @@ -556,7 +556,7 @@ namespace Etc
int iMaxGreen2 = iColor2Green + (int)a_uiRadius;
if (iMaxGreen2 > 15)
{
iMinGreen2 = 15;
iMaxGreen2 = 15;
}

int iMinBlue2 = iColor2Blue - (int)a_uiRadius;
Expand All @@ -567,7 +567,7 @@ namespace Etc
int iMaxBlue2 = iColor2Blue + (int)a_uiRadius;
if (iMaxBlue2 > 15)
{
iMinBlue2 = 15;
iMaxBlue2 = 15;
}

for (unsigned int uiDistance = 0; uiDistance < TH_DISTANCES; uiDistance++)
Expand Down Expand Up @@ -761,7 +761,7 @@ namespace Etc
int iMaxRed1 = iColor1Red + (int)a_uiRadius;
if (iMaxRed1 > 15)
{
iMinRed1 = 15;
iMaxRed1 = 15;
}

int iMinGreen1 = iColor1Green - (int)a_uiRadius;
Expand All @@ -772,7 +772,7 @@ namespace Etc
int iMaxGreen1 = iColor1Green + (int)a_uiRadius;
if (iMaxGreen1 > 15)
{
iMinGreen1 = 15;
iMaxGreen1 = 15;
}

int iMinBlue1 = iColor1Blue - (int)a_uiRadius;
Expand All @@ -783,7 +783,7 @@ namespace Etc
int iMaxBlue1 = iColor1Blue + (int)a_uiRadius;
if (iMaxBlue1 > 15)
{
iMinBlue1 = 15;
iMaxBlue1 = 15;
}

int iColor2Red = m_frgbaOriginalColor2_TAndH.IntRed(15.0f);
Expand All @@ -798,7 +798,7 @@ namespace Etc
int iMaxRed2 = iColor2Red + (int)a_uiRadius;
if (iMaxRed2 > 15)
{
iMinRed2 = 15;
iMaxRed2 = 15;
}

int iMinGreen2 = iColor2Green - (int)a_uiRadius;
Expand All @@ -809,7 +809,7 @@ namespace Etc
int iMaxGreen2 = iColor2Green + (int)a_uiRadius;
if (iMaxGreen2 > 15)
{
iMinGreen2 = 15;
iMaxGreen2 = 15;
}

int iMinBlue2 = iColor2Blue - (int)a_uiRadius;
Expand All @@ -820,7 +820,7 @@ namespace Etc
int iMaxBlue2 = iColor2Blue + (int)a_uiRadius;
if (iMaxBlue2 > 15)
{
iMinBlue2 = 15;
iMaxBlue2 = 15;
}

for (unsigned int uiDistance = 0; uiDistance < TH_DISTANCES; uiDistance++)
Expand Down
24 changes: 12 additions & 12 deletions thirdparty/etc2comp/EtcBlock4x4Encoding_RGB8A1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -847,7 +847,7 @@ namespace Etc
int iMaxRed1 = iColor1Red + (int)a_uiRadius;
if (iMaxRed1 > 15)
{
iMinRed1 = 15;
iMaxRed1 = 15;
}

int iMinGreen1 = iColor1Green - (int)a_uiRadius;
Expand All @@ -858,7 +858,7 @@ namespace Etc
int iMaxGreen1 = iColor1Green + (int)a_uiRadius;
if (iMaxGreen1 > 15)
{
iMinGreen1 = 15;
iMaxGreen1 = 15;
}

int iMinBlue1 = iColor1Blue - (int)a_uiRadius;
Expand All @@ -869,7 +869,7 @@ namespace Etc
int iMaxBlue1 = iColor1Blue + (int)a_uiRadius;
if (iMaxBlue1 > 15)
{
iMinBlue1 = 15;
iMaxBlue1 = 15;
}

int iColor2Red = m_frgbaOriginalColor2_TAndH.IntRed(15.0f);
Expand All @@ -884,7 +884,7 @@ namespace Etc
int iMaxRed2 = iColor2Red + (int)a_uiRadius;
if (iMaxRed2 > 15)
{
iMinRed2 = 15;
iMaxRed2 = 15;
}

int iMinGreen2 = iColor2Green - (int)a_uiRadius;
Expand All @@ -895,7 +895,7 @@ namespace Etc
int iMaxGreen2 = iColor2Green + (int)a_uiRadius;
if (iMaxGreen2 > 15)
{
iMinGreen2 = 15;
iMaxGreen2 = 15;
}

int iMinBlue2 = iColor2Blue - (int)a_uiRadius;
Expand All @@ -906,7 +906,7 @@ namespace Etc
int iMaxBlue2 = iColor2Blue + (int)a_uiRadius;
if (iMaxBlue2 > 15)
{
iMinBlue2 = 15;
iMaxBlue2 = 15;
}

for (unsigned int uiDistance = 0; uiDistance < TH_DISTANCES; uiDistance++)
Expand Down Expand Up @@ -1108,7 +1108,7 @@ namespace Etc
int iMaxRed1 = iColor1Red + (int)a_uiRadius;
if (iMaxRed1 > 15)
{
iMinRed1 = 15;
iMaxRed1 = 15;
}

int iMinGreen1 = iColor1Green - (int)a_uiRadius;
Expand All @@ -1119,7 +1119,7 @@ namespace Etc
int iMaxGreen1 = iColor1Green + (int)a_uiRadius;
if (iMaxGreen1 > 15)
{
iMinGreen1 = 15;
iMaxGreen1 = 15;
}

int iMinBlue1 = iColor1Blue - (int)a_uiRadius;
Expand All @@ -1130,7 +1130,7 @@ namespace Etc
int iMaxBlue1 = iColor1Blue + (int)a_uiRadius;
if (iMaxBlue1 > 15)
{
iMinBlue1 = 15;
iMaxBlue1 = 15;
}

int iColor2Red = m_frgbaOriginalColor2_TAndH.IntRed(15.0f);
Expand All @@ -1145,7 +1145,7 @@ namespace Etc
int iMaxRed2 = iColor2Red + (int)a_uiRadius;
if (iMaxRed2 > 15)
{
iMinRed2 = 15;
iMaxRed2 = 15;
}

int iMinGreen2 = iColor2Green - (int)a_uiRadius;
Expand All @@ -1156,7 +1156,7 @@ namespace Etc
int iMaxGreen2 = iColor2Green + (int)a_uiRadius;
if (iMaxGreen2 > 15)
{
iMinGreen2 = 15;
iMaxGreen2 = 15;
}

int iMinBlue2 = iColor2Blue - (int)a_uiRadius;
Expand All @@ -1167,7 +1167,7 @@ namespace Etc
int iMaxBlue2 = iColor2Blue + (int)a_uiRadius;
if (iMaxBlue2 > 15)
{
iMinBlue2 = 15;
iMaxBlue2 = 15;
}

for (unsigned int uiDistance = 0; uiDistance < TH_DISTANCES; uiDistance++)
Expand Down
Loading

0 comments on commit a8bdcd3

Please sign in to comment.