Autodesk Maya 2014

OpenMaya Render

UI Drawing enhancements

Geometry Enhancements

Shader Override Enhancements

Shader Instance Enhancements

Texturing Enhancements

Lighting Enhancements

Render Item Enhancements

State Enhancements

Pass Information Enhancements

Render Override Enhancements

Change Management Enhancements

Draw Override Enhancements

Geometry Override Enhancements

Maya Callback Enhancements


MFrameContext is a new interface for Maya 2014. It is designed to provide information which is available per frame render. This includes information such as render targets, viewport size and camera information.

In terms of relative scope, MFrameContext can be thought of as encompassing the time period for a one or more "passes" (MPassContext) and the time period for actual drawing (MDrawContext).

MDrawContext is derived from MFrameContext and provides its own implementation for all virtual methods. The values returned from these methods may differ slightly between MFrameContext and MDrawContext as MFrameContext retrieves the values from Maya and MDrawContext retrieves the values from the GPU device state. Also, MFrameContext::getMatrix() is not able to return values for any matrix type requiring the object-to-world matrix, as that information is only available at draw time.

Frame context information available includes:


MPxSubSceneOverride is a new interface for Maya 2014. It is an alternative to MPxDrawOverride and MPxGeometryOverride, and is specifically optimized for representing plug-in DAG objects in Viewport 2.0 that need to produce a large number of independent drawable objects. For example, a plug-in node that can define a whole sub-scene (such as the gpuCache plug-in) is a good fit for this interface as a single node may need to produce tens of thousands of drawable objects.

MPxSubSceneOverride falls in between MPxDrawOverride and MPxGeometryOverride with respect to the amount of control given to the implementation. MPxDrawOverride allows full control over the entire draw of the object, but as a result the implementation is entirely responsible for the draw. MPxGeometryOverride is relatively simple to work with, but as a result only limited control of the draw is available. MPxSubSceneOverride can fully define all render items, geometry and shaders, providing a high degree of control. However, this definition is abstracted from the hardware draw API; therefore, only one implementation is needed to get support for both DirectX and OpenGL. Furthermore, Maya handles drawing of the render items and thus the items can participate more fully in the Maya rendering pipeline (including screen-space effects such as screen-space ambient occlusion, transparency sorting, shadow casting/receiving, and so forth).

Ghosting support

The Maya 2014 API explicitly does not call back to render overrides to render ghosted objects.

Previously, when the dag object for which an override is attached to is set to be ghosted, it is possible for the render item or draw code to be called multiple times – once for each ghost.

This no longer occurs. Thus, it is up to the plug-in writer to write code to perform the plug-in's own ghosting.

MPxDrawOverride, MPxGeometryOverride and MPxSubSceneOverride are the affected classes.


The port of the MetaData C++ API to the .NET API has been revamped and improved significantly to:

For more information, see MetaData.

New API for Reference Edits

New API for Generic Metadata (blind data)

New External Content API



Plug-in transforms

Updates to Viewport 2.0 API chapter