HLSL's, Cg and the RenderMonkey

Effects Materials And Shaders

It seems to me that everyone is getting a couple of basic concepts a little bit mixed up at the moment, mainly because we're using different names to refer to the same things. As far as I can see, an effect is something akin to a special effect in a film. For example, a car flies over a bridge, hits the ground, and explodes. When a programmer simulates the explosion, it becomes a special effect, or effect, for short.

Unfortunately, I didn't get to specify the naming conventions that Microsoft, ATI, or nVidia use for their "effect" files. In Microsoft's case, an effect becomes a collection of "techniques," and we follow the idea that a technique is one way of achieving a particular effect. For example, blue metal might have one technique for vertex shaders and pixel shaders, another for just vertex shaders, and a multi-stage, fixed-function technique. Each of these will be used on simpler hardware, and so our idea of compatibility programming is inherent in each "effect." Parameters (or material data, in my thinking) are specified at the top of each effect file.

The real trickery comes about when we try to let our artists set which textures and "effects" they'd like to use with each model. In an ideal world, they'll be able to see the effect directly in their object editor, and they would just need to specify a small set of parameters for the effect. Some parameters only need to be set by the program (such as the world transform, etc.), so these should be hidden from the artist in the object editor.

Anyway, all of these basic principles are starting to get wrapped up. And so far, the most complete developer tool for material manipulation has been created by ATI.