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

#include <OgreCubemapProbe.h>

+ Inheritance diagram for Ogre::CubemapProbe:

Public Member Functions

 CubemapProbe (ParallaxCorrectedCubemap *creator)
 
 ~CubemapProbe ()
 
void _addReference (void)
 
void _clearCubemap (void)
 
void _prepareForRendering (void)
 
void _removeReference (void)
 
void _updateRender (void)
 
void destroyWorkspace (void)
 
const AabbgetArea (void) const
 
const Vector3getAreaInnerRegion (void) const
 
Aabb getAreaLS (void) const
 
ConstBufferPackedgetConstBufferForManualProbes (void)
 
TexturePtr getInternalTexture (void) const
 
Real getNDF (const Vector3 &posLS) const
 Gets the Normalized Distance Function.
 
const Matrix3getOrientation (void) const
 
const Vector3getProbeCameraPos (void) const
 
const AabbgetProbeShape (void) const
 
bool getStatic (void) const
 
void initWorkspace (float cameraNear=0.5f, float cameraFar=500.0f, IdString workspaceDefOverride=IdString())
 Initializes the workspace so we can actually render to the cubemap.
 
bool isInitialized (void) const
 
void operator delete (void *ptr)
 
void operator delete (void *ptr, const char *, int, const char *)
 
void operator delete (void *ptr, void *)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, const char *, int, const char *)
 
voidoperator new (size_t sz)
 
voidoperator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info
 
voidoperator new (size_t sz, void *ptr)
 placement operator new
 
voidoperator new[] (size_t sz)
 
voidoperator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info
 
void set (const Vector3 &cameraPos, const Aabb &area, const Vector3 &areaInnerRegion, const Matrix3 &orientation, const Aabb &probeShape)
 Sets cubemap probe's parameters.
 
void setStatic (bool isStatic)
 Set to False if it should be updated every frame.
 
void setTextureParams (uint32 width, uint32 height, bool useManual=false, PixelFormat pf=PF_A8B8G8R8, bool isStatic=true, uint8 fsaa=0)
 

Public Attributes

bool mDirty
 True if we must re-render to update the texture's contents. False when we don't.
 
bool mEnabled
 While disabled, this probe won't be updated (even if dirty) and won't be considered for blending (i.e.
 
uint32 mMask
 Mask to group probes.
 
uint16 mNumIterations
 Number of iterations.
 

Friends

class ParallaxCorrectedCubemap
 

Constructor & Destructor Documentation

◆ CubemapProbe()

Ogre::CubemapProbe::CubemapProbe ( ParallaxCorrectedCubemap creator)

◆ ~CubemapProbe()

Ogre::CubemapProbe::~CubemapProbe ( )

Member Function Documentation

◆ _addReference()

void Ogre::CubemapProbe::_addReference ( void  )

◆ _clearCubemap()

void Ogre::CubemapProbe::_clearCubemap ( void  )

◆ _prepareForRendering()

void Ogre::CubemapProbe::_prepareForRendering ( void  )

◆ _removeReference()

void Ogre::CubemapProbe::_removeReference ( void  )

◆ _updateRender()

void Ogre::CubemapProbe::_updateRender ( void  )

◆ destroyWorkspace()

void Ogre::CubemapProbe::destroyWorkspace ( void  )

◆ getArea()

const Aabb & Ogre::CubemapProbe::getArea ( void  ) const
inline

◆ getAreaInnerRegion()

const Vector3 & Ogre::CubemapProbe::getAreaInnerRegion ( void  ) const
inline

◆ getAreaLS()

Aabb Ogre::CubemapProbe::getAreaLS ( void  ) const
inline

References Ogre::Aabb::mHalfSize.

◆ getConstBufferForManualProbes()

ConstBufferPacked * Ogre::CubemapProbe::getConstBufferForManualProbes ( void  )
inline

◆ getInternalTexture()

TexturePtr Ogre::CubemapProbe::getInternalTexture ( void  ) const
inline

◆ getNDF()

Real Ogre::CubemapProbe::getNDF ( const Vector3 posLS) const

Gets the Normalized Distance Function.

Parameters
posLSPosition, in local space (relative to this probe)
Returns
Interpretation: <=0 means we're inside the inner range, or in its border. Range (0; 1) we're between inner and outer range. >=1 means we're outside the object.

◆ getOrientation()

const Matrix3 & Ogre::CubemapProbe::getOrientation ( void  ) const
inline

◆ getProbeCameraPos()

const Vector3 & Ogre::CubemapProbe::getProbeCameraPos ( void  ) const
inline

◆ getProbeShape()

const Aabb & Ogre::CubemapProbe::getProbeShape ( void  ) const
inline

◆ getStatic()

bool Ogre::CubemapProbe::getStatic ( void  ) const
inline

◆ initWorkspace()

void Ogre::CubemapProbe::initWorkspace ( float  cameraNear = 0.5f,
float  cameraFar = 500.0f,
IdString  workspaceDefOverride = IdString() 
)

Initializes the workspace so we can actually render to the cubemap.

You must call setTextureParams first.

Parameters
workspaceDefOverridePass a null IdString() to use the default workspace definition passed to ParallaxCorrectedCubemap. This value allows you to override it with a different workspace definition.

◆ isInitialized()

bool Ogre::CubemapProbe::isInitialized ( void  ) const

◆ operator delete() [1/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void ptr)
inlineinherited

◆ operator delete() [2/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void ptr,
const char ,
int  ,
const char  
)
inlineinherited

◆ operator delete() [3/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void ptr,
void  
)
inlineinherited

◆ operator delete[]() [1/2]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void ptr)
inlineinherited

