I've been trying to come up with a nice generic way of setting up surface materials/shaders in my renderer. A scripting system seems to be the best approach.
It should include, for multiple passes:-
state setup
vertex attribute stream binding
pixel/vertex shader binding
texture stage setup
additional utility texture objects
sockets for external app defined variables (such as time, weather, animation frame)
etc.
Basically, I want an open ended, future proof(ish) system for setting up shaders/combiners.
Now, I noticed the short pdf ATI produced which describes the system they use in their RenderMonkey shading system, and I've played around with RenderMonkey itself, which seems nice enough. I don't understand how I can make use of RenderMonkey, however, because it doesn't appear to export any script files etc.
Does anyone have an opinion on the way RenderMonkey does things, or suggestions of papers/documents that I might find useful while addressing this issue?
Thanks.



The thing that i am pleased about is that it does _not_ require an ATI Radeon to use it, according to the sys requirements. Also i seem to remember something about RenderMonkey being able to parse RenderMan shaders, is that true? If so that's cool. One thing that i think would also be good is to be able, i guess through a plugin, would be to allow RenderMonkey to parse Cg shaders. Since the source for the Cg compiler is now available that might be able to become a reality. 
Using the stardard opengl render states would be a nice option to have in there. It could be made like in that stanford paper (i think it was stanford) where a renderman shader was broken down into as many passes as needed to run in standard opengl. Of course for us NV people, we can always use nvparse w/ PS1.1. 