mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-04-29 16:25:42 +00:00
Merge pull request #516 from DavidWyand-GG/OculusRiftUpdate2
Update ReflectionManager on Scene Field Change
This commit is contained in:
commit
b1b7a66d5b
4 changed files with 39 additions and 2 deletions
|
|
@ -794,6 +794,8 @@ void GFXDevice::setCubeTexture( U32 stage, GFXCubemap *texture )
|
||||||
mCurrentTexture[stage] = NULL;
|
mCurrentTexture[stage] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
inline bool GFXDevice::beginScene()
|
inline bool GFXDevice::beginScene()
|
||||||
{
|
{
|
||||||
AssertFatal( mCanCurrentlyRender == false, "GFXDevice::beginScene() - The scene has already begun!" );
|
AssertFatal( mCanCurrentlyRender == false, "GFXDevice::beginScene() - The scene has already begun!" );
|
||||||
|
|
@ -806,8 +808,6 @@ inline bool GFXDevice::beginScene()
|
||||||
return beginSceneInternal();
|
return beginSceneInternal();
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
inline void GFXDevice::endScene()
|
inline void GFXDevice::endScene()
|
||||||
{
|
{
|
||||||
AssertFatal( mCanCurrentlyRender == true, "GFXDevice::endScene() - The scene has already ended!" );
|
AssertFatal( mCanCurrentlyRender == true, "GFXDevice::endScene() - The scene has already ended!" );
|
||||||
|
|
@ -819,6 +819,22 @@ inline void GFXDevice::endScene()
|
||||||
mDeviceStatistics.exportToConsole();
|
mDeviceStatistics.exportToConsole();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void GFXDevice::beginField()
|
||||||
|
{
|
||||||
|
AssertFatal( mCanCurrentlyRender == true, "GFXDevice::beginField() - The scene has not yet begun!" );
|
||||||
|
|
||||||
|
// Send the start of field signal.
|
||||||
|
getDeviceEventSignal().trigger( GFXDevice::deStartOfField );
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void GFXDevice::endField()
|
||||||
|
{
|
||||||
|
AssertFatal( mCanCurrentlyRender == true, "GFXDevice::endField() - The scene has not yet begun!" );
|
||||||
|
|
||||||
|
// Send the end of field signal.
|
||||||
|
getDeviceEventSignal().trigger( GFXDevice::deEndOfField );
|
||||||
|
}
|
||||||
|
|
||||||
void GFXDevice::setViewport( const RectI &inRect )
|
void GFXDevice::setViewport( const RectI &inRect )
|
||||||
{
|
{
|
||||||
// Clip the rect against the renderable size.
|
// Clip the rect against the renderable size.
|
||||||
|
|
|
||||||
|
|
@ -209,6 +209,12 @@ public:
|
||||||
|
|
||||||
/// The device is about to finish rendering a frame
|
/// The device is about to finish rendering a frame
|
||||||
deEndOfFrame,
|
deEndOfFrame,
|
||||||
|
|
||||||
|
/// The device has started rendering a frame's field (such as for side-by-side rendering)
|
||||||
|
deStartOfField,
|
||||||
|
|
||||||
|
/// The device is about to finish rendering a frame's field
|
||||||
|
deEndOfField,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef Signal <bool (GFXDeviceEventType)> DeviceEventSignal;
|
typedef Signal <bool (GFXDeviceEventType)> DeviceEventSignal;
|
||||||
|
|
@ -735,6 +741,8 @@ public:
|
||||||
virtual void clear( U32 flags, ColorI color, F32 z, U32 stencil ) = 0;
|
virtual void clear( U32 flags, ColorI color, F32 z, U32 stencil ) = 0;
|
||||||
virtual bool beginScene();
|
virtual bool beginScene();
|
||||||
virtual void endScene();
|
virtual void endScene();
|
||||||
|
virtual void beginField();
|
||||||
|
virtual void endField();
|
||||||
|
|
||||||
virtual GFXTexHandle & getFrontBuffer(){ return mFrontBuffer[mCurrentFrontBufferIdx]; }
|
virtual GFXTexHandle & getFrontBuffer(){ return mFrontBuffer[mCurrentFrontBufferIdx]; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -290,6 +290,7 @@ bool ReflectionManager::_handleDeviceEvent( GFXDevice::GFXDeviceEventType evt )
|
||||||
switch( evt )
|
switch( evt )
|
||||||
{
|
{
|
||||||
case GFXDevice::deStartOfFrame:
|
case GFXDevice::deStartOfFrame:
|
||||||
|
case GFXDevice::deStartOfField:
|
||||||
|
|
||||||
mUpdateRefract = true;
|
mUpdateRefract = true;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -242,6 +242,9 @@ void SceneManager::renderScene( SceneRenderState* renderState, U32 objectMask, S
|
||||||
Point2F projOffset = GFX->getCurrentProjectionOffset();
|
Point2F projOffset = GFX->getCurrentProjectionOffset();
|
||||||
Point3F eyeOffset = GFX->getStereoEyeOffset();
|
Point3F eyeOffset = GFX->getStereoEyeOffset();
|
||||||
|
|
||||||
|
// Indicate that we're about to start a field
|
||||||
|
GFX->beginField();
|
||||||
|
|
||||||
// Render left half of display
|
// Render left half of display
|
||||||
RectI leftVP = originalVP;
|
RectI leftVP = originalVP;
|
||||||
leftVP.extent.x *= 0.5;
|
leftVP.extent.x *= 0.5;
|
||||||
|
|
@ -264,6 +267,12 @@ void SceneManager::renderScene( SceneRenderState* renderState, U32 objectMask, S
|
||||||
|
|
||||||
renderSceneNoLights( &renderStateLeft, objectMask, baseObject, baseZone );
|
renderSceneNoLights( &renderStateLeft, objectMask, baseObject, baseZone );
|
||||||
|
|
||||||
|
// Indicate that we've just finished a field
|
||||||
|
GFX->endField();
|
||||||
|
|
||||||
|
// Indicate that we're about to start a field
|
||||||
|
GFX->beginField();
|
||||||
|
|
||||||
// Render right half of display
|
// Render right half of display
|
||||||
RectI rightVP = originalVP;
|
RectI rightVP = originalVP;
|
||||||
rightVP.extent.x *= 0.5;
|
rightVP.extent.x *= 0.5;
|
||||||
|
|
@ -287,6 +296,9 @@ void SceneManager::renderScene( SceneRenderState* renderState, U32 objectMask, S
|
||||||
|
|
||||||
renderSceneNoLights( &renderStateRight, objectMask, baseObject, baseZone );
|
renderSceneNoLights( &renderStateRight, objectMask, baseObject, baseZone );
|
||||||
|
|
||||||
|
// Indicate that we've just finished a field
|
||||||
|
GFX->endField();
|
||||||
|
|
||||||
// Restore previous values
|
// Restore previous values
|
||||||
GFX->setWorldMatrix(originalWorld);
|
GFX->setWorldMatrix(originalWorld);
|
||||||
gfxFrustum.clearProjectionOffset();
|
gfxFrustum.clearProjectionOffset();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue