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

Submitted by Darshan Patil, posted on July 13, 2001

Image Description, by Darshan Patil

These are screenshots from a terrain engine I am working on.

I started with the ROAM algorithm but found the vertex popping a little irritating and discarded it.

This is a simple quadtree (ish) algorithm (no LOD whatsoever) I implemented in about 2 days.

I have used something I like to call coherent frustum culling. The lighting is precalculated and the shadowmap is ultra low-res with 1 pixel/sample.

I havent measured the fps but it feels ok on my Celeron 400 /64MB/i810.

I know the texturing is awful (its a texture tiled on the landscape). I just put it together to send my first iotd ;)

I am working on a texture synthesizer at the moment and am toying with the idea of using the ROAM algo to create static optimal meshes.

--Darshan Patil

Image of the Day Gallery


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.
Alex J. Devoe

July 14, 2001, 09:59 AM

Yes! It is my first time posting anywhere on this page. I'm so excited! Darshan, engine looks like it's coming along pretty well.

.-wXm-. Maybe we're both tired/crazy. I see an odd snake-oid creature with it's tounge sticking out on the right top corner of the right top corner image! HEH!


July 14, 2001, 11:57 AM

Just consider all the quads which were visible in the last frame and their neighbors. If any of those quads changes from invisible to visible then consider it's neighbors as well. Might still be faster than testing all quads.
Problem: How do you get all neighbors for a quad including those with a different parent (quadtree)? And how do you define neighbor? Is it a quad on the same tree level?


Rectilinear Cat

July 14, 2001, 12:11 PM

plek/solar: Well then let's see your stuff eh? I haven't tried making a landscape engine, so I need all the example images I can get!


July 14, 2001, 01:09 PM

Hmmz.. there should be a Landscape Of The Day!! :D

image looks good btw ;)

Matthew Harmon

July 14, 2001, 01:34 PM

Looks great.

Before you spend any more time optimizing your quadtree system you may want to consider rendering big "chunks" of terrain, either within a quadtree or via a simple "brute-force" system.

Today's hardware typically performs better if you can leave big chunks of your vertex data "alone" and not have to update it. In a basic quadtree system, you usually re-submit all your vertices to the API. As it turns out, this overhead is a real killer. Using "chunks" you can leave big sections of your terrain "on the board" and just ask for them to be rendered without sending any new data through the API.

In my work on GeForce-based boards I have found this "chunking" system to be far faster than a traditional quadtree.

Keep up the good work!


July 14, 2001, 03:03 PM



July 14, 2001, 03:19 PM


Jukka Liimatta

July 14, 2001, 03:49 PM


I sort of liked your earlier signature. Is there any way we could have it back? =___(

Wolfgang Engel

July 15, 2001, 02:35 AM

Can you shade more light on your chunk technique ?

Nick Van Tassell

July 15, 2001, 10:08 AM

Terrain looks good, even the texturing. I have implemented a ROAM algorithm and have not experience the "popping" effect. Have you checked out the ROAM home page at
There's a section about reducing the annoying "pooping" effect by morphing vertex points over time.

1) Did you use a heightmap to generated the terrain?

2) What program did you use to generate the heightmap?

3) How did you generate the terrain texture (you say it looks bad, but I like it)?

4) How did you generate the lightmap? Did you calculate any surface normals?

What about the code ;}

Great pic, keep up the good work!

Mike Taylor

July 15, 2001, 03:35 PM

Yeah, the Gamasutra article is good, but the subdivision scheme breaks down when you change the leaf node type. I've implemented it using normal heightmaps for the nonleaf nodes, and bicubic Bezier patches in the leaf nodes, and the t-junction problem is a whore. It took me a very long time to finally get a fast tesselation and rendering setup that didn't show any seams.

-Mike Taylor


July 16, 2001, 03:27 AM

And about DEMO !!!!! ??????

Darshan Patil

July 16, 2001, 06:38 AM


Thanks for the info. I'll check it out.
About your questions:

1) Yeah its a heightmap.

2) I wrote a utility to convert USGS DEMs (Digital Elevation Maps) to heightmaps.

3) Well the terrain texture is a single texture wrapped around the landscape. I downloaded the texture from someplace but dont remember where :(

4) I calculated the lightmap using a ray-tracing algo. No I did not use surface normals.

5) Code. Well gimme your email address and I'll send it to you.


July 17, 2001, 08:14 AM

d`arcy slaps Jukka with a large trout

This thread contains 44 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.