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)
|
#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;
|
if (source.a >= 255) return source.u32;
|
||||||
return (target.a << 24u) | (((source.b * source.a + target.b * (255 - source.a)) / 255) << 16u)
|
const unsigned char ia=255-source.a;
|
||||||
| (((source.g * source.a + target.g * (255 - source.a)) / 255) << 8u)
|
return (
|
||||||
| ((source.r * source.a + target.r * (255 - source.a)) / 255);
|
(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