use super::*;
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "hexga_io", derive(Save, Load))]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct BlendState {
pub equation: BlendEquation,
pub sfactor: BlendFactor,
pub dfactor: BlendFactor,
}
impl BlendState{
pub fn new(
equation: BlendEquation,
sfactor: BlendFactor,
dfactor: BlendFactor,
) -> Self {
Self {
equation,
sfactor,
dfactor,
}
}
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "hexga_io", derive(Save, Load))]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum BlendEquation {
Add,
Subtract,
ReverseSubtract,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "hexga_io", derive(Save, Load))]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum BlendFactor {
Zero,
One,
Value(BlendValue),
OneMinusValue(BlendValue),
SourceAlphaSaturate,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "hexga_io", derive(Save, Load))]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum BlendValue
{
SourceColor,
SourceAlpha,
DestinationColor,
DestinationAlpha,
}