Cycles Feature Request on AOVs and DeepEXRs

Hey guys,

New Blender user here, from the VFX field.

Just wondering if Cycles is planning to add these features in the future below:

  • Per Light AOVs ( similar to VrayLightSelect, diffuse & spec in 2 separate AOVs )
  • Diffuse Texture ( similar to VrayDiffuse Filter )
  • positionWorld, positionObject
  • normalsWorld, normalsObject
  • Shadow collector per light
  • MotionVector / Velocity
  • DeepEXR
  • Render visibility control ( for example, to separate background, shadow collector matte, foreground character in 3 separate render passes for compositing purposes )


  • Per Light AOVs: there has been development on this, so likely to be added.
  • Diffuse Texture: there is a diffuse color render pass.
  • positionWorld, positionObject: world space position pass would be good to add. object space I’m not sure.
  • normalsWorld, normalsObject: world space normal pass exists.
  • Shadow collector per light: not sure what this is.
  • MotionVector / Velocity: there is a motion vector pass, though perhaps not in the format you expect.
  • DeepEXR: would be nice, but no concrete plans currently.
  • Render visibility control: already supported through render layers.
1 Like

Hey Brecht,

Thank you so much for your quick response.
Let me put together some examples and a contactsheet later on next week to explain some of my unclear questions.


Hey Brecht,

I’ve put together an example on what I’m trying to achieve, under this post.

Ok, as far as I can tell this shows per-light AOVs which are not in Cycles yet.

By shadow collector I guess you were referring to the shadow_matte AOV in Arnold, which is similar to the Shadow pass in Cycles.

Hey Brecht,

Thanks for taking a look at it.

Thats right, I did that quick example in Maya and Arnold.

I’m still trying to figure out the render layer system and visiblity override in Blender 2.8.

Essentially what I did there is every render layer has the exact same objects and lights, and I only did a visabiliy override on the objects on each render layer, and splitted them in bg, shadow_matte and fg 3 seperate passes with out being heldout by the fg, and every objects are getting the indirect light bouncing off each other.

Beside lightgroups / per-light AOVs, do you know if visibility override is included in Blender 2.8.

It’d be appreciated if you can provide an example blender file if these features exists in 2.8.
If not can we put in a feature request for these features please?

  • lightgroups / per-light AOVs
  • object visibility override in render layer

These features would be a good start to steer Blender towards more on VFX production pipeline in the future.


For 2.7 the render visibility features are documented here:

The manual for 2.8 is still being written. Mainly you’ll want to use the outliner, right click on a collection and use View Layer > Exclude to exclude its objects from one specific view layer. Besides the different naming and UI the way these features work under the hood is still the same:

The per-light AOVs are under development already and don’t need a feature request. I’m the person who implemented the per-light AOVs in Arnold 5 by the way, so I’m pretty familiar with the requirements for such a system, though I’m not the one implementing them in Cycles.


Hey Brecht,

Thank you for these links and showing me the Collection and View Layer features.
They’re very helpful, and I’ve managed to control the visibility similar to my previous test from MtoA.

My next question is how can I batch render the bg only and character only ( see image 2 and 3 ), like the render layers in Maya


You can create multiple view layers for that, each with different collections excluded.

Hey Brecht,

Please correct me if I’m doing it wrong.

It doesn’t seem to have add new View Layer under View Layers, so instead I have added a new Scene, and I was able to override the visibility on the objects.

With this approach I’ll also be able to create AOVs for each lights, it just gonna take more time to setup.


  1. I’m currently selecting and rendering one Scene at a time.

Is there an option somewhere to batch render all Scenes at once when I hit render animation?

  1. For the AOVs, is there a way to rename “Combined” to “rgba”, and remove the prefix in my case “View_Layers”
    It’d be great to have it by default that’d be closer to most industry standard naming convention.

It’ll also be great to have the ability to customize the naming for all of the AOVs, and adding custom AOVs like Fresnel, Facing Ratio and etc…

  1. We use P and N passes extensively for pulling matte, adding 3d noise, relighting and adding interactive lighting in compositing.

Can we put in a feature request if P world and P ref isn’t yet planned for the future build please?

  1. I spotted an issue with the Z depth AOV, the depth data looks unpremulted which is correct, however when I compare it against the alpha, it’s actually smaller than the alpha.

The Z depth is suppose to have a few pixels coverage furthur than the alpha channel in order to work properly.

Not sure if this is a known issue or should we put in a bug report?

  1. Can we also put in a feature request for Deep EXR please?

With Deep data we can not only merging and holdout all render elements across different renderers, it can also produce a precise Z depth data.

I see lots of potential in Blender 2.8 and Cycles, and I really would love to see it grows into a full production ready package.

Please private message me, if there’s anything I can do and participate to help making Blender & Cycles better.



For rendering multiple scenes, you can set up multiple file output nodes in the compositor and then also do the renaming there. This is quite manual, and it’s really view layers that are intended for this. If you put lights in different collections it should work with view layers without needing multiple scene copies.

I’m sure Nuke has nodes for renaming things as well.

The Z depth AOV is based on just the first sample. It’s a known limitation, could be improved once to offer the option to use the max of all samples for example. There is also a Mist pass if you need some kind of antialiased depth.

Feature requests you can put in, some of the things you request are already there.

1 Like

the AOVs lukas made a while back let us render things but expose entirely different values in post. Like I could render a picture of a tree but then in post it shows up as a bush or something for comping tricks. Could be used as a super efficient way to make masks without re rendering twice without much of a slow down at all

Hey Brecht,

This is great!
Thanks for pointing out the View Layers and Compositor, Ive finally figured out how these works, didn’t know the Compositor was intended to be used as render layers output organizer.

Do you think we can add the shadow matte feature under AOVs in the up coming build please?

I’d consider the Z depth issue is a bug rather than a limitation, it’s not yet usable for applying defocus in comp, can we also put in a bug tickets for this please

We would need an anti-aliased depth data, based on camera distance in order to apply comp defocus properly.


I’m not sure what you mean by this, there is a shadow pass.

No, we do not consider it a bug so it does not get handled as such.

Do you think we’ll have this improvement at some point for 2.8?

It seems likely to be added in one of the next versions.

That’s great. Thanks Brecht!

Hey Brecht,

I have put these feature requests at the rightclickselect page as you suggested. (see link below)

Looks like Blender is starting to get lots of interests from the professionals and bigger studios with the 2.8 release.


Hey Stephen,

thanks for bringing the pWorld and pRef passes to focus for everyone

For anyone that doesn’t know, pWorld and pRef (position world and position reference) are data type passes used in ‘high end’ compositing (and mostly nuke or wherever they can be read), and can be pretty important to a pipeline. There’s a good article on the different between pWorld and pRef as well as some of their possible implementations here. Essentially a pRef pass is a position pass in object space rather than world space.

World position passes are currently able to be reproduced in cycles by plugging ‘position’ from the geometry node into an Emission shader on an object.

The result when you move the object shown below is correct for a position (pWorld) pass

The result below is what you would need for a pRef pass

I was able to reproduce this pRef pass by plugging in the ‘Object’ output from a Texture Coordinate node.

I haven’t attempted to use this in any form of compositing yet nor with a rigged mesh, but so far it seems to be looking like a viable option.