One of the original design goals for RenderMonkey™ was to empower developers by providing a tool that was flexible and that wouldn’t impose any specific methodology. It is our belief that the developers understand their own workflow and their needs much better than we ever will. We also wanted to ensure that developers were able to innovate on top of the RenderMonker framework and weren’t relying on ATI to provide any specific functionality. The key to unlocking all this extra flexibilty is the RenderMonkey SDK. The SDK allows for the creation of custom plug-ins – which can be developed independently from the main RenderMonkey application and simply dropped in as needed. To ensure that the SDK was truly useful – and not just a check box feature, we adopted the “eat your own dog food” approach to development and used it in the development of all of the plugin modules that ship with RenderMonkey. Developers should easily be able to replicate or extend any of the current functionality through the same interface.
In addition to allowing developers to create custom plug-ins to solve unanticipated problems specific to their projects, the SDK also provides a mechanism for ATI to update specific components independent from
the main release cycle.
- Example Plug-ins
- SDK Requirements
- Creating a new plug-in
- Plug-in Types
- SDK Documentation
What Does the SDK Enable Developers to do?
- Use your application’s / engine’s data scripts to import / export directly to / from RenderMonkey
- Create custom GUI editors
- Generate data procedurally (geometry objects, texture, effects)
- Create custom geometry and texture loaders to support custom formats.
In addition to providing a standard interface to RenderMonkey, the SDK ships with the following additional functionality:
- Win32 and MFC widget libraries that can be used to maintain the look and feel of the application.
- An efficient STL-like library for managing data in familiar data structures such as linked lists, vectors, and strings (supporting both Unicode and ASCII).
- Math helper functions and classes
- Scene graph mesh management
- Image loading and an integrated image management library.
Example Plug-Ins:
The following example plugins ship with the SDK:
- Scalar editor – used for editing scalar variables
- Color editor – used for editing color variables
- HLSL Shader editor – edit HLSL shaders
- Texture Object Editor- edit texture objects, setup texture stages and relevant texture and sampler states
- RenderMonkey workspace package exporter (exports any RenderMonkey workspace with all of its textures and models into a single zip file for distribution)
- Procedural texture generator (using HLSL for texture function specification)
- Procedural geometry generator:
- Generate basic geometric shapes (cube, sphere, etc)
- Generate degenerate edge quads for your models – and use them for shadow volumes, fur fins, etc.
- And many more …
Texture Object Editor |
SDK Requirements
- Windows XP
- Visual Studio 2005
- Win32 and/or MFC for GUI development
- DirectX 9.1 SDK
The SDK is written in vanilla C++. Please refer to the sample projects included with the SDK for examples of both MFC and Win32 plug-ins. Certain SDK projects require DirectX 9.1 SDK for development.
Creating a new plug-in
To factilitate the creation of new plug-ins, RenderMonkey ships with an SDK project wizard – which can be launched from the main RenderMonkey application to create a template for a new plug-in project. The plug-in wizard is found on the Help menu and offers the developer a choice of available plugin types. Simply select the appropriate type, type the name for your project and click “OK”. The RenderMonkey IDE will automatically generate source code and project files for Visual Studio 2005 in the directory {RenderMonkey Install Dir}/SDK/Projects/ .Alternatively, you can use one of the examples for each plug-in type that RenderMonkey supports (found in the SDK/Examples directory) and you are ready to create one of your own monkeys.
Plug-in Types
IRmPlugIn Generic RenderMonkey plug-in interface designed to receive main communication messages from the main application and to specify a property page dialog for main application |
- IRmEditorPlugIn A node editor plug-in. This plug-in is used by the main application to edit nodes supported by this plug-in.
- IRmImporterPlugInA plug-in implementing this interface is used by the main application to import data from external formats into the run-time database.
- IRmExporterPlugIn A plug-in implementing this interface is used by the main application to export data from the run-time database into an external format.
- IRmGeometryLoaderPlugInThis plug-in type is used by the main application to import geometry data from a supported file format into RenderMonkey model data node.
- IRmTextureLoaderPlugInThis plug-in type is used by the main application to import texture data from a supported file format into RenderMonkey texture data node.
- IRmGeneratorPlugIn This plug-in type is used by the main application to generate data for a RenderMonkey node.
SDK Documentation
- SDK overview and project setup
- GDC 2004 RenderMonkey SDK presentation: Custom Component Development with the RenderMonkey SDK