Navigate:

Advice
Beginners
BIOS Guide
CPUs
Links
Mainboards
Memory
Network
Storage
Video/Sound Cards

Contact
Forum
SiteMap
Sponsors
WebNews
Home
. .

Prices:

Mainboards

ABIT
ASUS
Chaintech
Shuttle
Soyo
Tyan

CPU
Intel
P4 2.4C-800
P4 2.6C-800
P4 2.8C-800
P4 3.0-800
P4 3.2-800

AMD
AthlonXP
XP 1700+
XP 2000+
XP 2400+
XP 2500+
XP 2700+
XP 3000+
XP 3200+

Athlon64
Athlon64 3200+
Athlon64 FX-51

Opteron
Opteron 240
Opteron 242
Opteron 244
Opteron 246

Memory

Corsair
Crucial
Kingston
Mushkin
OCZ

What are you
shopping for?



































































































































































LOSTCIRCUITS

SHORTCUTS:
Top page
Vertex Shaders
Pixel Shaders
TRUFORM, SMOOTHVISION
Specs and Mods
Test Configurations, Overclocking
3DMark2001
3DMark2002
The Hall of Fame
Aquamark, Villagemark
ViewPERF, Quirks with Caligari
Quake3 Arena, Wolfenstein
Conclusion
 FIC RADEON 8500    
The Little Card that Could
(Review by MS, January 4, 2002)
Painting the Structures

After the geometry setup, the vertices have to be converted into pixels. Briefly, the task is to convert a 3 dimensional meshwork of datapoints (vertices) into a 2 dimensional array of pixels that is displayed on the monitor. This is done by linking vertices together to generate triangles, which are then filled with the appropriate color. The color of each pixel depends on the texture applied to the triangle and there are numerous possibilities now, including fixed function texturing or programmable pixel shaders (small programs that change each individual pixel according to the instructions), fog blending and visibility testing. The completed 2D image is sent to the frame buffer and then to the monitor.


Pixel Shaders

If a vertex shader is a program to modify the geometry, a pixel shader is a small program executed on an individual pixels as they pass through the rendering pipeline. SMARTSHADER technology allows to sample and manipulate up to six different textures in a single rendering pass to determine the color of a pixel. Textures can be one-dimensional, two-dimensional, or three-dimensional arrays of values stored in memory. Each value in a texture is called a texel, and although they are most commonly used to store color values, they can contain any kind of data desired including normal vectors (for bump maps), shadow values, or look-up tables. A pixel shader program can have a maximum length of 22 instructions, and make use of up to eight constant values and six temporary data registers.

Programmable shaders allow an almost infinite range of visual effects. However, as mentioned earlier, existing programmable shader implementations place significant limits on what developers can actually do. These constraints can be narrowed down into the following categories:

ATI's SMARTSHADER technology adds more variables, allows longer shader programs, and opens up more opportunities to save memory bandwidth and increase performance. In DX8, vertex shaders are already quite flexible, pixel shaders, however, are severely restricted in the number of effects, otherwise performance would take a severe hit. The reason is quite obvious, any 3D scene contains an order of magnitude more pixels than vertices, therefore, pixel shading needs to be kept as simple as. The workload of pixelshaders is a factor of resolution x frames / sec, meaning that at somewhat playable fps, close to 1 billion pixel shaders are executed each second. here is where single pass multitexturing comes in.

Every time a pixel passes through the rendering pipeline, it consumes memory bandwidth as data is read from and written to texture memory, the depth buffer, and the frame buffer. The trick used here is that instead of writing the data back to the frame buffer, they are looped through the rendering pipeline to add the additional textures. This is called sampling and blending of textures in a single pass but keep in mind that single pass does not mean single clock since each texture requires its own clock cycle. In other words, memory bandwidth is conserved and the multiple textures are executed one / clock cycle.

Schematic overview of the pixelshader program flow (picture courtesy of ATI).

The main difference between DX8.0 and DX8.1 is the number of texture addressing instructions, which has increased from 4 to 14, courtesy of separating the sampling and addressing instructions. This increases the number of texture addressing ways from 40 to a virtually unlimited number. DX8.0 has two different instruction sets, one for color shaders and the other for address shaders. The latter are simplified in DX8.1 and further allow the color shader instruction set to be used for address shaders. Combining the two instruction sets to use a common language increases the flexibility and speeds up applications.

Pixel Shader Effects

Single Pass, Per-Pixel Rendering of Multiple Light Sources

The same technology as discussed above for the single pass multi-texture rendering is used for the per-pixel lighting. This is one of the strongest points of the R200 core as we'll show later

True Phong Shading

Phong shading divides incoming light into three components (ambient, diffuse, and specular) and determines the final color for each perspective. The calculations involved are extremely complicated and, thus, most graphics applications only use simplified approximations. SMARTSHADER technology allows the full Phong shading equation to be implemented, even for multiple light sources. Any variable in the equation, such as shininess, can be varied across any surface using specialized texture maps. The result is that any kind of material can look extremely realistic. The problem in basically all current games is that everyone is using the simplified algorithms and the Radeon 8500 cannot get its horsepower to the ground.

Anisotropic Lighting

Cloth, hair, or sand, to mention just a few, are made up of many small strands or particles, causing them to reflect light in unusual ways which requires a technique known as anisotropic lighting. Anisotropic lighting uses complex functions known as BRDFs (Bidirectional Reflectance Distribution Functions) using a special lookup table for the textures used.

Advanced Bump Mapping

Bump mapping has come a long way from the original embossing, environment mapped bump mapping and Dot Product 3 bump Mapping. Each of these techniques has its own area of strength (e.g. EMBM works best with reflective surfaces). Advanced bump mapping takes things another step by introducing self shadowing bumps and, more importantly, combining multiple bump maps to get the best out of any surface.

Procedural Textures

Similar to Procedural Deformation for vertices, Procedural Textures are another term to describe modification of a texture by assigning a mathematical function to a texture to alter it according to needs on the fly within the graphics chip without requiring additional bandwidth.

next page:    => TRUEFORM, SMOOTHVISION =>

Click here! If you enjoyed reading this article and found it useful, please consider making a small donation to LostCircuits.
Thank you!

General disclaimer: This page only reflects the author's personal opinion and assumes no responsibility whatsoever regarding any of the contents or any damages that may occur explicitly or implicitly from reading the contents of this site. All names and trademarks mentioned in this review are the exclusive property of the respective parent companies.
All contents of this site are protected by international copyright laws. Reproduction of the contents even in parts is not allowed except after written permission by the author and referral to this site.
Copyright 1998 - 2008 LostCircuits