mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Remove unused and rarely used irrlicht color functions (#15442)
SColor.h contains many functions which are unused and/or perform linear operations on non-linear 8 bit sRGB color values, such as the plus operator and `SColor::getInterpolated()`, and there is no documentation about missing gamma correction. Some of these functions are not called or called only once: * `getAverage(s16 color)`: Unused * `SColor::getLightness()`: Unused * `SColor::getAverage()`: Claims to determine a color's average intensity but calculates something significantly different since SColor represents non-linear sRGB values. * `SColor::getInterpolated_quadratic()`: Claims to interpolate between colors but uses the sRGB color space, which is neither physically nor perceptually linear. * `SColorf::getInterpolated_quadratic()`: Unused * `SColorf::setColorComponentValue()`: Unused Removing or inlining these functions can simplify the code and documenting gamma-incorrect operations can reduce confusion about what the functions do. This commit does the following: * Remove the above-mentioned unused functions * Inline `SColor::getAverage()` into `CIrrDeviceLinux::TextureToMonochromeCursor()` * Rename `SColor::getLuminance()` into `SColor::getBrightness()` since it does not determine a color's luminance but calculates something which differs significantly from physical luminance since SColor represents non-linear sRGB values. * Inline `SColor::getInterpolated_quadratic()` into `GameUI::update()`, where it is only used for the alpha value calculation for fading * Document gamma-incorrect behaviour in docstrings
This commit is contained in:
parent
8d2e770361
commit
7295b6c88c
5 changed files with 20 additions and 100 deletions
|
@ -1951,7 +1951,8 @@ Cursor CIrrDeviceLinux::TextureToMonochromeCursor(irr::video::ITexture *tex, con
|
|||
XPutPixel(sourceImage, x, y, 0);
|
||||
} else // color
|
||||
{
|
||||
if (pixelCol.getAverage() >= 127)
|
||||
if ((pixelCol.getRed() + pixelCol.getGreen() +
|
||||
pixelCol.getBlue()) / 3 >= 127)
|
||||
XPutPixel(sourceImage, x, y, 1);
|
||||
else
|
||||
XPutPixel(sourceImage, x, y, 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue