39 constexpr BlendMode(VkBlendFactor srcBlendFactor,
40 VkBlendFactor dstBlendFactor,
41 VkBlendOp blendOp = VK_BLEND_OP_ADD) noexcept :
42 _srcColorBlendFactor(srcBlendFactor),
43 _dstColorBlendFactor(dstBlendFactor),
44 _colorBlendOp(blendOp),
45 _srcAlphaBlendFactor(srcBlendFactor),
46 _dstAlphaBlendFactor(dstBlendFactor),
47 _alphaBlendOp(blendOp)
49 constexpr BlendMode(VkBlendFactor srcColorBlendFactor,
50 VkBlendFactor dstColorBlendFactor,
51 VkBlendOp colorBlendOp,
52 VkBlendFactor srcAlphaBlendFactor,
53 VkBlendFactor dstAlphaBlendFactor,
54 VkBlendOp alphaBlendOp) noexcept :
55 _srcColorBlendFactor(srcColorBlendFactor),
56 _dstColorBlendFactor(dstColorBlendFactor),
57 _colorBlendOp(colorBlendOp),
58 _srcAlphaBlendFactor(srcAlphaBlendFactor),
59 _dstAlphaBlendFactor(dstAlphaBlendFactor),
60 _alphaBlendOp(alphaBlendOp)
63 [[nodiscard]]
constexpr bool operator==(
BlendMode const& right)
const
65 return this->_srcColorBlendFactor == right._srcColorBlendFactor &&
66 this->_dstColorBlendFactor == right._dstColorBlendFactor && this->_colorBlendOp == right._colorBlendOp &&
67 this->_srcAlphaBlendFactor == right._srcAlphaBlendFactor &&
68 this->_dstAlphaBlendFactor == right._dstAlphaBlendFactor && this->_alphaBlendOp == right._alphaBlendOp;
70 [[nodiscard]]
constexpr bool operator!=(
BlendMode const& right)
const {
return !this->operator==(right); }
72 VkBlendFactor _srcColorBlendFactor = VK_BLEND_FACTOR_SRC_ALPHA;
73 VkBlendFactor _dstColorBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
74 VkBlendOp _colorBlendOp = VK_BLEND_OP_ADD;
75 VkBlendFactor _srcAlphaBlendFactor = VK_BLEND_FACTOR_ONE;
76 VkBlendFactor _dstAlphaBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
77 VkBlendOp _alphaBlendOp = VK_BLEND_OP_ADD;
constexpr BlendMode BlendAdd(VK_BLEND_FACTOR_SRC_ALPHA, VK_BLEND_FACTOR_ONE, VK_BLEND_OP_ADD, VK_BLEND_FACTOR_ONE, VK_BLEND_FACTOR_ONE, VK_BLEND_OP_ADD)
Add source to dest.
constexpr BlendMode BlendMax(VK_BLEND_FACTOR_ONE, VK_BLEND_FACTOR_ONE, VK_BLEND_OP_MAX)
Take maximum between source and dest.
constexpr BlendMode BlendNone(VK_BLEND_FACTOR_ONE, VK_BLEND_FACTOR_ZERO, VK_BLEND_OP_ADD)
Overwrite dest with source.
constexpr BlendMode BlendMultiply(VK_BLEND_FACTOR_DST_COLOR, VK_BLEND_FACTOR_ZERO, VK_BLEND_OP_ADD)
Multiply source and dest.
constexpr BlendMode BlendMin(VK_BLEND_FACTOR_ONE, VK_BLEND_FACTOR_ONE, VK_BLEND_OP_MIN)
Take minimum between source and dest.
constexpr BlendMode BlendAlpha(VK_BLEND_FACTOR_SRC_ALPHA, VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA, VK_BLEND_OP_ADD, VK_BLEND_FACTOR_ONE, VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA, VK_BLEND_OP_ADD)
Blend source and dest according to dest alpha.