hexga_engine_render/
stencil.rs1use super::*;
2
3
4#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
5#[cfg_attr(feature = "hexga_io", derive(Save, Load))]
6#[derive(Debug, Copy, Clone, PartialEq)]
7pub struct StencilState {
8 pub front: StencilFaceState,
9 pub back: StencilFaceState,
10}
11
12
13#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
14#[cfg_attr(feature = "hexga_io", derive(Save, Load))]
15#[derive(Debug, Copy, Clone, PartialEq, Eq)]
16pub struct StencilFaceState {
17 pub fail_op: StencilOp,
19
20 pub depth_fail_op: StencilOp,
22
23 pub pass_op: StencilOp,
26
27 pub test_func: StencilCompareFunc,
30
31 pub test_ref: i32,
33
34 pub test_mask: u32,
36
37 pub write_mask: u32,
40}
41
42#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
44#[cfg_attr(feature = "hexga_io", derive(Save, Load))]
45#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)]
46pub enum StencilOp {
47 Keep,
49 Zero,
50 Replace,
51 IncrementClamp,
52 DecrementClamp,
53 Invert,
54 IncrementWrap,
55 DecrementWrap,
56}
57
58#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
60#[cfg_attr(feature = "hexga_io", derive(Save, Load))]
61#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
62pub enum StencilCompareFunc {
63 Always,
65 Never,
66 Less,
67 Equal,
68 LessOrEqual,
69 Greater,
70 NotEqual,
71 GreaterOrEqual,
72}
73