diff options
author | Mitchell Stokes <mogurijin@gmail.com> | 2014-05-27 23:52:56 +0400 |
---|---|---|
committer | Mitchell Stokes <mogurijin@gmail.com> | 2014-05-27 23:52:56 +0400 |
commit | f469185f2540378cf0cec9af11e94015f83ecbe1 (patch) | |
tree | f2dd53f0914d240b68064329778c862402df8c12 /source/gameengine | |
parent | 517094a6977abd2ca3f50f15780fc15fdb125b99 (diff) |
Fix T40344: Levels of Detail not smooth with Armature Modifier
Due to skinning changes for multi-threaded animations, the LOD check was
being done after skinning. Now the LOD check is run before animations.
This means the culling information is a frame old, but this should be
fine.
Diffstat (limited to 'source/gameengine')
-rw-r--r-- | source/gameengine/Ketsji/KX_Dome.cpp | 3 | ||||
-rw-r--r-- | source/gameengine/Ketsji/KX_KetsjiEngine.cpp | 6 |
2 files changed, 3 insertions, 6 deletions
diff --git a/source/gameengine/Ketsji/KX_Dome.cpp b/source/gameengine/Ketsji/KX_Dome.cpp index 71d7257a907..657eaef72b7 100644 --- a/source/gameengine/Ketsji/KX_Dome.cpp +++ b/source/gameengine/Ketsji/KX_Dome.cpp @@ -2045,8 +2045,5 @@ void KX_Dome::RenderDomeFrame(KX_Scene* scene, KX_Camera* cam, int i) scene->CalculateVisibleMeshes(m_rasterizer,cam); scene->RenderBuckets(camtrans, m_rasterizer); - - // update levels of detail - scene->UpdateObjectLods(); } diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp index 96a3845a439..dc81bae1f0c 100644 --- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp +++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp @@ -686,6 +686,9 @@ bool KX_KetsjiEngine::NextFrame() SG_SetActiveStage(SG_STAGE_ACTUATOR_UPDATE); scene->UpdateParents(m_frameTime); + // update levels of detail + scene->UpdateObjectLods(); + if (!GetRestrictAnimationFPS()) { m_logger->StartLog(tc_animations, m_kxsystem->GetTimeInSeconds(), true); @@ -1316,9 +1319,6 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam) scene->CalculateVisibleMeshes(m_rasterizer,cam); - // update levels of detail - scene->UpdateObjectLods(); - m_logger->StartLog(tc_rasterizer, m_kxsystem->GetTimeInSeconds(), true); SG_SetActiveStage(SG_STAGE_RENDER); |