mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-01 01:07:51 -04:00
support transparency in material's diffa
This commit is contained in:
parent
11189c99b7
commit
2d0fb30fd6
@ -184,6 +184,13 @@ ConfigVariableInt egg_vertex_max_num_joints
|
|||||||
"more than this number of joints, the joints with the lesser membership "
|
"more than this number of joints, the joints with the lesser membership "
|
||||||
"value are ignored. Set this to -1 to allow any number of joints."));
|
"value are ignored. Set this to -1 to allow any number of joints."));
|
||||||
|
|
||||||
|
ConfigVariableBool egg_implicit_alpha_binary
|
||||||
|
("egg-implicit-alpha-binary", false,
|
||||||
|
PRC_DESC("If this is true, then a <Scalar> alpha value appearing in an egg "
|
||||||
|
"file that appears to specify only a binary (0 or 1) value for alpha "
|
||||||
|
"will automatically be downgraded to alpha type \"binary\" instead of "
|
||||||
|
"whatever appears in the egg file."));
|
||||||
|
|
||||||
ConfigureFn(config_egg2pg) {
|
ConfigureFn(config_egg2pg) {
|
||||||
init_libegg2pg();
|
init_libegg2pg();
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,7 @@ extern EXPCL_PANDAEGG ConfigVariableBool egg_emulate_bface;
|
|||||||
extern EXPCL_PANDAEGG ConfigVariableBool egg_preload_simple_textures;
|
extern EXPCL_PANDAEGG ConfigVariableBool egg_preload_simple_textures;
|
||||||
extern EXPCL_PANDAEGG ConfigVariableDouble egg_vertex_membership_quantize;
|
extern EXPCL_PANDAEGG ConfigVariableDouble egg_vertex_membership_quantize;
|
||||||
extern EXPCL_PANDAEGG ConfigVariableInt egg_vertex_max_num_joints;
|
extern EXPCL_PANDAEGG ConfigVariableInt egg_vertex_max_num_joints;
|
||||||
|
extern EXPCL_PANDAEGG ConfigVariableBool egg_implicit_alpha_binary;
|
||||||
|
|
||||||
extern EXPCL_PANDAEGG void init_libegg2pg();
|
extern EXPCL_PANDAEGG void init_libegg2pg();
|
||||||
|
|
||||||
|
@ -247,10 +247,15 @@ fill_state(EggPrimitive *egg_prim) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (egg_prim->has_material()) {
|
if (egg_prim->has_material()) {
|
||||||
|
PT(EggMaterial) material = egg_prim->get_material();
|
||||||
CPT(RenderAttrib) mt =
|
CPT(RenderAttrib) mt =
|
||||||
get_material_attrib(egg_prim->get_material(),
|
get_material_attrib(material, egg_prim->get_bface_flag());
|
||||||
egg_prim->get_bface_flag());
|
|
||||||
add_attrib(mt);
|
add_attrib(mt);
|
||||||
|
|
||||||
|
if (material->has_diff() && material->get_diff()[3] != 1.0) {
|
||||||
|
implicit_alpha = true;
|
||||||
|
binary_alpha_only = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -294,11 +299,13 @@ fill_state(EggPrimitive *egg_prim) {
|
|||||||
case EggRenderMode::AM_ms:
|
case EggRenderMode::AM_ms:
|
||||||
case EggRenderMode::AM_ms_mask:
|
case EggRenderMode::AM_ms_mask:
|
||||||
case EggRenderMode::AM_dual:
|
case EggRenderMode::AM_dual:
|
||||||
// Any of these modes gets implicitly downgraded to AM_binary, if
|
if (egg_implicit_alpha_binary) {
|
||||||
// all of the alpha sources only contribute a binary value to
|
// Any of these modes gets implicitly downgraded to AM_binary, if
|
||||||
// alpha.
|
// all of the alpha sources only contribute a binary value to
|
||||||
if (binary_alpha_only) {
|
// alpha.
|
||||||
am = EggRenderMode::AM_binary;
|
if (binary_alpha_only) {
|
||||||
|
am = EggRenderMode::AM_binary;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user