OGRE-Next
2.3
Object-Oriented Graphics Rendering Engine
|
#include <OgreCubemapProbe.h>
Public Member Functions | |
CubemapProbe (ParallaxCorrectedCubemapBase *creator) | |
~CubemapProbe () | |
void | _addReference () |
void | _clearCubemap () |
void | _prepareForRendering () |
void | _releaseManualHardwareResources () |
void | _removeReference () |
void | _restoreManualHardwareResources () |
void | _updateRender () |
void | destroyWorkspace () |
const Aabb & | getArea () const |
const Vector3 & | getAreaInnerRegion () const |
Aabb | getAreaLS () const |
ConstBufferPacked * | getConstBufferForManualProbes () |
ParallaxCorrectedCubemapBase * | getCreator () |
const SceneNode * | getInternalCubemapProbeSceneNode () const |
uint16 | getInternalSliceToArrayTexture () const |
TextureGpu * | getInternalTexture () const |
const Matrix3 & | getInvOrientation () const |
Real | getNDF (const Vector3 &posLS) const |
Gets the Normalized Distance Function. More... | |
const Matrix3 & | getOrientation () const |
uint16_t | getPriority () const |
const Vector3 & | getProbeCameraPos () const |
const Aabb & | getProbeShape () const |
bool | getStatic () const |
CompositorWorkspace * | getWorkspace () const |
void | initWorkspace (float cameraNear=0.5f, float cameraFar=500.0f, IdString workspaceDefOverride=IdString(), const CompositorChannelVec &additionalChannels=CompositorChannelVec(), uint8 executionMask=0xFF) |
Initializes the workspace so we can actually render to the cubemap. More... | |
bool | isInitialized () 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 | set (const Vector3 &cameraPos, const Aabb &area, const Vector3 &areaInnerRegion, const Matrix3 &orientation, const Aabb &probeShape) |
Sets cubemap probe's parameters. More... | |
void | setPriority (uint16 priority) |
When two probes overlap, you may want one probe to have particularly more influence than the others. More... | |
void | setStatic (bool isStatic) |
Set to False if it should be updated every frame. More... | |
void | setTextureParams (uint32 width, uint32 height, bool useManual=false, PixelFormatGpu pf=PFG_RGBA8_UNORM_SRGB, bool isStatic=true, SampleDescription sampleDesc=SampleDescription()) |
Public Attributes | |
bool | mDirty |
True if we must re-render to update the texture's contents. False when we don't. More... | |
bool | mEnabled |
While disabled, this probe won't be updated (even if dirty) and won't be considered for blending (i.e. More... | |
uint32 | mMask |
Mask to group probes. More... | |
uint16 | mNumIterations |
Number of iterations. More... | |
Friends | |
class | ParallaxCorrectedCubemap |
class | ParallaxCorrectedCubemapAuto |
class | ParallaxCorrectedCubemapBase |
Ogre::CubemapProbe::CubemapProbe | ( | ParallaxCorrectedCubemapBase * | creator | ) |
Ogre::CubemapProbe::~CubemapProbe | ( | ) |
void Ogre::CubemapProbe::_addReference | ( | ) |
void Ogre::CubemapProbe::_clearCubemap | ( | ) |
void Ogre::CubemapProbe::_prepareForRendering | ( | ) |
void Ogre::CubemapProbe::_releaseManualHardwareResources | ( | ) |
void Ogre::CubemapProbe::_removeReference | ( | ) |
void Ogre::CubemapProbe::_restoreManualHardwareResources | ( | ) |
void Ogre::CubemapProbe::_updateRender | ( | ) |
void Ogre::CubemapProbe::destroyWorkspace | ( | ) |
|
inline |
|
inline |
|
inline |
References Ogre::Aabb::mHalfSize, and Ogre::Vector3::ZERO.
|
inline |
|
inline |
const SceneNode* Ogre::CubemapProbe::getInternalCubemapProbeSceneNode | ( | ) | const |
|
inline |
|
inline |
|
inline |
Gets the Normalized Distance Function.
posLS | Position, in local space (relative to this probe) |
|
inline |
uint16_t Ogre::CubemapProbe::getPriority | ( | ) | const |
|
inline |
|
inline |
|
inline |
|
inline |
void Ogre::CubemapProbe::initWorkspace | ( | float | cameraNear = 0.5f , |
float | cameraFar = 500.0f , |
||
IdString | workspaceDefOverride = IdString() , |
||
const CompositorChannelVec & | additionalChannels = CompositorChannelVec() , |
||
uint8 | executionMask = 0xFF |
||
) |
Initializes the workspace so we can actually render to the cubemap.
You must call setTextureParams first.
mipmapsExecutionMask | When ParallaxCorrectedCubemapAuto needs to use DPM via 2D Array (see ParallaxCorrectedCubemapAuto::setUseDpm2DArray), you will most likely NOT want to execute the mipmap pass in the workspace you provide, as the system will automatically generate mipmaps for you in the 2D Array instead. We will be using this value to skip that pass. We'll be calling: compositorManager->addWorkspace( ..., executionMask = ~mipmapsExecutionMask);
|
workspaceDefOverride | Pass a null IdString() to use the default workspace definition passed to ParallaxCorrectedCubemap. This value allows you to override it with a different workspace definition. |
bool Ogre::CubemapProbe::isInitialized | ( | ) | const |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
operator new, with debug line info
|
inlineinherited |
placement operator new
|
inlineinherited |
|
inlineinherited |
array operator new, with debug line info
void Ogre::CubemapProbe::set | ( | const Vector3 & | cameraPos, |
const Aabb & | area, | ||
const Vector3 & | areaInnerRegion, | ||
const Matrix3 & | orientation, | ||
const Aabb & | probeShape | ||
) |
Sets cubemap probe's parameters.
cameraPos | Specify where the camera will be positioned. |
area | When the camera enters this area, the probe is collected for blending. |
areaInnerRegion | A 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. |
orientation | The 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. |
probeShape | Note 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. |
void Ogre::CubemapProbe::setPriority | ( | uint16 | priority | ) |
When two probes overlap, you may want one probe to have particularly more influence than the others.
Use this value to decrease/increase the weight when blending the probes.
priority | A value in range [1; 65535] A higher value means the probe should have a stronger influence over the others. |
void Ogre::CubemapProbe::setStatic | ( | bool | isStatic | ) |
Set to False if it should be updated every frame.
True if only updated when dirty
void Ogre::CubemapProbe::setTextureParams | ( | uint32 | width, |
uint32 | height, | ||
bool | useManual = false , |
||
PixelFormatGpu | pf = PFG_RGBA8_UNORM_SRGB , |
||
bool | isStatic = true , |
||
SampleDescription | sampleDesc = SampleDescription() |
||
) |
width | |
height | |
pf | |
isStatic | Set to False if it should be updated every frame. True if only updated when dirty |
sampleDesc | |
useManual | Set 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! |
|
friend |
|
friend |
|
friend |
bool Ogre::CubemapProbe::mDirty |
True if we must re-render to update the texture's contents. False when we don't.
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).
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
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.