mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 16:58:40 -04:00
write render state info to generated shader as comment. also fix a switch with missing breaks
This commit is contained in:
parent
f9b4dad6f9
commit
6fde10f9d1
@ -662,6 +662,10 @@ synthesize_shader(const RenderState *rs) {
|
||||
|
||||
text << "//Cg\n";
|
||||
|
||||
text << "/* Generated shader for render state " << rs << ":\n";
|
||||
rs->write(text, 2);
|
||||
text << "*/\n";
|
||||
|
||||
text << "void vshader(\n";
|
||||
const TextureAttrib *texture = DCAST(TextureAttrib, rs->get_attrib_def(TextureAttrib::get_class_slot()));
|
||||
const TexGenAttrib *tex_gen = DCAST(TexGenAttrib, rs->get_attrib_def(TexGenAttrib::get_class_slot()));
|
||||
@ -1346,15 +1350,31 @@ synthesize_shader(const RenderState *rs) {
|
||||
text << "\t // Shader includes alpha test:\n";
|
||||
double ref = alpha_test->get_reference_alpha();
|
||||
switch (alpha_test->get_mode()) {
|
||||
case RenderAttrib::M_never: text<<"\t discard;\n";
|
||||
case RenderAttrib::M_less: text<<"\t if (result.a >= "<<ref<<") discard;\n";
|
||||
case RenderAttrib::M_equal: text<<"\t if (result.a != "<<ref<<") discard;\n";
|
||||
case RenderAttrib::M_less_equal: text<<"\t if (result.a > "<<ref<<") discard;\n";
|
||||
case RenderAttrib::M_greater: text<<"\t if (result.a <= "<<ref<<") discard;\n";
|
||||
case RenderAttrib::M_not_equal: text<<"\t if (result.a == "<<ref<<") discard;\n";
|
||||
case RenderAttrib::M_greater_equal: text<<"\t if (result.a < "<<ref<<") discard;\n";
|
||||
case RenderAttrib::M_none: break;
|
||||
case RenderAttrib::M_always: break;
|
||||
case RenderAttrib::M_never:
|
||||
text << "\t discard;\n";
|
||||
break;
|
||||
case RenderAttrib::M_less:
|
||||
text << "\t if (result.a >= " << ref << ") discard;\n";
|
||||
break;
|
||||
case RenderAttrib::M_equal:
|
||||
text << "\t if (result.a != " << ref << ") discard;\n";
|
||||
break;
|
||||
case RenderAttrib::M_less_equal:
|
||||
text << "\t if (result.a > " << ref << ") discard;\n";
|
||||
break;
|
||||
case RenderAttrib::M_greater:
|
||||
text << "\t if (result.a <= " << ref << ") discard;\n";
|
||||
break;
|
||||
case RenderAttrib::M_not_equal:
|
||||
text << "\t if (result.a == " << ref << ") discard;\n";
|
||||
break;
|
||||
case RenderAttrib::M_greater_equal:
|
||||
text << "\t if (result.a < " << ref << ") discard;\n";
|
||||
break;
|
||||
case RenderAttrib::M_none:
|
||||
case RenderAttrib::M_always:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user