diff --git a/src/k_color.c b/src/k_color.c index ac1a2e6c8..d73a938e7 100644 --- a/src/k_color.c +++ b/src/k_color.c @@ -24,11 +24,18 @@ --------------------------------------------------*/ UINT8 K_ColorRelativeLuminance(UINT8 r, UINT8 g, UINT8 b) { - UINT32 redweight = 1063 * r; - UINT32 greenweight = 3576 * g; - UINT32 blueweight = 361 * b; - UINT32 brightness = (redweight + greenweight + blueweight) / 5000; - return min(brightness, UINT8_MAX); + double redWeight = ((r * 1.0) / UINT8_MAX); + double greenWeight = ((g * 1.0) / UINT8_MAX); + double blueWeight = ((b * 1.0) / UINT8_MAX); + double brightness = 0.5; + + redWeight = pow(redWeight, 2.2) * 0.2126; + greenWeight = pow(greenWeight, 2.2) * 0.7152; + blueWeight = pow(greenWeight, 2.2) * 0.0722; + + brightness = pow(redWeight + greenWeight + blueWeight, 1.0 / 2.2); + + return (UINT8)(brightness * UINT8_MAX); } /*--------------------------------------------------