The Legacy vs. New Rendering API

The legacy rendering API is dominated by two classes: Renderer for offline rendering, and IInteractiveRenderer for interactive rendering; with several other (extension) classes which may be grafted onto these two. Class Renderer enforces a monolithic design to the renderer plugin. The same class is responsible for: UI, file I/O, scene translation, and process management.

Legacy API Concept

The Rendering API introduces a more stringent framework by splitting the design into multiple components. This provides a more coherent structure to the renderer plugin and enables a significant part of the logic to be moved to the 3ds Max core.

New API Concept

The four main components of the Rendering API are:

  1. The Unified Renderer, which unifies the renderer plugin interfaces for both offline and interactive rendering. This component lives in the 3ds Max scene, it is responsible for UI exposure, file I/O, scripting, etc.

  2. The Render Session, which is responsible for performing the actual rendering. The session is transient - it is a temporary object that lives for the purpose of a single render operation (be it multiple offline frame, or an interactive session). Separating the session from the plugin enables multiple sessions to exist concurrent for a single plugin.

  3. The Translator, an optional component which simplifies the tasks of translating a 3ds Max scene to the renderer's own representation. It provides a framework for managing dependencies between the 3ds Max scene and its translated representation. It also includes basic, common functionality for translating most major 3ds Max scene components.

  4. The Notification System, which implements a centralized mechanism for keeping track of any changes in a 3ds Max scene. This is the first system to offer a completely, truly safe method for monitor a 3ds Max scene for arbitrary interactive changes.