Quad and Triangle Stripping
Quad strips generated from a DEM file. No special assumptions made, the loader just dumped quads
into the strip engine then let it find the nice long full terrain wide strips. Alternating colors
are used to show the different strips.
Buddha loaded from PLY, 1.1 million triangles. The left image is the shaded lit original file.
The right image is the color coded display of the triangle strips (alternating colors to show the strips.)
The stripping version resulted in an average of 4.6 triangles per strip, resulting in approximately 1.7
million less vertex transforms per render.
This project was to work on efficiently generating triangle and quad strips from a set of individual quads and
triangles given to the stripping engine. The Stripping engine's purpose is to generate strips as fast as possible (so it can be done at load time), rather than taking the time to generate the theoretically optimal solution. It does a fairly effective job. The picture to the right is of a rather simple case,
stripping a terrain file, but it shows what it can do.
Some may ask why waste the time, now that hardware can do 25 million triangles per second. To get the full throughput
of a graphics chip, the less work it has to do, like transforming an extra million vertices or so, the better off you are. The less data you have to shuttle across the bus, the better also.
For most real world scenarios, it would be better to generate the strips off-line then load the models already stripped.
The short-coming being that you can't support dynamic geometry scenarios this way.
PLY Loading - To test the stripping engine better, I wrote a PLY file loader so I could get access to nice big
datasets, like Happy Buddha, that aren't as regular as terrain. As can be seen in the image to the right, and the statistics
beneath it, the algorithm stands up to a more realistic dataset. I'm sure the dataset could be done with a more optimal
set of strips, the algorithm performed quickly and reduced the vertex transform count by 1.7 million vertices (>50%.)