Gazebo Rendering

API Reference

9.0.0
BaseGlobalIlluminationVct< T > Class Template Reference

#include <BaseGlobalIlluminationVct.hh>

Public Member Functions

virtual ~BaseGlobalIlluminationVct ()
 
virtual bool Anisotropic () const override
 Whether anisotropic setting is on.
 
virtual bool ConserveMemory () const override
 Whether we're releasing memory as fast as possible.
 
virtual bool HighQuality () const override
 Whether we're using 6 (true) or 4 (false) cones.
 
virtual const uint32_t * OctantCount () const override
 Returns number of octant subdivisions per axis.
 
virtual const uint32_t * Resolution () const override
 Returns 3D Voxel resolution.
 
virtual void SetAnisotropic (bool _anisotropic) override
 Anisotropic VCT provides much higher quality because it better captures incoming indirect illumination from all directions.
 
virtual void SetConserveMemory (bool _conserveMemory) override
 This will try to release resources that aren't needed when lights and static objects don't change.
 
virtual void SetHighQuality (bool _highQuality) override
 True for high quality (slower). VRAM consumption stays the same. Ogre2 will use 6 cones instead of 4.
 
virtual void SetOctantCount (const uint32_t _octants[3]) override
 Number of divisions per axis to divide the scene into multiple octants. Setting this value > 1 may improve voxelization performance when there is a lot of static Meshes; but it may also decrease it. Profiling is required for each scene.
 
virtual void SetResolution (const uint32_t _resolution[3]) override
 Resolution of the 3D Voxel. Must be multiple of 2.
 
- Public Member Functions inherited from GlobalIlluminationVct
 GlobalIlluminationVct ()
 Constructor.
 
virtual ~GlobalIlluminationVct ()
 Destructor.
 
virtual DebugVisualizationMode DebugVisualization () const =0
 Returns current visualization mode.
 
virtual void LightingChanged ()=0
 Called by Scene when lighting changes so that GI can be updated.
 
virtual void SetDebugVisualization (DebugVisualizationMode _dvm)=0
 Draws the voxels on screen for inspection and understand what is going on with GI. You should be looking at a minecraft-like world.
 
virtual void SetThinWallCounter (float _thinWallCounter)=0
 Shadows are calculated by raymarching towards the light source. However sometimes the ray 'may go through' a wall due to how bilinear interpolation works.
 
virtual float ThinWallCounter () const =0
 Value of SetThinWallCounter.
 
- Public Member Functions inherited from GlobalIlluminationBase
 GlobalIlluminationBase ()
 Constructor.
 
virtual ~GlobalIlluminationBase ()
 Destructor.
 
virtual uint32_t BounceCount () const =0
 Get number of bounces.
 
virtual void Build ()=0
 Build the internal structures required for producing GI This function may take significant time.
 
virtual bool Enabled () const =0
 Returns true if this GI configuration is currently enabled.
 
virtual uint32_t ParticipatingVisuals () const =0
 Visuals that can bounce GI.
 
virtual void SetBounceCount (uint32_t _bounceCount)=0
 Set the number of GI bounces. Very high number can cause a large performance impact.
 
virtual void SetParticipatingVisuals (uint32_t _mask)=0
 Set which visuals can bounce GI.
 
virtual void UpdateCamera ()=0
 Called by Scene on an active GlobalIlluminationBase whenever first rendering happens for a new frame. This implies Build has been called already.
 
virtual void UpdateLighting ()=0
 Called by Scene on an active GlobalIlluminationBase whenever lighting changes. This implies Build has been called already.
 

Protected Member Functions

 BaseGlobalIlluminationVct ()
 
- Protected Member Functions inherited from GlobalIlluminationBase
virtual void Destroy ()=0
 Destroy the class.
 
virtual void Init ()=0
 Initialize the class.
 
virtual void SetEnabled (bool _enabled)=0
 Sets this GI solution as enabled.
 

Additional Inherited Members

- Public Types inherited from GlobalIlluminationVct
enum  DebugVisualizationMode {
  DVM_Albedo , DVM_Normal , DVM_Emissive , DVM_Lighting ,
  DVM_None
}
 Debug visualization modes for GlobalIlluminationVct::SetDebugVisualization. More...
 
