More Monkey Business....
I spent today doing some more RenderMonkey evaluation. Overall, I'd love to
use RenderMonkey, but it's got one problem. It can't properly map our models.

I know, it sounds like it's a problem with our model. Our model works fine in
EffectEdit though. I've sent them a "bug" report. We'll have to see when it
comes back. I think I can still use it to prototype some effects, but to preview
it GalCiv2, I'll have to export it so that I can read it in EffectEdit.
I also discovered the solution to another RM "bug". This one isn't really a
bug. We're really lucky that we have the EffectEdit source though. In RM, they
pass in the matrices using:
pDevice->SetMatrixTranspose(...)
In EffectEdit, the matrices are passed in using:
pDevice->SetMatrix(...)
That causes silly problems when you use mul(). In RM, mul is used like:
Out.Pos =
mul(view_proj_matrix, inPos);
It's completely different from:
Out.Pos = mul(inPos,
view_proj_matrix);
remember Linear Algebra? Anyways, I had to build a custom EffectEdit so that
it can take RM .fx files natively. I think it's supposed to be faster using the
transpose version because the mul is like a vector mul.
I made another breakthrough in EffectEdit. Now we've got the high and low
techniques in a single file. They share the same vars, just render differently.
This means that we can pick the technique at run time. Pretty sweet.

This is the low technique. It's a multi-pass render that uses the fixed
function pipeline (TnL). Notice that the frames are pretty high.

Here's the high techique. Notice the nice specular highlight on
the nose (similar to the RM shot above). The "glow" is also nicer. This is a
single pass render using a pixel shader. The frames are about half of the low
technique, but this can be optimized even more. Pretty cool huh?
Now it's on to time-based effects. I think we can do a cool
shield effect using a time based shader.