OGRE-Next  2.3
Object-Oriented Graphics Rendering Engine
Ogre::Forward3D Class Reference

Forward3D. More...

#include <OgreForward3D.h>

+ Inheritance diagram for Ogre::Forward3D:

Public Types

typedef vector< CachedGridBuffer >::type CachedGridBufferVec
 
enum  ForwardPlusMethods { MethodForward3D , MethodForwardClustered , NumForwardPlusMethods }
 

Public Member Functions

 Forward3D (uint32 width, uint32 height, uint32 numSlices, uint32 lightsPerCell, float minDistance, float maxDistance, SceneManager *sceneManager)
 
 ~Forward3D () override
 
void _changeRenderSystem (RenderSystem *newRs)
 
void _releaseManualHardwareResources ()
 
void collectLights (Camera *camera) override
 
void fillConstBufferData (Viewport *viewport, bool bRequiresTextureFlipping, uint32 renderTargetHeight, IdString shaderSyntax, bool instancedStereo, float *RESTRICT_ALIAS passBufferPtr) const override
 Fills 'passBufferPtr' with the necessary data for Forward3D rendering. More...
 
size_t getConstBufferSize () const override
 Returns the amount of bytes that fillConstBufferData is going to fill. More...
 
bool getDebugMode () const
 
bool getDecalsEnabled () const
 
bool getEnableVpls () const
 
bool getFadeAttenuationRange () const
 
bool getFineLightMaskGranularity () const
 
ForwardPlusMethods getForwardPlusMethod () const override
 
ReadOnlyBufferPackedgetGlobalLightListBuffer (const Camera *camera) const
 Cache the return value as internally we perform an O(N) search. More...
 
TexBufferPackedgetGridBuffer (const Camera *camera) const
 Cache the return value as internally we perform an O(N) search. More...
 
uint32 getHeight () const
 
uint32 getLightsPerCell () const
 
float getMaxDistance () const
 
float getMinDistance () const
 
uint32 getNumSlices () const
 
uint32 getWidth () const
 
bool isCacheDirty (const Camera *camera) 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 *)
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info More...
 
void * operator new (size_t sz, void *ptr)
 placement operator new More...
 
void * operator new[] (size_t sz)
 
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info More...
 
void setDebugMode (bool debugMode)
 Turns on visualization of light cell occupancy. More...
 
void setEnableVpls (bool enable)
 
void setFadeAttenuationRange (bool fade)
 Attenuates the light by the attenuation range, causing smooth endings when at the end of the light range instead of a sudden sharp termination. More...
 
void setFineLightMaskGranularity (bool useFineGranularity)
 Toggles whether light masks will be obeyed per object & per light by doing: if( movableObject->getLightMask() & light->getLightMask() ) doLighting( movableObject light ); Note this toggle only affects Forward+ lights. More...
 
void setHlmsPassProperties (Hlms *hlms) override
 

Static Public Attributes

static const size_t MaxCubemapProbeRq
 
static const size_t MaxDecalRq
 
static const size_t MinCubemapProbeRq
 
static const size_t MinDecalRq
 

Detailed Description

Member Typedef Documentation

◆ CachedGridBufferVec

Member Enumeration Documentation

◆ ForwardPlusMethods

Enumerator
MethodForward3D 
MethodForwardClustered 
NumForwardPlusMethods 

Constructor & Destructor Documentation

◆ Forward3D()

Ogre::Forward3D::Forward3D ( uint32  width,
uint32  height,
uint32  numSlices,
uint32  lightsPerCell,
float  minDistance,
float  maxDistance,
SceneManager sceneManager 
)

◆ ~Forward3D()

Ogre::Forward3D::~Forward3D ( )
override

Member Function Documentation

◆ _changeRenderSystem()

void Ogre::ForwardPlusBase::_changeRenderSystem ( RenderSystem newRs)
inherited

◆ _releaseManualHardwareResources()

void Ogre::ForwardPlusBase::_releaseManualHardwareResources ( )
inherited

◆ collectLights()

void Ogre::Forward3D::collectLights ( Camera camera)
overridevirtual

Implements Ogre::ForwardPlusBase.

◆ fillConstBufferData()

void Ogre::Forward3D::fillConstBufferData ( Viewport viewport,
bool  bRequiresTextureFlipping,
uint32  renderTargetHeight,
IdString  shaderSyntax,
bool  instancedStereo,
float *RESTRICT_ALIAS  passBufferPtr 
) const
overridevirtual

Fills 'passBufferPtr' with the necessary data for Forward3D rendering.

See also
getConstBufferSize
Remarks
Assumes 'passBufferPtr' is aligned to a vec4/float4 boundary.

Implements Ogre::ForwardPlusBase.

