3Dgaming logo
support our sponsors
 Main Sections
 FRONT PAGE
 LATEST NEWS
 FORUMS
 EDITORIALS
 REVIEWS
 FPS - HARDWARE
 Features
 3DGAMES LIST
 CHEATS
 CHIPSET COMPARISON
 CHIPSET GUIDE
 GETTING FRAMERATES
 Glossaries
 TUTORIAL
 3D TERMS
 SOUND TERMS
 DVD PRIMER
 Information
 ABOUT 3DGAMING
 STAFF
Site Search
  

 

3DGaming's Daily News


Texture Limitations
Alan Dang 
Introduction

When considering next generation 3D chips such as NEC PowerVR Series2, S3 Savage3D, ATI Rage128GL, 3Dfx Banshee, 3Dfx Voodoo3, nVidia Riva TNT, and Matrox MGA-200 the discussion often centers around fill rate performance, anti-aliasing quality, framebuffer color depth, or Z-Buffer accuracy. However, something that is often overlooked is the maximum texture size the chip can handle and the available texture RAM. Most people never stop to think twice about the maximum size of textures – there used to be no reason to. But times are changing, games are changing, and texture limitations matter.

Below I will discuss how the texture size limitations from various chipsets inhibit game development and what different developers have done to remain compatible.

Eidos's Flying Nightmares, a one-year old game, supported high-resolution textures as shown by Intel's AGP documents and showed the benefits of large textures. However, a textured airplane really did not show the importance of high-resolution textures well; one rarely examines a plane up close as most of the combat is done in the cockpit and the enemy planes do not take up enough of the screen to make a difference. Let us look at Final Fantasy VII in detail and then look at the future to see how texture size limitations are beginning to surface.

The Case of Final Fantasy VII

Squaresoft's Final Fantasy VII is one of the greatest Playstation games ever created and may also be the most popular console-to-PC port ever. However, because Final Fantasy VII was developed on the Playstation, numerous problems were encountered when porting the game to the PC. The most publicized idiosyncrasy of Final Fantasy VII for the PC is use of 8-bit palletized textures. This requirement prevented nVidia Riva128, and Rendition v2x00 owners from enjoying the game on their otherwise excellent Direct3D cards (Since then, a patch has been released for the Riva128 owners.)

An important issue with Final Fantasy VII that is overlooked is the various techniques the game must use to present its full-motion-video. The first requirement is that the video be a moving background to the 3D characters on-screen. Thus, the game must use Direct3D mode to display its videos. At first, the solution looks simple; create a flat polygon and use many full-screen textures to display the video -- it's not that simple. Enter 3Dfx.

As a 3D software developer, it is critical that the game support 3Dfx's Voodoo Graphics architecture, which is currently considered the standard for 3D gaming. In fact, there is no 3D game being produced today that is not tested on the 3Dfx Voodoo platform. The source for the full-motion video in FFVII is a 320x240 AVI, VHS resolution. On the other hand, the maximum texture size for 3Dfx's Voodoo architecture (Banshee and Voodoo3 included) is 256x256. Squaresoft now had two options. It could choose to degrade the quality of videos by remastering the video at the lower resolution, or come up with a different method to display the video.

Without question, Squaresoft decided to search for a better method; they came up with an advanced tiling technique. Rather than using a single 320x240 texture to display the video, Squaresoft could split the texture into multiple textures that were smaller than 256x256 such as two 160x240 textures. The story looks like it's finished -- but it's not. Enter ATI.

Despite 3Dfx's number one position in after market 3D acceleration, the ATI Rage Pro Turbo chip held the number one position for OEMs. With the first to market with a full AGP 2X solution, excellent Software DVD, solid 2D/3D performance, the Rage Pro Turbo quickly found its way into Compaq, HP, IBM, and later into machines from Dell, AST, Gateway and numerous 3rd party OEMs. Unfortunately, ATI's driver during development did not play the movies smoothly and the 8-bit palletized texture support was not very stable. ATI and Squaresoft worked closely together to produce a driver that would support FFVII and sure enough, a special 5.20-FF7 build of ATI's drivers was included on the CD. Without question, the Rage Pro was able to display the palletized textures correctly, and the battle sequences were excellent. However, the movies were choppy.

