|
|
|
@ -10406,9 +10406,17 @@ void MeshTexture::GlobalSeamLeveling3() |
|
|
|
if (a == Color::ZERO) |
|
|
|
if (a == Color::ZERO) |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
Pixel8U& v = image.at<Pixel8U>(r,c); |
|
|
|
Pixel8U& v = image.at<Pixel8U>(r,c); |
|
|
|
|
|
|
|
// 替换原来的 RGB2YCBCR → 加减 → YCBCR2RGB 那段
|
|
|
|
|
|
|
|
const float maxAdjY = 25.0f; |
|
|
|
|
|
|
|
const float maxAdjC = 12.0f; |
|
|
|
|
|
|
|
Color clamped_a; |
|
|
|
|
|
|
|
clamped_a[0] = CLAMP(a[0], -maxAdjY, maxAdjY); |
|
|
|
|
|
|
|
clamped_a[1] = CLAMP(a[1], -maxAdjC, maxAdjC); |
|
|
|
|
|
|
|
clamped_a[2] = CLAMP(a[2], -maxAdjC, maxAdjC); |
|
|
|
|
|
|
|
|
|
|
|
const Color col(RGB2YCBCR(Color(v))); |
|
|
|
const Color col(RGB2YCBCR(Color(v))); |
|
|
|
const Color acol(YCBCR2RGB(Color(col+a))); |
|
|
|
const Color acol(YCBCR2RGB(Color(col + clamped_a))); |
|
|
|
for (int p=0; p<3; ++p) |
|
|
|
for (int p = 0; p < 3; ++p) |
|
|
|
v[p] = (uint8_t)CLAMP(ROUND2INT(acol[p]), 0, 255); |
|
|
|
v[p] = (uint8_t)CLAMP(ROUND2INT(acol[p]), 0, 255); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|