MultitexReducer

class MultitexReducer

This object presents an interface for generating new texture images that represent the combined images from one or more individual textures, reproducing certain kinds of multitexture effects without depending on multitexture support in the hardware.

This also flattens out texture matrices and removes extra texture coordinates from the Geoms. It is thus not a complete substitute for true multitexturing, because it does not lend itself well to dynamic animation of the textures once they have been flattened. It is, however, useful for “baking in” a particular multitexture effect.

Inheritance diagram

Inheritance diagram of MultitexReducer

MultitexReducer(void)
MultitexReducer(MultitexReducer const&) = default
void clear(void)
void flatten(GraphicsOutput *window)
void scan(NodePath const &node)
void scan(NodePath const &node, NodePath const &state_from)
void scan(PandaNode *node, RenderState const *state, TransformState const *transform)

Starts scanning the hierarchy beginning at the indicated node. Any GeomNodes discovered in the hierarchy with multitexture will be added to internal structures in the MultitexReducer so that a future call to flatten() will operate on all of these at once.

This version of this method does not accumulate state from the parents of the indicated node; thus, only multitexture effects that have been applied at node and below will be considered.

Starts scanning the hierarchy beginning at the indicated node. Any GeomNodes discovered in the hierarchy with multitexture will be added to internal structures in the MultitexReducer so that a future call to flatten() will operate on all of these at once.

The second parameter represents the NodePath from which to accumulate the state that is considered for the multitexture. Pass an empty NodePath to accumulate all the state from the root of the graph, or you may specify some other node here in order to not consider nodes above that as contributing to the state to be flattened. This is particularly useful if you have some texture stage which is applied globally to a scene (for instance, a caustics effect), which you don’t want to be considered for flattening by the MultitexReducer.

void set_allow_tex_mat(bool allow_tex_mat)
void set_target(TextureStage *stage)
void set_use_geom(bool use_geom)