- Public Types inherited from GlobalIlluminationBase
enum  ParticipatingVisualsFlags { DYNAMIC_VISUALS = 1u << 0u , STATIC_VISUALS = 1u << 1u }
 Bitmask of which objects are considered by GI bounces. Note that all objects can receive indirect illumination. More...
 

Constructor & Destructor Documentation

◆ BaseGlobalIlluminationVct()

template<class T >
BaseGlobalIlluminationVct ( )
protected

◆ ~BaseGlobalIlluminationVct()

template<class T >
~BaseGlobalIlluminationVct ( )
virtual

Member Function Documentation

◆ Anisotropic()

template<class T >
bool Anisotropic ( ) const
overridevirtual

Whether anisotropic setting is on.

Returns
Anisotropy setting

Implements GlobalIlluminationVct.

Reimplemented in Ogre2GlobalIlluminationVct.

◆ ConserveMemory()

template<class T >
bool ConserveMemory ( ) const
overridevirtual

Whether we're releasing memory as fast as possible.

Returns
Conserve Memory setting

Implements GlobalIlluminationVct.

Reimplemented in Ogre2GlobalIlluminationVct.

◆ HighQuality()

template<class T >
bool HighQuality ( ) const
overridevirtual

Whether we're using 6 (true) or 4 (false) cones.

Returns
High Quality setting

Implements GlobalIlluminationVct.

Reimplemented in Ogre2GlobalIlluminationVct.

◆ OctantCount()

template<class T >
const uint32_t * OctantCount ( ) const
overridevirtual

Returns number of octant subdivisions per axis.

Returns
Octant subdivisions. Length of array is 3

Implements GlobalIlluminationVct.

Reimplemented in Ogre2GlobalIlluminationVct.

◆ Resolution()

template<class T >
const uint32_t * Resolution ( ) const
overridevirtual

Returns 3D Voxel resolution.

Returns
Resolution in each axis. Length of array is 3

Implements GlobalIlluminationVct.

Reimplemented in Ogre2GlobalIlluminationVct.

◆ SetAnisotropic()

template<class T >
void SetAnisotropic ( bool  _anisotropic)
overridevirtual

Anisotropic VCT provides much higher quality because it better captures incoming indirect illumination from all directions.

However it consumes more VRAM and is slower. Recommended: true

Remarks
This setting has nothing to do with anistropic texture filtering in GPUs
Parameters
[in]_anisotropicAnisotropy setting

Implements GlobalIlluminationVct.

Reimplemented in Ogre2GlobalIlluminationVct.

◆ SetConserveMemory()

template<class T >
void SetConserveMemory ( bool  _conserveMemory)
overridevirtual

This will try to release resources that aren't needed when lights and static objects don't change.

When true, every time light changes we will recreate those resources, update the GI, and release them; causing VRAM spikes. This can be bad for memory fragmentation (and performance) if VCT is updated too often.

When false, those resources will stay loaded at all times

Parameters
[in]_conserveMemoryTrue to release memory as fast as possible

Implements GlobalIlluminationVct.

Reimplemented in Ogre2GlobalIlluminationVct.

◆ SetHighQuality()

template<class T >
void SetHighQuality ( bool  _highQuality)
overridevirtual

True for high quality (slower). VRAM consumption stays the same. Ogre2 will use 6 cones instead of 4.

Parameters
[in]_highQualityQuality setting

Implements GlobalIlluminationVct.

Reimplemented in Ogre2GlobalIlluminationVct.

◆ SetOctantCount()

template<class T >
void SetOctantCount ( const uint32_t  _octants[3])
overridevirtual

Number of divisions per axis to divide the scene into multiple octants. Setting this value > 1 may improve voxelization performance when there is a lot of static Meshes; but it may also decrease it. Profiling is required for each scene.

Parameters
[in]_octantsNumber of octant subdivisions per axis

Implements GlobalIlluminationVct.

Reimplemented in Ogre2GlobalIlluminationVct.

References GZ_ASSERT.

◆ SetResolution()

template<class T >
void SetResolution ( const uint32_t  _resolution[3])
overridevirtual

Resolution of the 3D Voxel. Must be multiple of 2.

Remarks
To avoid wasting RAM, make this function your first call if you intend to change the defaults.
Parameters
[in]_resolutionResolution

Implements GlobalIlluminationVct.

Reimplemented in Ogre2GlobalIlluminationVct.

References GZ_ASSERT, and gz::math::isPowerOfTwo().


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