What's new in Version 3.5
Here is a summary of some of the new features and feature
improvements in version 3.5 of mental ray:
New final gathering modes
mental ray now has four final
gathering modes: "automatic", "multiframe", "3.4", and "strict
3.4". The automatic and multiframe modes have been greatly
simplified and do not require control by radii, while usually
giving superious image quality. The multiframe mode is specifically
designed to avoid flickering artifacts in camera animations. The
3.4 and strict 3.4 modes are provided for backwards
compatibility.
Light lists in instances
Light lists have been
added to geometric instances to offer a general, more flexible ways
to specify lights for illumination, and for finer control over
shadow casting. The same material may now use different lights on
different geometries. Light lists provide a new, standard method to
pass lights to shaders for illumination; they require, however,
support in the shaders by using the new
light iterators.
Catmull-Clark meshes
Catmull-Clark polygon meshes
("ccmeshes") have been introduced. This subdivision surface type
uses Catmull-Clark rules for smoothening and supports polygons with
arbitrary numbers of vertices.
Reloading of .mi files for reduced memory consumption
A command line option -reload
has been introduced. If
this is specified then mental ray attempts to avoid keeping
geometric objects read from the mi file in memory permanently, but
re-read them from disk as needed. This optimization is not
applicable to all scenes and workflows but may save large amounts
of memory on certain complex scenes.
Per-face data
Per-face data have been introduced for polygonal geometric
objects. Per-face data make it possible to attach arbitrary
floating point data to the primitives. An object may also contain
per-primitive data information to identify the data attached to the
primitives.
String options
Up to version 3.4, options are hardcoded in the .mi syntax and
options data structures. It is now also possible to add new
string options in a more
extensible way as arbitrary name - value pairs, where the name of
the option is an arbitrary string, and the value can be of any of a
few basic types.
Photon merging
A new, optional optimization of global illumination using photon
mapping called photon merging has been implemented. This feature
reduces memory consumption in scenes with complex indirect
illumination where were many photons must be shot but only few of
them contribute to the rendered image, by merging photons in memory
which are closer to each other than a user specified distance
threshold. Some scenes which previously could not be rendered in
sufficient quality due to memory size of the shot photons may be
rendered now using this option.
Built-in shaders
As of version 3.5, mental ray has a small set of simple
built-in shaders. These are intended for
simple visualizations, where speed and simplicity of scene setup
are more important than customization of shading elements. The
shaders are designed to be flexible, but to offer only little
control over shading details.
Paint shader library
A paint shader library
has been added with shaders for metallic paint.
Other improvements
- Support for spectral rendering has been improved.
- Support for color spaces and color profiles has been
extended.
- The splitting of large objects with boundaries has been
improved.
- The handling of out-of-memory errors has been improved.
- The rasterizer rendering method has been optimized for better
performance.
- In the hardware rendering mode, larger images and higher
supersampling for antialiasing can now be rendered by automatic
tiling of the image into smaller regions.
Scene Description Language
The following changes were made in the .mi scene description
syntax:
- String options have been introduced in the options syntax.
- Instances may contain light lists for illumination and shadow
casting.
- An option finalgather secondary scale
(-finalgather_secondary_scale) has been added to specify a
scaling color for secondary bounces.
- An option photonvol scale (-photonvol_scale)
has been added to scale volume global illumination by a color.
- A string option "finalgather contrast" has been
added.
- A photon map may be specified in an object: photonmap file
"filename".
- Shader parameters can now be prefixed with colorprofile
name to specify the colorspace of the parameter.
- String options "globillum merge", "caustics
merge", and "photonvol merge" have been added for
photon merging.
- For lightmapping ("baking"), the file type of writable textures
can now be set explicitly in the syntax of writable textures.
- Light energies may now contain a color profile or a spectrum:
energy colorprofile name color or energy
spectrum name.
- Lights may now contain a light profile (lightprofile
name).
- The scalar values in color spectra are no longer separated by
commas: spectrum symbol scalar... end
spectrum.
- Per face data have been added to primitive lists.
- A registry variable _MI_REG_MEMORY_LIMIT may now be
set to specify the memory limit for mental ray which is otherwise
specified with the -memory command line option.
Shader Writing and Integration
The following changes were made in the shader and integration
interfaces.
Note: All shaders and integrations should be recompiled
for mental ray version 3.5. Many data structures in the shader
interface and integration API have been changed. Shaders compiled
for an earlier version of mental ray may crash without error
indication if they access changed data structures in the shader
interface.
- The C-style shader and integration interface has been extended
with a new C++ interface for
shaders and integrations. This interface introduces more modern
software interface approaches, simplifies linking and access to
functions in mental ray, and supports versioning for future
interface changes while maintaining backwards compatibility.
It uses styles and methodologies slightly different from the
ones used in the interfaces so far, and requires compilation of the
shader or integration as C++. The C interfaces will be continued to
be supported but some new features may only be available in the C++
interface. The C++ interface currently provides
light iterators for
access to light lists in
instances, and access to string
options.
- The camera and options entries in the
state structure are now marked as const, meaning
that state->camera and state->options can
not be modified in shaders. This enforces a restriction which is
very important for the correctness of shaders, since the camera and
options are shared among multiple threads executing in parallel and
can therefore not be modified without undesired and dangerous side
effects. A recommended and safer way is to make a copy of the
camera or options, modify the copy, and install it in the state;
please see the release notes for details.
- Two new functions int mi_img_get_width(const miImg_image
*) and int mi_img_get_height(const miImg_image *)
have been added which return the true, full width of tiled images
and textures.
- Two new query modes miQ_LIGHT_NORMAL and
miQ_LIGHT_TANGENT_SPACE were introduced. They return for
area light sources the tangent space of the current sample on the
light surface.
Incompatible Changes
The following changes were made in mental ray 3.5 which are not
backwards compatible or which may cause different results than
previous versions of mental ray:
- The default final gathering mode is automatic; use the 3.4 or
strict 3.4 mode to get the same behaviour as in version 3.4.
- Color clipping is now performed after the accumulation
of image samples for motion blur, while it used to be performed
before the accumulation. This has the effect of rendering
super-white motion blurred objects brighter than white motion
blurred objects, and may cause motion blurred objects to be
rendered significantly brighter.
- Extra samples in the generation of shadow maps have been
eliminated. This may result in different images of some scenes
using shadow maps, in particular in combination with motion blur,
since shadows previously may have been too dark.
- The memory limit (specified e.g. with the -memory
option) is now by default set to 1 gigabyte on 32 bit
architectures. This may affect the memory behaviour of mental ray
on some scenes.
- The handling of lens shader with the rasterizer has been
improved, lens shader are now called in the end like volume
shaders. This could break some rare lens shaders which exchange
data with material shaders through the state.
- The default low samples settings of area lights have been
changed from 2 x 2 to 1 x 1. This is more appropriate for the low
samples main use in final gathering.
- Texture file paths are substituted and replaced by absolute
paths now on all machines contributing in network parallel
rendering, not just on the master machine.
- Final gathering in combination with bump mapping now computes
final gathering by default on the "unbumped" surface normals.
- The output and exit code of the imf_diff utility has
been altered.
- If the min samples option is set to -2 or a lower
number then mental ray no longer fills coverage buffers.
- The bias computations for shadow maps without the Woo trick
have been improved.
- A limit for the number of auxiliary helper threads which mental
ray uses for network rendering, has been removed. This may
theoretically increase the number of threads created by mental ray
but is not expected to cause a noticable difference.
- Some platform configurations have been changed. The platform
nt-x86 is now compiled with the Microsoft Visual Studio .net 2003
(VC 7.1) compiler, and no longer with the VC 6 compiler.
Copyright © 1986-2009 by
mental images GmbH