Demo tecnologiche per nVidia

di Redazione Gamesurf
nVidia ha pubblicato una nuova demo tecnologica denominata Terrain che metterà a dura prova la potenza di elaborazione dei chip video prodotti dalla compagnia californiana.
Sfruttando le capacità T&L (Trasformazione & Illuminazione) hardware del GeForce, la demo presenterà anche multitexturing, cubemapping ed altri effetti che, vi assicuro, valgono i 3 MB necessari al download.
Per il prelevamento cliccate semplicemente qui oppure visitate questa pagina per conoscere altri particolari.

Tratto dal file "readme" contenuto nel package:
- Rendering
- OpenGL, the vertex buffers suck but it is easy and fast on nVidia HW
- Landscape is rendered as a CVA with a single DrawElements() call
- Fully T&L optimized
- Octree is used for HSR, see "Subdivision" and CFrustrum
- See CVertexArray, CLandscape, CTriangleIndexBuffer and CGL for more
OpenGL and rendering specific stuff
- Some extensions like multitexturing, cubemapping, compiled vertex arrays
and BGR required !

- Subdivision
- Octree used to access landscape geometrie (intersection tests, redering)
- CFrustum is used for visibility checks of the nodes
- Octree only contains pointers, no real data
- Rendering is performed by collecting all visible triangles in a
CTriangleIndexBuffer class
- Octree code in COctreeNode and CBoundingVolume

- Collision Detection
- Octree handles intersection testing
- Math code and basic Octree based collision detection code integrated,
but not used
- See COctree and CTriangle for more informations
- Anti-Planes, normals and plane equation precalculated

- Texturing
- Truecolor RGB / BGR textures
- Landscape texture is procedurally generated out of various source
textures
- Source textures and target texture can be of any size
- Second TMU is used for detail texturing (CTexture::DetailTexturing())
- Two texture coordinate generation algorithms supported
- See CLandscape for the texture generation code
- CTexture, CCubeMap contains most OpenGL specific texture code

- Water
- Rendered as triangle strips
- Realtime animated mesh
- Textured using Cubic Environment Mapping (CCubeMap)
- Texture coordinates generated by reflection mapping extension
- Octree is used to ensure that only visible water is processes & rendered
- CWater encapsulates the related code

- Lighting
- Standard OpenGL hardware lighting
- Directional lights, with infinite viewer and one-sided lighting used for
- maximum performance (See CSun and OpenGL Performance FAQ on nVidia.com)

- Sky
- Cube based skybox
- Static sun base texture
- Implemnted in CSkyBox

- Sun
- Sun flare rendered without Z-Buffer
- Uses Octree to check visibility
- Code in CSun

- Camera
- Quaternion based camera system
- See CQuat, CCamera and CMotion for the code
- Holds pointer to the Octree to perform collision detection

- Timing
- Win32 multimedia timer set to maximum precision
- See CTimer for detail

- Data Loading
- Texture loading handled by CTexture
- Acces to raw image data trough CImage and derived classes
- Terrain data loaded from TGA heightmap
- Image format can be changed without much trouble
- CProgressWindow shows the status during the loading

- Statistics
- FPS counter (CFrameCounter)
- Traingle counter (See CTriangleIndexBuffer)
- Output displayed with Nate Miller's font library (glTexFont.h)

- Math
- Global used and assembly optimized math code to ensure maximum performance
- CTriangle class to encapsulate most of the triangle math
- Code in "fastlib.h" and CTriangle

- Crosshair
- See CCrosshair