Textures, game engines now and in the future

Textures are getting bigger and bigger. As they grow in dimensions and color depth, the amount of memory they take up also grows. Where the Quake II engine used textures with a maximum resolution of 512*512*16, the Quake III Engine sometimes uses textures as large as 1024*1024*32. In some levels in Q3A the framerate drop is huge due to the large textures. And this is not the end. In the future we may be seeing textures as big as 2048*2048*32. Of course this is just speculation at the moment, but you must agree with me that textures will be getting bigger.

On top of that, I think we will see new developments in engines making non-repeating textures possible. These days, if you look at Q3A or Unreal Tournament (Yes I know there are other engines, but I prefer to use the Q3A engine as an example.) textures are reused throughout the levels. Why is this? Is it because the texture artist couldn't come up with more textures? No, it's simply to get the stress off of your video card. This reuse of textures will most likely become less and less as hardware becomes more powerful. The most ideal situation for a game developer is to build a game without repeating textures. So that every room and every part of the game has a unique texture setting, thus enabling a more realistic 3D experience.

I hope you all agree that building either larger textures or having more textures would give us a boost in better quality in game engines. Games will become more realistic by using different textures for every part of the game. Games will look better with sharper textures (sharper as in more color depth). Of course this will give problems on our current 3D cards. When you have an 8MB or 16MB card, you'll certainly notice the stuttering in some Q3A levels. Even with today's 32MB cards you can notice a huge framerate drop. So in the end it comes down to two problems:

  1. Shortage of RAM
  2. Shortage of Bandwidth

Let's look at bandwidth comparison: (from 3dLabs VT whitepaper)

Bus Peak Bandwidth
On card memory 2,000 MB/sec
AGP 4X 1,066 MB/sec
AGP 2X 533 MB/sec
PCI-32 132 MB/sec

Here we see why AGP still isn't used to handle the textures in a game. Remember, most of the time the AGP bus will be used for other things as well, like program instructions, polygon data or chip state data. PCI is almost totally useless to handle textures. But several companies have found a way to solve these problems.