Unified is QMC sampling across the image space. Unlike regular AA
where the pattern is somewhat like a grid, Unified is stratified based
on an optimal distance between samples that are moved based on QMC
patterns and an error estimation instead of just color contrast. This
means you can render small geometry like hair and fur using raytrace
instead of rasterizer with good results. The samples will catch
geometry smaller than a pixel generally with smaller sample
levels internally.
It also solves noise problems by generating its own adaptive grain. So
now depth of field and raytraced motion blur are faster to render and much
smoother. (Sidenote: spinning chrome sphere’s should no longer blur
reflections.) You can render raytraced motion blur. Motion blur is now
visually adaptive. You can ignore time samples under Unified. Areas of
low detail and flat color still receive minimum samples regardless of
blur amount. Memory usage for motion blur is now a fraction of the
original amount.
Three main controls:
samples min = the minimum samples used per pixel (values lower than 1.
will under sample) These are not a power function like regular AA. It’s literal.
samples max = the maximum samples used per pixel
samples quality = the Unified control knob. More is better. Generally
1.0 is considered production quality. I occasionally have to go higher, 2 or 3
depending on noise/small details. 0.3ish is good for previews.
If you find motion blur or depth of field are grainy, increase max
samples. But for most things you can increase the quality knob and
leave your samples wide.
The Quality knob is now your control for rendering!
Basically: Set a set of sampling limits and then simply use Quality to make it look better.
You can use the diagnostics to see how/where your sampling is happening and make
decisions from there. Diagnostics are embedded into an EXR in different channels so
you still get your render unlike before.
Other controls:
sample error cutoff = when to stop sampling. Special cases where dark
areas can be ignored. This is a color threshold. Higher values begin
to tell the renderer to ignore lighter areas in the image as you
increase it. (Importance) It’s very sensitive, rarely used.
samples per object = Object tags for sampling override. Same as
previous versions except the amount is literal. 1 3 means minimum 1
and maximum of 3 samples. It’s not a power (4 min and 64 max at those
settings before).
Unified also controls the Rasterizer (Hence Unified’s name).
samples max = visibility samples
and quality is shading rate.
You should find that you do not need the Rasterizer nearly as often or at all.
Also, turn off Scanline. This is a performance consideration. Scanline
On will slow you down and shouldn’t be the default in Maya. There are
also three helpful new image diagnostics layered into the EXR when
rendering if you select “diagnose samples”. These are: estimated color
error per channel, samples per pixel (literal number when you mouse
over it), and pixel time to render (also literal time in seconds) More on this
can be explained later.
Here is the mel to insert the string options:
select miDefaultOptions;
int $idx = getAttr -size miDefaultOptions.stringOptions
;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].name
“unified sampling”;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].value “on”;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].type “boolean”;
$idx = getAttr -size miDefaultOptions.stringOptions
;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].name “samples min”;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].value “1.”;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].type “float”;
$idx = getAttr -size miDefaultOptions.stringOptions
;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].name “samples max”;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].value “100.”;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].type “float”;
$idx = getAttr -size miDefaultOptions.stringOptions
;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].name
“samples quality”;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].value “0.3”;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].type “scalar”;
$idx = getAttr -size miDefaultOptions.stringOptions
;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].name
“sample error cutoff”;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].value “0 0 0”;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].type “color”;
$idx = getAttr -size miDefaultOptions.stringOptions
;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].name
“samples per object”;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].value “off”;
setAttr -type “string” miDefaultOptions.stringOptions[$idx].type “boolean”;
Technically “samples quality” is a color, but for most things making
it three values will be overkill.
Caveats: This is a first implementation and I find it is great for most things. You may
find that hard edges are not as defined as you’d like if you do Arch Viz. This is something
that has already been mentioned for improvement. Like anything else I expect continued refinement.