pub mod blendmodes;
use crate::core::{Color};
#[derive(Copy, Clone, Debug, PartialEq)]
pub struct BlendMode {
pub color: BlendingFunction,
pub alpha: BlendingFunction,
pub constant_value: Color,
}
impl Default for BlendMode {
fn default() -> BlendMode {
BlendMode {
color: BlendingFunction::AlwaysReplace,
alpha: BlendingFunction::AlwaysReplace,
constant_value: Color::WHITE,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum BlendingFunction {
AlwaysReplace,
Min,
Max,
Addition {
source: LinearBlendingFactor,
destination: LinearBlendingFactor,
},
Subtraction {
source: LinearBlendingFactor,
destination: LinearBlendingFactor,
},
ReverseSubtraction {
source: LinearBlendingFactor,
destination: LinearBlendingFactor,
},
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum LinearBlendingFactor {
Zero,
One,
SourceColor,
OneMinusSourceColor,
DestinationColor,
OneMinusDestinationColor,
SourceAlpha,
SourceAlphaSaturate,
OneMinusSourceAlpha,
DestinationAlpha,
OneMinusDestinationAlpha,
ConstantColor,
OneMinusConstantColor,
ConstantAlpha,
OneMinusConstantAlpha,
}