28class EXPCL_PANDA_PGRAPH StencilAttrib :
public RenderAttrib {
36 enum StencilRenderState {
37 SRS_front_comparison_function,
38 SRS_front_stencil_fail_operation,
39 SRS_front_stencil_pass_z_fail_operation,
40 SRS_front_stencil_pass_z_pass_operation,
46 SRS_back_comparison_function,
47 SRS_back_stencil_fail_operation,
48 SRS_back_stencil_pass_z_fail_operation,
49 SRS_back_stencil_pass_z_pass_operation,
58 enum StencilComparisonFunction {
60 SCF_less_than = M_less,
62 SCF_less_than_or_equal = M_less_equal,
63 SCF_greater_than = M_greater,
64 SCF_not_equal = M_not_equal,
65 SCF_greater_than_or_equal = M_greater_equal,
66 SCF_always = M_always,
69 enum StencilOperation {
76 SO_increment_saturate,
77 SO_decrement_saturate,
83 static CPT(RenderAttrib)
make(
85 PandaCompareFunc front_comparison_function,
86 StencilOperation stencil_fail_operation,
87 StencilOperation stencil_pass_z_fail_operation,
88 StencilOperation front_stencil_pass_z_pass_operation,
90 unsigned int read_mask,
91 unsigned int write_mask=~(
unsigned int)0);
96 PandaCompareFunc front_comparison_function,
97 StencilOperation stencil_fail_operation,
98 StencilOperation stencil_pass_z_fail_operation,
99 StencilOperation front_stencil_pass_z_pass_operation,
101 unsigned int read_mask,
102 unsigned int write_mask,
103 PandaCompareFunc back_comparison_function,
104 StencilOperation back_stencil_fail_operation,
105 StencilOperation back_stencil_pass_z_fail_operation,
106 StencilOperation back_stencil_pass_z_pass_operation);
110 PandaCompareFunc front_comparison_function,
111 StencilOperation stencil_fail_operation,
112 StencilOperation stencil_pass_z_fail_operation,
113 StencilOperation front_stencil_pass_z_pass_operation,
115 unsigned int read_mask,
116 unsigned int write_mask,
118 unsigned int clear_value);
123 PandaCompareFunc front_comparison_function,
124 StencilOperation stencil_fail_operation,
125 StencilOperation stencil_pass_z_fail_operation,
126 StencilOperation front_stencil_pass_z_pass_operation,
128 unsigned int read_mask,
129 unsigned int write_mask,
130 PandaCompareFunc back_comparison_function,
131 StencilOperation back_stencil_fail_operation,
132 StencilOperation back_stencil_pass_z_fail_operation,
133 StencilOperation back_stencil_pass_z_pass_operation,
135 unsigned int clear_value);
137 INLINE
unsigned int get_render_state(StencilRenderState render_state_identifier)
const;
140 static const char *stencil_render_state_name_array [SRS_total];
142 virtual void output(std::ostream &out)
const;
145 virtual int compare_to_impl(
const RenderAttrib *other)
const;
146 virtual size_t get_hash_impl()
const;
149 unsigned int _stencil_render_states [SRS_total];
152 static int get_class_slot() {
155 virtual int get_slot()
const {
156 return get_class_slot();
158 MAKE_PROPERTY(class_slot, get_class_slot);
165 static TypedWritable *make_from_bam(
const FactoryParams ¶ms);
172 static void init_type() {
173 RenderAttrib::init_type();
175 RenderAttrib::get_class_type());
176 _attrib_slot =
register_slot(_type_handle, 100,
new StencilAttrib);
179 return get_class_type();
181 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
185 static int _attrib_slot;
static ConstPointerTo< RenderAttrib > make_with_clear(bool front_enable, PandaCompareFunc front_comparison_function, StencilOperation stencil_fail_operation, StencilOperation stencil_pass_z_fail_operation, StencilOperation front_stencil_pass_z_pass_operation, unsigned int reference, unsigned int read_mask, unsigned int write_mask, bool clear, unsigned int clear_value)
Constructs a front face StencilAttrib.
static ConstPointerTo< RenderAttrib > make_2_sided_with_clear(bool front_enable, bool back_enable, PandaCompareFunc front_comparison_function, StencilOperation stencil_fail_operation, StencilOperation stencil_pass_z_fail_operation, StencilOperation front_stencil_pass_z_pass_operation, unsigned int reference, unsigned int read_mask, unsigned int write_mask, PandaCompareFunc back_comparison_function, StencilOperation back_stencil_fail_operation, StencilOperation back_stencil_pass_z_fail_operation, StencilOperation back_stencil_pass_z_pass_operation, bool clear, unsigned int clear_value)
Constructs a two-sided StencilAttrib.
static ConstPointerTo< RenderAttrib > make_2_sided(bool front_enable, bool back_enable, PandaCompareFunc front_comparison_function, StencilOperation stencil_fail_operation, StencilOperation stencil_pass_z_fail_operation, StencilOperation front_stencil_pass_z_pass_operation, unsigned int reference, unsigned int read_mask, unsigned int write_mask, PandaCompareFunc back_comparison_function, StencilOperation back_stencil_fail_operation, StencilOperation back_stencil_pass_z_fail_operation, StencilOperation back_stencil_pass_z_pass_operation)
Constructs a two-sided StencilAttrib.
static ConstPointerTo< RenderAttrib > make(bool front_enable, PandaCompareFunc front_comparison_function, StencilOperation stencil_fail_operation, StencilOperation stencil_pass_z_fail_operation, StencilOperation front_stencil_pass_z_pass_operation, unsigned int reference, unsigned int read_mask, unsigned int write_mask=~(unsigned int) 0)
Constructs a front face StencilAttrib.