To give some real-world example data on this...
Assuming that you were planning on increasing the heightmap resolution in order to get finer visual terrain detail (ie. increasing the heightmap from 512x512 to 1024x1024 while halving the TerrainScale.X/Y values to get 4x the triangles per given area), as opposed to increasing the total map game play area with using the same TerrainScale (ie. increasing from 2.5 sq kms to 5 sq kms), which is a possible scenerio assuming that the game types did support the larger terrain area (most don't).
The following gives a rough idea.
A 512x512 versus 1024x1024 terrain set (both identical algorithmically designed heightmaps and alphamaps).
I increased the Distance Fog for visual effect to an unreasonable 32768 UUs, which of course results in what would most likely be an unplayable map.
The 512x512 results in (on my system):
- 122,822 triangles in the frustum at this location
- 1.7 render ms
- 148 sectors are actually being rendered
- 25 DrawPrimitives calls are being made to DirectX to batch the triangles
The 1024x1024 results in (on my system):
- 418,644 triangles in the frustum at this location
- 5.73 render ms
- 523 sectors are actually being rendered
- 86 DrawPrimitives calls are being made to DirectX to batch the triangles
That equates to 3.4 times as many triangles.
However, the Terrain Sectors and especially DrawPrimitives calls increase dramatically in order to get the triangles through the render pipeline (note that the number of DP calls will vary with the specific video adapter and what it supports for MaxPrimitiveCount and IndexBuffer size, etc.).
The actual avg fps that I am getting on each terrain (without the stat render display) are 185 and 100 respectively.
This is a drop of less than half with a rendering of almost four times as many triangles.
Note that you would never use Distance Fog this far on most maps as that is your main friend for terrain culling. In UT2004 this is a viewing distance of about 1/2 mile.
This test terrain at 512x512 is from a war theme map I am developing for UT2004 ONS.
With a 20480 Distance Fog and hi-detailed StaticMeshes the average system these days can push about 250,000 world geometry triangles in the frustum at any time, which is the goal I am aiming for.
Screenshots of Overhead, 512x512, 1024x1024 (ImageShack might be slow...):
The biggest issue is that with a 1024x1024 terrain, the resultant basic file size is 67MB...
This is just the two subtractions, terrain G16 and six Layer Alphamaps, and base actors. This doesn't include anything else custom in myLevel such as textures and meshes.
At this heightmap size, the lightmap, collision, G16 and Alphamaps become too large for regular map distribution methods.
Plus working on terrain of this size
really slows down productivity.
The 1024x1024 test terrain at a TerrainScale of 256 results in a 256k (262144) world size subtraction which is about 5 square kms (in UT2004 scale of 52500 UUs/km).
TerrainScale.X/Y should in most cases be between 160 and 384 depending on the design and culling/optimizing that can be utilized. 192 through 256 are usually a good range.
At 256k (1024 heightmap with 256 TerrainScale), this would be usable as far as framerate if considered at the high-end, but the play area would be too large for most game types, and the map file size would easily get over 80MB with a minimal amount of custom content.
No one is going to want to play a map of this size with anything less than 24+ players.
FYI: UE3 deals with all of this differently. It supports real-time tesselation of the terrain to fake a higher resolution (it actually just smooths over the jaggy low-res terrain triangles -- it can't add realistic detail). This is both a positive and negative feature, mainly because it is not a precalculated system (TWI can check out the Epic maillist for some good threads on this).
My test system: P4-3.2GHz HT, 2GB RAM 800FSB, ATI X800Pro, Dual 19" FPs