LOD stress test

Published August 31, 2005
Advertisement
Time for a stress test.

I took a MT building of approximately 12k polys, and duplicated it.. 1600 times, for a grand total of 18 millions polys (without LOD).

With LOD, it's rendering about one million polys ("only" ?). This screen is running at around 35 fps:

Previous Entry More work on LOD
0 likes 6 comments

Comments

noaktree
Very nice!
August 31, 2005 08:30 AM
okonomiyaki
That is nice, would be even better if you compared it to how it run without lod.

Probably not even 1 fps? hehe, cool.
August 31, 2005 11:49 AM
superpig
Is your LOD system compatible with instancing? Seems like it would be good for this kind of scene...
August 31, 2005 11:54 AM
Ysaneya
Depends on what you mean by instancing ? I'm mostly using OpenGL, so the D3D equivalent is not available, if that's what you meant.

The LOD algorithm itself is not particularly original (it's based on edge collapse) but i've been very carefull as to how i implemented it. I introduced the notion of virtual vertices (which are basically a set of vertices all sharing the same position: if you are collapsing a corner of a cube mesh, for example, you don't want to collapse only one triangle, as it'd created a hole); i have some pretty advanced error metrics based on the change of topology, surface area, normals, texture coordinates and materials. The equation has to be adjusted though since it involves some constant weights for each parameter.

The LOD algorithm is generating N index arrays (N is the number of levels and is given by the user, at pre-processing time for example) but the original vertices are not modified. Rendering an LOD mesh simply involves a distance calculation (to determine which level to use), and rendering with the correct index buffer.
August 31, 2005 03:15 PM
superpig
In retrospect, it was a slightly silly question. I just meant whether you could draw them all in a single draw call, or whether you had to do one draw call per object. Of course you have to do one draw call per object, because the number of polygons is not the same in all objects.

If your algorithm is based on edge-collapse, perhaps you could extend it to support progressive LOD?
September 01, 2005 04:00 AM
Ysaneya
I could implement progressive LOD, but i'm not going to, for a variety of reasons. One of them is, at the moment, all the geometry is shared by all the instances, including the index arrays. If i wanted to implement progressive LOD, i'd have to give one unique index array for each instance, and use the CPU to fill it dynamically every frame or so. That wouldn't be terribly efficient. However, i'm investigating geomorphing, which could easily be implemented in a vertex shader.
September 02, 2005 05:58 AM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement