Viewport 2.0 and Performances


The viewport 2.0 has some really nice features like motion blur, ambient occlusion, anti aliasing but it’s still not really usable regarding performances and bugs. I have seen a performance loss around 30-40% even with the basic settings and wireframe mode.

But the worst is that even if you change all your viewport to the Legacy one, the performance loss is still very noticeable :

Since Maya 2015 the viewport 2.0 is activated by default, so if the user that worked on the scene previously has not changed its default viewport and if you load the UI settings from the scene, you may have some viewport 2.0 instances in the scene, even if your main viewport is in legacy mode.

To make sure you never get some VP2 residue make sure that you deactivate the preferences in UI Elements > Restore saved layouts from file. It won’t use the UI configuration saved by the precedent user working on the scene, and in the mean time speedup the loading and sometimes fix some bugs. Actually I think it’s one of the first thing you should setup in Maya with a custom layout so that your UI is consistent throughout different sessions.

The other way around is to use a script that will query all the different 3d model panels, and set them to the legacy viewport… And reset and free everything regarding the viewport 2.0.

def setAllPanelsToRenderer(renderer, reset=True):
    """Possible values: base_OpenGL_Renderer, hwRender_OpenGL_Renderer, vp2Renderer"""
    modelPanels = cmds.getPanel(type='modelPanel')
    for panel in modelPanels:
        cmds.modelEditor(panel, edit=True, rendererName=renderer)
    if reset or os.environ.get('MAYA_DISABLE_VP2_WHEN_POSSIBLE', False):
        cmds.ogs(reset=True)

You may have noticed the MAYA_DISABLE_VP2_WHEN_POSSIBLE environment variable, it is used when switching viewport engines to tell Maya to free everything related to the viewport 2.0 if it is not used in any viewport anymore. I think it’s always a good thing to set it.

PS: Since Maya 2018 the legacy viewport is not available anymore, you can reenable it at your own risk with the environment variable MAYA_ENABLE_LEGACY_VIEWPORT set to 1