#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()
|
protected |
◆ ~BaseGlobalIlluminationVct()
|
virtual |
Member Function Documentation
◆ Anisotropic()
|
overridevirtual |
Whether anisotropic setting is on.
- Returns
- Anisotropy setting
Implements GlobalIlluminationVct.
Reimplemented in Ogre2GlobalIlluminationVct.
◆ ConserveMemory()
|
overridevirtual |
Whether we're releasing memory as fast as possible.
- Returns
- Conserve Memory setting
Implements GlobalIlluminationVct.
Reimplemented in Ogre2GlobalIlluminationVct.
◆ HighQuality()
|
overridevirtual |
Whether we're using 6 (true) or 4 (false) cones.
- Returns
- High Quality setting
Implements GlobalIlluminationVct.
Reimplemented in Ogre2GlobalIlluminationVct.
◆ OctantCount()
|
overridevirtual |
Returns number of octant subdivisions per axis.
- Returns
- Octant subdivisions. Length of array is 3
Implements GlobalIlluminationVct.
Reimplemented in Ogre2GlobalIlluminationVct.
◆ Resolution()
|
overridevirtual |
Returns 3D Voxel resolution.
- Returns
- Resolution in each axis. Length of array is 3
Implements GlobalIlluminationVct.
Reimplemented in Ogre2GlobalIlluminationVct.
◆ SetAnisotropic()
|
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] _anisotropic Anisotropy setting
Implements GlobalIlluminationVct.
Reimplemented in Ogre2GlobalIlluminationVct.
◆ SetConserveMemory()
|
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] _conserveMemory True to release memory as fast as possible
Implements GlobalIlluminationVct.
Reimplemented in Ogre2GlobalIlluminationVct.
◆ SetHighQuality()
|
overridevirtual |
True for high quality (slower). VRAM consumption stays the same. Ogre2 will use 6 cones instead of 4.
- Parameters
-
[in] _highQuality Quality setting
Implements GlobalIlluminationVct.
Reimplemented in Ogre2GlobalIlluminationVct.
◆ SetOctantCount()
|
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] _octants Number of octant subdivisions per axis
Implements GlobalIlluminationVct.
Reimplemented in Ogre2GlobalIlluminationVct.
References GZ_ASSERT.
◆ SetResolution()
|
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] _resolution Resolution
Implements GlobalIlluminationVct.
Reimplemented in Ogre2GlobalIlluminationVct.
References GZ_ASSERT, and gz::math::isPowerOfTwo().
The documentation for this class was generated from the following file: