| 1306 | } |
| 1307 | |
| 1308 | void Scene::updateGeometryStats() |
| 1309 | { |
| 1310 | auto& s = mSceneStats; |
| 1311 | |
| 1312 | s.meshCount = getMeshCount(); |
| 1313 | s.meshInstanceCount = 0; |
| 1314 | s.meshInstanceOpaqueCount = 0; |
| 1315 | s.transformCount = getAnimationController()->getGlobalMatrices().size(); |
| 1316 | s.uniqueVertexCount = 0; |
| 1317 | s.uniqueTriangleCount = 0; |
| 1318 | s.instancedVertexCount = 0; |
| 1319 | s.instancedTriangleCount = 0; |
| 1320 | s.curveCount = getCurveCount(); |
| 1321 | s.curveInstanceCount = 0; |
| 1322 | s.uniqueCurvePointCount = 0; |
| 1323 | s.uniqueCurveSegmentCount = 0; |
| 1324 | s.instancedCurvePointCount = 0; |
| 1325 | s.instancedCurveSegmentCount = 0; |
| 1326 | s.sdfGridCount = getSDFGridCount(); |
| 1327 | s.sdfGridDescriptorCount = getSDFGridDescCount(); |
| 1328 | s.sdfGridInstancesCount = 0; |
| 1329 | |
| 1330 | s.customPrimitiveCount = getCustomPrimitiveCount(); |
| 1331 | |
| 1332 | for (uint32_t instanceID = 0; instanceID < getGeometryInstanceCount(); instanceID++) |
| 1333 | { |
| 1334 | const auto& instance = getGeometryInstance(instanceID); |
| 1335 | switch (instance.getType()) |
| 1336 | { |
| 1337 | case GeometryType::TriangleMesh: |
| 1338 | case GeometryType::DisplacedTriangleMesh: |
| 1339 | { |
| 1340 | s.meshInstanceCount++; |
| 1341 | const auto& mesh = getMesh(MeshID::fromSlang(instance.geometryID)); |
| 1342 | s.instancedVertexCount += mesh.vertexCount; |
| 1343 | s.instancedTriangleCount += mesh.getTriangleCount(); |
| 1344 | |
| 1345 | auto pMaterial = getMaterial(MaterialID::fromSlang(instance.materialID)); |
| 1346 | if (pMaterial->isOpaque()) s.meshInstanceOpaqueCount++; |
| 1347 | break; |
| 1348 | } |
| 1349 | case GeometryType::Curve: |
| 1350 | { |
| 1351 | s.curveInstanceCount++; |
| 1352 | const auto& curve = getCurve(CurveID::fromSlang(instance.geometryID)); |
| 1353 | s.instancedCurvePointCount += curve.vertexCount; |
| 1354 | s.instancedCurveSegmentCount += curve.getSegmentCount(); |
| 1355 | break; |
| 1356 | } |
| 1357 | case GeometryType::SDFGrid: |
| 1358 | { |
| 1359 | s.sdfGridInstancesCount++; |
| 1360 | break; |
| 1361 | } |
| 1362 | } |
| 1363 | } |
| 1364 | |
| 1365 | for (MeshID meshID{ 0 }; meshID.get() < getMeshCount(); ++meshID) |
nothing calls this directly
no test coverage detected