It's been a few months since I've posted, and the status of the project is "slowly building". I've started a second pass, after a longish hiatus, building up the fundamentals again,this time making them work a little cleaner together.
Our initial pass, designed for quick prototyping so we could really test the motion-tracking camera system, was based entirely on using the BasicEffect fixed function pipeline. We could draw models. We also used SpriteBatch to draw our graphical representations of pieces (called "visuals" in our nomenclature), but these use a different coordinate system than our model space. As a result, everything is kind of a mess. Our physics and collision detection was hacked together out of some rather simplistic assumptions I made about impulses. It worked, mostly, but not reliably in all cases. Still, we were able to test a 80% scale system in a museum space.
The second pass, which I'm doing now, is more carefully achitected, but I'm also now learning more details about how the graphics device draws. It's actually pretty simple at the lowest level: lists of triangles get rendered by the graphics device. You set up various buffers that contain vertex data, and then tell the graphic device to draw it through an Effect. Effects are essentially programs that convert the vertex data into the filled, shaded 3D shapes projected on the screen.
The learning problem: shaders are mysterious black boxes to me, and they are quite varied. BasicEffect, which implements an approximation of the "fixed function pipeline" of older versions of Direct3D, is good enough for drawing textured, lit models, but it doesn't do fancy stuff that we'd like. To do that, you have to get into using custom Effects, which in essence means you need to learn how to write a shader using a language called HLSL (High Level Shading Language). This is a significant jump. Unfortunately, there is no shader source code available for BasicEffect, which would have been WONDERFUL for people learning how to write shaders who started learning the guts of XNA with the built-in Model code.
I found this list of HLSL Shader Resources, which I'm starting to work through. My immediate challenge is just to draw a per-pixel opaque texture map onto a quad, which will complete the implementation of my VSprite3D visual class. This is not supported by BasicEffect. So I'm looking for a good starting bit of code that I can just drop in as-is.
