3D Coding TAT - Preface
Wot the hell ?
In this document is various TAT (Tips And Tricks) for gaining an extra slice of the speed cake and my own personal thoughts about 3d engines, rendering techniques (new and old) and a collection of dubious maths formulas. These mostly connected coding methods have been used/devised or developed over many years (some as long a go as 1988/1989 if not before) and some are, well, still in their early stages because while writing this document some new ones lept into the open space between my two ears.
Alone these tricks won't produce the ultimate 3d engine, but they will definitly give a few extra CLK-cycles here and there. I haven't seen any other document which describes engine tricks and techniques, only polygon filling or a few scraps about line/polygon clipping or BSP data structure at best, so this document might be a first.
This lack of engine information might be due to the fact that most programmers are very protective of their binary offspring and are paranoid about other people ripping their tricks off. As 3d programming takes a large amount of work and many coders are very competative they do not wish for others to catch them up or overtake them, sad isn't it?
If this document or any of its ideas causes damage to either your optic nerve, eyeball or neurological system resulting in excessive drooling, dizziness or confusion then I will NOT be held responsible. I make no guarantees that any of the described techniques actually work, even if they do large parts may be absent or incorrect. These are only my personal observations and current thoughts about 3d.
!!! USE THIS AT YOUR OWN RISK !!!
What it's Not
This document is NOT an in-depth tutorial for rendering techniques NOR is it a reference list of mathematical formulas or algorithms. So if you are searching for the back-face-culling algorithm or 2d axis rotational matrix stuff or perspective... then look elsewhere....
This is by no means a complete investigation of 3d engines, 3d modelling, shading or texture mapping. It does not contain all the answers to your questions, but perhaps highlites some problems that you may be unaware of. Do NOT expect to find an entire 3-d engine source code located in this doc, also don't think this is a complete engine design spec or an entire algorithm. Coz it's not.
What it is
This is just my own theories and current ideas about 3d engines or 'renderers' as some like to call them. From the earliest BattleZone upto the latest Unreal or Quake2 there is always a large crowd of followers for whom 2d just won't cut it anymore. Today the craze is 3d, but I think the future is 4d where entire levels are dynamically reshaped and remodelled during play. If this turns out to be true then BSP (Binary Space Partition) trees may be old hat because they are pre-calculated, static representations of items (usually polygons) within a finite space, and so are unable to be shaped over time.
I hope to present some new and/or dynamic techniques in this document file which will allow this 4-d flexibility. This dynamic reshaping is due to method being able to work in real-time rather than being pre-calculated and static. Also I hope to describe some of the trendy buzz-phrases in a very simple, easy-to-read format. There will be holes in my explaination, mistakes or bugs in my working theories, but they are simply that, working theories. Some of the methods are so new that I hadn't even thought them up before I started this huge document.