OGRE 2.3.3
Object-Oriented Graphics Rendering Engine
Loading...
Searching...
No Matches
Ogre::VctImageVoxelizer Class Reference

The image voxelizer aims to be faster than VctImageVoxelizer for the whole scene by following a different approach: More...

#include <OgreVctImageVoxelizer.h>

+ Inheritance diagram for Ogre::VctImageVoxelizer:

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.
 
void autoCalculateRegion (void)
 Does nothing if VctImageVoxelizer::setRegionToVoxelize( false, ... ) was called.
 
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.
 
void dividideOctants (uint32 numOctantsX, uint32 numOctantsY, uint32 numOctantsZ)
 
void forceFullBuild (void)
 
TextureGpugetAlbedoVox (void)
 
VctVoxelizerSourceBase::DebugVisualizationMode getDebugVisualizationMode (void) const
 
TextureGpugetEmissiveVox (void)
 
HlmsManagergetHlmsManager (void)
 
IdType getId () const
 Get the unique id of this object.
 
TextureGpugetNormalVox (void)
 
RenderSystemgetRenderSystem (void)
 
TextureGpuManagergetTextureGpuManager (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.
 
void removeItem (Item *item)
 Removes an item added via VctImageVoxelizer::addItem.
 
void restoreSwappedVoxelTextures (void)
 Swaps mAlbedoVox & mAlbedoVoxAlt (and co.) if needed back to their originals.
 
void setDebugVisualization (VctVoxelizerSourceBase::DebugVisualizationMode mode, SceneManager *sceneManager)
 
void setRegionToVoxelize (bool autoRegion, const Aabb &regionToVoxelize, const Aabb &maxRegion=Aabb::BOX_INFINITE)
 Call this function before VctImageVoxelizer::autoCalculateRegion.
 
void setSceneResolution (uint32 width, uint32 height, uint32 depth)
 Changes resolution.
 

Detailed Description

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.

Member Enumeration Documentation

◆ DebugVisualizationMode

Enumerator
DebugVisualizationAlbedo 
DebugVisualizationNormal 
DebugVisualizationEmissive 
DebugVisualizationNone 

Constructor & Destructor Documentation

◆ VctImageVoxelizer()

Ogre::VctImageVoxelizer::VctImageVoxelizer ( IdType id,
RenderSystem * renderSystem,
HlmsManager * hlmsManager,
VoxelizedMeshCache * meshCache,
bool correctAreaLightShadows )

◆ ~VctImageVoxelizer()

virtual Ogre::VctImageVoxelizer::~VctImageVoxelizer ( )
virtual

Member Function Documentation

◆ addItem()

void Ogre::VctImageVoxelizer::addItem ( Item * item)

Adds an item to voxelize.

Parameters
item

◆ autoCalculateRegion()

void Ogre::VctImageVoxelizer::autoCalculateRegion ( void )

Does nothing if VctImageVoxelizer::setRegionToVoxelize( false, ... ) was called.

◆ build()

void Ogre::VctImageVoxelizer::build ( SceneManager * sceneManager)

◆ buildRelative()

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

Remarks
Do not call this function if diffX/diffY/diffZ are all == 0.
Parameters
sceneManager
diffXHow many voxels to translate to the left/right
diffYHow many voxels to translate up/down
diffZHow many voxels to translate to the forward/backwards
numOctantsXIf we must perform a full rebuild, then the parameter passed to dividideOctants
numOctantsYSee numOctantsX
numOctantsZSee numOctantsX

◆ dividideOctants()

void Ogre::VctImageVoxelizer::dividideOctants ( uint32 numOctantsX,
uint32 numOctantsY,
uint32 numOctantsZ )

◆ forceFullBuild()

void Ogre::VctImageVoxelizer::forceFullBuild ( void )
inline

◆ getAlbedoVox()

TextureGpu * Ogre::VctVoxelizerSourceBase::getAlbedoVox ( void )
inlineinherited

◆ getDebugVisualizationMode()

VctVoxelizerSourceBase::DebugVisualizationMode Ogre::VctVoxelizerSourceBase::getDebugVisualizationMode ( void ) const
inherited

◆ getEmissiveVox()

TextureGpu * Ogre::VctVoxelizerSourceBase::getEmissiveVox ( void )
inlineinherited

◆ getHlmsManager()

HlmsManager * Ogre::VctVoxelizerSourceBase::getHlmsManager ( void )
inherited

◆ getId()

IdType Ogre::IdObject::getId ( ) const
inlineinherited

Get the unique id of this object.

◆ getNormalVox()

TextureGpu * Ogre::VctVoxelizerSourceBase::getNormalVox ( void )
inlineinherited

◆ getRenderSystem()

RenderSystem * Ogre::VctVoxelizerSourceBase::getRenderSystem ( void )
inherited

◆ getTextureGpuManager()

TextureGpuManager * Ogre::VctVoxelizerSourceBase::getTextureGpuManager ( void )
inherited

◆ getVoxelCellSize()

Vector3 Ogre::VctVoxelizerSourceBase::getVoxelCellSize ( void ) const
inherited

◆ getVoxelOrigin()

Vector3 Ogre::VctVoxelizerSourceBase::getVoxelOrigin ( void ) const
inherited

◆ getVoxelResolution()

Vector3 Ogre::VctVoxelizerSourceBase::getVoxelResolution ( void ) const
inherited

◆ getVoxelSize()

Vector3 Ogre::VctVoxelizerSourceBase::getVoxelSize ( void ) const
inherited

◆ operator()() [1/2]

bool Ogre::IdObject::operator() ( const IdObject & left,
const IdObject & right )
inlineinherited

◆ operator()() [2/2]

bool Ogre::IdObject::operator() ( const IdObject * left,
const IdObject * right )
inlineinherited

◆ removeAllItems()

void Ogre::VctImageVoxelizer::removeAllItems ( void )

Removes all items added via VctImageVoxelizer::addItem.

◆ removeItem()

void Ogre::VctImageVoxelizer::removeItem ( Item * item)

Removes an item added via VctImageVoxelizer::addItem.

Parameters
itemItem to remove

◆ restoreSwappedVoxelTextures()

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

◆ setDebugVisualization()

void Ogre::VctVoxelizerSourceBase::setDebugVisualization ( VctVoxelizerSourceBase::DebugVisualizationMode mode,
SceneManager * sceneManager )
inherited

◆ setRegionToVoxelize()

void Ogre::VctImageVoxelizer::setRegionToVoxelize ( bool autoRegion,
const Aabb & regionToVoxelize,
const Aabb & maxRegion = Aabb::BOX_INFINITE )

Call this function before VctImageVoxelizer::autoCalculateRegion.

Parameters
autoRegionTrue to autocalculate region to cover all the added items False to use 'regionToVoxelize' instead
regionToVoxelizeWhen autoRegion = false, use this to manually provide the region When autoRegion = true, it is ignored as it will be overwritten by autoCalculateRegion
maxRegionMaximum size of the regions are allowed to cover (mostly useful when autoRegion = true)

◆ setSceneResolution()

void Ogre::VctImageVoxelizer::setSceneResolution ( uint32 width,
uint32 height,
uint32 depth )

Changes resolution.

Note that after calling this, you will need to call VctImageVoxelizer::build again, and VctLighting::build again.

Parameters
width
height
depth

The documentation for this class was generated from the following file: