我有一个复杂的问题,但可以通过解决这个小问题来解决。 我想制作一个逐像素工作的着色器。
我有一张图片,定义了基础颜色(图片中有一些像素具有这种颜色,还有很多其他接近这种颜色的像素):
Hex: #188DD9
HSL: 204° 80% 47%
RGB: 24 141 217
我知道我的目标基础颜色:
Hex: #23752E
HSL: 128° 54% 30%
RGB: 35 117 46
所以,我想要给一张图片上色。
我的假设是,如果我找到这两个HSL值之间的相关性,我就可以逐像素地对我的图片进行上色。
目前,我发现如果我将基础颜色色调移动(目标色调 - 基础色调)= -76,那么色调就会正常。
您能告诉我如何联系饱和度和亮度来解决这个问题吗?
if (S' > Smax) S' = Smax;
,其中Smax是您的最大有效饱和度(通常为1.0、100或255)。另外,我建议使用long int或float进行中间计算,否则可能会遇到算术溢出问题。此外,如果使用整数,请记得先进行乘法运算再进行除法运算。 - Ilmari Karonen