Thank you for the comments. While work hasn't allowed me to play on the computer too much lately, I have made enough time to toss together an updated version that exposes a few useful settings embedded inside the shaders themselves.
The functions/variables in the library are as follows:
Variables to retrieve light info:
mLightPositionX#
mLightPositionY#
mLightPositionZ#
mRange#
mAmbientR#
mAmbientG#
mAmbientB#
Functions:
initMatSys( startImage )
Initialize the material system. startImage should be an image number after all other used images in your program.
mLightRange( range# )
set the shaders light range.
mAmbient( r#, g#, b#)
set the shaders ambient light color
mPositionLight( x#, y#, z# )
position light for shader
mProcessObject( objnum )
automatically set shaders to a MapScape '.x' file based on available media (ie, texture.png = per pixel lighting, texture.png + texture_dot3.png = normal mapping, texture.png + texture_dot3.png + texture_height.png = parallax mapping)
I also set the lighting system to automatically setup shadow light 0 so you can use dynamic shadows easily.
I still havent figured out a decent way to utilize multiple lights/shadows yet. I think I may begin doing a rewrite utilizing deferred shading which is more suiting for multiple lights.
The shadows require a bit of tinkering to look right, but if your project only requires one light, I'd say this is in a fairly useable state.
The original scene, now with shadows: