I came across a very interesting book. I have done some 2d games but 3D is a whole new ballpark for me. I just need to know if there any benefits of learning 3d software rasterization & theory before jumping into OpenGL/Direct3D? Any reason why to either approach? Thanks in advanced!
views:
106answers:
4Any benefits of learning 3d software rasterization & theory before jumping into OpenGL/Direct3D?
It is handy stuff to know, but largely unnecessary for learning OpenGL or Direct3D. It might be (marginally) more useful when getting into pixel shaders.
I would skip the rasterization theory. Most of the tricky parts are fixed in current GPU, so when you move on to hardware accelerated graphics, you won't be able to apply your knowledge.
If you first learn about rasterization theory, you will probably have a better understanding of why it is useful to specify things such as pixel center coordinates and why there's a difference between the way D3D9, D3D10 and OpenGL handle it, but at the end of the day it doesn't really matter for most developers. Try the other way: Learn the APIs first and whenever you step over some weird specification, try to find a rationale in rasterization theory.
Unnecessary. Good tutorials will tell you everything you need to know to use the relevant technology. The fact is that if everyone needed a doctorate in rasterization theory before they could use OGL/D3D, there'd be way, way less OGL/D3D games than there are.
if there any benefits of learning 3d software rasterization
You'll get deeper understanding of internal working of 3D apis.
I think that if you're serious about working with 3D, you should be able to write CSG raytracer, software rasterizer with texture mapping support, know a few related algorithms. Or AT LEAST you should have knowledge that would allow you to write those if you wanted.
Francis Hill's book "Computer Graphics using OpenGL" had a few chapters about writing raytracer and combining software rasterization with OpenGL-rendered scene, which is definitely something you have to read.
Without that knowledge you'll screw up when you'll have to write a tool that HAVE to calculate something in software mode. Classic example of such tool is radiosity/lightmap calculation, raytracing, and so on. Some of those tasks can be accelerated by GPU, but GPU won't magically handle everything for you, and you'll have to deal with code VERY similar to standard software rasterization.