Streaming optimizations and black-pop elimination in progress

--HG--
branch : nfb
This commit is contained in:
2014-04-14 02:27:16 -07:00
parent ee35c5540e
commit 8112a0362f
2 changed files with 16 additions and 3 deletions

View File

@@ -106,8 +106,19 @@ void KRLODSet::showLOD()
kraken_stream_level KRLODSet::getStreamLevel(bool prime, const KRViewport &viewport) kraken_stream_level KRLODSet::getStreamLevel(bool prime, const KRViewport &viewport)
{ {
if(m_activeLODGroup) { KRLODGroup *new_active_lod_group = NULL;
return m_activeLODGroup->getStreamLevel(prime, viewport);
// Upgrade and downgrade LOD groups as needed
for(std::set<KRNode *>::iterator itr=m_childNodes.begin(); itr != m_childNodes.end(); ++itr) {
KRLODGroup *lod_group = dynamic_cast<KRLODGroup *>(*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 { } else {
return kraken_stream_level::STREAM_LEVEL_IN_HQ; return kraken_stream_level::STREAM_LEVEL_IN_HQ;
} }

View File

@@ -124,8 +124,10 @@ kraken_stream_level KRTexture::getStreamLevel(bool prime, float lodCoverage, KRT
return kraken_stream_level::STREAM_LEVEL_OUT; 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)) { } 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; 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; return kraken_stream_level::STREAM_LEVEL_IN_LQ;
} else {
return kraken_stream_level::STREAM_LEVEL_OUT;
} }
} }