HLSL's, Cg and the RenderMonkey

RenderMonkey

So on to RenderMonkey, ATI's new tool for developers. I've already introduced the concept of materials, and the RenderMonkey software is a development environment that allows programmers and artists to create new materials and to edit existing ones.

The programming environment is very similar to Microsoft's Visual Studio, so most programmers should be very familiar with the basic interfaces. The picture below shows the basic idea.

RenderMonkey in all its glory.

On the left we have the workspace, which shows all elements of the material being developed. We have a number of sections for each pass of the material. Each pass contains the geometry to which the effect is applied, any vertex shaders and pixel shaders, the renderstate, and any parameters or arguments necessary for that pass. Parameters include things like textures, or colors that may be used by the material.

To the right of that, we have the effect window itself, which allows us to view the effect as we modify it. The next windows show the vertex shader and pixel shader for pass 0 with the constants laid out above. By modifying the program and recompiling, the programmer can immediately see the results of his modifications.

At the bottom, we have an output window, which allows us to see any debug output from the compilers.

At the moment, there are a few things that could be added in terms of functionality, but the program is still at the beta stage, so it'll only be a matter of time. One idea that would be nice to see is the ability to abstract out the "shader" part of the material and the "data." This way, the artist can pick up a library of "shaders" and use them directly in the modelling tool. The new settings for the data produce a new material, which can then be stored with the model. The shader only needs to be referenced. This way, we won't end up with a library of materials that is just a set of variants for four basic shaders. Anyway, as I said, it's still in beta, and with any luck, the next revision will have some more interfaces for popular modelling tools.

It's worth pointing out that nVidia isn't too far away from this concept with its effect browser. At the moment, it lets you see the code and the effect, but there's no output window and no option to edit the shaders. I can't imagine someone's not working on it, though.

At the moment, RenderMonkey is cleanly designed, and obviously aimed at aiding content development, as well as showing off ATI's latest effects. The only slight reservation I have is why all of the effects use PS1.4. If ATI really wants to appeal to the majority of users (who, unfortunately for ATI, are using nVidia cards), then they should probably stick in some PS1.1, too.