Graphics: Fix submesh rendering

This commit is contained in:
SirLynix 2022-04-09 20:00:01 +02:00
parent 138f2b88b3
commit cd08d97ac6
2 changed files with 7 additions and 7 deletions

View File

@ -81,7 +81,7 @@ namespace Nz
if (const RenderPipeline* pipeline = &spriteChain.GetRenderPipeline(); m_pendingData.currentPipeline != pipeline) if (const RenderPipeline* pipeline = &spriteChain.GetRenderPipeline(); m_pendingData.currentPipeline != pipeline)
{ {
FlushDrawCall(); FlushDrawData();
m_pendingData.currentPipeline = pipeline; m_pendingData.currentPipeline = pipeline;
} }

View File

@ -65,7 +65,7 @@ namespace Nz
if (const MaterialPass* materialPass = &submesh.GetMaterialPass(); currentMaterialPass != materialPass) if (const MaterialPass* materialPass = &submesh.GetMaterialPass(); currentMaterialPass != materialPass)
{ {
FlushDrawCall(); FlushDrawData();
currentMaterialPass = materialPass; currentMaterialPass = materialPass;
} }
@ -99,19 +99,19 @@ namespace Nz
const Recti& targetScissorBox = (scissorBox.width >= 0) ? scissorBox : invalidScissorBox; const Recti& targetScissorBox = (scissorBox.width >= 0) ? scissorBox : invalidScissorBox;
if (currentScissorBox != targetScissorBox) if (currentScissorBox != targetScissorBox)
{ {
FlushDrawData(); FlushDrawCall();
currentScissorBox = targetScissorBox; currentScissorBox = targetScissorBox;
} }
if (!currentShaderBinding) if (!currentShaderBinding)
{ {
m_bindingCache.clear(); assert(currentMaterialPass);
const MaterialPass& materialPass = submesh.GetMaterialPass(); m_bindingCache.clear();
materialPass.FillShaderBinding(m_bindingCache); currentMaterialPass->FillShaderBinding(m_bindingCache);
// Predefined shader bindings // Predefined shader bindings
const auto& matSettings = materialPass.GetSettings(); const auto& matSettings = currentMaterialPass->GetSettings();
if (std::size_t bindingIndex = matSettings->GetPredefinedBinding(PredefinedShaderBinding::InstanceDataUbo); bindingIndex != MaterialSettings::InvalidIndex) if (std::size_t bindingIndex = matSettings->GetPredefinedBinding(PredefinedShaderBinding::InstanceDataUbo); bindingIndex != MaterialSettings::InvalidIndex)
{ {
assert(currentWorldInstance); assert(currentWorldInstance);