PDA

View Full Version : LOD and strips



MORB
01-14-2004, 05:34 PM
I'm trying to think about a LOD scheme that would work well with tri strips.

Basically, I'm thinking of reducing the resolution of a mesh by collapsing edges, removing one vertex (and two triangles) each time.

So I thought that I maybe could do that by modifying the index table to collapse the relevant triangle and turn them into degenerate triangles, which would avoid to break up the strip while limiting the amount of changes made to the index buffer to a minimum (which I think would be a good thing when using VBO, but perhaps I'm wrong ?)

Or perhaps simply by splitting the relevant tristrips into two, rendering them with MultiDrawElements (which would let me share index buffers between instances of the mesh at different LOD, unlike the previous solution).

The first solution would eventually lead to a lot of degenerate tristrips, the second one to a lot of primitives. Either problem could be limited by having precomputed (and pre tristripped) intermediate versions of the mesh.

So, which would be the best solution ? Or are both of these ideas unpractical for some reason ?

[This message has been edited by MORB (edited 01-14-2004).]

jwatte
01-15-2004, 06:57 PM
Static lods work OK with tri stripping; most other lods don't.

However, the cases where tri strips help on PC hardware are really quite limited; it's mostly when you are bus limited and the extra bandwidth for sending the indices actually matters. Most of the time, this isn't the case. I'd just go with triangle lists; once you go fill rate bound (which you should do) then the stripping is moot.

heppe
01-18-2004, 01:26 AM
It is dangerous to assume what is and isn't common usage. It all depends on the data. We are routinely T&L limited in HOOPS (lots of small triangles in MCAD), but then again, we have static LODS. It all depends on the data. Games do tend to be fill-limited.

Varshney's group had a nice paper on the subject... http://www.cs.umd.edu/projects/gvil/papers/skipstrips.pdf

Here are some (untested) ideas that I had to extend that work. 1) Degenerate triangles should be removed from the start and end of the strips. 2) It could have benefited from the concept of keeping the tristrips somewhat local.