RenderEffect

class RenderEffect

Bases: TypedWritableReferenceCount

This is the base class for a number of special render effects that may be set on scene graph nodes to change the way they render. This includes BillboardEffect, DecalEffect, etc.

RenderEffect represents render properties that must be applied as soon as they are encountered in the scene graph, rather than propagating down to the leaves. This is different from RenderAttrib, which represents properties like color and texture that don’t do anything until they propagate down to a GeomNode.

You should not attempt to create or modify a RenderEffect directly; instead, use the make() method of the appropriate kind of effect you want. This will allocate and return a new RenderEffect of the appropriate type, and it may share pointers if possible. Do not modify the new RenderEffect if you wish to change its properties; instead, create a new one.

Inheritance diagram

Inheritance diagram of RenderEffect

int compare_to(RenderEffect const &other) const

Provides an arbitrary ordering among all unique RenderEffects, so we can store the essentially different ones in a big set and throw away the rest.

This method is not needed outside of the RenderEffect class because all equivalent RenderEffect objects are guaranteed to share the same pointer; thus, a pointer comparison is always sufficient.

static TypeHandle get_class_type(void)
static int get_num_effects(void)

Returns the total number of unique RenderEffect objects allocated in the world. This will go up and down during normal operations.

static void list_effects(std::ostream &out)

Lists all of the RenderEffects in the cache to the output stream, one per line. This can be quite a lot of output if the cache is large, so be prepared.

virtual void output(std::ostream &out) const
static bool validate_effects(void)

Ensures that the cache is still stored in sorted order. Returns true if so, false if there is a problem (which implies someone has modified one of the supposedly-const RenderEffect objects).

virtual void write(std::ostream &out, int indent_level) const