Administrative source import: native x86 compilation passed for 423 authored units. Source placement and submission states are migrated separately; this commit does not imply peer acceptance.
Previous head: 35d2a8cb36
Payload SHA256: 592f016d2730c5593bb653aa054c1e5f76a6df72c8f5a09e66f74876e2e33dee
14 lines
784 B
C++
14 lines
784 B
C++
#include "Render/BlendColor.h"
|
|
|
|
// OFFSET: 0x0055CFC0
|
|
// FUNCTION: fn_02095
|
|
std::uint32_t BlendColor(std::uint32_t base, std::uint32_t overlay) {
|
|
const float alpha = static_cast<float>(overlay >> 24) / 255.0f;
|
|
const float inverse = 1.0f - alpha;
|
|
const auto channel = [](std::uint32_t color, unsigned shift) { return static_cast<float>((color >> shift) & 255u); };
|
|
const unsigned red = static_cast<unsigned>(channel(base, 16) * inverse + channel(overlay, 16) * alpha);
|
|
const unsigned green = static_cast<unsigned>(channel(overlay, 8) * alpha + channel(base, 8) * inverse);
|
|
const unsigned blue = static_cast<unsigned>(channel(base, 0) * inverse + channel(overlay, 0) * alpha);
|
|
|
|
return (base & 0xFF000000u) | ((red & 255u) << 16) | ((green & 255u) << 8) | (blue & 255u);
|
|
}
|