Skip to content

Commit cdb5a71

Browse files
committed
Fixed aabbs
1 parent 5a03c28 commit cdb5a71

File tree

2 files changed

+19
-14
lines changed

2 files changed

+19
-14
lines changed

examples_tests/41.VisibilityBuffer/main.cpp

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -551,22 +551,26 @@ int main()
551551
_NBL_DEBUG_BREAK_IF(true);
552552
}
553553

554-
for (uint32_t i = 0u; i < actualMdiCnt; i++)
554+
uint32_t aabbIdx = 0u;
555+
for (auto packedMeshBufferData : pmbd)
555556
{
556-
batchCullDataEnd->aabbMinEdge.x = aabbs[i].MinEdge.X;
557-
batchCullDataEnd->aabbMinEdge.y = aabbs[i].MinEdge.Y;
558-
batchCullDataEnd->aabbMinEdge.z = aabbs[i].MinEdge.Z;
557+
for (uint32_t i = 0u; i < packedMeshBufferData.mdiParameterCount; i++)
558+
{
559+
batchCullDataEnd->aabbMinEdge.x = aabbs[aabbIdx].MinEdge.X;
560+
batchCullDataEnd->aabbMinEdge.y = aabbs[aabbIdx].MinEdge.Y;
561+
batchCullDataEnd->aabbMinEdge.z = aabbs[aabbIdx].MinEdge.Z;
559562

560-
batchCullDataEnd->aabbMaxEdge.x = aabbs[i].MaxEdge.X;
561-
batchCullDataEnd->aabbMaxEdge.y = aabbs[i].MaxEdge.Y;
562-
batchCullDataEnd->aabbMaxEdge.z = aabbs[i].MaxEdge.Z;
563+
batchCullDataEnd->aabbMaxEdge.x = aabbs[aabbIdx].MaxEdge.X;
564+
batchCullDataEnd->aabbMaxEdge.y = aabbs[aabbIdx].MaxEdge.Y;
565+
batchCullDataEnd->aabbMaxEdge.z = aabbs[aabbIdx].MaxEdge.Z;
563566

564-
batchCullDataEnd->drawCommandGUID = pmbd[i].mdiParameterOffset + i;
565-
assert(pmbd[i].mdiParameterOffset + i <= pmbd[i].mdiParameterCount);
567+
batchCullDataEnd->drawCommandGUID = packedMeshBufferData.mdiParameterOffset + i;
566568

567-
draw3DLine->enqueueBox(dbgLines, aabbs[i], 1.0f, 0.0f, 0.0f, 1.0f, core::matrix3x4SIMD());
569+
draw3DLine->enqueueBox(dbgLines, aabbs[aabbIdx], 1.0f, 0.0f, 0.0f, 1.0f, core::matrix3x4SIMD());
568570

569-
batchCullDataEnd++;
571+
batchCullDataEnd++;
572+
aabbIdx++;
573+
}
570574
}
571575

572576
sceneData.pushConstantsData.push_back(mdiListOffset);
@@ -893,8 +897,9 @@ int main()
893897
memcpy(uboData.NormalMat, camera->getViewMatrix().pointer(), sizeof(core::matrix3x4SIMD));
894898
driver->updateBufferRangeViaStagingBuffer(sceneData.ubo.get(), 0u, sizeof(SBasicViewParameters), &uboData);
895899

896-
// TODO: Cull MDIs
900+
// cull MDIs
897901
cullBatches(vpFromFirstFrame);
902+
COpenGLExtensionHandler::pGlMemoryBarrier(GL_COMMAND_BARRIER_BIT | GL_SHADER_STORAGE_BARRIER_BIT);
898903

899904
driver->setRenderTarget(visBuffer);
900905
driver->clearZBuffer();

include/nbl/asset/utils/IMeshPacker.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ class IMeshPacker : public IMeshPackerBase
239239
//TODO: functions: constructTriangleBatches, convertIdxBufferToTriangles, deinterleaveAndCopyAttribute and deinterleaveAndCopyPerInstanceAttribute
240240
//will not work with IGPUMeshBuffer as MeshBufferType, move it to new `ICPUMeshPacker`
241241

242-
TriangleBatches constructTriangleBatches(const MeshBufferType* meshBuffer, IdxBufferParams idxBufferParams, core::aabbox3df* aabbs) const
242+
TriangleBatches constructTriangleBatches(const MeshBufferType* meshBuffer, IdxBufferParams idxBufferParams, core::aabbox3df*& aabbs) const
243243
{
244244
uint32_t triCnt;
245245
const bool success = IMeshManipulator::getPolyCount(triCnt,meshBuffer);
@@ -390,7 +390,7 @@ class IMeshPacker : public IMeshPackerBase
390390

391391
if (aabbs)
392392
{
393-
if ((nextTriangle == triangleArrayEnd || m_minTriangleCountPerMDIData == m_maxTriangleCountPerMDIData))
393+
if (nextTriangle == triangleArrayEnd || m_minTriangleCountPerMDIData == m_maxTriangleCountPerMDIData)
394394
*aabbs = core::aabbox3df(core::vector3df(min.x, min.y, min.z), core::vector3df(max.x, max.y, max.z));
395395
aabbs++;
396396
}

0 commit comments

Comments
 (0)