The Rage Pro was developed more than two years ago. At that time, 3D gaming was not as mature, 3Dfx was not the touchstone and the necessity of tiling was unforeseeable. The Rage Pro AGP supports large texture sizes and if 3Dfx was not in the picture, perhaps the large 320x240 texture would have worked fine. The tiling method specifically used by FFVII requires some software processes on the Rage Pro which slows it down. (Texture tiling works well on other games with the ATI Rage Pro however ATI Developer Relations was unable to disclose the titles.)

Other Games

Final Fantasy VII is not the only game that was concerned with texture limitations, Unreal by Epic Megagames, and Half-Life by Valve Software also are part of this milieu. Unreal provides high-resolution textures in its game and despite the excellent output on today's Voodoo 2 in Unreal, it will take other chips such as PowerVR Series2, or S3 Savage3D with its support for full AGP texturing and support for textures larger than 256x256, to really take advantage of all the features the Unreal engine has to offer. Simply put, cards without high-resolution texture support are given smaller, lower quality textures.

Half-Life faced a slightly different problem: the limitation of texture RAM.

I think the larger problem is the texture memory more than the individual texture size. Having to limit ourselves to a 2 MB working set was much more of a constraint than having to break things down into a particular tile size. We have definitely had to do work on the technology side and compromise the artwork to live with this texture limitation.

- Gabe Newell, Managing Director, Valve, L.L.C.

For Half-Life, the problem was not texture size limitation; the artists were not looking for a few high-resolution textures and instead were looking for a plethora of textures. The repetitive walls and cookie-cutter doors and buttons were what Half-Life wanted to avoid. This limitation is well documented in other games, but Half-Life stands apart from the rest because the game has approximately 40 megabytes of raw textures. This is not to say that Half-Life does not use high-resolution textures; it supports texture sizes up to 640x480. Furthermore, some large textures were broken up into smaller textures.

The decimation of textures, that is, the conversion of large textures into smaller lower quality textures, can be configured in the game. For example, a developer can apply large textures to a single polygon. In the process of compiling the level, polygons are split to ensure that there won't be any cases where more than 256x256 texels will be applied to any given polygon. If the designer puts down a full 1024x768 texture, the polygon it is applied to will be split into 4 by 3 faces. The gl_max_size determines the maximum size of a texture that can be handed to the hardware. For example you could have a 1024x768 texture that would be painted onto a polygon that would only result in 256x256 texels actually appearing (the texture is much "bigger" than the polygon it is being painted onto).

In the end despite the many problems discussed above, everyone was smiling. Despite the 3Dfx's limitation of 256x256 textures, it was able to use the tiled method in Final Fantasy VII and still provide smooth video, and also play Unreal and Half-Life at ultra-high frame rates. ATI? All future DirectX6 aware applications could check for tiled support and would run fine on ATI's Rage Pro and luckily, a DirectX6 patch from Squaresoft is rumored to be in the works and furthermore, even without the driver, the game performs well. Squaresoft's programmers delivered the best quality video possible and refused to sacrifice. The Half-Life and Unreal teams, despite all the limitations they faced still produced games with excellent eye candy. Still, no matter how good Half-Life, Unreal, or Final Fantasy VII looks today, it could even be better if it were not for texture limitations. Diligent artists and programmers making 3D games always need to consider texture limitations in their work and their artistic dream is often compromised.

Texture Compression

DirectX v6 has introduced a new trick that might help cure the problem, texture compression. Simply put, you are compressing large textures into much smaller ones as if you were transferring a JPEG instead of a BMP (the actual algorithms are different, but it is the same general idea. Using JPEG compression for textures is called TREK, but it's not used because a JPEG decoder in hardware takes up quite a bit of silicon and it isn't that much better than other solutions I will discuss below.) Texture compression is not only important because it increases the amount of textures one can store, but also because as textures and resolution increase in size, the bandwidth needed increases. Texture compression is another method of reducing bandwidth.

