![]() |
OGRE
2.2.6
Object-Oriented Graphics Rendering Engine
|
#include <OgreIrradianceField.h>
Public Types | |
enum | DebugVisualizationMode { DebugVisualizationColour, DebugVisualizationDepth, DebugVisualizationNone } |
Public Member Functions | |
IrradianceField (Root *root, SceneManager *sceneManager) | |
~IrradianceField () | |
void | createTextures (void) |
void | destroyTextures (void) |
void | fillConstBufferData (const Matrix4 &viewMatrix, float *RESTRICT_ALIAS passBufferPtr) const |
size_t | getConstBufferSize (void) const |
uint8 | getDebugTessellation (void) const |
bool | getDebugVisualizationMode (void) const |
TextureGpu * | getDepthVarianceTex (void) const |
IdType | getId () const |
Get the unique id of this object. More... | |
TextureGpu * | getIrradianceTex (void) const |
void | initialize (const IrradianceFieldSettings &settings, const Vector3 &fieldOrigin, const Vector3 &fieldSize, VctLighting *vctLighting) |
initialize More... | |
bool | operator() (const IdObject &left, const IdObject &right) |
bool | operator() (const IdObject *left, const IdObject *right) |
void | reset () |
If VctLighting was updated with minor changes (e.g. More... | |
void | setDebugVisualization (IrradianceField::DebugVisualizationMode mode, SceneManager *sceneManager, uint8 tessellation) |
void | update (uint32 probesPerFrame=200u) |
Friends | |
class | IrradianceFieldRaster |
Implements an Irradiance Field with Depth, inspired on DDGI
We use the voxelized results from VCT. Afterwards once we have Raytracing, we'll also allow to use Raytracing instead; since both are very similars (with VCT we shoot cones instead of rays)
Ogre::IrradianceField::IrradianceField | ( | Root * | root, |
SceneManager * | sceneManager | ||
) |
Ogre::IrradianceField::~IrradianceField | ( | ) |
void Ogre::IrradianceField::createTextures | ( | void | ) |
void Ogre::IrradianceField::destroyTextures | ( | void | ) |
void Ogre::IrradianceField::fillConstBufferData | ( | const Matrix4 & | viewMatrix, |
float *RESTRICT_ALIAS | passBufferPtr | ||
) | const |
size_t Ogre::IrradianceField::getConstBufferSize | ( | void | ) | const |
uint8 Ogre::IrradianceField::getDebugTessellation | ( | void | ) | const |
bool Ogre::IrradianceField::getDebugVisualizationMode | ( | void | ) | const |
|
inline |
|
inlineinherited |
Get the unique id of this object.
|
inline |
void Ogre::IrradianceField::initialize | ( | const IrradianceFieldSettings & | settings, |
const Vector3 & | fieldOrigin, | ||
const Vector3 & | fieldSize, | ||
VctLighting * | vctLighting | ||
) |
initialize
settings | |
fieldOrigin | |
fieldSize | |
vctLighting | This value is ignored if IrradianceFieldSettings::usesRaster() returns true, and must be non-null if it returns false |
void Ogre::IrradianceField::reset | ( | ) |
If VctLighting was updated with minor changes (e.g.
light position/direction changed, number of bounces setting changed) then call this function so update() process it again.
If major changes happens to VctLighting, then call initialize() again
void Ogre::IrradianceField::setDebugVisualization | ( | IrradianceField::DebugVisualizationMode | mode, |
SceneManager * | sceneManager, | ||
uint8 | tessellation | ||
) |
mode | |
sceneManager | Can be nullptr only if mode == IrradianceField::DebugVisualizationNone |
tessellation | Value in range [3; 16] Note this value increases exponentially: tessellation = 3u -> 24 vertices (per sphere) tessellation = 4u -> 112 vertices tessellation = 5u -> 480 vertices tessellation = 6u -> 1984 vertices tessellation = 7u -> 8064 vertices tessellation = 8u -> 32512 vertices tessellation = 9u -> 130560 vertices tessellation = 16u -> 2.147.418.112 vertices |
void Ogre::IrradianceField::update | ( | uint32 | probesPerFrame = 200u | ) |
|
friend |