![]() |
OGRE
2.3.1
Object-Oriented Graphics Rendering Engine
|
#include <OgreVctImageVoxelizer.h>
Public Types | |
enum | DebugVisualizationMode { DebugVisualizationAlbedo, DebugVisualizationNormal, DebugVisualizationEmissive, DebugVisualizationNone } |
Public Member Functions | |
VctImageVoxelizer (IdType id, RenderSystem *renderSystem, HlmsManager *hlmsManager, VoxelizedMeshCache *meshCache, bool correctAreaLightShadows) | |
virtual | ~VctImageVoxelizer () |
void | addItem (Item *item) |
Adds an item to voxelize. More... | |
void | autoCalculateRegion (void) |
Does nothing if VctImageVoxelizer::setRegionToVoxelize( false, ... ) was called. More... | |
void | build (SceneManager *sceneManager) |
void | buildRelative (SceneManager *sceneManager, const int32 diffX, const int32 diffY, const int32 diffZ, const uint32 numOctantsX, const uint32 numOctantsY, const uint32 numOctantsZ) |
If the camera has moved by 1 voxel to the right (i.e. More... | |
void | dividideOctants (uint32 numOctantsX, uint32 numOctantsY, uint32 numOctantsZ) |
void | forceFullBuild (void) |
TextureGpu * | getAlbedoVox (void) |
VctVoxelizerSourceBase::DebugVisualizationMode | getDebugVisualizationMode (void) const |
TextureGpu * | getEmissiveVox (void) |
HlmsManager * | getHlmsManager (void) |
IdType | getId () const |
Get the unique id of this object. More... | |
TextureGpu * | getNormalVox (void) |
RenderSystem * | getRenderSystem (void) |
TextureGpuManager * | getTextureGpuManager (void) |
Vector3 | getVoxelCellSize (void) const |
Vector3 | getVoxelOrigin (void) const |
Vector3 | getVoxelResolution (void) const |
Vector3 | getVoxelSize (void) const |
bool | operator() (const IdObject &left, const IdObject &right) |
bool | operator() (const IdObject *left, const IdObject *right) |
void | removeAllItems (void) |
Removes all items added via VctImageVoxelizer::addItem. More... | |
void | removeItem (Item *item) |
Removes an item added via VctImageVoxelizer::addItem. More... | |
void | restoreSwappedVoxelTextures (void) |
Swaps mAlbedoVox & mAlbedoVoxAlt (and co.) if needed back to their originals. More... | |
void | setDebugVisualization (VctVoxelizerSourceBase::DebugVisualizationMode mode, SceneManager *sceneManager) |
void | setRegionToVoxelize (bool autoRegion, const Aabb ®ionToVoxelize, const Aabb &maxRegion=Aabb::BOX_INFINITE) |
Call this function before VctImageVoxelizer::autoCalculateRegion. More... | |
void | setSceneResolution (uint32 width, uint32 height, uint32 depth) |
Changes resolution. More... | |
The image voxelizer aims to be faster than VctImageVoxelizer for the whole scene by following a different approach:
1. For each single mesh, use VctImageVoxelizer to keep a voxelized texture version and save it to disk 2. At build time, VctImageVoxelizer builds the voxel of the whole scene by iterating each mesh using those cached texture versions like a collage.
|
inherited |
Ogre::VctImageVoxelizer::VctImageVoxelizer | ( | IdType | id, |
RenderSystem * | renderSystem, | ||
HlmsManager * | hlmsManager, | ||
VoxelizedMeshCache * | meshCache, | ||
bool | correctAreaLightShadows | ||
) |
|
virtual |
void Ogre::VctImageVoxelizer::addItem | ( | Item * | item | ) |
Adds an item to voxelize.
item |
void Ogre::VctImageVoxelizer::autoCalculateRegion | ( | void | ) |
Does nothing if VctImageVoxelizer::setRegionToVoxelize( false, ... ) was called.
void Ogre::VctImageVoxelizer::build | ( | SceneManager * | sceneManager | ) |
void Ogre::VctImageVoxelizer::buildRelative | ( | SceneManager * | sceneManager, |
const int32 | diffX, | ||
const int32 | diffY, | ||
const int32 | diffZ, | ||
const uint32 | numOctantsX, | ||
const uint32 | numOctantsY, | ||
const uint32 | numOctantsZ | ||
) |
If the camera has moved by 1 voxel to the right (i.e.
diffX = 1) we will "translate" the voxels by 1 and then partially rebuild those sections
sceneManager | |
diffX | How many voxels to translate to the left/right |
diffY | How many voxels to translate up/down |
diffZ | How many voxels to translate to the forward/backwards |
numOctantsX | If we must perform a full rebuild, then the parameter passed to dividideOctants |
numOctantsY | See numOctantsX |
numOctantsZ | See numOctantsX |
void Ogre::VctImageVoxelizer::dividideOctants | ( | uint32 | numOctantsX, |
uint32 | numOctantsY, | ||
uint32 | numOctantsZ | ||
) |
|
inline |
|
inlineinherited |
|
inherited |
|
inlineinherited |
|
inherited |
|
inlineinherited |
Get the unique id of this object.
|
inlineinherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
void Ogre::VctImageVoxelizer::removeAllItems | ( | void | ) |
Removes all items added via VctImageVoxelizer::addItem.
void Ogre::VctImageVoxelizer::removeItem | ( | Item * | item | ) |
Removes an item added via VctImageVoxelizer::addItem.
item | Item to remove |
void Ogre::VctImageVoxelizer::restoreSwappedVoxelTextures | ( | void | ) |
Swaps mAlbedoVox & mAlbedoVoxAlt (and co.) if needed back to their originals.
This is needed during shutdown since VctLighting otherwise will try to remove itself as a listener from mAlbedoVoxAlt
|
inherited |
void Ogre::VctImageVoxelizer::setRegionToVoxelize | ( | bool | autoRegion, |
const Aabb & | regionToVoxelize, | ||
const Aabb & | maxRegion = Aabb::BOX_INFINITE |
||
) |
Call this function before VctImageVoxelizer::autoCalculateRegion.
autoRegion | True to autocalculate region to cover all the added items False to use 'regionToVoxelize' instead |
regionToVoxelize | When autoRegion = false, use this to manually provide the region When autoRegion = true, it is ignored as it will be overwritten by autoCalculateRegion |
maxRegion | Maximum size of the regions are allowed to cover (mostly useful when autoRegion = true) |
Changes resolution.
Note that after calling this, you will need to call VctImageVoxelizer::build again, and VctLighting::build again.
width | |
height | |
depth |