KRMesh cleanup, now including lod coverage in resource requests for meshes
This commit is contained in:
@@ -314,7 +314,7 @@ void KRModel::preStream(const KRViewport& viewport, std::list<KRResourceRequest>
|
|||||||
for (int i = 0; i < kMeshLODCount; i++) {
|
for (int i = 0; i < kMeshLODCount; i++) {
|
||||||
if (m_meshes[i].isBound()) {
|
if (m_meshes[i].isBound()) {
|
||||||
m_meshes[i].get()->preStream(resourceRequests, lod_coverage);
|
m_meshes[i].get()->preStream(resourceRequests, lod_coverage);
|
||||||
resourceRequests.emplace_back(m_meshes[i].get(), 0); // TODO: Pass in LOD level to drive streaming priority of meshes
|
resourceRequests.emplace_back(m_meshes[i].get(), 0, lod_coverage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -252,16 +252,11 @@ void KRMesh::render(KRNode::RenderInfo& ri, const std::string& object_name, cons
|
|||||||
if (ri.renderPass->getType() == RenderPassType::RENDER_PASS_SHADOWMAP) {
|
if (ri.renderPass->getType() == RenderPassType::RENDER_PASS_SHADOWMAP) {
|
||||||
for (int iSubmesh = 0; iSubmesh < cSubmeshes; iSubmesh++) {
|
for (int iSubmesh = 0; iSubmesh < cSubmeshes; iSubmesh++) {
|
||||||
KRMaterial* pMaterial = m_materials[iSubmesh];
|
KRMaterial* pMaterial = m_materials[iSubmesh];
|
||||||
|
if (pMaterial && !pMaterial->isTransparent()) {
|
||||||
if (pMaterial != NULL) {
|
|
||||||
|
|
||||||
if (!pMaterial->isTransparent()) {
|
|
||||||
// Exclude transparent and semi-transparent meshes from shadow maps
|
// Exclude transparent and semi-transparent meshes from shadow maps
|
||||||
renderSubmesh(ri.commandBuffer, iSubmesh, ri.renderPass, object_name, pMaterial->getName(), lod_coverage);
|
renderSubmesh(ri.commandBuffer, iSubmesh, ri.renderPass, object_name, pMaterial->getName(), lod_coverage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
// Apply submeshes in per-material batches to reduce number of state changes
|
// Apply submeshes in per-material batches to reduce number of state changes
|
||||||
for (std::set<KRMaterial*>::iterator mat_itr = m_uniqueMaterials.begin(); mat_itr != m_uniqueMaterials.end(); mat_itr++) {
|
for (std::set<KRMaterial*>::iterator mat_itr = m_uniqueMaterials.begin(); mat_itr != m_uniqueMaterials.end(); mat_itr++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user