software renderer, part D
This commit is contained in:
parent
e97ab142ff
commit
2c3eaee513
13
extern/imgui_software_renderer/imgui_sw.cpp
vendored
13
extern/imgui_software_renderer/imgui_sw.cpp
vendored
|
@ -66,12 +66,17 @@ union ColorInt
|
|||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
uint32_t blend(const ColorInt &target, const ColorInt &source)
|
||||
static inline uint32_t blend(const ColorInt &target, const ColorInt &source)
|
||||
{
|
||||
if (source.a == 0) return target.u32;
|
||||
if (source.a >= 255) return source.u32;
|
||||
return (target.a << 24u) | (((source.b * source.a + target.b * (255 - source.a)) / 255) << 16u)
|
||||
| (((source.g * source.a + target.g * (255 - source.a)) / 255) << 8u)
|
||||
| ((source.r * source.a + target.r * (255 - source.a)) / 255);
|
||||
const unsigned char ia=255-source.a;
|
||||
return (
|
||||
(target.a << 24u) |
|
||||
(((source.b * source.a + target.b * ia + 255) >> 8) << 16u) |
|
||||
(((source.g * source.a + target.g * ia + 255) >> 8) << 8u) |
|
||||
(((source.r * source.a + target.r * ia + 255) >> 8))
|
||||
);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in a new issue