Introduction

This is the year of a new generation of 3D cards. The 'net is swarming with every kind of discussion, review, and preview for the new technology. With the advancements in 3D rendering there have come a lot of new effects like bump-mapping, anisotropic filtering, and others which most cards will support. There is a difference though, between the two main cards which are sure to dominate. Voodoo3 and TNT2 fans have been debating the merits of the 16/22 VS 24/32 bit output, and the support for 256*256 VS 2048*2048 large textures.

I've been thinking a lot about the last discussion, and I wanted to see with my own eyes what the difference was between 256*256 and 2048*2048, and what S3TC (S3 Texture Compression) and Vector Quantization Texture Compression were. To test these things, I used Quake III Arena as a reference point. I have had the test running here for a while now (Linux) and I’m sure many of you are now playing the Windows version. Quake III Arena (Q3A) uses textures up to 512*512*24.

What is a Texture?

So what is a texture? When you see bricks on the wall in a 3D game, this does not mean the game has actually built it up with bricks. What happens instead is that the game environment is made up of large blocks call polygons. If one polygon must be a brick wall, an artist will make an image with bricks to be place/projected onto the surface. In the end this makes the polygon look as if it is composed of bricks. Now why do we want large textures? Well, the image quality is so much better when you work with large textures. Later on I will describe what I have done to illustrate this.

Ok, let's see which 3D card supports what. Remember I'm going to talk about textures only (and some 16 VS 32 bit output).

Card

Texture support

Output

Extra

Voodoo3

256*256

22

 

TNT2

2048*2048

16/32

 

PowerVR 250

1024x1024

16/24/32

VQTC

Savage 4

2048*2048

16/32

S3TC

G400

2048*2048

16/32

 


Kristof and Dave have discussed the lack of support for larger textures with the Voodoo3. 3dfx has commented that there are ways to work around this (detailed textures in Unreal for example) and that it was no big problem. I decided to see for myself if 3dfx was right about this, and what other solutions are available.

How did I do it? Well I took some PSD photo files (about 3K*3K big each) from a CD which was sent to my company for background use, then I resized the original file twice, once to 2048*2048 and another to 256*256. I saved both new files in PSD file format. After that I built some circles in Illustrator and opened these circles in Photoshop in 2048*2048 and 256*256 and placed them in my first files. Then I duplicated the circle layer and added a motion blur effect (to get some transparencies and gradient). These first circles are in black and white, so I have made some smaller ones and used all kind of blues and added a blur effect again. After that I made the text Beyond3D, duplicated it, and added effects to it.

So here we are with one texture at 2048*2048 and another at 256*256. After that I took both of them and converted their sizes to 512*512, the size Q3A can work with. Click here to see the results (remember these are jpg and thus poor quality). I expected more errors in the end, but the difference is quite big enough for me. The image is much fuzzier with the 3dfx technique. A big problem will be transparencies and gradients, however the image quality with the 3dfx cards not only lies in texture management, but with a new filter that cleans up the image quality.

I have played Q3A test on Linux with a Creative Labs Voodoo 2 12MB, and I already noticed problems with the Voodoo card, as the texture size slider must be put on 2/3. If you put the texture size on full, the frame rate drops to 5FPS. Voodoo3, however, keeps running quite good. What I did discover is that on Voodoo3 card, when you set the texture quality to full, it really doesn't look any better. This is, of course, because the Voodoo3 only supports 256*256 textures. More on Q3A later.

The sacrifice of using large textures is that their file size increases also. If you would use a texture that is 2048*2048 big, you would get a file about 10MB big (targa file for example in 24bit). If every wall in a game has 10MB of textures on it, would the game still run fast enough? Well you would definitely take a performance hit, which is one reason why the Voodoo 3 doesn't support it, choosing quantity over quality. So are there any solutions to this problem?