Let us learn everything there is about 3D graphics, one step at a time. Certainly writing a book about 3D graphics on a web-page would make it a tutorial. I wanted to write down the raw basics of how 3D graphics work in a easy-to-understand manner for beginners as well as the advanced graphics programmer. It may be used as reference, or, without a doubt, something programmers all over the world will find on Google while researching 3D rasterization algorithms, how shaders work in software and so forth. I don't know where this fits in, but neither do I believe it matters. Therefore I decided to name this set of web-pages The Genesis of 3D Graphics. In other words, it is a start, as well as a comprehensive volume of information on three-dimensional graphics in general.
Many people would disagree that the information about writing graphics software algorithms is of any value anymore, or that it is outdated. In reality, all algorithms are essentially just software. The graphics cards utilized by such APIs as OpenGL and DirectX only give us fast video memory and speed - but who are the people who had written the actual 3D algorithms used by the hardware? How did they learn how to do it? How did they optimize their code?
Nearly in all cases, saying that writing software algorithms doesn't make sense, you must also talk in the context of writing a flashy video game that there is a market for, just take any successful modern video game for example. In reality of the situation, however, how many games had you written that deserved attention? I see many people writing demos, and attempts at making games using hardware-accelerated graphics. Yet, today, why does the majority of these games using this "better, faster technology" not live up to being fun games, or something interesting at all? Thousands of projects are not finished, many interesting ideas are never developed to the end. People get tired of writing code without a reward whether it is software or hardware.
Perhaps still, this modest repository of information on 3D graphics will be of interest to that small group of curious people who believe that understanding these concepts is important. I hope that in the end, someone will get something out of it and use it for a good cause.
} Things that are coming within the next few days
} -- The mother of all 3D Graphics (2D Graphics)
} -- Where will the graphics go?
} -- Defining 3D Space
} -- Camera Projection
} -- The Graphics Pipeline
} -- Affine Texture Mapping
} -- Perspective-correct Texture Mapping
} -- Backface culling
} -- Creating your first, real 3D object
} -- Clipping polygons against the Screen Space
} -- Clipping polygons against the Projection Volume
} -- Polygon Drawing Order with BSP Trees
} -- Effects (Morphing, Transparency, Fire, Blur)
-- this is the header for software algorithm optimization page --
I remember the days when I worked at Domino's pizza. I worked for a below minimum wage salary with no hope for a raise. I wasn't doing it for the money, though. As much as I did so that I could socialize. That is precisely where I learned the story I am about to tell you. The story about what making pizza and optimizing software graphics have in common.
To make profit, pizza delivery shops must cheat. Just like you would cheat by building precomputed trigonometry tables when optimizing a graphics engine. That way you could squeeze every single drop of performance out of your code. You see, the real money in the franchise comes from micromanagement of a large number of shops, and not from selling pizza by itself. Remember that every company has self-serving interests. Primarily, the reason Domino's have the "555" deal is not because they want to provide you with more pizza at an affordable price - which is still true - but rather so that they could spend less money on delivering it. The three pizzas are of medium size. Sure three medium-sized pizzas sounds better than just one. But in reality, the three medium pizzas are barely 2 large pies. The reality is, the company will only pay the driver about 75 cents per run. The more pies you can deliver in one run, the more money the company will make per run. Much money is made by delivering side orders like buffalo wings and bread sticks.
Now, I hear you ask, what in the world do buffalo wings and bread sticks have in common with programming lightning-fast graphics software?
If someone thumbs up your comment, your gain +1 mana (authority) on this page's subject.
If someone thumbs down your comment, you lose 1 mana.
If your comment is thumbed down by the author of this page, you will lose 3 manas.