Author Topic:   Some Roam/Direct3D questions...
New Member
posted May 20, 2000 11:32 AM            
My name is Tobias Johansson and I've read this message board a while, but never
got around posting everything. This board is a damn good reference if you're
interested in terrain rendering, like me.

I'm pretty new to terrain rendering, but I've managed to do some pretty cool things.
I've implemented Röttgers LOD algorithm (mostly due the lengthy post on this forum),
but I couldn't fix the cracks, and implementing geomorphing would have been too much
work with my engine design. Plus I found that only using quadtree culling, and no LOD,
was faster.

I've also implemented split-only ROAM for LOD (great article Bryan!), just a
very basic implementation without geomorphing or even frustum culling of bintree nodes.

But I want it be as fast as possible (who doesn't?), and anyone who's done a little
D3D coding know that DrawIndexedPrimitiveVB is the optimal way of rendering. (I got
a 50% speed up when I changed an old engine from DrawPrimitive to DrawIndexedPrimtiveVB,
and with a T&L card that difference would have probably been even bigger ).
The problem is that it's impossible for me to create vertexbuffers bigger than 128x128,
the CreateVertexBuffer function returns some unrecognizeable error value, but I suspect
I don't have enough memory. A 128x128 terrain is not so impressive, and I want much bigger
ones. I thought of updating the vertexbuffer each frame, but I'm not sure if that would
be much faster than just using DrawPrimitive. Anyone had similar problems?
BTW, has anyone had problem with uploading big textures in D3D? I'm using a 1024x1024
terrain texture, and it works fine on my ATI Rage Pro, but on Matrox G200/G400 it doesn't
seem to upload the texture and the terrain is just black. But the other textures work.
If anyone wanna test it, it's downloadable here: http://home.bip.net/tobias.johansson1/terraindemo.zip (725kb)
But I don't think that works on any computer but mine, but I've made a patch (just unzip in the same dir) http://home.bip.net/tobias.johansson1/terrain2.zip (194kb)

What is the most efficient way of culling away bintree nodes?
I've checked the ROAM paper, and I get the idea of passing the IN value down to
the children wedgies (funny name BTW ). But what is the most efficient visibility
test? Bounding sphere, bounding box etc.

Also, is there some way of approximating the distance between two points, I don't like those sqrt's...

Greetings Tobias - http://come.to/polygone

[This message has been edited by Tobias (edited May 20, 2000).]