ATI Terrain
|
| |
A performance oriented terrain engine
|
| |
|
| |
This application was designed to make maximum use of
Rage 128 driver optimizations for processing geometry.
It is written in OpenGL. The app processes the terrain
geometry as compiled vertex arrays in order to take advantage
of processor specific driver optimizations such as SSE
enhanced code.
|
| |
Rendering Architechture
|
| |
ATI_Terrian was essentially designed to be a polygon
pump. The goal of the app is to push as many polygons
as possible at the driver. In order to acheive this goal,
all polygons are preclassified by a "material type". The
"material" is actually all relavent rendering state such
as which texture is applied to the poly. This allows the
app to only use each distinct rendering state at most
once per frame.
In order to calculate the potentially viewable set of
polygons each frame, the program uses an octree culling
algorithm. The polygons are all presorted into an octree.
Each frame, the app calculates the planes defining the
view frustum. The app next descends the tree, culling
octrants that fail the planar half-space culling. Once
the algorthm reaches a node, it places pointers to the
lists of polygons into queues based on the render states
they require.
|
| |
Geometry Throughput Optimizations
|
| |
- All the terrain data is rendered using compiled
vertex arrays and the glDrawElements function call.
Additionally, the following steps are taken in organizing
the arrays:
-
- All arrays are aligned to 32 byte boundaries.
- The vertex arrays are padded to be 16 bytes
per vertex.
- The texture coordinates are tightly packed floats.
- The color array is tightly packed GLubytes.
Operation
|
| |
This program requires 64 MB of RAM to run acceptably,
but 128 MB is suggested to minimize paging at startup.
When running ATI Terrain on a Rage128, it is suggested
that you install the drivers released in support of Quake
3 Test. Also for maximum
performance, it is suggested that this demo be run on
Windows 9x due to architectural limitations of Windows
NT.
When started ATI Terrain program will, by default, load
a pre-recorded path file and begin replaying it in an
endless loop. To over-ride this behavior, you can edit
the configuration file as described below. When the program
is in interactive mode, the user can manuever with either
the mouse or a 6 DOF joystick.
- Keyboard Controls:
-
- F1 - Load and run the default path
- F2 - Stop playing a path and drop into interactive
mode
- F3 - Restart the presently loaded path
- F6 - Toggle the drawing of the Statistics
- F8 - Toggle the drawing of the terrain in wire-frame
- ALT + F4 - Exit
Output:
On the right side of the screen will be three separate
lines showning performance statistics. The blue one is
the polygon throughput on the system expresed in thousands
of polygons per second. The data in red is the current
frame rate and the current number of polygons found to
be within the frustum. Both the red and the blue statistics
are averaged over sixty frames to smooth the numbers.
The green statistics are the average polygon throughput
and frame rate for the last complete cycle of the scripted
path.
Configuration File:
ATI Terrain can be configured with the use of the terrain.cfg
file. The file is a simple text file with key/value pairs.
The keys are all in caps, and the values are either integers
or quote delimited strings. Comments are made by placing
a ; in the first character of a line. The following are
the presently valid keys:
|
| |
| Key |
Type |
Meaning |
| SCREEN_WIDTH |
Integer |
Width to use as screen res. |
| SCREEN_HEIGTH |
Integer |
Height to use as screen res. |
| SCREEN_DEPTH |
16/32 |
Bits per pixel to use as screen depth |
| Z_DEPTH |
16/24 |
Bits of precision in depth buffer |
| AUTO_FLY |
0/1 |
Whether to run canned demo at start |
| PATH |
String |
File name of a path file(*.pth) |
| TIME_DEMO |
0/1 |
Whether to run a canned set of frames
for this path |
| CVA |
0/1 |
Whether to use compiled vertex arrays |
| V_SHADING |
0/1 |
Whether to use vertex shading |
| TEXTURE_0 |
0/1 |
Whether to apply the base texture |
| DRAW_SKY |
0/1 |
Whether to draw the sky background
(clears back buffer if off) |
| DRAW_STATS |
0/1 |
Whether to draw the statistics numbers |
|
| |
Contents:
- The source code zip file contains only the source
and project files for ATI_Terrain. It does not contain
the data needed to run the app. The demo zip contains
everything that should be needed to run the app. It
contains the octree file, the texture maps, 5 path
files, the sky's geometry file, the materials file,
and a configuration file. The five included paths
are:
-
- Mountains.pth - loop through the mountainous
terrain
- Default.pth - long loop covering the entire
environment
- Canyon.pth - run through a deep canyon and back
- Farm_Loop.pth - circle the farm house and fields
- Castle.pth - Circle the castle twice buzzing
the tower on the second pass
Requirements:
This app requires glut32.dll.
Questions/Comments:
Please contact developer relations at ATI.
Win32 Downloads
Executable
and support files (22 MB)
Source
and project files (80 KB)
MacOS Downloads
Entire
Project (26.3 MB)
|