Sirikata
|
Takes all instanced geometry in a mesh and squashes it to as few SubMeshGeometry/InstanceGeometries as possible. More...
#include <SquashInstancedGeometryFilter.hpp>
Public Member Functions | |
SquashInstancedGeometryFilter (const String &args) | |
virtual | ~SquashInstancedGeometryFilter () |
virtual FilterDataPtr | apply (FilterDataPtr input) |
Static Public Member Functions | |
static Filter * | create (const String &args) |
Takes all instanced geometry in a mesh and squashes it to as few SubMeshGeometry/InstanceGeometries as possible.
In the ideal case, all SubMeshGeometries use the same single material, resulting in 1 material, 1 SubMeshGeometry with 1 Primitive, and 1 InstanceGeometry referring to it, resulting in only 1 draw call. Note that this causes all useful information about components in the model to be lost -- they all appear as a single, unified object -- so its mainly useful for generating an efficient model for display.
Sirikata::Mesh::SquashInstancedGeometryFilter::SquashInstancedGeometryFilter | ( | const String & | args | ) |
Referenced by create().
virtual Sirikata::Mesh::SquashInstancedGeometryFilter::~SquashInstancedGeometryFilter | ( | ) | [inline, virtual] |
FilterDataPtr Sirikata::Mesh::SquashInstancedGeometryFilter::apply | ( | FilterDataPtr | input | ) | [virtual] |
Implements Sirikata::Mesh::Filter.
References Sirikata::Mesh::SubMeshGeometry::append(), Sirikata::Mesh::GeometryInstance::geometryIndex, Sirikata::Matrix4x4< float32 >::identity(), Sirikata::Mesh::GeometryInstance::materialBindingMap, Sirikata::Mesh::Meshdata::GeometryInstanceIterator::next(), Sirikata::Mesh::GeometryInstance::parentNode, and Sirikata::Mesh::SubMeshGeometry::recomputeBounds().
static Filter* Sirikata::Mesh::SquashInstancedGeometryFilter::create | ( | const String & | args | ) | [inline, static] |
References SquashInstancedGeometryFilter().
Referenced by init().