|
Author Topic:   Paging terrain data
Lithium
Member
posted January 19, 2001 03:01 AM         
Is anybody working with very large terrain (> 2k x 2k)? I was thinking
along the lines on how I would handle texture and heightmaps.

Heightmaps, power of two:
1k x 1k = 1MB
2k x 2k = 4MB
4k x 4k = 16MB
8k x 8k = 64MB

For large heightmaps, I could probably use Windows file mapping. This
way, instead of copying the heightmap into an allocated buffer, I could
simply access the data directly as a file mapping. This sounds like it
could work very well.

For textures, since there is only a limited amount of video memory in
hardware, I would have to page in terrain texture when it is needed.
If I synthesize a single texture for the terrain, I could save it to
file first. Then I can access it with file mapping.

If each heightmap cell is exactly one texture pixel, the required
storage for a single 32-bit texture would be huge:

1k x 1k x 3 = 3MB
2k x 2k x 3 = 12MB
4k x 4k x 3 = 48MB
8k x 8k x 3 = 192MB

Any thoughts?

IP:

MooZ
New Member
posted June 12, 2001 11:18 AM            
Hy,

I think that if you want to perform window file mapping, you'd better store your heightmap as a set of patchs instead of a linear buffer. As if, your patch class will have a member pointing to the corresponding file position.
Only visible patches will be loaded in memory. And if your camera don't perform teleportation, you will only have a small set of patches to load from file every frame.

IP:

Dreamer
Member
posted June 12, 2001 11:30 AM         
Texturing - TM's terrain texturing works with Vertex-based textures - that way you could calculate your texture layout on the fly (although I don't believe TM does that from what I've seen, no matter what other people say) based on height/angle ranges.
Since each texture only has to be large enough to cover one Triangle in your Heightmap, you could save lots of memory that way.

IP:

Lithium
Member
posted June 15, 2001 11:52 PM         
I haven't looked at my terrain code in months.

What I was doing at the time was synthesizing a unique landscape texture with
lighting baked in, and then load it at runtime. Then all I had to do was
specify the right texture coordinates for the terrain, instead of slowing
down the frame rate with real-time multi-texturing.

But I think this is only good for small terrain, 1024x1024 and smaller.
I would definitely go with Dreamer's suggestion and use real-time Ecosystems
like LDA does.

IP: