Feature Tests

Along with the game tests, as usual, 3DMark03 has a number of other tests of 3D performance, that do not contribute to the final score but can be useful for further analysis.

Fill Rate

3DMark03 has the same fill-rate performance tests as in 3DMark2001 which can be used to calculate the single-texturing and multi-texturing 3D fill-rate performance.

The single texturing test has a single texture being applied to 64 objects as fast as possible, with each object being rendered after each single texture layer is applied. The Multitexturing test applies 64 texture layers to an object as fast as possible. The multi-texturing test will automatically support as many texture layers in a single pass as the board can handle so a card that can handle 8 layers per pass will render the object in 8 passes. It should be noted that this uses the fixed function pipeline meaning that even newer boards can only apply 8 texture layers per pass – DX9 class hardware can address up to 16 textures per pass, but this can only be done via the use of Pixel Shaders.

Vertex Shader

The Vertex Shader test uses multiple trolls from Game Test 3 trying to club each other. The scene contains 30 trolls, skinned via VS1.1, and each troll consisting of about 5500. Due to the use of VS1.1, the skinning is done 4 times resulting in a usage of about 660,000 (30x4x5500) triangles per frame.


Click for a bigger version

Vertex Shader


The trolls require PS1.1 to be rendered, hence if a DX8 graphics card is not used then this test will not be executed.

Pixel Shader 2.0

This is another DX9 test to analyse the performance of PS2.0 shader hardware by generating some procedural textures.


Click for a bigger version

Pixel Shader 2.0


Procedural textures are textures that are calculated at runtime by a program, rather than the use of a colour (texture) map. Because procedural textures can be mathematically modelled this means that varying levels of detail can be generated – for instance if you were looking at a natural wood bench from far away you may be able to make out the colour and individual planks it was constructed from, but if you moved much closer to it detail such as the wood grain can be generated and seen.

In this test a ‘marble’ model of an Elephant and Rhino are standing in a wooden platform. Both the marble and wood effects are procedurally generated.

The marble effect is created by generating a turbulence map at load time. The turbulence map is sampled and the following mathematical function is applied at runtime:

Color = lerp(DarkMarble,
LightMarble,
sin((turbulence(Position + Frequency)+ Position.x * Scale) * PI)

For the generation of the good grain effect of the platform a 3D noise map is generated at load time which is sampled twice at runtime, in conjunction with the following function:

Color = smoothpulsetrain(LightWood,
DarkWood,
turbulence(RingOffset))

PS2.0, or above, compliant hardware is required to run this test.

Ragdoll

The ‘Ragdoll’ test evaluates the performance of both the CPU and Vertex Shader performance and balance with the use of ‘Ragdoll’ physics and vertex workload with the generation of a large number of skinned characters.


Click for a bigger version

Ragdoll


As with the Vertex Shader test, this test features a large number of troll models, each skinned via VS1.1. The trolls take a dive off a staircase and tumble or fall down, coming to rest in a natural position in relation to their environment – the ‘ragdoll’ effect is calculated via the use of the Havok physics engine. As before, the trolls require four VS1.1 passes and uses the same lighting model as in Game Test 2 & 3, however, unlike the Vertex Shader test, will benefit from single pass lighting from PS1.4.

Again, this test requires at least PS1.1 hardware to operate.