Firstly, I found a perfect quote to put in my forum signiture. Was sent to me by a friend, my understanding is it's from an early(ish) episode of the TV series 'Buffy the Vampire Slayer'..
I'll never leave. Not even if you kill me
- David "Angel" Boreanaz
I bring it up as it seems to sum up my presence on the DirectX forums these days [lol]
At the time of making this journal entry it seems I "own" both of the stickies (Thanks to Coder, mind) and appear to have had the final word on 11 out of 47 topics listed [oh]
Anyway, on with the main point of this entry. Remember that you can read all progress so far from this page
Okay, so before I get down to some actual learning I've given some thought to what I want from this whole adventure. The logic being that if I know what I want from this, that I can focus on the parts that are going to be most relevant.
- High level, not low level
I have a dislike of assembly-level programming, I appreciate that is at times a necessary evil but I usually think to myself "Why are we writing code this way when we could use a high-level language". Consequently I'm planning on using HLSL as much as possible.
- Possible future usage
Obviously, if I'm gonna learn this stuff I want to use it at the end of the day. As mentioned in the introduction, I do know a fair bit about the concepts and theory of the programmable pipeline so I'd like to think that what I want to achieve is at least possible.
Firstly, I want to explore some aspects of terrain blending - I have a distinct interest in terrain rendering, and the usage of pixel shaders could well be very powerful. Terrain data, for the most part, is static so the possibilities for vertex shaders here are a bit limited - but there might be some scope for enhancing various LOD algorithms.
The other big thing that has got me all excited graphics-wise in recent times is HDRI (High Dynamic Range Imagery). Being a fairly advanced, and somewhat involved, set of algorithms theres a lot of pixel shader usage in most implementations. I've hacked together the SDK sample(s) to do what I want, but I'd like to take it a bit further.
I do quite a lot of 2D related work, and there is a fair bit of scope for some funky post-processing effects via pixel shaders and render-to-texture algorithms. With a good understanding of pixel shaders, I can let my imagination abuse the pixels in previously unheard of ways!
- Effect files
D3DX has a lot of very cool shader-related functionality, one of them is "effect files". From my current understanding, these are a fairly high level scripting/configuration tool that you can combine all of the necessary shader goodness with. Seems from the outset that they'll complement HLSL very nicely, so best add them to my list of things to look at..
- Shader-related optimization
Efficient and optimal usage of the various aspects of Direct3D is no small challenge - often it takes a lot of experience, effort and profiling before you can proclaim a top-performing engine. The more efficient it is, the more room you (potentially) have to leverage the power of your GPU to create even better graphics! As such, I want to spend some time with the various shader-related optimization topics.