flipCode - Tech File - Conor Stokes [an error occurred while processing this directive]
Conor Stokes
(aka DirtyPunk)
Click the name for some bio info

E-Mail: cstokes@crytek.com

   04/21/1999, Why Software Rendering Is Not Dead

The texture cache, as used by Quake, is a very interesting invention. Mainly because it allows multiple passes to be rendered, fully perspective correct, with only one rendering iteration per texel. Also, reallistically, because this gets perspective corrected at rendering time the x, y, and z can be treated linearly, and the environment is a rectangle.

This allows for perspective correct fog without using 2 divides per pixel. It allows for linear interpolation of mipmapping (the type that is used in Tri-linear mapping). It also allows bumpmapping, environment mapping and things to be perspective corrected with the texture, and only be calculated once per needed use (Static lighting assumed).

Also, you can use it to render multiple co-planar triangles, such as a shadow split surface. I am thinking about doing some kind of advanced lighting using this method. It could even allow for radiosity, if you only have to calculate the shadow set once, before runtime, and then add in shadows after a dynamic light.

The thing is, this system can avoid many perspective corrections and keep blends from happening every frame. I think this is a perfectly good reason why software rendering is not dead, and with faster processors, and simplified 3d fpu instructions like 3dNow! It may be reasonable to actually get many hardware quality rendering on a PC.

This is because the key to writing a good software renderer, which many have forgotten, is that you can use tricks such as this, which are not possible (in this case without strangling the bandwidth too your 3d card) in hardware.

Hardware, although fast, and being made feature rich, in its current state not do anywhere near the things possible in a software renderer (a programmable chip, with a special 3d based instruction set may be able to). So instead of writing your software renderer to the exact pattern of your hardware one, abliet nice filtering and blending modes, consider how you can cut many cycles from the process by being smarter than the average 3d processor. A TnT can not keep blend information over many cycles. It can only render two passes per iteration. It relies on its z-buffer. You do not have to feel restrained to implement a similar system, if that is your target hardware platform.

  • 12/29/2000 - Techfile From Somewhere Different
  • 10/10/2000 - Some Fun, And A Cameo Appearance
  • 08/10/2000 - Déjà vu - And I've Done It Before
  • 07/08/2000 - Various Loose Ends To Hang
  • 05/15/2000 - The Way To Hit A Ball With A Bat. Or Not
  • 03/28/2000 - The Fine Art Of
  • 02/13/2000 - A Life Time of Learning, Teaching and Eating M&Ms
  • 12/09/1999 - Strangeness And Wondering If You Are Taking Innovation A Tad Too Far
  • 11/12/1999 - How to Break Exam Tension? Update Your Techfile
  • 09/14/1999 - Lots of Ramblings, personal things and comments on why SNFU
  • 08/23/1999 - Trials and Tribulations of Being Cerebrally Defunct
  • 07/29/1999 - Quick Update about Stuff and Things
  • 07/25/1999 - I'm Back Baby
  • 07/01/1999 - Is it so? Or am I just a Psycho Babbling Mental Hobo, who's Brain has No Home?
  • 06/25/1999 - Another Couple of Things
  • 06/17/1999 - I Am A Naughty Little Boy ;( But I Have A Way To Make Up
  • 06/16/1999 - What the hell? A new data structure for visibility? I don't know, I haven't heard of it.
  • 06/05/1999 - A Little Right Brained
  • 05/12/1999 - A Couple O Things
  • 05/08/1999 - Pre Computable Nice Visibility Sets
  • 05/04/1999 - More on Volumetrics
  • 04/30/1999 - Generic Update
  • 04/27/1999 - Spherical Volumetric Rendering (Mapping)
  • 04/25/1999 - Fractal Curves, Emulation Of Nature
  • 04/25/1999 - Claustrophobic Irony Level Loading and Manufacture
  • 04/24/1999 - Visibility Ramblings
  • 04/21/1999 - Why Software Rendering Is Not Dead
  • 04/17/1999 - Optimizing For Specific 3D Hardware

  • This document may not be reproduced in any way without explicit permission from the author and flipCode. All Rights Reserved. Best viewed at a high resolution. The views expressed in this document are the views of the author and NOT neccesarily of anyone else associated with flipCode.

    [an error occurred while processing this directive]