Update ReflectionManager on Scene Field Change

During side-by-side rendering the refraction texture needs to be updated
for both the left and right fields.  These changes add a new GFXDevice
event type to track when a field is about to be rendered.  The
ReflectionManager listens to this new event and ensures that the
refraction texture will be updated if it is referenced by a material.
This commit is contained in:
DavidWyand-GG 2013-10-31 16:54:22 -04:00
parent f790d58978
commit 39ab93636c
4 changed files with 39 additions and 2 deletions

View file

@ -242,6 +242,9 @@ void SceneManager::renderScene( SceneRenderState* renderState, U32 objectMask, S
Point2F projOffset = GFX->getCurrentProjectionOffset();
Point3F eyeOffset = GFX->getStereoEyeOffset();
// Indicate that we're about to start a field
GFX->beginField();
// Render left half of display
RectI leftVP = originalVP;
leftVP.extent.x *= 0.5;
@ -264,6 +267,12 @@ void SceneManager::renderScene( SceneRenderState* renderState, U32 objectMask, S
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
RectI rightVP = originalVP;
rightVP.extent.x *= 0.5;
@ -287,6 +296,9 @@ void SceneManager::renderScene( SceneRenderState* renderState, U32 objectMask, S
renderSceneNoLights( &renderStateRight, objectMask, baseObject, baseZone );
// Indicate that we've just finished a field
GFX->endField();
// Restore previous values
GFX->setWorldMatrix(originalWorld);
gfxFrustum.clearProjectionOffset();