mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-23 16:43:50 +00:00
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:
parent
f790d58978
commit
39ab93636c
4 changed files with 39 additions and 2 deletions
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue