rodecomp/Source/Render/BlendColor.cpp
ragnarok-clanker 56b3ce6047 Decompile fn_02095 (CRenderer::BlendColor)
Batch #13848 by eAthena: 0 byte-identical, 1 confirmed by peer review.

- fn_02095 CRenderer::BlendColor: logic confirmed by peer review

Peer-reviewed-by: Yommy, SapitoSucio, StrawberrysherbetIX
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
2026-11-07 00:43:04 +00:00

14 lines
881 B
C++

#include "Render/BlendColor.h"
// OFFSET: 0x0055CFC0
// FUNCTION: fn_02095
std::uint32_t CRenderer::BlendColor(std::uint32_t base, std::uint32_t overlay) {
const float alpha = static_cast<float>(static_cast<int>(overlay >> 24)) / 255.0f;
const float inverse = 1.0f - alpha;
auto* channels = reinterpret_cast<unsigned char*>(&base);
channels[2] = static_cast<unsigned char>(static_cast<int>(static_cast<float>(channels[2]) * inverse + static_cast<float>(static_cast<unsigned char>(overlay >> 16)) * alpha));
channels[1] = static_cast<unsigned char>(static_cast<int>(static_cast<float>(static_cast<unsigned char>(overlay >> 8)) * alpha + static_cast<float>(channels[1]) * inverse));
channels[0] = static_cast<unsigned char>(static_cast<int>(static_cast<float>(channels[0]) * inverse + static_cast<float>(static_cast<unsigned char>(overlay)) * alpha));
return base;
}