When you set up a scene for rendering, you typically want to separate a character in an own render-layer, for vector blur or color correction. Compositing it back in an environment then can be complicated... for example when the character stands in a grass field.
What you then need is a special render-layer, one that results in an image containing only the grass in front of the character. That is what the "Zmask" feature does for you.
The "Zmask" feature works as follows (Scene RenderLayer panel):
1- Add a new render-layer
2- Then indicate which of the visibility layers only will render Z values (ctrl+mouseclick on renderlayer buttons).
3- then activate the "Zmask" option, which will do these things for you on render:
4- The result is a mask you can alpha-over in a composite
You can see this in the images below:
Some notes:
The zmask render-layer option also allows to do more complex masking... it can even include the object itself in the mask, or solid objects in front of the zmask. Below images illustrate this.
Here's another .blend file, similar case but more complex mix of rendering and masking.
Previously when duplicating objects with dupliverts, duplifaces, dupligroups or particles, the data of these objects was stored once for each object by the render engine. Now it will be stored this data only once, which means that rendering such objects now is much more memory efficient. This made it possible for example to render many tree leaves in Peach.
Note that with either radiosity or raytracing still do not fully supporting instancing, which means that for these features memory usage may still be high.
Also, the render engine now clips objects by their bounding box for rasterization to improve performance.
When the Blender render pipeline was redesigned - for Elephants Dream in 2006 - one of the unresolved specifications was to tackle the artefacts you get in anti-aliased polygon edges when you use high dynamic range color (colors beyond the 0.0-1.0 visible range), or when you do color correction or remapping. Not to mention that while compositing, you actually want to get the same quality anti-aliasing for zbuffers, id masks, etc.
Analyzing this problem resulted in only one possible quality solution: a composite should never happen on anti-aliased images, but instead be done on all raw samples as they come from the renderer, which then as a last step maps it all to the visible 0-1 range, and then combines the samples to an anti-aliased result.
In other programs this is being achieved by just rendering 2 or 4 times larger, do the compositing and then scale it down. In Blender we use the more advanced 'distributed jittered sampling', which actually already renders 8 complete images (for "OSA 8"). It's just a matter of saving all those images on disk, then after render read it back, and do the composite.
Or to summarize, this is the FSA pipeline:
Render -> save all samples -> composite -> map to visible range -> filter-combine samples
Whilst previously OSA did:
Render -> filter-combine samples -> composite -> map to visible range
FSA makes use of Blender's efficient tile-based pipeline, so you won't need much more memory for renders to use it. There's a couple of considerations to make though.
(Cool images follow!)