Image Quality Explained

by Ga'ash Soffer on November 7, 1998 2:59 PM EST

Hardware Limitations

Introduction

What image quality improvements can't current we (err, developers) do(or can't do well)? Well, actually, a lot of things. I will talk about 2 of these things, Voxels, and Translucency. Note some of the things mentioned CAN be done with software rendering.

Voxels

What are Voxels? Well, before I start talking about why hardware can't accelerate them it would help to know what Voxels are. Voxels, or Volumetric Pixels (official name) are 3D pixels. An engine which uses Voxels would be one that, instead of texture mapping polygons, it works entirely with Voxels, i.e. 3D points. All of these 3D points would be drawn and all of them transformed, etc. You can think of a Voxel as a 1x1 polygon. This is one of the types of rendering we will see in the future. The reason current hardware cannot accelerate Voxels (current, i.e. Permedia 3 will be able to, also, high end SGI machines can) is because it is not designed with Voxels in mind. Treating a Voxel as a 1x1 polygon to make it hardware compatible will be much slower than rendering a Voxel engine in software mode. It is painfully obvious that current hardware cannot accelerate Voxels (neither can current PCs); however, there is a slight spin off of Voxels that is pretty useful and cannot be accelerated by hardware, that is displacement maps.

Voxels Today: Displacement Maps

Displacement Maps are textures with a height value tagged on to each pixel. This is one form of bump mapping (not the form hardware uses, they use weird normal deformations, etc.) which can be useful in representing either terrain (i.e. Commanche) or rough surfaces. (Unreal castles could have benefited from bump mapping.) Again, current hardware was not built with this in mind, so if you a developer decides to use displacement maps, he/she will have to resort to software rendering.

Translucency

Wait a minute! I see translucency in lots of games! While it is true that Transluceny is present, current developers "cheat" in order to get it to work. There are a few problems with translucency's. The first problem is how is it possible to tell whether or not the translucency is behind or in front of the lastly drawn polygon (i.e. if the translucency is even visible. If we fix this problem by storing the translucency data in the Zbuffer (a data structure telling us what is visible and what isn't) then we can't tell which non translucent polygon is behind it. (We need that polygon so we know what to blend the translucency with) There is only one way (that I know off) to get unlimited transluceny's to display properly in an arbitrary 3D environment. This method basically requires a ton of translucency buffers (or a Translucency buffer made up of linked lists). In other words, its impractical. This is why current hardware doesn't support "real" translucencys.

Conclusion

I hope you all enjoyed this article, and learned something about 3D rendering, what lots of features do, and how they effect image quality. E-mail me if you have any comments/questions. (I am Ga'ash, not Anand :)

Multitexturing, Blending, etc.
Comments Locked

0 Comments

View All Comments

Log in

Don't have an account? Sign up now