Browse Source

account for fov change (also, internal docs)

Azaezel 8 years ago
parent
commit
55b26be9ba

+ 4 - 2
Engine/source/lighting/shadowMap/shadowMapPass.cpp

@@ -228,12 +228,14 @@ void ShadowMapPass::render(   SceneManager *sceneManager,
 
 
    //force an update if we're jumping around (respawning, ect)
    //force an update if we're jumping around (respawning, ect)
    MatrixF curCamMatrix = control->getTransform();
    MatrixF curCamMatrix = control->getTransform();
-   if (((curCamMatrix.getPosition() - mPrevCamPos).lenSquared() > mPow(smShadowsTeleportDist, 2)) ||
-       ((curCamMatrix.getForwardVector() - mPrevCamRot).lenSquared() > mPow(smShadowsTurnRate*M_PI_F / 180, 2)))
+   if (((curCamMatrix.getPosition() - mPrevCamPos).lenSquared() > mPow(smShadowsTeleportDist, 2)) || //update if we're teleporting
+       ((curCamMatrix.getForwardVector() - mPrevCamRot).lenSquared() > mPow(smShadowsTurnRate*M_PI_F / 180, 2)) || //update if we're turning too fast
+       (control->getCameraFov()) != mPrevCamFov) //update if we're zooming or unzooming
       forceUpdate = true;
       forceUpdate = true;
 
 
    mPrevCamRot = curCamMatrix.getForwardVector();
    mPrevCamRot = curCamMatrix.getForwardVector();
    mPrevCamPos = curCamMatrix.getPosition();
    mPrevCamPos = curCamMatrix.getPosition();
+   mPrevCamFov = control->getCameraFov();
 
 
    // 2 Shadow Maps per Light. This may fail.
    // 2 Shadow Maps per Light. This may fail.
    for ( U32 i = 0; i < shadowMaps.size(); i += 2 )
    for ( U32 i = 0; i < shadowMaps.size(); i += 2 )

+ 1 - 0
Engine/source/lighting/shadowMap/shadowMapPass.h

@@ -114,6 +114,7 @@ private:
    ShadowMapManager* mShadowManager;
    ShadowMapManager* mShadowManager;
    Point3F mPrevCamPos;
    Point3F mPrevCamPos;
    Point3F mPrevCamRot;
    Point3F mPrevCamRot;
+   F32 mPrevCamFov;
 };
 };
 
 
 class ShadowRenderPassManager : public RenderPassManager
 class ShadowRenderPassManager : public RenderPassManager