The S3 Savage3D has an excellent implementation of texture compression. One of the features exclusive to the Savage3D is its Auto Texture Compression. This feature automatically compresses textures for games that were not directly programmed to do so. Thus, S3's texture compression works with all games, DirectX 6 or not. As the game is being loaded, your host CPU compresses the textures before sending it to the chip. Naturally, the disadvantage of using the S3 Driver Auto Texture Compression is that the load time in the beginning of starting the game.

However, the Savage3D is not limited to Automatic Texture Compression. S3 licensed its Texture Compression method to Microsoft for use in DirectX 6. So, an artist could use large textures throughout the entire development process and prior to releasing the game, the developer could compress the textures using the Texture Compression algorithm. When this game is run on a Savage3D, there is NO delay and the Savage3D can uncompress the textures on the fly without any performance hit. Furthermore, having smaller textures on the actual game CD-ROM leaves space for other components of the game such as FMV or level data. Although the Savage3D is the only card currently shipping with S3TC support, DirectDraw is used to decompress textures for use with other DX6 compliant cards.

Another texture compression method that can be used in DirectX 6 is Vector-Quantization which is supported by PowerVR Series2 without incurring any performance decrease. The ATI Rage Pro Turbo and ATI Rage128GL also support VQ Compression although ATI only recommends it for use in their native API. Unlike S3TC's Auto Compression, the developer needs to choose which textures he/she would like compressed. Thus, VQ texture compression is somewhat like S3's second option. On a side note of some importance, the PowerVR does not need to worry about memory bandwidth as much as its competitors do, courtesy of the advanced tiled architecture.

The last approach to texture compression is palletized textures. Instead of using 16-bits of data per texel (each pixel in a texture), palletized textures only use 8-bits and have a "table" which define a palette of 256 colors. 3Dfx hardware has support for Narrow Channel Compression which is basically an advanced form of palletized textures which simply has a smaller decompression table. These techiniques offer poorer ratios than S3TC and VQ (S3TC and VQ are approximately double the compression ratio) and usually do not have as high quality. Final Fantasy VII uses this form of texture compression for the 2D backgrounds and as mentioned before, this form of texture compression is often avoided because cards such as the Riva128, RivaTNT, and Rendition cards do not have support for palletized textures in hardware.

Whether or not texture compression will be endemic in future Direct3D games has to be seen, however on paper, it is definitely a good idea and also allows developers to use more high resolution textures. Currently, only a few levels in Unreal support S3TC and there are rumors that a S3TC patch for Half-Life is in development.

Texture Compression Quality?

There is always concern that texture compression will result in lower quality images. While it is true that the compression techniques used are lossy (the compressed texture contains less information than the original texture), the same argument could be made about JPEG images. More likely, it will be the size of the texture that will have the most effect on visual quality, and texture compression is a mechanism for using many large textures. For the general part, however, the S3TC texture and Vector Quantization techniques used have negligible visual consequences when the added advantage of being able to use high-resolution textures is considered.

The Future

So, when comparing next-generation 3D chipsets, it is important not only to look at the fill rate, support for bump-mapping, but also at the maximum texture size, if it can effectively use textures from system memory, and if it supports texture compression in DirectX 6 like the S3 Savage3D, or PowerVR Series2, or simply has a lot of memory such as ATI's Rage Magnum and Rage Fury with 32MB of RAM.

Who can we blame for today's situation with texture limitations? Progress.

To learn more about S3's Texture Compression, or view comparisons between high and low resolution textures, please visit http://www.s3.com/s3tc/

To learn more about the Vector Quantization technique used in PowerVR Series2, please obtain the Acrobat PDF at http://www.powervr.com/cgdc/vector.zip

Special thanks to:

Brian Aden - S3 Incorporated
Gordon Grigor - ATI Technologies Inc.
Julie Kim - NEC Electronics Inc.
Gabe Newell - Valve Software L.L.C
John Smith - NEC Electronics Inc.
Michael Smith - ATI Technologies Inc.
Tony Tamasi - 3Dfx Interactive, Inc.
Paula Turner - VideoLogic Group PLC

For a printer-friendly version, please click here 
[Previous Page] [Top of Page]  [Reload Page] [Forward]