From 8112a0362f924c5ea0f22ff7dd3225babd018dc8 Mon Sep 17 00:00:00 2001 From: Kearwood Gilbert Date: Mon, 14 Apr 2014 02:27:16 -0700 Subject: [PATCH] Streaming optimizations and black-pop elimination in progress --HG-- branch : nfb --- KREngine/kraken/KRLODSet.cpp | 15 +++++++++++++-- KREngine/kraken/KRTexture.cpp | 4 +++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/KREngine/kraken/KRLODSet.cpp b/KREngine/kraken/KRLODSet.cpp index d056e30..cc37fe0 100644 --- a/KREngine/kraken/KRLODSet.cpp +++ b/KREngine/kraken/KRLODSet.cpp @@ -106,8 +106,19 @@ void KRLODSet::showLOD() kraken_stream_level KRLODSet::getStreamLevel(bool prime, const KRViewport &viewport) { - if(m_activeLODGroup) { - return m_activeLODGroup->getStreamLevel(prime, viewport); + KRLODGroup *new_active_lod_group = NULL; + + // Upgrade and downgrade LOD groups as needed + for(std::set::iterator itr=m_childNodes.begin(); itr != m_childNodes.end(); ++itr) { + KRLODGroup *lod_group = dynamic_cast(*itr); + assert(lod_group != NULL); + if(lod_group->getLODVisibility(viewport)) { + new_active_lod_group = lod_group; + } + } + + if(new_active_lod_group) { + return new_active_lod_group->getStreamLevel(prime, viewport); } else { return kraken_stream_level::STREAM_LEVEL_IN_HQ; } diff --git a/KREngine/kraken/KRTexture.cpp b/KREngine/kraken/KRTexture.cpp index 5ce80d6..062d52f 100644 --- a/KREngine/kraken/KRTexture.cpp +++ b/KREngine/kraken/KRTexture.cpp @@ -124,8 +124,10 @@ kraken_stream_level KRTexture::getStreamLevel(bool prime, float lodCoverage, KRT return kraken_stream_level::STREAM_LEVEL_OUT; } else if(m_current_lod_max_dim == KRMIN(getContext().KRENGINE_MAX_TEXTURE_DIM, m_max_lod_max_dim)) { return kraken_stream_level::STREAM_LEVEL_IN_HQ; - } else { + } else if(m_current_lod_max_dim >= KRMAX(getContext().KRENGINE_MIN_TEXTURE_DIM, m_min_lod_max_dim)) { return kraken_stream_level::STREAM_LEVEL_IN_LQ; + } else { + return kraken_stream_level::STREAM_LEVEL_OUT; } }