What makes a good terrain engine?

Started by
14 comments, last by Charles B 19 years, 6 months ago
A complex question, but not one I think that is beyond the good people who visit these forums. What do you think is vital/nessecary to make a good terrain engine? Is it texture splatting? Geomorphing? Mip-mapping? per-pixel lighting? You tell me. I know that there is probably alot of differing opinions on this but I'd truly like to know what people think. Post examples, links, pics. I'd love to see what you've accomplished. Ciao
Advertisement
To be honest, since I'm not familiar with creating a terrain engine the main thing for me would be creativity.

From my perspecive it's one thing at a time, you improve the basics then refine them, then improve them again. First thing that I would see important is the geomorphing, since the perpixel lighting, and texture splatting aren't very important unless you have a nicely done map to begin with.

First I would get a few books on terrain generation, maybe do a few pre-book tests yourself by generating a height map then generating each poly baised on that height map. Maybe take a look at some topographical maps to see how the earth is formed, give you an idea of what the glaciers did to change the terrain.
Well, I hope you didn't take it to mean that those were the only choices. I just wanted to throw out a few examples of features that my friends have touted as the true necessities of a terrain engine, heightmap renderer or whatever you want to call it.

Ciao
Life: Tress, bushes, shrubs and grass.
Not So Life: Rocks and boulders.

Giant flat green squares isn't very exciting. Eye candy like pixel-perfect lighting and texture splatting can come later. Flat, boring terrain, no matter how well lit and textured, lacks detail and richness without vegetation.
pickup the Terrain Engine book by Greg Snook. Its a good read showing how design and fully implement a terrain engine in DX9, he currently works at Bungie and worked on the original Halo (full of terrain) and now on Halo 2.

-digga
I fail to see what the book has to do with the original question. What do "you" think are important features of a terrain engine?

Personally, I think the true magic of a terrain engine is its LOD algorithm. My current engine uses geometrical mipmapping to cut down on the vertices nessecary for the whole scene.

Recommending a book is an okay thing, but it does not tell me what your opinion is on the original question.

Ciao
I'd say the answer to the question is simple: appearance.

Now, there are many facets of appearance.

The first (and most obvious) one is how it looks in a screenshot. Is it blocky and poorly-lit? Or are there beautiful rolling hills, rocky outcroppings, and a nice atmospheric look to it? Are there small details? Tiny bumps? Vegetation? Large draw distance? All of these things add up.

The second is how it looks in motion. Are shifts in LOD noticeable, or does the terrain pop more than a weasel in an Orville Redenbacher bag? The most beautiful looking terrain can look terrible if the LOD changes are really noticeable.

Third is smoothness. And by smooth I mean framerate-wise, not landscaping wise (though that could be important, too, depending on the scene you're trying to render). Again, it doesn't matter how beautifully it renders, with near-pixel-perfect LOD if it runs at < 30 (or 60, depending on your pickiness) frames per second.

On a non-appearance note, the memory footprint is important, too. I made a really nice-looking terrain engine that used almost a gig of memory for a medium-sized level. That's very unacceptable, and thus I scrapped it. Using procedural noise and higher-order surfaces has been said to use very low amounts of memory. Geomipmapping uses very high amounts of memory. Memory is a scarce resource, so use as little of it as possible.

Now, with these qualifications, there are bound to be tradeoffs. Maybe you need to reduce the amount of detail for a speed increase, etc. But those are the main factors in terrain rendering, to me.
I can say, almost everything that makes it model nature better.

As about performance, it have no point to be 15 FPS if rendered mainly on GPU - from 15 FPS you have to either fall to SPF and make better quality(because 15 FPS is not SO much better than 3, but there's 5 times more time to render, "5 times more quality" possible).But all SPF engines is purely software because it allows to do more things.
Or get it to 30 FPS, but with lower quality. Or stay at same performance and wait for next GPU, and then keep 30 .. 60 FPS.

From other side, nn CPU, it's hard to get above 10 FPS, so i focussed on quality. I think my renderer might work at >30 FPS if done on GPU....
just to add my thoughts...

I'd reckon scale is an important factor in any terrain engine. I personally love hill/mountain walking (in the real-world!). Sitting on the top of a mountain looking over a huge vista of lakes/hills/mountains spreading out over however many miles. Any terrain engine that replicates this sense of scale gets my attention.

Unfortunately, pulling it off is often quite taxing on current hardware :-) I think Project-IGI (#1) and Farcry is as close as I've come to being truly impressed (along these lines) by a commercial engine in recent years.

Jack

<hr align="left" width="25%" />
Jack Hoxley <small>[</small><small> Forum FAQ | Revised FAQ | MVP Profile | Developer Journal ]</small>

If it's realtime, then you had better read up on binary space partitioning, and how to implement binary trees. You will need to be good at this to even consider a good framrate.

This topic is closed to new replies.

Advertisement