In preparing for the arrival of LRB-1 hardware, I have been updating my personal testbed to D3D10.
Yes, I had been stuck in a D3D9 rut for a while, just like a lot of the rest of the industry. :-)
My personal testbed is based on a maze-generation and solving algorithm, the Kruskal algorithm. A good page to describe maze algorithms in general is here. From this you should understand that a Kruskal maze is a "perfect" maze or a minimal spanning tree over a set of cells in comp-sci speak. I use the "wall-follower" solving strategy.
I decided to use a maze as a testbed for several reasons. First, it lets me easily generate "level geometry". Second, I can use different creation and rendering strategies for the level geometry. to use different Draw APIs, different Draw API frequencies, and advanced features like Instancing and TextureArrays. Third, inside each "cell" or "room" is a perfect candidate to render some special effect like a particle system, an animated object, a reflection system, a shadow system, or something like that. Fourth, I can set up and manage different camera/views. Fifth, the viewpoint inside the maze that tracks the solver is perfect for rendering an animated character.
That is a lot of leverage out of what is a relatively simple algorithm, which is why I picked it and have been using it since D3D6 to keep my skillz current.
Now that I have some simple D3D10 code working, I want to write this up as both a service to other developers and a way to solidify my learnings in my own head. I will use the same style I had in the Driving DirectX articles, which you can see from this article on Flipcode which was essentially the last article in Driving DirectX from me.
I am going to leverage the new DX SDK framework DXUT, which enables writing a single app that will work on D3D9 and D3D10. Some features will be slightly different, due to the fact that the D3D10 SDK does not support .x files well, but other than that the functionality will be the same.
I see 7 articles so far:
1) Explanation of DXUT and what it gives you
2) Basic sample, renders only a frame rate
3) Rendering a "skybox" to place your level "inside" something and give the feel of being in a world.
4) Generating the maze geometry and rendering it
5) Using multiple cameras
6) Solving the maze
7) Rendering a skinned character at the location of the "inside the maze" camera
Each article will cover both the D3D9 and D3D10 implementation. All rendering uses D3D Effects ( .fx files ) and HLSL. SM 2.0 for D3D9 and SM 4.0 for D3D10. If any single article gets too large I will consider splitting the D3D9 and D3D10 pieces into a "2-fer".
Once we get that far, I will see what else I have time for. Possibilities include Instancing and TextureArrays for the level geometry and special effects in a randomly selected subset of the rooms.
The other "big" thing I intend to do is port this to LRB-1 and generate the same series of 7 articles on LRB-1. Hopefully that will also be of some interest?
I am currently working on the D3D9 skinned character in the code for article 7, so the work is well along. Once I finish that code, then the article production beings. So we'll see how fast I can finish the D3D9 skinning code and then pump the first two articles out, and that will give us an idea of what sort of pace you can expect from me. I'd guestimate 2 weeks for the 1st article.
And by the time that is done, the time to start talking LRB-1 in detail should be closer.
And Happy Thanksgiving!
3D Graphics Card Blog
- The guys at Guru 3D have previewed the new Geforce GTX 295! [image: image] No matter what game you'll play with the GeForce GTX 295, you'll play it at ...
5 months ago