For those people reading this it will probably be useful if you know what resources I'm using. There are bound to be a number of ways you can develop/learn the programmable pipeline, but as of current I'm using the following:
I usually do all my learning from digital resources, for the simple fact that the internet is usually an amazingly good, free, resource. However, for this I decided to get myself a book. There are loads to choose from, and after browsing a few reviews, listening to some recommendations I settled for the following title.
At the time of writing this, it is priced GBP20.96 but came to around GBP23-GBP24 once delivery was included. I went for this title for two main reasons -
Firstly, I own quite a few CRM published titles and I've always been impressed with the quality that they have to offer. Even though I have spotted at least three typo's in the first 40 pages of the above book!
Secondly, Wolfgang Engel's name seems synonymous with books on pixel and vertex shaders. He's the author of a couple of other titles, and also the current editor for the ShaderX series of books.
I opted out of the ShaderX series as a first text because, to be honest, they don't look like they'd cover what I want - when I've learnt more about shaders (such that I could call myself an intermediate level shader programmer) I'll definitely pick up a couple of them. The first ShaderX book seems targetted at beginners, so might well be good but it also seems to be a bit dated now.
Since getting the book delivered this morning I've read about 40 pages and I'm liking it so far - it's covered the right things in the right order so far, which can only be a promising sign.
The internet is a great resource, as ever - Google is your friend - and all that.
I've already found a few good sources of information, firstly I'm hoping that the people in the GameDev.Net DirectX forums will be able to answer the odd question. My next resource is going to be the slides (and exercises) from the Microsoft run HLSL workshops at SIGGRAPH, GDC and Meltdown events. They can be downloaded, for free, from this page.
The next resource is going to be the DirectX SDK - theres various bits and pieces in the helpfiles but of primary interest are the various samples included as part of the SDK:
- BasicHLSL - As the name implies, the basic stuff
- CompiledEffect - A process where you can load D3DX Effects from binaries, presumably so you don't have to ship the source code with the final release
- EffectParam - Parameter configuration is a big part of effects by the looks of things
- FragmentLinker - An optimization process to take bits of shaders and create a final shader that matches the underlying hardware as best as possible
- HLSLWithoutEffects - A good sample to get my head around HLSL before embarking on the effect framework
- StateManager - Another optimization process aimed at reducing state changes
Software and Hardware
Obviously, software is a necessary part of the process! Although, for the most part this doesn't affect the learning process I'm registering it here should it cause any issues...
I currently have this software:
- Microsoft Windows XP Professional (With Service Pack 2)
- Microsoft Visual Studio .Net 2002 Enterprise Edition
- Microsoft DirectX 9.0 SDK (December 2004)
Because of the hardware dependencies that the programmable pipeline has, the following is my actual setup:
- Intel Pentium IV 3.06ghz CPU
- 1024mb DDR RAM
- ATI Radeon 9800 Pro (128mb)
For those who aren't familiar with the hardware side of things, my Radeon 9800 will limit be to the 1.x and 2.0 shader models - it does not support shader model 3.x. Hopefully this won't be a problem, but if it does I can always use my research machine at the university (equipped with a GeForce6600).