Software rendering ...
Unfortunately, software rendering is considered a lost art. But there is so
much power into it that the future will turn back on it some day. The GPUs
becomes so powerful that one can implement very sophisticated rendering
techniques, perhaps adapted for a special game, in software computed by the
GPU. For example, one can implement a software rasterizer to
render perfectly
rounded shapes on the GPU. With the increase in CPU/GPU performance it becomes
feasible computing your own rendering technique fitting the aesthetic of a
game you may have in mind. Look what SM, ND, and GG does. And wait until they
utilize the PS4's compute units to their fullest. More and more software
graphics code will be used to generate kind of a different look for a given
game, like it was prior to 1997 until the graphics accelerators took over.
However, this requires a fundamental understanding of rendering techniques out
of the API box. That's why I consider software rendering so important. Some
universities don't even teach and practice the fundamentals rightfully any
longer. The way they raster lines is by calling glBegin(GL_LINES). So props to
dragonelite doing it the other way around! I appreciate your work. :+
Define the corners of an object and perspective project them onto the screen,
connecting them by lines getting a wireframe image. That's the basics start.
Hence,
(1) learn how to draw a pixel onto the screen,
(2) learn how to draw a line onto the screen (most cg students can't), and
(3) learn about perspective projection.
Do everything by hand, derive everything from scratch. Spend considerable time
with point (2) and (3). Don't use any API.
Getting the basics right gains momentum.
Here is software rasterizer I started to write a few months ago for the
DCPU-16. The framebuffer is 64x64 in size and has a depth of 1-bit per pixel.
Coded in fully 16-bit DCPU assembly language.
I also implemented a simple lighting model and a halftone shader.
... for the win.