I’d like to see your opinions on the choice of a shading language. I don’t know which one I should start learning. Actually, I would have no doubts if there hadn’t been one detail - in the nearest future I plan to start using DirectX. In this case it might be useful to know CG since it’s also compatible with the API. What do you advise?
The languages them selves are all very similar (even GLSL vs HLSL). The big differences tend to be the little naming conventions in the languages. With that said, GLSL seems to be a little flaky on some drivers currently and the Cg compiler seems pretty solid, but then again, GLSL is “The standard”.
Well, I suggest Cg, since you plan to move to D3D in the future. GLSL is heavily glstate based (good because less Uniforms that can clutter App code) and will be the hardest(‘hardest’ not ‘hard’) to port to HLSL, however porting Cg to HLSL is laughably easy. the CgD3D runtime is good, but since your going from OpenGL->D3D you might as well go that step further for ATI cards.
I don’t kown a special book but ‘Texturing and Modelling’ is a really good common book about procedual texturing. Its more a compilation of important SIGGRAPH paper but IMHO you capture better idea behind this stuff.