Softimage SDK Programmer's Guide > Customizing Softimage using the SDK > Custom Renderers >

# What is a Custom Renderer?

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.

Note

For performance reasons, this API is only available via the C++ API.

Currently two process types are recognized:

- Rendering Images

- Exporting Archives

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.

## Mandatory Callbacks

The rendering engine plug-in needs to provide three callbacks:

- Init

- Process

- Abort

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.

## Optional Callbacks

There are three other rendering engine-specific callbacks that the rendering engine can implement, if it wishes:

- Quality

- Query

- Cleanup

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.

Note

The rendering plug-in is a singleton, meaning that there is only one copy of the rendering plug-in running throughout the duration of a Softimage session. This means that the plug-in is safe to use global variables and link with single-instance rendering engines.