|
Author Topic:   Fanning problem
tlb
New Member
posted February 24, 2000 11:00 AM            
I'm working on a split only version of Roam, and has now reached the stage when its time to improved performance, and from what I've seen on this Msgboard triangle fanning is one way to do it.

I have implemented a fanning system based on the left/right alternating traversal order mentioned in previous post, but I can't think of simple tests to choose the fanning point and to check if a triangle should belongs to the fan or not.

With my "expensive" fanning system the fanlength average about 5 tris/fan with high tesseletion and 3 tris/fans otherwise.
The problem is that my implementation runs faster when I just batch up a bunch of tris in a buffer and then send them to the gfx-card.

I think it should be possible to find a cheap fanning scheme that ends up with fans of lenght 3 to 4, bur I cant get it down on paper.

Therefor I wonder if there is someone who could give me some pointers to how a cheap fanning algoritm could be implemented.

/Yours Mattias H.

IP:

Klaus Hartmann
Member
posted March 10, 2000 12:09 PM            
I had the same question a couple of weeks ago, except that I was using the fans to display a quadtree-based terrain (avg. 4-6 tris per fan). I didn't like this solution, because you cannot generate fan lists. Thus I asked for a better solution on the DirectX Developer Forum and the answer was: "Indexed triangle lists. They are gorgeous."
This answer came from a former 3D device-driver writer (Tom Forsyth). He's one of the most knowledgable and valuable contributors on the DirectX forum. You can really trust his advice.

Of course, you should use vertex buffers for the indexed triangle list.

IP:

Klaus Hartmann
Member
posted March 10, 2000 12:43 PM            
Here's that small thread from the DirectX forum. I hope it's readable...


Tom and Niki,

>Indexed lists. They're gorgeous.

You're right that indexed lists are gorgeous - but I'll just sneak in the
extra mention of "long strips". If you can 'stripify' your data efficiently
then you can get higher throughput on NVIDIA hardware (GeForce and Quadro).
This is a vendor-specific tip - so I don't want to push it too hard, but the
reasons for the higher throughput are fairly generic - so it's worth looking
into strips as your preferred type.

But... If your strips end up significantly shorter than about 200 polys per
call then prefer lists since they will typically allow you more polys per
call. If you want to see high poly throughput then you've got to get the
polys-per-call up to this kind of level.


Richard Huddy
Developer Relations, NVIDIA Corporation.

>Indexed lists. They're gorgeous.
>
>Tom Forsyth - Muckyfoot bloke.
>Whizzing and pasting and pooting through the day.
>
>>
>> Hi,
>>
>> I have a short question. My LOD terrain engine generates a set of fans
from
>> a quadtree. What's the best way to render them (performance wise)? Would
I
>> still use vertex buffers, even though I can't render lists of fans? Or
>> should I use indexed triangle lists instead of fans?
>>
>> Thanks in advance,
>> Niki

IP:

tlb
New Member
posted March 10, 2000 12:54 PM            
I came to the same conclusion myself after some testing, I'm now using a vertex buffer to store the vertex data and then uses drawIndexedPrimitiveVB to draw the actual trianglelists.

Thanks anyway for your response!

/Mattias Hörnlund

IP: