48 lines
1.0 KiB
Rust
48 lines
1.0 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
|
#[serde(rename_all = "kebab-case")]
|
|
pub enum BlendMode {
|
|
Normal,
|
|
Darken,
|
|
Multiply,
|
|
ColorBurn,
|
|
Lighten,
|
|
Screen,
|
|
PlusLighter,
|
|
ColorDodge,
|
|
Overlay,
|
|
SoftLight,
|
|
HardLight,
|
|
Difference,
|
|
Exclusion,
|
|
Hue,
|
|
Saturation,
|
|
Color,
|
|
Luminosity,
|
|
}
|
|
|
|
impl BlendMode {
|
|
pub fn shader_code(self) -> u32 {
|
|
match self {
|
|
Self::Normal => 0,
|
|
Self::Darken => 1,
|
|
Self::Multiply => 2,
|
|
Self::ColorBurn => 3,
|
|
Self::Lighten => 4,
|
|
Self::Screen => 5,
|
|
Self::PlusLighter => 6,
|
|
Self::ColorDodge => 7,
|
|
Self::Overlay => 8,
|
|
Self::SoftLight => 9,
|
|
Self::HardLight => 10,
|
|
Self::Difference => 11,
|
|
Self::Exclusion => 12,
|
|
Self::Hue => 13,
|
|
Self::Saturation => 14,
|
|
Self::Color => 15,
|
|
Self::Luminosity => 16,
|
|
}
|
|
}
|
|
}
|