Not logged in, Join Here! or Log In Below:  
 
News Articles Search    
 


Submitted by Charlie Van Noland, posted on March 30, 2002




Image Description, by Charlie Van Noland



These are some shots of two ROAM tech-demos I have been working on. I am doing a full-blown investigation on drawing terrain as fast as possible with a high enough level of detail to bring it up to par with current terrain-based games out there.

The top two screenshots are of my more advanced ROAM implementation. It features partial geomorphing where the addition of detail is a gradual change in the shape of the terrain, as opposed to a sudden pop. The reason it is 'partial' geomorphing is because it only morphs when detail is added, not when detail is removed.

I have to keep track of which triangles were force-split by their neighbors so I can unmorph them before unsplitting the culprit triangle.

That implementation also textures the mesh with a 512x512 'colormap' and a 512x512 detail texture. The colormap is basically a huge texture being stretched over the entire mesh. This yields blurry coloring onto the terrain. You can distinguish rock, dirt, grass, etc from eachother but it is extremely blurry. So I tile the detail texture over the entire terrain. I am not using multitexturing at the moment, so I am doing two passes. If I were using multitexturing the polycount would be cut in half and FPS would go up.

The bottom two screenshots are my second implementation of ROAM. Actually, I just took the first one, before I added geomorphing to it, and changed how the texturing worked..

Instead of stretching a texture over the entire terrain, I created rock, grass, and dirt textures. Using a bitmap consisting of red, white and green I drew out where rock grass and dirt are on the terrain.

This yields a higher texture detail, but less variety in the terrain. I am again not using multitexturing so the polycount could easily be a third of what it is on these screenshots.

I am thinking about sticking with the color map and detail texture because almost all cards support up to two textures per pass with multitexturing.

My other option is to make a huge texture (2048x2048) and chop it into 512x512 textures that are put together like a puzzle onto the mesh.

As you can see, I stuck a lens flare in my second tech demo. This isn't a finalized flare or anything. I just was toying with gluProject. I tried to do a sort of complex-corona on the sun. The corona is blended with a texture of a white spot and the center is at 0 alpha. The corona is a triangle fan, with ten 'slices'. Each slice is 36 degrees. Then I use glReadPixels to check and see if the z-buffer has anything at the tip of each slice on the edge of the actual sun. If there is something there, that slice is given an alpha of 0, so that part of the corona is blocked...

This was used in the xbox hit HALO, I just copied it.

For some reason the lens flare is really slow. I think gluProject has some performance issues, or maybe it's just my video card.

These demos actually have a purpose. I am investigating ROAM for a project I am working on with some friends. It's an online FPS similar to Tribes, except we are going to take out the 'cardboard' feel (as I like to call it) and try to make it more realistic feeling. Tribes just had a weird washed-out feeling to me. Maybe it was their fog or simple structural architecture. Whatever it was, we are avoiding it.

Both demos light the terrain using 'slope-lighting', which I wrote an article about and you can find it on gamedev.net.

I posted a full-size version of this IOTD at http://members.gotnet.net/chaz/iotd_full.jpg. I apologize for the bad quality. I was trying to keep the 2048x1536 at a reasonable size..

If you have any questions/suggestions just drop me a mail, gixelz@hotmail.com. Or leave some comments. Thx! :D


[prev]
Image of the Day Gallery
www.flipcode.com

[next]

 
Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
 
Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.
 
Rory

April 02, 2002, 03:43 AM

On the XBox you can do visibilty testing by telling the GPU you are doing a test, then sending it test geometry. Some time later (maybe up to 4 frames or so - depending on scene complexity) it stores the number of pixels rendered in a register which you can then query. You can then use this value to determine the size and alpha of the sun glare.

Unfortunately you can't do this with DirectX 8.1. Probably because the XBox knows what graphics card it has, whereas PC's could have any old thing inside...

 
This thread contains 31 messages.
First Previous ( To view more messages, select a page: 0 1 ... out of 1) Next Last
 
 
Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.