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)
{
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<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 {
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;
} 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;
}
}