views:

106

answers:

4

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!

+2  A: 

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.

Marcelo Cantos
I don't agree with the pixel shader comment. On the contrary, I'd say that old-fashioned fixed function pipelines are only for developers who have to deal with legacy code. Today many platforms offer only programmable shaders (including the OpenGL 3 Core profile).
Malte Clasen
@Malte: Good point. I've been stuck in ES 1.1 land for too long. Emended.
Marcelo Cantos
A: 

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.

Malte Clasen
A: 

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.

DeadMG
"if everyone needed a doctorate in rasterization theory before they could use OGL/D3D ... " ...then there were less low-quality 3d game products. Major titles are very likely to have devs that know the theory.
SigTerm
A: 

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.

SigTerm