A rendering engine is a mechanism that provides rendering processes to Softimage. Custom (3rd party) rendering engines work within the same framework as the built-in rendering engines, mental ray and hardware rendering. This implies that just like mental ray and hardware rendering, these custom rendering engines are available for pass rendering, region rendering and shaderballs.
Currently two process types are recognized:
Each process operates on a single frame only, although it can generate output for one or more sub-frames when doing interlacing or motion blur. All the processes are performed through the common Process callback.
Softimage provides a common set of options that each rendering engine can take advantage of and it is recommended that they implement all of them. Those options are passed in as rendercontext attributes.
The rendering engine plug-in needs to provide three callbacks:
The Init callback tells Softimage which process types the rendering engine supports, which custom property to use for the renderer options, and which image file formats it can output.
The Abort callback is an asynchronous callback that is used by the render manager to abort a render. It is extremely important that this call does not perform any processing or refer to any scene elements itself. Its only purpose is it to indicate to the already running Process callback that the render should be aborted as quickly as is possible.
There are three other rendering engine-specific callbacks that the rendering engine can implement, if it wishes:
The Quality callback serves two purposes: first, to set a certain quality level preset on existing render options; and second, to return a measure of a quality level of the same. The quality levels are currently used by the render region to quickly dial levels from draft to super-fine.
The Query callback is used by the render manager to query the rendering engine for information based on the siRenderQueryType enumeration value given in the QueryType attribute.
The Cleanup callback is used by the render manager to instruct the rendering engine to clean up all data created by it by previous Process callback. The two callbacks are guaranteed to always be called one after the other, never at the same time.