[][src]Macro vulkayes_core::color_blend_state_expr

macro_rules! color_blend_state_expr {
    (
		disabled & $color_write_mask: expr
	) => { ... };
    (
		(S * $src_color_blend_factor: ident) $color_blend_op: ident (D * $dst_color_blend_factor: ident)
			: (S * $src_alpha_blend_factor: ident) $alpha_blend_op: ident (D * $dst_alpha_blend_factor: ident)
			& $color_write_mask: expr
	) => { ... };
    (
		(S * $src_color_blend_factor: expr) {$color_blend_op: expr} (D * $dst_color_blend_factor: expr)
			: (S * $src_alpha_blend_factor: expr) {$alpha_blend_op: expr} (D * $dst_alpha_blend_factor: expr)
			& $color_write_mask: expr
	) => { ... };
}

Expands to vk::PipelineColorBlendAttachmentStateBuilder.

Syntax: color : alpha & mask

  • color - expression: ($src_factor) * src {$op} ($dst_factor) * dst specifying the source and destination factors (vk::BlendFactor) and blending operation (vk::BlendOp).
  • alpha - expression: ($src_factor) * src {$op} ($dst_factor) * dst specifying the source and destination factors (vk::BlendFactor) and blending operation (vk::BlendOp).
  • mask - value of type vk::ColorComponentFlags

The macro also accepts the token disabled & mask, which returns a builder with blending disabled.

Example:

// Blends based on alpha, stores the new alpha, doesn't mask anything
color_blend_state_expr!(
	(S * SRC_ALPHA) ADD (D * ONE_MINUS_SRC_ALPHA)
		: (S * ONE) SUBTRACT (D * ZERO)
		& vk::ColorComponentFlags::all()
);
// Disables blending, doesn't mask anything
color_blend_state_expr!(
	disabled & vk::ColorComponentFlags::all()
);
// Same as the first one, but variables are expressions instead of identifiers.
color_blend_state_expr!(
	(S * vk::BlendFactor::SRC_ALPHA) {vk::BlendOp::ADD} (D * vk::BlendFactor::ONE_MINUS_SRC_ALPHA)
		: (S * vk::BlendFactor::ONE) {vk::BlendOp::SUBTRACT} (D * vk::BlendFactor::ZERO)
		& vk::ColorComponentFlags::all()
);