mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-28 07:48:37 -04:00
pgraph: Remove unused vertices during premunge phase
Disable with premunge-remove-unused-vertices config var - let me know if causes issues for you, performance or otherwise, though!
This commit is contained in:
parent
4d5d7047af
commit
fc8c07a949
@ -290,6 +290,11 @@ ConfigVariableBool premunge_data
|
|||||||
"encoding requirements, as appropriate. When this is false, the "
|
"encoding requirements, as appropriate. When this is false, the "
|
||||||
"data will be munged at render time instead."));
|
"data will be munged at render time instead."));
|
||||||
|
|
||||||
|
ConfigVariableBool premunge_remove_unused_vertices
|
||||||
|
("premunge-remove-unused-vertices", true,
|
||||||
|
PRC_DESC("Set this true to remove unused vertices as part of the premunge "
|
||||||
|
"which occurs when models are loaded from disk."));
|
||||||
|
|
||||||
ConfigVariableBool preserve_geom_nodes
|
ConfigVariableBool preserve_geom_nodes
|
||||||
("preserve-geom-nodes", false,
|
("preserve-geom-nodes", false,
|
||||||
PRC_DESC("This specifies the default value for the \"preserved\" flag on "
|
PRC_DESC("This specifies the default value for the \"preserved\" flag on "
|
||||||
|
@ -55,6 +55,7 @@ extern ConfigVariableBool depth_offset_decals;
|
|||||||
extern ConfigVariableInt max_collect_vertices;
|
extern ConfigVariableInt max_collect_vertices;
|
||||||
extern ConfigVariableInt max_collect_indices;
|
extern ConfigVariableInt max_collect_indices;
|
||||||
extern EXPCL_PANDA_PGRAPH ConfigVariableBool premunge_data;
|
extern EXPCL_PANDA_PGRAPH ConfigVariableBool premunge_data;
|
||||||
|
extern ConfigVariableBool premunge_remove_unused_vertices;
|
||||||
extern ConfigVariableBool preserve_geom_nodes;
|
extern ConfigVariableBool preserve_geom_nodes;
|
||||||
extern ConfigVariableBool flatten_geoms;
|
extern ConfigVariableBool flatten_geoms;
|
||||||
extern EXPCL_PANDA_PGRAPH ConfigVariableInt max_lenses;
|
extern EXPCL_PANDA_PGRAPH ConfigVariableInt max_lenses;
|
||||||
|
@ -892,6 +892,9 @@ do_premunge(GraphicsStateGuardianBase *gsg,
|
|||||||
CPT(Geom) geom = entry._geom.get_read_pointer();
|
CPT(Geom) geom = entry._geom.get_read_pointer();
|
||||||
PT(GeomMunger) munger = gsg->get_geom_munger(geom_state, current_thread);
|
PT(GeomMunger) munger = gsg->get_geom_munger(geom_state, current_thread);
|
||||||
entry._geom = transformer.premunge_geom(geom, munger);
|
entry._geom = transformer.premunge_geom(geom, munger);
|
||||||
|
if (premunge_remove_unused_vertices) {
|
||||||
|
transformer.register_vertices(entry._geom.get_write_pointer(), true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CLOSE_ITERATE_CURRENT_AND_UPSTREAM(_cycler);
|
CLOSE_ITERATE_CURRENT_AND_UPSTREAM(_cycler);
|
||||||
|
@ -176,5 +176,6 @@ premunge(PandaNode *root, const RenderState *initial_state) {
|
|||||||
if (_gsg != nullptr) {
|
if (_gsg != nullptr) {
|
||||||
PStatTimer timer(_premunge_collector);
|
PStatTimer timer(_premunge_collector);
|
||||||
r_premunge(root, initial_state);
|
r_premunge(root, initial_state);
|
||||||
|
_transformer.finish_apply();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user