◆ getConstBufferSize()

size_t Ogre::Forward3D::getConstBufferSize ( ) const
overridevirtual

Returns the amount of bytes that fillConstBufferData is going to fill.

Implements Ogre::ForwardPlusBase.

◆ getDebugMode()

bool Ogre::ForwardPlusBase::getDebugMode ( ) const
inlineinherited

◆ getDecalsEnabled()

bool Ogre::ForwardPlusBase::getDecalsEnabled ( ) const
inlineinherited

◆ getEnableVpls()

bool Ogre::ForwardPlusBase::getEnableVpls ( ) const
inlineinherited

◆ getFadeAttenuationRange()

bool Ogre::ForwardPlusBase::getFadeAttenuationRange ( ) const
inlineinherited

◆ getFineLightMaskGranularity()

bool Ogre::ForwardPlusBase::getFineLightMaskGranularity ( ) const
inlineinherited

◆ getForwardPlusMethod()

ForwardPlusMethods Ogre::Forward3D::getForwardPlusMethod ( ) const
inlineoverridevirtual

Implements Ogre::ForwardPlusBase.

◆ getGlobalLightListBuffer()

ReadOnlyBufferPacked* Ogre::ForwardPlusBase::getGlobalLightListBuffer ( const Camera camera) const
inherited

Cache the return value as internally we perform an O(N) search.

◆ getGridBuffer()

TexBufferPacked* Ogre::ForwardPlusBase::getGridBuffer ( const Camera camera) const
inherited

Cache the return value as internally we perform an O(N) search.

◆ getHeight()

uint32 Ogre::Forward3D::getHeight ( ) const
inline

◆ getLightsPerCell()

uint32 Ogre::Forward3D::getLightsPerCell ( ) const
inline

◆ getMaxDistance()

float Ogre::Forward3D::getMaxDistance ( ) const
inline

◆ getMinDistance()

float Ogre::Forward3D::getMinDistance ( ) const
inline

◆ getNumSlices()

uint32 Ogre::Forward3D::getNumSlices ( ) const
inline

◆ getWidth()

uint32 Ogre::Forward3D::getWidth ( ) const
inline

◆ isCacheDirty()

bool Ogre::ForwardPlusBase::isCacheDirty ( const Camera camera) const
inherited

◆ 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

◆ setDebugMode()

void Ogre::ForwardPlusBase::setDebugMode ( bool  debugMode)
inlineinherited

Turns on visualization of light cell occupancy.

◆ setEnableVpls()

void Ogre::ForwardPlusBase::setEnableVpls ( bool  enable)
inlineinherited

◆ setFadeAttenuationRange()

void Ogre::ForwardPlusBase::setFadeAttenuationRange ( bool  fade)
inlineinherited

Attenuates the light by the attenuation range, causing smooth endings when at the end of the light range instead of a sudden sharp termination.

This isn't physically based (light's range is infinite), but looks very well, and makes more intuitive to manipulate a light by controlling its range instead of controlling its radius.

See also
Light::setAttenuationBasedOnRadius and
setAttenuation. And even when controlling the light by its radius, you don't have to worry so much about the threshold's value being accurate. It has a tendency to make lights dimmer though. That's the price to pay for this optimization and having more intuitive controls. Enabled by default.

In math: atten *= max( (attenRange - fDistance) / attenRange, 0.0f );

◆ setFineLightMaskGranularity()

void Ogre::ForwardPlusBase::setFineLightMaskGranularity ( bool  useFineGranularity)
inlineinherited

Toggles whether light masks will be obeyed per object & per light by doing: if( movableObject->getLightMask() & light->getLightMask() ) doLighting( movableObject light ); Note this toggle only affects Forward+ lights.

You may want to see HlmsPbs::setFineLightMaskGranularity for control over Forward lights. If you only need coarse granularity control over Forward+ lights, you may get higher performance via CompositorPassSceneDef::mLightVisibilityMask (light_visibility_mask keyword in scripts).

◆ setHlmsPassProperties()

void Ogre::Forward3D::setHlmsPassProperties ( Hlms hlms)
overridevirtual

Reimplemented from Ogre::ForwardPlusBase.

Member Data Documentation

◆ MaxCubemapProbeRq

const size_t Ogre::ForwardPlusBase::MaxCubemapProbeRq
staticinherited

◆ MaxDecalRq

const size_t Ogre::ForwardPlusBase::MaxDecalRq
staticinherited

◆ MinCubemapProbeRq

const size_t Ogre::ForwardPlusBase::MinCubemapProbeRq
staticinherited

◆ MinDecalRq

const size_t Ogre::ForwardPlusBase::MinDecalRq
staticinherited

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