TagStateManager

class TagStateManager

The TagStateManager stores a list of RenderStates assigned to different steps in the pipeline. For example, there are a list of shadow states, which are applied whenever objects are rendered from a shadow camera.

The Manager also stores a list of all cameras used in the different stages, to keep track of the states used and to be able to attach new states.

Inheritance diagram

Inheritance diagram of TagStateManager

TagStateManager(NodePath main_cam_node)
TagStateManager(TagStateManager const&) = default

This constructs a new TagStateManager. The #main_cam_node should refer to the main scene camera, and will most likely be base.cam. It is necessary to pass the camera because the C++ code does not have access to the showbase.

void apply_state(std::string const &state, NodePath np, Shader *shader, std::string const &name, int sort)

This applies a shader to the given NodePath which is used when the NodePath is rendered by any registered camera for that pass. It also disables color write depending on the pass.

This applies a shader to the given NodePath which is used when the NodePath is rendered by any registered camera of the container.

void cleanup_states(void)

This cleans up all states which were registered to the TagStateManager. It also calls Camera::clear_tag_states() on the main_cam_node and all attached cameras.

BitMask32 get_mask(std::string const &container_name)

This returns the mask of a given render pass, which can be used to either show or hide objects from this pass.

void register_camera(std::string const &state, Camera *source)

This registers a new camera which will be used to render the given pass. The TagStateManager will keep track of the camera and applies all registered states onto the camera with Camera::set_tag_state(). It also applies the appropriate camera mask to the camera, and sets an initial state to disable color write depending on the pass.

This registers a new camera to a container, and sets its initial state as well as the camera mask.

void unregister_camera(std::string const &state, Camera *source)

This unregisters a camera from the list of shadows cameras. It also resets all tag states of the camera, and also its initial state.

This unregisters a camera from the list of cameras of a given container. It also resets all tag states of the camera, and also its initial state.