merge with dev
This commit is contained in:
@@ -541,6 +541,7 @@ BENCHFUN
|
|||||||
|
|
||||||
double progress = startVal;
|
double progress = startVal;
|
||||||
const double progressStep = (endVal - startVal) * rtengine::SQR(tileSize) / (W * H);
|
const double progressStep = (endVal - startVal) * rtengine::SQR(tileSize) / (W * H);
|
||||||
|
constexpr float minBlend = 0.01f;
|
||||||
|
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
@@ -563,11 +564,17 @@ BENCHFUN
|
|||||||
if (endOfRow || endOfCol) {
|
if (endOfRow || endOfCol) {
|
||||||
// special handling for small tiles at end of row or column
|
// special handling for small tiles at end of row or column
|
||||||
if (checkIterStop) {
|
if (checkIterStop) {
|
||||||
|
float maxVal = 0.f;
|
||||||
for (int k = 0, ii = endOfCol ? H - fullTileSize + border : i; k < tileSize; ++k, ++ii) {
|
for (int k = 0, ii = endOfCol ? H - fullTileSize + border : i; k < tileSize; ++k, ++ii) {
|
||||||
for (int l = 0, jj = endOfRow ? W - fullTileSize + border : j; l < tileSize; ++l, ++jj) {
|
for (int l = 0, jj = endOfRow ? W - fullTileSize + border : j; l < tileSize; ++l, ++jj) {
|
||||||
iterCheck[k][l] = oldLuminance[ii][jj] * clipmask[ii][jj] * 0.5f;
|
iterCheck[k][l] = oldLuminance[ii][jj] * clipmask[ii][jj] * 0.5f;
|
||||||
|
maxVal = std::max(maxVal, clipmask[ii][jj]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (maxVal < minBlend) {
|
||||||
|
// no pixel of the tile has a blend factor >= minBlend => skip the tile
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (int k = 0, ii = endOfCol ? H - fullTileSize : i - border; k < fullTileSize; ++k, ++ii) {
|
for (int k = 0, ii = endOfCol ? H - fullTileSize : i - border; k < fullTileSize; ++k, ++ii) {
|
||||||
for (int l = 0, jj = endOfRow ? W - fullTileSize : j - border; l < fullTileSize; ++l, ++jj) {
|
for (int l = 0, jj = endOfRow ? W - fullTileSize : j - border; l < fullTileSize; ++l, ++jj) {
|
||||||
@@ -577,11 +584,17 @@ BENCHFUN
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (checkIterStop) {
|
if (checkIterStop) {
|
||||||
|
float maxVal = 0.f;
|
||||||
for (int ii = 0; ii < tileSize; ++ii) {
|
for (int ii = 0; ii < tileSize; ++ii) {
|
||||||
for (int jj = 0; jj < tileSize; ++jj) {
|
for (int jj = 0; jj < tileSize; ++jj) {
|
||||||
iterCheck[ii][jj] = oldLuminance[i + ii][j + jj] * clipmask[i + ii][j + jj] * 0.5f;
|
iterCheck[ii][jj] = oldLuminance[i + ii][j + jj] * clipmask[i + ii][j + jj] * 0.5f;
|
||||||
|
maxVal = std::max(maxVal, clipmask[i + ii][j + jj]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (maxVal < minBlend) {
|
||||||
|
// no pixel of the tile has a blend factor >= minBlend => skip the tile
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (int ii = i; ii < i + fullTileSize; ++ii) {
|
for (int ii = i; ii < i + fullTileSize; ++ii) {
|
||||||
for (int jj = j; jj < j + fullTileSize; ++jj) {
|
for (int jj = j; jj < j + fullTileSize; ++jj) {
|
||||||
|
Reference in New Issue
Block a user