Graphics: Fix submesh rendering
This commit is contained in:
parent
138f2b88b3
commit
cd08d97ac6
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue