Why doesn't Lod improve my FPS?

I use LodGenerator to generate Lod. The scene has 60000 cubes. The first image use Lod, the second is not.



Obviously, the triangles in the first picture are significantly less than in the second picture, but fps is down.
why?

I don’t think this is a valid test case… Sure 10 → 9 is a 10% drop in FPS but LOD is not the issue here. Insane amount of everything. This doesn’t test LODs, this tests limits on objects and triangles combined. LODs doesn’t drop object count for example.

1 Like

Despite amount of everything being crazy, the number of triangles has gone down. I think total frame time shouldn’t go up.

In this case, with 60k cubes, BatchNode or (InstancedNode) is a better way than LOD. LOD cost more CPU time and memory.

My gut feeling is that the time difference is due to overdraw. Your ‘faster’ time appears to have less overdraw so due to LOD changes.

In this case, you aren’t being handicapped by the Triangle count so it makes little difference to your fps.The calls to draw 60k objects each frame is most likely what is killing your fps.

maybe…

60,000 objects.

60,000 draw calls per frame.

Block worlds are not made of blocks. They are made of meshes containing batched visible surfaces.

LOD is not your problem.

see existing voxel libraries made for JME.

like said, you should have like 10 geoms not 60000 in this example.

VOXEL WORLD is keyword for you.

GREEDY MESHING is also keyword for you related to voxel world

example:

But note, while greedy meshing is a good idea, if you are trying to learn how to do this yourself… the basic “not greed” meshing is very straight-forward to understand. Greedy meshing gets considerably more complicated.

So if you will not use an existing block library then maybe start without greedy meshing first.

Basic algorithm:

for each cell {
    if empty {
        continue
    } else for each direction {
        if neighbor is empty {
            add quad facing that direction
        }
    }
}
3 Likes

I don’t think the OP is trying to build a block world per se. Judging by the previous question. How to improve fps?.

If this is still the same project, just keep experimenting with the different techniques. If it is just cubes, then follow the advice on this thread.

yes, this is still the same project. I guess i need to keep experimenting with the different techniques :thinking:

In case block world is what you are looking for, try using an existing voxel library. It will take care of everything for you.

Otherwise, you can try instancing or batching to reduce draw calls based on your needs. LOD won’t help with reducing draw calls I belive.

See TestInstanceNode for example: