New Rendering API

The topics in this section describe the "new" rendering API for 3ds Max, introduced in 3ds Max 2017.

A new SDK component, the Rendering API, has been introduced to make writing rendering plugins easier and less error-prone than it has been in the past. Its goals are:

  1. To encapsulate code and behaviour that would likely be duplicated by most renderer plugins.
  2. To unify the interfaces for offline and interactive rendering, enabling them to share common design and implementation.
  3. To break up the monolithic API (e.g. class Renderer) into a suite of well-defined interfaces that simplify the design and maintenance of a renderer plugin.

A renderer plugin, implemented from this API, should be much simpler to develop - but it should also be better positioned to evolve over time, as more code and behavior are added to the API.

File Locations

The headers and classes described in these topics are located in these locations in the 3ds Max SDK:

Use of STL

The 3ds Max SDK has traditionally avoided the use of STL to avoid compatibility issues when mixing different compiler versions. But with the advent of C++11, the language has made large strides through STL directly.

The Rendering API makes extensive use of the C++11 smart pointers - unique_ptr and shared_ptr - to enforce a simpler design and safer code. It also uses std::vector, where appropriate, as a replacement to MaxSDK::Array.