◆ operator delete[]() [2/2]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void ptr,
const char ,
int  ,
const char  
)
inlineinherited

◆ operator new() [1/3]

template<class Alloc >
void * Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz)
inlineinherited

◆ operator new() [2/3]

template<class Alloc >
void * Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
const char file,
int  line,
const char func 
)
inlineinherited

operator new, with debug line info

◆ operator new() [3/3]

template<class Alloc >
void * Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
void ptr 
)
inlineinherited

placement operator new

◆ operator new[]() [1/2]

template<class Alloc >
void * Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz)
inlineinherited

◆ operator new[]() [2/2]

template<class Alloc >
void * Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz,
const char file,
int  line,
const char func 
)
inlineinherited

array operator new, with debug line info

◆ set()

void Ogre::CubemapProbe::set ( const Vector3 cameraPos,
const Aabb area,
const Vector3 areaInnerRegion,
const Matrix3 orientation,
const Aabb probeShape 
)

Sets cubemap probe's parameters.

Parameters
cameraPosSpecify where the camera will be positioned.
areaWhen the camera enters this area, the probe is collected for blending.
areaInnerRegionA value in range [0; 1]. It indicates a % of the OBB's size that will have smooth interpolation with other probes. When region = 1.0; stepping outside the OBB's results in a lighting "pop". The smaller the value, the smoother the transition, but at the cost of quality & precision while inside the OBB (as results get mixed up with other probes'). The value is per axis.
orientationThe orientation of the AABB that makes it an OBB. This orientation is applied to both probeShape AND area. Skewing and shearing is not tested. May or may not work.
probeShapeNote AABB is actually an OBB (Oriented Bounding Box). See orientation parameter. The OBB should closely match the shape of the environment around it. The better it fits, the more accurate the reflections.

◆ setStatic()

void Ogre::CubemapProbe::setStatic ( bool  isStatic)

Set to False if it should be updated every frame.

True if only updated when dirty

Remarks
This call is not cheap.

◆ setTextureParams()

void Ogre::CubemapProbe::setTextureParams ( uint32  width,
uint32  height,
bool  useManual = false,
PixelFormat  pf = PF_A8B8G8R8,
bool  isStatic = true,
uint8  fsaa = 0 
)
Parameters
width
height
pf
isStaticSet to False if it should be updated every frame. True if only updated when dirty
fsaa
useManualSet to true if you plan on using thie probe for manually rendering, so we keep mipmaps at the probe level. User is responsible for supplying a workspace definition that will generate mipmaps though!

Friends And Related Symbol Documentation

◆ ParallaxCorrectedCubemap

Member Data Documentation

◆ mDirty

bool Ogre::CubemapProbe::mDirty

True if we must re-render to update the texture's contents. False when we don't.

◆ mEnabled

bool Ogre::CubemapProbe::mEnabled

While disabled, this probe won't be updated (even if dirty) and won't be considered for blending (i.e.

won't be used at all).

◆ mMask

uint32 Ogre::CubemapProbe::mMask

Mask to group probes.

This probe will only be updated (even if dirty) and blended if mMask & system->mMask is non-zero. Useful for example for probes to be used during the day while other probes to be used during the night; thus you only want one group to be active at the same time. Or if you have per room probes, but during a panoramic shot where many rooms are in sight, and you want a more "global" probe. Defaults to 0xffffffff

◆ mNumIterations

uint16 Ogre::CubemapProbe::mNumIterations

Number of iterations.

The more iterations, the more light bounces and light reflections we can capture (i.e. mirror of mirrors), but it will take longer to rebuild the probe. Default value is 32. For non-static probes, you should set this value to 1 for performance.


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