mental ray Release Notes
Version 3.10.1.2
January 17, 2012
Copyright 1986, 2012 NVIDIA
Corporation. All rights reserved.
Introduction
These release notes list changes in mental ray since version
3.8.0.1.
Changes by Version
Note: Version 3.10 and later versions of mental
ray are binary incompatible with mental ray versions 3.9.x and
prior. Partial compatibility with 3.9 is maintained.
- Some shaders compiled for previous versions may need
recompilation to be used with this version. MetaSL generated
shaders compiled for earlier mental ray versions need
recompilation.
- Version 3.10 cannot be combined with version 3.9.x and earlier
versions in network rendering.
- iray and MetaSL plugins for mental ray 3.10 are not compatible
with earlier mental ray versions.
Changes in version 3.10.1.2.
Bug fixes:
- For unified sampling, fixed filtering artifacts for non-color
framebuffers (such as normal and Z depth).
- FIxed a crash in OEM plugin unload. The fix in version
3.10.0.18 was incomplete.
Changes in version 3.10.1.1.
Feature improvements:
- For
imf_copy
tool, added command line option
-t x [y]
which allows to specify a tile size used for
created tiled OpenEXR and Tiff images.
- Changed the tile size for saved tiled Tiff images to
128x128.
Bug fixes:
- For builtin IBL shader used with
"environment lighting
shadow"
string option set to "solid"
, trace
shadow against objects with shadow casting flag only.
- On Linux and MacOSX platforms, fixed possible black stripes in
created untiled Tiff images of small resolution (up to 320
pixels).
Shader changes:
- For alembic
abcimport
shader, added convention to
support assigning multiple materials inside of the alembic archive.
If the property "material"
with a string value is
specified on an object, the geometry ld look up for a material with
the name equal to that value (ishader would look up main scene for
a material with the name equal to the property's value (in the main
scene), and assign that material to the object. If the property
"adskDiffuseColor"
(color value) is specified, mental
ray will create a lambertian BSDF with that value, put it into a
new material and assign that material to the object.
- For
user_ibl_rect
shader, light was cast to the
wrong side (to the back of the light), fixed. The light was
directly visible from both front and back sides which was
inconsistent with the cast light, fixed.
- For
user_ibl_rect
shader, added boolean parameter
swap_uv
, default value false
. If set to
true
, the shader swaps attached texture U and V
coordinates. This parameter is useful if the rectangle light has
first axis along the Y direction and the second axis along the X
direction, which is the case for some OEM integrations
Changes in version 3.10.1.0.
Bug fixes:
- Fixed possible wrong motion vectors computation on static
objects if BSP2 acceleration with enabled
"trace camera
motion vectors"
string option was used.
- Fixed a crash in multi-hosted rendering of animations with
finalgatrher rebuild off
option.
- Fixed a memory leak for cached Tiff textures.
Shader changes:
- Alembic
abcimport.so
and Ptex shaders had a symbol
dependency causing load failure when used with integrated raylib.
Fixed.
- For alembic
abcimport
shader, fix the
select
parameter with value "|"
to select
the complete archive.
Changes in version 3.10.0.23.
Feature improvements:
- Changed the tile size for saved tiled OpenEXR images to
128x128. This applies to mental ray framebuffers and to
imf_copy
tool. Increased tile size improves texture
caching performance.
Bug fixes:
- For iray rendering node, fixed compatibility
with the architectural material metal.
- For iray rendering mode, fixed issues in OEM
tiled textures.
- For iray rendering mode, fixed possible
sampling artifacts in materials with multiple components (multiple
layers with multiple BSDFs).
- Fixed "don't echo gui" echo option (
-echo omit G
command line option).
- For
imf_disp
tool, fixed possible missing
animation controls when image was drag-end-dropped to the
imf_disp
.
Shader changes:
- For shader libraries which depend on STL (stlport), i.e.
usedata
and useribl
, remove (a large
number of) STL-related symbols from the public symbol tables.
- Added missing apply statements for
mib_bump_map2
and contour_store_function_simple
shader
declarations.
Changes in version 3.10.0.22.
Bug fixes:
- For iray rendering mode, fixed ground plane
reflections.
- For iray rendering mode, fixed possible issues
in OEM noise shaders.
- If unified sampling is used, framebuffers added by geometry
shaders were rendered black. Fixed.
Changes in version 3.10.0.21.
Bug fixes:
- Fixed possible fatal if traversal shader with string parameters
was used. The issue surfaced in version 3.10.0.15.
- On MacOSX platform, restored GPU acceleration of the
iray rendering mode which was disabled temporarily
in version 3.10.0.15.
Shader changes:
- For the alembic
abcimport
shader, added optional
string parameter "select"
. The value is expected to be
in the form of a /
-separated path into the alembic
scene graph, like "/root-node/level1-nodeA"
. Only the
selected subgraph is loaded.
Changes in version 3.10.0.20.
Bug fixes:
- For iray rendering mode, fixed garbage images
produced with negative camera values.
- Fixed another fatal in OEM raylib integration plugin unload.
This fix is a completion of the fix in version 3.10.0.18.
Changes in version 3.10.0.19.
Feature improvements:
- Upgraded iray libraries from CUDA 3.2 to CUDA
4.0. On Windows platforms, iray is compiled with
VisualStudio 2010, which matches mental ray build. Earlier versions
of iray libraries were build with Visual Studio
2008.
Bug fixes:
- For iray rendering mode, fixed OEM mirror
shader support.
- For iray rendering mode, fixed visibility flag
support.
- Fixed possible NaN values generated build builtin IBL.
- Removed ifdef-out code from public headers.
Shader changes:
- For
user_ibl_rect
light shader:
- The size of the light used in sampling was twice the expected,
causing a mismatch in visible shape of the light and the lighting
itself.
- When attached to rectangle light, the axes of the light were
ignored and (1, 0 0) x (0, 1, 0) was assumed, which is a default in
OEM integrations.
- In some cases, wrong transformation was applied to the
light.
- For
useribl
shaders (rectangle and environment),
fixed possible NaN values.
Changes in version 3.10.0.18.
Bug fixes:
- Fixed possible fatal in OEM raylib integration plugin unload
(incomplete, completed in version 3.10.1.2). This is an equivalent
of the fix in version 3.10.0.16.
- For
imf_disp
tool, animation control tools were
sometimes not displayed. Fixed.
Shader changes:
- Fixed compiler warnings in base shaders with public source
code.
Changes in version 3.10.0.17.
Bug fixes:
- Fixed a moderate per frame memory leak. A significant amount
was accumulated in animations and swatches rendering.
Changes in version 3.10.0.16.
Feature improvements:
- For scenes with displacement, significantly reduced negative
impact of unnecessary large max displacement values set multiple
times higher than the actual maximal displacement. For scenes with
extreme discrepancy, a total rendering speedup of more than factor
two has been observed.
- For iray rendering mode, added support for OEM
color-by-object shader.
- Added
builtin_bsdf.mi
file to the releases. The
file is not needed by mental ray, but may be used to lookup shader
declarations manually or by tools integrating mental ray
library.
- For
imf_copy
tool, added support for
-r
command line option (tiled/non-tiled output) for
Tiff output files.
Bug fixes:
- Fixed possible freeze or unknown tag fatal at raylib exit.
Regression in version 3.10.0.15.
- Changed
mi_api_registry_eval()
and
mi_api_registry_lookup()
functions to return
char *
pointer instead of const char *
pointer. The caller of these functions is responsible for releasing
(with mi_mem_release()
) of the returned string.
Changed constness makes this more intuitive.
- Fixed several minor memory leaks in registry lookups.
- Removed unused automatic creation of GUI attributes for
phenomena declarations. The attributes were not removed before
raylib exit, which could lead to unnecessary memory consumption
raising on interactive work.
- Fixed parsing of default values fordata declarations.
On user data, the default value was applied to the wrong parameter
(one before the current).
- Fixed possible crash when loading existing finalgather map file
with
finalgather rebuild off
option.
Changes in version 3.10.0.15.
Known limitations in this version:
- On MacOSX, iray rendering runs in CPU mode
only.
Feature improvements:
- For iray rendering mode, added support for
matte objects rendering.
Bug fixes:
- For hair ray tracing, fixed possible crash during hair
acceleration construction. Precision issue.
- When writing out multiple images to the same OpenEXR file,
fixed possible wrong color profile applied. The color profile
specified for the first image was applied to all images saved to
the same file.
- Fixed database and memory leaks for shaders and phenomena using
string and/or unnamed texture parameters. The latter in particular
fixes a major memory leak in subsurface scattering phenomena which
do not specify lightmap and depthmap texture parameters.
- Fixed a database tag and minor memory leak when a local or
writable texture was used.
- For iray rendering mode, fixed possible
artifacts if two neighbor volumes have identical IOR.
- For iray rendering mode used interactively,
fixed possible artifacts in texture re-baking.
- For
imf_disp
tool on MacOSX, fixed drag-and-drop
functionality.
- If output image format type is not specified, write out files
with
.sxr
extensions as OpenEXR.
- When writing out multiple images to the same OpenEXR file,
added missing info message on writing the second and subsequent
framebuffers.
- Fixed formatting of messages for
debug "db dump"
command in .mi files.
- For memory statistics, report iray memory usage under "IRAY"
instead of "RC".
Shader changes:
- Fixed possible artifacts in environment sampling for
user_ibl_env
shader.
- For
userdata
shaders, avoid possible fatal for
misconfigured scenes.
Changes in version 3.10.0.14.
Feature improvements:
- For iray rendering mode, fixed possible
shading artifacts for scenes rendered with a lot of computational
efforts.
Bug fixes:
- Fixed echo of shader instances with struct parameters, where
values of each of members of the struct is equal to the default
value.
- Fixed possible failure to update textures between frames. If
several API texture names refer to the same file on the disk, and
the textures are opened with the same parameters (like filter),
mental ray shares the content of the textures in memory. If such
shared textures were modified on the disk between frames, mental
ray did not reload them even if incremental API updates were done.
With this fix, mental ray takes into account the timestamp of the
file into when a decision to share textures is done.
- For iray rendering mode, added support for
mib_color_mix
used as a material shader.
- For iray rendering mode, fixed possible
concentric artifacts in wave maps.
- For
imf_disp
tool, fixed a crash when exporting
tiled OpenEXR file (-p
or -r
command line
option, for OpenEXR -p
(mipmap pyramids) implies
-r
(tiles)).
Changes in version 3.10.0.13.
Bug fixes:
- When a registry lookup with "include" attributes triggered
parsing of .mi files with (nested) include statements, the file
order was broken and some of includes were possibly not processed.
Fixed.
- Nested include files had a depth limit of 9. The limit is
raised to 4096 (and kept to just break possible self-include
infinite recursion).
- For OpenEXR images, B44 compression was used instead of PXR24.
Fixed.
- Fixed possible rare multi-threading scalability issue: for
simple scenes, some threads could stop participating render in
rendering.
- For
imf_disp
tool, improved halftone image
mask.
Changes in version 3.10.0.11.
Bug fixes:
- Fixed a shadow tolerance issue for directional lights if BSP2
acceleration is used.
- Switched the default format for TIFF and EXR output images back
to scanline, the tiled format can still be specified with an
explicit setting in the framebuffers options.
- For iray rendering mode, fixed some numerical
imprecision that happened in rare corner cases.
- For iray rendering mode, fixed an issue with
motion blur that caused light intensities to flicker between
frames.
Changes in version 3.10.0.10.
Bug fixes:
- Fixed shadow artifacts for one-sided surfaces if BSP2
acceleration is used.
- For iray rendering mode, fixed possible metal
material visual differences vs. iray 1.2 version used with mental
ray 3.9.1.
Changes in version 3.10.0.9.
Bug fixes:
- For
mi_tri_vectors()
function, fixed lookup for
texture derivatives (bumps) and for derivs. In particular, this
fixes anisotropic shading artifacts.
Changes in version 3.10.0.8.
New features:
- Added support for import of Alembic files. A new shader library
(
abcimport.dll/.mi
) containing a single geometry
shader
declare shader geometry "abcimport" (
string "filename",
scalar "time" default -1.0,
boolean "assembly" default off
)
version 1
apply geometry
end declare
is added. The shader searches for the Alembic file specified by
the "filename"
parameter using the assemblies search
path set (-assembly_path
command line option).
If "time"
parameter is non-negative, the geometry
for that time is selected. If it is negative, mental ray's
miCamera::frame_time
is used (default).
If "assembly"
parameter is set to on
,
the geometry shader itself locates .abc file, computes bounding
boxes and creates a procedural assembly. The actual geometry
(including possible hierarchy) is generated on demand when the
bounding box is hit. If "assembly" parameter is set to
off
, geometry is loaded immediately during scene
preprocessing. This is the default mode.
Materials, approximations and flags are inherited from the
instance the geometry shader is attached to.
Alembic-related libraries are linked statically into the shader
DLL's, the shader does not have dependencies on other DLLs.
Bug fixes:
- For iray rendering mode, fixed artifacts if
IOR of 1.0 was used.
- For mental ray legacy framebuffer API, such as
mi_output_image_open()
function, fixed the selection
of the color framebuffer assuring this is the primary one.
- In scene preprocessing, fixed inheritance of override
approximations into assemblies.
- Avoid a crash if a discontinued builtin shader (such as
builtin_constant_color
) is used in the scene.
- For
imf_disp
tool, fixed possible crash on Linux
platforms, in particular if remote display is used. Fixed GUI
controls and frame number display in the image pipe mode.
Shader changes:
- Removed obsolete platform defines for shaders provided with
source code.
Changes in version 3.10.0.7.
Feature improvements:
- For iray rendering mode, added support for
round corners feature.
- For
imf_disp
tool, restored image pipe
functionality known from imf_disp shipped with mental ray 3.7 and
prior (command line ray .... -imgpipe | imf_disp -
).
- For
imf_disp
tool used to display animation
rendering, avoid jumping back to display the first frame rendering
(or finalgather preview of the first frame rendering) after the
animation ends.
- Added support for camera near/far clipping planes in
combination with
scanline off
option. If the string
option� "trace camera clip"
is set to
true
, the near and far clipping planes are respected
for primary rays shot from the camera. This string option should be
used with care in combination with lens shaders benting eye ray
directions (for example, fisheye-style shaders) as it may lead to
unexpected results: clipping is done based on the camera only. The
default value for� "trace camera clip"
string option
is false
(compatible with mental ray 3.9 and
prior).
- Geometry shader api is extended with function
char *
mi_api_assembly_path_search(char *filename)
. A geometry
shader may use this function to determine the absolute file name
according to the set of rules which mental ray kernel uses to
search for assembly .mi files. The argument filename should be
mi_mem_strdup()
-ed, and the returned result should be
mi_mem_release()-ed.
Bug fixes:
- For BSP2 acceleration, fixed possible NaN artifacts for scenes
containing multiply-instanced objects with some moving and some
static instances.
- For BSP2 acceleration, improved precision of shadow rays.
Internally, the direction of shadow rays traced for directional
lights is inverses from light-to-object (old) to object-to-light
(new). The shader API is unchanged.
- Fixed possible crash if legacy finalgather maps were used.
- For
imf_disp
tools used to display sequences of
frames, changed File->Save As menu to save the
frame currently displayed instead of the first frame of the
sequence.
- In rasterizer,
miState::importance
was not
properly re-initialized between samples, fixed.
- For iray rendering mode, fixed possible
crashes for scenes with both portal lights and normal lights.
- For iray rendering mode, fixed possible gamma
correction artifacts.
- For iray rendering mode, fixed possible crash
on 32-bit Windows platform.
Shader changes:
- The
ptex.dll
shader library
(mib_ptex_lookup
shader) is changed to link the
standard Ptex library statically. This is done in order to avoid
possible conflicts with other version of libPtex.dll
possibly installed on the system or used by an application
integrating raylib.
- For architectural portal light shader, downgraded error message
to warning.
Changes in version 3.10.0.6.
Feature improvements:
- For iray rendering mode, added support for
camera window.
- For iray rendering mode, added more and
improved support for OEM texture shaders.
- Improved memory usage reporting messages.
Bug fixes:
- For SPM-protected version of mental ray on Windows machines,
the freeze observed in version 3.10.0.5 was resolved.
- On Linux and MacOSX platforms, fixed possible broken
phen/shading tree evaluation (gcc compiler bug). In particular,
this fixes possible displacement artifacts.
- On multi-CPU machines, improved performance of the scene
rendering startup.
- Fixed possible rare crash usually observed at the beginning of
rendering stages (photon emission, finalgather precomputation or
tile rendering).
- For multi-hosted rendering, in some cases slave/satellite
machines did not receive rendering tasks, which lead to their low
participation. Fixed.
- Geometry secondary root shaders of material phenomena were not
executed, fixed.
- Fixed possible hair shadow artifacts.
- Added missing gradients (or, equivalently: spherical harmonics)
for finalgather points computed with importance weights (see
"finalgather importance"
string options feature of
mental ray 3.10)).
- For finalgather, fixed possible lookup slowdown due to
improperly build tail of the paged map. Regression in
3.10.0.5.
- For
imf_disp
tool, fixed scrambled channels for
OpenEXR image layers created exported by mental ray from normal and
motion framebuffers.
- For MetaSL shaders, fixed possible missing texture default
initialization.
- For MetaSL compiler, fixed compilation of the compound shader
example from MetaSL documentation.
- For MetaSL compiler C++ backend, fixed a regression in
compilation of BSDF nodes.
- For iray rendering mode, fixed support for
"reverse"
parameter of the mia_skyportal
shader.
- For iray rendering mode, fixed a regression in
mia_photometric_light
light distribution.
- For iray rendering mode, fixed possible
artifacts due to IOR computation on transparent materials.
- For iray rendering mode, fixed possible
artifacts after updating scenes with emissive materials.
- For iray rendering mode, fixed possible
artifacts for cylinder lights.
- For iray rendering, fixed possible artifacts
in the initial subframes due to a failure to re-render fragment
after a driver timeout was detected.
- For iray rendering mode used interactively,
fixed possible failure to update objects created by geometry
shaders.
- For progressive rendering and iray rendering
mode used interactively, added a synchronization in order to avoid
possible race condition issues on scene modification. In order to
modify scene, applications editing scene need to pause rendering.
The changes are picked up by renderer after the rendering is
resumed.
- For progressive rendering and iray rendering
mode, fixed possible crash on interactive camera updates
(regression).
- For mental ray standalone running on MacOSX version
10.6, fixed a crash if iray rendering
mode was used. CUDA runtime library used by iray
depends on CoreFoundation. Loading CoreFoundation library from a
thread which is not the main thread of application
leads to a crash on MacOSX 10.6. In order to resolve the issue,
mental ray standalone on MacOSX is now linked against
CoreFoundation library. For integrators: applications using mental
ray library using iray rendering mode should
assure that CoreFoundation is linked.
- Fixed several bugs in the connectivity to the cloud.
Shader changes:
- On Windows platforms, fixed possible broken
progress/info/error/debug messages generated by shaders if the
messages contained percentage (%) sign. shader.lib call forwarding
did not encapsulate strings properly. In particular, the fix
applies to the subsurface scattering shader.
- For the production
mip_motion_vector
shader, added
support for the string option "trace camera motion
vectors"
introduced in version 3.10.0.5. The camera motion
is no longer added in the shader for the scanline off + BSP2
acceleration case.
- For fast subsurface scattering shaders, added support for
camera offset.
- For
mia_photometric_light
shader, fixed possible
crash if the shader was used on a light instance with
non-orthonormal transformation.
Changes in version 3.10.0.5.
Known limitation in this version:
- SPM-protected mental ray standalone and library may freeze on
some Windows machines.
Features affecting compatibility:
- The
scanline on
option is deprecated. The default
value is off
. With scanline off
option,
was camera motion is not taking into account when computing
miState::motion
and motion framebuffer. Now, if BSP2
acceleration is enabled in combination with scanline
off
option, the string option "trace camera motion
vectors"
(default: off
) can be used to enforce
adding camera motion effect to the computed motion vectors.
Feature improvements:
- Allow to specify min / max samples per instance with the
following syntax:
instance ...
...
samples <float min> <float max>
...
end instance
Added min/max samples inheritance the scene graph.
- Added bicubic texture filtering lookup. An overloaded
lookup_filter_color_texture()
method is added to
mi::shader::Interface
, which takes filter type
(bilinear/bicubic) as a last argument. Example of the usage can be
found in the mib_texture_filter_lookup_2
shader source
code.
- Improved performance of finalgather lookup for scenes with
glossy reflections.
- Improved hair rendering performance.
- Added support for stereoscopic OpenEXR ("sxr") files. Rendered
images are saved in "sxr" , if framebuffer's type is "sxr", or if
the registry's
"{_MI_REG_STEREO_EXR_MULTIVIEW}"
value
is set to "on"
.
Known limitation: imf_disp
is able to display only
mental ray-generated SXR files. For arbitrary ones, camera names
may be interpreted as conventional layer names.
- For integrated MetaSL compiler, improve performance of the
generated code by means of static code analysis. This may
significantly slowdown the compilation phase.
- For scenes with many database elements running low on memory,
improved scalability by decreasing the time interval of the
database being locked.
- Improved comment printed out in the beginning of echoed
.mi
files.
- For iray rendering mode, added progress
reporting for texture baking.
Bug fixes:
- Particle map objects are not supported for
bsp
acceleration. If such an object is detected, an info message is
printed and bsp2
acceleration is used instead.
- Fixed possible memory corruption for some shaders with small
size outputs (less than 16 bytes) connected as inputs to other
shaders. The corruption occurred if such shader assumed that it is
safe to fill the result with a color.
- For MetaSL shaders, fixed possible update of the shader
bytecode if a MetaSL file with the code definition was
reloaded.
- For MetaSL shaders using
direct_light()
/indirect_light()
functions, fixed artifacts due to a wrong argument order
interpretation.
- For iray rendering mode, fixed a crash if
irradiance particles option was enabled (irradiance particles are
not used in iray rendering mode).
- For iray rendering mode used interactively,
fixed out-of-memory crash if a light shader is updated
incrementally.
- For iray rendering mode used interactively,
fixed a crash if object material's was changed incrementally to a
null tag.
- For iray rendering mode used interactively,
fixed possible artifacts in rendering scenes after updates.
- For iray rendering mode used interactively,
fixed possible crash on incremental shader/material change which
disables a texture.
- For mental ray progressive rendering and iray
rendering mode used interactively, fixed possible deadlock freeze.
The deadlock was in particular possible if rendering was cancelled
during the scene rendering initialization.
- For raylib integrations using progressive rendering or
iray rendering mode, fixed the return value of
mi_rc_progressive_get_update_count()
.
- Fixed several issues in the cloud rendering connectivity.
Shader changes:
- The
mib_texture_filter_lookup_2
base shader get
new parameter allowing to specify bicubic filtering.
- Fixed possible artifacts for
mia_photometric_light
shader on visible lights.
Changes in version 3.10.0.4
Feature improvements:
- iray v2 plugin interface has been changed to
enable both-way compatibility in the future. Compatibility with
older revisions of iray v2 and iray
v1.2 is not maintained.
- Adjusted message reporting: if the "memory" verbosity bit is
set, each printed line contains the approximate amount of physical
memory used by mental ray on the moment the message is printed. The
amount is only an approximation due to the asynchronous message
printing and asynchronous memory statistics collection.
- For
ccmesh
objects, improved texture seam
computation for multiple texture spaces. Up to four texture spaces
are supported. Earlier version took up to two spaces into
account.
- For ptex texture support, added a registry key
{_MI_REG_CCMESH_PTEX}
. If its value is set to
"on"
, all ccmesh objects are tessellated with
ptex
support capability, even if the bary
flag is not specified on such objects.
- Improved performance for ray-traced shadows on hairs
(10-30%).
- For ray-traced hairs, improved image quality by increasing
precision of intersection calculation.
- For ray-traced hair rendering, added a transparency depth limit
of 250, similar to the maximum depth limit used for hair rendering
in rasterizer.
- Improved infrastructure for cloud rendering support. Due to
changes interfaces, the functionality to read images from URLs
(instead of files) is no longer needed and is removed.
- Improved texture filtering for MetaSL shaders with texture
remapping.
Bug fixes:
- For map containers (including finalgather map files), a
temporary file was created in the current directory, causing an
error if the directory was read-only. This could in particular be
the case if the application or mental ray standalone was started
with a script changing local directory, or with a Windows shortcut
specifying "Start In" directory.
- Allow finalgather legacy mode (
"finalgather
legacy"
on
string option) to be used in
combination with the new finalgather map format introduced in
mental ray 3.9. In legacy mode, mental ray 3.8 containers are used
for finalgather maps, which are known to deliver better performance
for some scenes with a combination of finalgathering, glossy
reflections, and moderate finalgather map size.
- For finalgather maps appended to the file for animation
rendering, some of the points appended were not taken into account
during rendering. Fixed.
- Fixed possible fatal error if additional framebuffers were
added by a geometry shader.
- For texture lookups based on differentials (like
mib_texture_filter_lookup_2
shader), the lookup
results were too blurry. Fixed.
- Improved handling of
ccmesh
objects which are
non-2-manifolds. Added a control to avoid possible infinite loops.
In addition, added a registry
{_MI_REG_CCMESH_CHECK_TOPOLOGY}
. If set to value
"on"
, an expensive topology tests is done.
- For
ccmesh
objects, fixed possible crash for a
corner located on a boundary.
- For iray rendering mode, fixed artifacts if
double sided materials were used (regression).
- For debug executables, fixed an assert if
scanline
on
rendering was used in combination with unified
sampling.
Shader changes:
- For
ptex
shader library
(mib_ptex_lookup
shader), search for ptex
texture files using the same texture path search mechanism as used
by the kernel for traditional textures.
- For
ptex
shader library
(mib_ptex_lookup
shader), fixed handling of 4-channel
textures.
- For the subsurface scattering shader, added two skin phenomena
misss_phen_skin2_mia_phen(_d)
based on the
misss_fast_shader2(_x)
added in version 3.10.0.3. The
shader reference documentation is extended with these new
shaders.
Changes in version 3.10.0.3 (incomplete list).
Known limitation in this release:
- On windows platforms, iray runs in CPU mode only. GPU support
is pending on Visual Studio 2010 by CUDA compiler. GPU support is
restored in version 3.10.0.5.
New features:
- Ptex texture support for ccmesh objects added.
Lookup to ptex textures is implemented in the shader
mib_ptex_lookup
:
declare shader color "mib_ptex_lookup" (
string "filename",
scalar "width" default 1.0,
scalar "blur" default 0.0,
integer "filetype" default 4,
boolean "interpolate_level" default off,
scalar "filter_sharpness" default 1.0)
version 1
end declare
- In the current version, the shader is
compiled into the dynamic library called
ptex.dll/so
.
This library depends on the libPtex.so/dll
, which
contains the Ptex library itself.
.mi syntax has been extended with the "bary
"
keyword which can be added to a ccmesh object (before the data
block). If present, ccmesh tessellation generates barycentric and
face index information which can be retrieved with
mi_query
function.
The new mi_query
mode miQ_PRI_SDS_UV
can be used in order to obtain ccmesh face UV coordinates. The
value stored into a parameter is a float pointer to an array of 7
values. The values 0+1, 2+3, 4+5 contain barycentric coordinates of
the vertices of the triangle hit. The value #6 contains the index
of the face (in unsubdivided representation), as a float. The
storage used to keep the seven float values is in the internal
cache, so a copy of the value should be kept if used after a
subsequent mi_query
call, tracing rays or calling
other shaders.
- Added new user light shaders for efficient importance-driven
light sampling:
declare shader
color "user_ibl_env" (
color texture "texture", # environment lookup shader or texture
integer "samples" default 0, # limit number of arealight samples
color "color" default 1 1 1, # light color scaling
scalar "intensity" default 1, # scalar multiplier
integer "shadow_mode" default 2, # 0=no shadow, 1=opaque, 2=transp
scalar "rotate", # rotation
boolean "as_reflection" default false, # treat the texture as a reflection
boolean "primary" default true
)
apply light, environment
version 3
end declare
This shader is similar to the builtin area light, but provides
extended parameter set.
declare shader
color "user_ibl_rect" (
color texture "texture", # environment lookup shader or texture
integer "samples" default 0, # limit number of arealight samples
color "color" default 1 1 1, # light color scaling
scalar "intensity" default 1, # scalar multiplier
integer "shadow_mode" default 2, # 0=no shadow, 1=opaque, 2=transp
scalar "cone" default 90.,
scalar "falloff" default 2.0,
scalar "angular_falloff" default 1
)
apply light
version 3
end declare
This shader implements texture-driven importance light sampling
on a rectangle light.
The shaders are a part of the new useribl.so
/
useribl.mi
library.
Feature improvements:
- Added support for names/types for texture and user spaces on
vertices.
- Extended .mi syntax in order to support names/types for texture
and user spaces on vertices.
The vertex info follows the syntax:
vertex
p | n | d | d2 | m <opt_size> | b
<opt_size> | t <opt_size>
<type> <opt_name> ...
<opt_size>
<type><opt_name> | t
<opt_size> <type>
<opt_name> ...
<opt_size><type>
<opt_name>
where type is scalar
, vector
,
color
or integer
. An example of a trilist
object syntax would be:
trilist
vertex 4 p n t 3 scalar "mytexture" u 1 vector
"diffuse"
triangle 2 [
...][...]
end trilist
- Added the following
mi_query()
modes in order to
support named per-vertex data:
miQ_PRI_VERTEX_INFO
: returns the information of a
named vertex data element. The parameter to return is caller-owned
miApi_vertexinfo
structure. The specific selector used
in the const char *
name string. Note that the name
ins the miApi_vertexinfo
is valid until the next
mi_query()
call only. Currently, the query mode is
supported for trilists, polygon and ccmesh objects only.
miQ_PRI_VERTEX_INFO_INDEX
: returns the information
of a vertex data element specified by index. Same as
miQ_PRI_VERTEX_INFO
, except that the selector
parameter is an unsigned integer instead of the string.
miQ_PRI_VERTEX_INFOS
: returns the number of named
vertex elements, to be used as an upper limit to the selector of
the miQ_PRI_VERTEX_INFO_INDEX
query mode.
- For integrations, added function
mi_api_vertex_info_add()
which specified a name/type
of a single vertex element.
- Added support for per-face user data for ccmesh object.
- The syntax for ccmesh objects has been extended, like in the
example below:
ccmesh "s"
polygon 1 vertex 6
data 1 3
p 0 1 2 3 4 5 6
data [1234][0 1 2]
end ccmesh
The first data statements specifies the number of arbitrary ints
and the number of ints per face. The second provides the arbitrary
data followed by the per polygon data.
- Added the following
mi_query()
modes in order to
improve support for per-face data:
miQ_PRI_NUM_DATA:
returns per-face data size and
layout information. Caller-owned pointer to the
miPri_data
structures should be passed as the
mi_query
parameter. The parameter is filled with the
data. Sizes are counted in 32-bit integers/floats. The query call
is supported for rendering stage shaders and for displacement
shaders.
miQ_NUM_USERS:
returns the number of user user
vectors per vertex.
miQ_USER_DIM:
return the dimension (number of
scalars) of user vector. The user vector is selected based on the
additional selector parameter passed to mi_query()
,
with the valid range from zero to the return of
miQ_NUM_USERS
query mode.
- Added the
mi_query()
mode
miQ_PRI_UV_DIFFERENTIALS
. In order to use this mode,
computations of ray differentials should be enabled ("ray
differentials" true
string option). The parameter passed
should be a caller-owned array of 4 floats. On success, the 4
floats are filled with dx, duv/dx, dy, duv/dy geometric
differentials.
- Refurbished finalgather + irradiance particles combination in
order to allow irradiance particles to drive finalgather importance
sampling.
Added string option "finalgather importance"
, with
the following possible values:
"off"
: If irradiance particles are on, their
contribution is used for the computation of the secondary diffuse
component. Irradiance particles are not applied to drive importance
sampling for finalgather rays
"partial"
: the importance-based mechanism of
irradiance particles is used to drive finalgather ray distribution,
and irradiance particles are used for secondary diffuse
bounces.
"full"
or "on"
: like "partial", and
in addition for shading of finalgather rays, light sampling loops
would return black and the direct diffuse illumination is obtained
from the irradiance point maps. Note that in this mode, the glossy
component of finalgather ray hits is suppressed, which may read to
slightly darker images.
In addition, finalgather can be used with importons without
irradiance particles. In that case, importon map drives finalgather
ray distribution.
- Experimental: for finalgathering, added an
experimental finalgather lookup mode which tests the visibility
from the lookup point to the FG interpolation point candidates. The
mode can be enabled with the
"finalgather points test"
string option, or with the new
miIrrad_options::finalgather_points_test
value set to
1.
- For builtin ambient occlusion, test the hits against shadow
cast object instead of "any flag set". For shader calls,
miAmboccl_options::flag
, which allows to specify a
bitmask of multiple flags (shadow/reflection/refraction/...) to be
used in the ambient occlusion tests. The default one is
shadow.
Bug fixes:
- For ccmesh objects, fixed possible texture seam artifacts.
- Fixed possible very rare crash due to NaN direction generated
for diffuse or glossy reflections.
- Fixed possible tile border artifacts if coverage framebuffer is
used in combination with motion blur.
- Fixed possible unknown tag fatals at the end of rendering.
Regression in version 3.9.4.5.
Shader changes:
- Added new subsurface scattering shader
misss_fast_shader2(_x)
with features extended for
production purposes.
Changes in version 3.9.4.7
Bug fixes:
- Fixed unknown tag fatals and crashes in iray rendering mode
introduced with texture filtering cache. Regression in version
3.9.4.5.
Changes in version 3.9.4.6
Feature improvements:
- For iray rendering mode, improved performance of baked
textures caching by using finer caching selection.
- For cloud rendering, implemented efficient mechanism to echo
changed tags only.
Bug fixes:
- With finalgather rebuild off option, the finalgather points
from the existing finalgather map file(s) or previous frame(s) were
not used when detecting if new finalgather points need to refine
the map. This lead to unnecessary computations of new points and
exposing of the finalgather map file size for long animations.
Regression in mental ray 3.9. Fixed.
- For iray texture baking introduced in version 3.9.4.5, fixed
possible crash if scene is changed during baking process.
- Allow phenomena root declarations to be of any type. This is
needed to support MetaSL phenomena in the "emulation" mode
(
{_MI_REG_METASL_EMULATE_MI_PHEN}
registry).
- For MetaSL compiler, fixed a crash in too long swizzles (like
a.xxxxx
). Issue an error instead.
Changes in version 3.9.4.5
Feature improvements:
- For iray rendering mode, added support for caching
baked textures across multiple frames with incremental scene
changes.
Bug fixes:
- In progressive rendering, fixed a crash when integrating
application decides to reinherit lights between frames.
- For displacement, reduced the number of warnings on improperly
set max displacement to one per object.
- Assure that shader libraries specified on the mental ray
standalone command line are loaded in the order of specification.
For network rendering, also assure the loading order on
slaves/satellites receiving the list of shader libraries from the
master host.
- For MetaSL compiler, fixed possible "name already used" error
if multiple shader use external names.
- For MetaSL C++ backend, fixed incorrect C++ code generated for
global struct members.
Changes in version 3.9.4.4
This version cannot be combined with mental ray 3.9.4.3 and
prior in network rendering.
Feature improvements:
- For
ccmesh
objects, added support for the
approximation sharp parameters (smooth vs. facetted shading
normals).
Bug fixes:
- For BSP2 acceleration when used for motion blur scenes: fixed
possible shading artifacts for scenes which contain
multiply-instanced objects and some static objects.
- For
ccmesh
objects with unsupported approximation
types (warning situation), avoid a fallback into using too fine
tessellation. The coarse one based on min subdiv level is used
instead.
- For unified sampling, the per-object min/max sample fix in
version 3.9.4.0 was incomplete. Fixed the support for per object
max samples limit.
Changes in version 3.9.4.3
Changes affecting compatibility:
- Iray integration interface version has changed to 8. mental ray
3.9.4.3 will not work with iray plugin from earlier versions.
Bug fixes:
- Fixed a raw (single pixel) texture lookup if the texture filter
value is set to -1.
- Added missing sample diagnostic mode for progressive rendering.
Only number of samples is supported.
- For progressive rendering, do not stop rendering tiles with no
object hits due to possible non-geometric effects.
- For MetaSL compiler LLVM backend, fixed black images rendered
with BSDF shaders. Regression in 3.9.4.2.
Changes in version 3.9.4.2
Bug fixes:
- Fixed possible stack overflow crash for scenes with large
number of hull objects (object with materials with no surface
shader).
- On 64-bit platforms, non-SSE version of texture filtering and
photon map lookup was executed. Switched code to the SSE path,
which leads to a minor performance improvement.
- For MetaSL compiler, fixed possible compiler crash in handling
Trace_options.
Changes in version 3.9.4.1
Bug fixes:
- If mental ray standalone was used with pipe input (like
cat file > ray ....
), the parser buffer could get
corrupted after parsing the first render command, i.e. only the
rendering of one frame was possible. Fixed. Note: for a
continuous pipe stream it is still necessary to
push some data / new lines in order to fill input buffers and
trigger the parser to process the input. Appending 8K of new lines
is recommended.
Shader changes:
- For architectural material library, added a new shader
mia_exposure_photographic_rev
, which approximately
inverses the effect of mia_exposure_photographic
shader. The parameter sets of those two shaders are identical.
Changes in version 3.9.4.0
Feature improvements:
- For raylib integration, provided initial implementation of the
Cloud connectivity support.
- For mental ray standalone, added new command line option:
-unified_sampling <on/off>
enables/disables
the unified sampling.
-unified sampling <min> <max>
[<quality> [<error_cutoff>]]
enables unified
sampling and sets the min/max samples parameters,
as well as optional quality and error cutoff.
- Significantly improved performance of displacement
presampling.
- Improve imf_disp's performance for large resolution images
displayed during rendering.
Bug fixes:
- With
"contrast all buffers"
string option set,
contrast tests were not applied in several first user color
framebuffers. Regression in mental ray 3.9, fixed. This includes
the wrong offset fix from version 3.9.1.39 on the mental ray 3.9.1
branch.
- For BSP2 acceleration used on scenes with large bounding box or
distant lights, fixed possible ray-traced shadow precision
artifacts.
- On Linux and MacOSX platforms, fixed broken decompression of
OpenEXR images using PIZ compression. In most of cases, the alpha
channel was wrong.
- For Tiff images with tiled mipmap pyramids, fixed possible
artifacts due to improper loading (texture caching only) of upper
levels with tile resolution smaller than the level resolution.
- Fixed distribution used in the
mi_reflection_dir_anisglossy_x()
function (anisotropic
glossy reflection). Regression in mental ray 3.9.
- Fixed error messages if a primary framebuffer is not of a color
or alpha/intensity type. Such framebuffer is now downgraded to
non-primary one like in mental ray 3.8 and prior.
- For progressive rendering, use adaptivity sampling criteria
which leads to a better match of images to those rendered with
unified sampling in non-progressive mode.
- For unified sampling / progressive rendering, clip per-object
min/max samples to the maximal value of 127. The internal storage
is limited to one byte.
- For raylib integrations using progressive
rendering or iray rendering mode in combination with application
framebuffer, fixed possible crash on the camera resolution
change.
- Fixed possible virtual memory leak if a scene with multiple
memory-mapped framebuffers was rendered with progressive
rendering.
- Slightly improved scalability on multithreaded machines by
reducing locking in the scheduler.
- For multihosted rendering, avoid redundant communication on
scene changes, in particular when animations are rendered.
- For MetaSL compiler, fixed possible illumination artifacts.
Expressions like
a/(b*c)
were interpreted as
a/b*c
on the compiler code path used by mental
ray.
- For MetaSL LLVM backend, fixed possible runtime crash if BSDFs
are used.
- For MetaSL LLVM backend, avoid installing signal handlers in
LLVM. This could have negative affect on applications integrating
raylib and relying on their own signal handling mechanism.
- For MetaSL compiler, fixed several issues in SSA analysis.
- For MetaSL compiler, fixed several memory leaks.
- For iray rendering mode, converted several info messages to
progress one for a better verbosity match.
Shader changes:
- For
mia_physicalsky/mia_physicalsun
and
mip_rayswitch_environment
shaders, fixed background
visible through objects with hull materials. Hull materials are
frequently used to enable volumetric effects.
Changes in version 3.9.2.13
Bug fixes:
- Tiled TIFF output image files were broken, regression in
version 3.9.2.11. Fixed.
- Fixed some memory leaks for MetaSL compiler.
- For MetaSL compiler, fixed possible crash when coping nested
phenomena or when local variables were used inside of if/else
statement.
Changes in version 3.9.2.12
Bug fixes:
- For
ccmesh
objects, fixed a crash in reallocation
with object containing creases.
- For MetaSL LLVM backend, fixed a crash if a shader name ends
with "_bsdf".
Changes in version 3.9.2.11
Feature improvements:
- Improved quality of high-depth detail shadow maps. A new string
option:
"detail shadowmap contrast
", default value
0 0 0
, is added. If set, its value is used to combine
multiple steps in the visibility drops as long as the difference in
the visibility does not exceed the option value. With moderate
positive values (for example, 0.15 0.15 0.15), a much depth-deeper
falloff of the visibility would be typically stored in a more
compact form than the one used in earlier versions. The
accuracy
parameter for detail shadow maps is
deprecated and is no longer used. The shadowmap bias parameter is
respected. If not set, the value computed based on the scene box is
used.
- The "tiled" attribute syntax for framebuffers (added in version
3.9.2.8) is supported for Tiff image files. Like for OpenEXR files,
tiled images are written out by default.
- Avoid printing an API error message if an instance group is
used as a shader/user data light parameter.
Bug fixes:
- For network rendering, fixed a memory corruption which caused
frequent crashes after a slave or satellite was disconnected.
- For scenes using builtin BSDFs, fixed possible NaN pixel color
artifacts.
- For the .mi parser, the namespace was not restored on an error
of a shader re-declaration. The rest of the scene was parsed into
the namespace of the shader. Regression in version 3.9.1.24.
Fixed.
- For progressive rendering, fixed possible tile artifacts, in
particular for low sampling rates and sharp edges. Tiles with low
percentage of pixels which need oversampling were skipped
completely, which caused a mismatch in sampling rates across the
tiles.
- For some multicore machines, the scalability of finalgather
precomputation stage in the
"finalgather precomp
legacy"
mode (mental ray 3.7 and prior compatibility) was
poor. Improved.
- The
mi_db_deferredflush()
function for propagating
of multiple database tag changes to other hosts in multihosted
rendering was not thread-safe. Fixed.
- Fixed a minor memory leak when PNG image file was created.
- For iray rendering mode, fixed possible
precision artifacts when rendering background plane.
- Fixed a memory leak (unused texture spaces data) in
iray rendering mode.
- Fixed several memory leaks in MetaSL compiler.
- For MetaSL compiler, fixed compilation if shaders returning
unsupported array and string types.
- For MetaSL LLVM backend, fixed possible crash when implicit
type casts (like
float3 x = 0;
) were used.
Changes in version 3.9.2.10
Note: for network rendering, this version of mental ray cannot
be combined with mental ray version 3.9.2.9 and prior.
Feature improvements:
- Increased the number of database tags which can be held
simultaneously to approximately 1 billion (10^9). Earlier mental
ray version allowed approximately 16 Mio of tags. This change
introduces a network rendering incompatibility with earlier
versions. Significantly improved performance for creating of large
amount of tags.
Bug fixes:
- For rasterizer, fixed broken opacity blending if the primary
framebuffer is not the first one declared. The issue showed up if a
material shader does not call
mi_opacity_set()
:
objects were handled as fully transparent in such case.
- Completed the partial fix for rasterizer used in combination
with lens shaders in version 3.9.2.8.
- Fixed wrong ray type visibility flags used for
mi_trace_probe_x()
function in combination with BSP2
acceleration.
- Fixed wrong gamma correction offset if sRGB (mental ray name:
"micsSRGBg"
) color space was used.
- For subdivision surface objects with displacement (legacy
implementation, HSDS), fixed wrong warning on the amount of
displacement.
- For raylib integrations using progressive rendering and iray
rendering mode, fixed possible freeze of a fast sequence of
stop/resume rendering events.
- For MetaSL compiler, fixed possible crash.
- For MetaSL compiler, fixed several memory leaks.
Changes in version 3.9.2.8
New features:
- Added two new standalone tools to deal with the map containers:
- The map_info utility prints out the information about main
container.
Syntax:
map_info <map_file>
- The map_copy utility allows to convert maps between ascii
(follows .mi syntax), open binary (simplified, no lookup
acceleration structures) and close binary (containing proprietary
lookup acceleration structure formats).
Syntax:
map_copy [opts] map1 ... mapN out_map
Options:
-h
: print help information
-o cb|ob|oa
: output format to use, closed binary
(default), open binary or open ASCII
-v
: verbose output
Feature improvements:
- Framebuffer syntax has been extended in order to allow custom
attributes attached to framebuffers:
framebuffer "<fb_name>"
...
attribute [boolean | integer | scalar | string] "<key>" <value>
In addition, attribute keyword color respectively
vector with 4 respectively 3 values are accepted
in the syntax, but ignored in this version.
In order to allow earlier versions of mental ray to parse these
files, mental ray version supporting this syntax set the API
variable mi_framebuffer_attribute_syntax
is set by the
kernel. When echoing, the attribute block is protected with
$ifdef
-ed on that variable.
- Experimental: if the boolean attribute
"tiled"
is set to off, mental ray interprets it as a
hint to write out the image in scanline form. Currently, only
supported for OpenEXR images. If different values are specified for
different framebuffers stored into the same file, tiled takes
precedence over scanline. By default, mental ray saves OpenEXR
files in tiled format.
- Experimental: if an attribute with name
staring with
"meta:"
prefix is used (like
attribute string "meta:my_key" "my_value"
), the value
is passed to the image file headers (i.e. "my_key"
"my_value"
pair). This is currently only supported for
OpenEXR images. Boolean parameters are converted to integer
ones.
Bug fixes:
- Fixed possible severe shading artifacts for the combination of
rasterizer and BSP2 acceleration and motion blur (or motion
vectors). State normals are not initialized properly in that
case.
- For rasterizer used in combination with lens shaders, fixed
possible black image parts or missing lens shader effect (fix in
version 3.9.2.8 is incomplete, extended in version 3.9.2.10).
- For unified sampling, added a sanity check on min sampling
rate. Fixes possible crash.
- For progressive rendering, fixed error estimation code (red
channel only was used). This improves sampling distribution and
convergence rates for many scenes.
- For progressive rendering and iray rendering mode, fixed
possible image bit per pixel quality or black images if a color
buffer was saved into more than one image file.
- Fixed possible black images for the combination of rasterizer
and lens shader phenomena.
- For MetaSL LLVM backend, fixed "primary output 'result' not
supported" errors.
- For MetaSL LLVM backend, fixed passing array of unsized
arrays.
- For MetaSL LLVM backend, fixed possible fatal / segfault for
shaders with struct outputs.
- For MetaSL LLVM backend, fixed a crash when compiling light
profile parameters.
- For MetaSL LLVM backend, fixed a crash if compound MetaSL
shader output type is not supported by mental ray (like string
members).
- For MetaSL compiler, fixed possible endless loop when compiling
call statement.
- For MetaSL compiler, fixed several memory leaks.
Changes in version 3.9.2.7
Bug fixes:
- Fixed possible lighting artifacts if objects (i.e. custom
geometry) light sources were used.
- For machines with high number of cores, fixed multithreading
performance regression in finalgather precomputation stage .
- For progressive rendering, dithering was no applied.
Fixed.
- For unified sampling used in combination with rasterizer and
low sampling rates (less than 1 sample per pixel), fixed possible
black images rendered.
- For iray rendering mode:
- For high resolution scenes, fixed possible black stripe
artifacts if multiple CUDA devices are used.
- Fixed possible black stripe artifacts and/or crashes due to
excessive fragment size used for simple scenes rendered in very
large resolution.
- Fixed possible precision artifacts (black lines on the ground
plane).
- For visible rectangle area lights, fixed wrong
side and size.
- Improved support for some OEM shaders.
- Fixed failure to recompile MetaSL shaders when the set of
MetaSL techniques (
"metasl technique"
string option)
is changed from frame to frame.
- Fixed loading MetaSL techniques from stings with
mi_api_metasl_code()
function.
- Fixed possible crash at exit or mental ray plugin unload when
MetaSL compiler with LLVM backend was used.
- For MetaSL compiler, fixed possible unknown tag access fatal
when LLVM backend was used to compile shaders with compound
(array/structs) input parameters, in particular if the sizes of
parameter types in mental ray API do not match the sizes of
corresponding types in MetaSL.
Shader changes:
- For userdata shaders, fixed declarations of
mib_data_get_shader_*
shaders.
Changes in version 3.9.2.6
Feature improvements:
- Improved MetaSL compiler reporting (added warnings and
notes).
Bug fixes:
- On Linux platform, shader libraries are loaded with
RTLD_DEEPBIND flag passes to the dlopen(). This prevents possible
symbol conflicts defined in both mental ray standalone/application
integrating raylib and the shader library.
- OpenEXR library integrated into the kernel is compiled in
proprietary namespaces starting with "MI". This resolves possible
symbol conflicts with further copies of OpenEXR library used in
shaders or applications integrating raylib.
- Fixed a crash if a DISP socket client (like the
imf_disp
tool) is detached from mental ray during
rendering.
- On Linux and MacOSX platforms, fixed a performance regression
if cached framebuffers were used. A file close/open operation was
applied on each tile rendered, which could lead to a significant
slowdown in particular when temporary framebuffer files were
located on network drives.
- For rasterizer used in combination with volume rendering, fixed
possible missing volumetric effects and/or black images.
- Fixed possible missing shadows artifacts if
detail shadow maps were used.
- For progressive rendering and iray rendering mode, fixed
possible missing effect of output shaders in case when the first
framebuffer was not a primary one.
- Fixed possible excessive tessellation for triangles clipped on
camera planes (in combination with rasterizer of fine displacement
approximations).
- For the debug version, removed assertions triggered when hair
objects with wrong bounding boxes were part of the scene.
- For map containers, fixed possible issues with the nearest
lookups (first element was not the closest one). In particular
"search next" functionality could deliver wrong results.
- For map containers, fixed missing/wrong reporting of loading
ascii map files. Fixed possible failure to load some of such
files.
- For MetaSL compiler, fixed thread-safety of some compiler
operations. Fixed a potential deadlock.
- Fixed several issues in the documentation.
Changes in version 3.9.2.5
Feature improvements:
- Improved MetaSL compiler performance. Decreased compiler memory
consumption.
Bug fixes:
- Fixed possible missing volume rendering effect or black images
of rasterizer was used in combination with volume shaders.
- For finalgather preview images (
-finalgather_display
on
command line option), fixed color profile correction if
the legacy precomputation mode is used. Final rendered images were
not affected.
- For unified sampling, fixed per-object min/max sampling
rates.
- Fixed progressive rendering sampling if min samples is
specified to be one sample per pixel.
- For map containers loaded from the open binary format, fixed
possible wrong reporting on the number of elements, and the
computation of bounding boxes. The standard 'private' binary format
used in particular for finalgather maps is not affected.
- For MetaSL shaders, fixed texture lookup with texture filter
"none"
.
- Fixed several memory leaks in MetaSL compiler kernel.
- For MetaSL compiler, fixed possible infinite loop freeze.
- Fixed possible MetaSL compiler crash on deleting a MetaSL
shader if nested imports were used.
Shader changes:
- For
mia_envblur
shader, fixed shading is camera
instance transformation is not orthonormal.
Changes in version 3.9.2.2
Feature improvements:
- Added a limit to prevent tiny Tiff files from being cached for
efficiency reasons.
- Allow Tiff/OpenEXR/map textures which do not contain MIPMAP
pyramids to be cached (highest resolution level is cached, upper
levels are created on demand in such case to this is less efficient
than having a texture file with MIPMAPs, but more efficient than
loading the complete texture into memory).
Bug fixes:
- Fixed unified sampling used in combination with
scanline
on
option.
- For raylib integrations: In the progressive interactive mode,
fixed a
"progressive cannot resume render"
error
message.
- For MetaSL compiler, fixed internal copying of shaders with
compound return types.
- Fixed several memory leaks in MetaSL compiler kernel.
- For MetaSL compiler, added support for
geometry_tangent_u
and geometry_tangent_v
state variables.
Changes in version 3.9.2.1
Feature improvements:
- For iray rendering mode, report total and
available memory for each GPU used.
- On Windows platforms: iray detects if it is
running under SLI or with ECC mode enabled. Both SLI and ECC
decrease iray performance significantly, so a warning is printed in
such cases. In order to allow this diagnostic, iray is linked
against NVAPI library.
- Allow to use string option with several float values when fewer
values are expected. In particular, this allows to use 4 floats for
options expecting 3 floats, which is a commit case than an option
represents a color.
- For MetaSL compiler:
- added support for non-const initialization expressions for
shading graphs defined in .msl files
- added support for array typedefs
- added new (Java-style) syntax for arrays.
- For
imf_disp
tool, switched command line options
to use underscores for multi-word ones. Improved help banner.
- For
imf_copy
tool, a tiled Tiff file is written
out if the -p
option is used. Note that the Tiff
subformat used in that case is not compatible with mental ray 3.8
and prior, including old imf
tools.
- Reduced memory consumption used for error estimation buffers in
progressive rendering and iray rendering mode.
Bug fixes:
- Fixed inefficiency of the kernel small memory block allocator.
Some of partially-used pages were not reused for further
allocations, which led to a sometimes major memory consumption
increase in animation rendering.
- For raylib integrations using
mi_msg_thread_register()/unregister()
functions, fixed
possible memory leak of small memory blocks allocated by code in
one of mi_msg_thread_register
-ed threads and released
by other threads.
- For unified sampling, fixed sample generation if "samples max"
value is set to less than 1.
- For progressive rendering mode, changed adaptive sample
generation to match unified sampling.
- For Tiff image files, fixed several issues in reading and
caching various Tiff subformats.
- Fixed a performance regression when mipmap pyramids were
created on demand (i.e. in case of filtered texture lookup to a
texture declared unfiltered).
- Fixed possible map container crash when a container was used by
large number of threads (race condition).
- Fixed possible crash when reading binary map container files
with large declaration section.
- For scenes with multiply-instanced map objects, fixed possible
rendering artifacts and/or crashes.
- For applications integrating raylib with progressive rendering:
fixed possible crash when lights are moved.
- For mental ray standalone, fixed possible segmentation fault in
case of an fatal error (
mi_fatal()
call).
- Fixed echo of animation in iray mode (
-echo iray
command line options).
- Fixed echo of instances with
override
material
flag.
- Fixed several memory leaks in MetaSL compiler.
- For MetaSL compiler, fixed compilation error of phenomena
encapsulating light shaders.
- For MetaSL compiler, fixed possible crash in parser.
- For MetaSL C++ backend, fixed possible compilation error for
bsdfs.
- For MetaSL standalone compiler (
ray -mslc
),
removed obsolete command line options. Fixed compiler message
reporting.
- For iray rendering mode:
- Fixed a crash when rendering an empty scene.
- Improved driver timeout prevention mechanism in SLI
configuration. After a certain number of driver timeout failures
the GPU is disabled.
- On multi-GPU machines, fixed possible freeze in case of a
falling back to CPU rendering after a failure on one of the
GPUs.
- Fixed possible driver timeout detection failures on CUDA
capability 2.0 GPUs.
- Fixed possible crash for baking of textures via GUI attributes
introduced in version 3.9.1.24.
- For procedural OEM textures, scale bump by factor 5. With this
change, rendered images look is very close to mental ray's
one.
- Added support for OEM double-sided materials.
- Fixed warning messages if standard OEM lens shaders are used in
a scene.
- Fixed moving lights.
- For the
imf_disp
tool, fixed frame adjustment when
the tool is started from a command line.
Shader changes:
- In architectural material shader, improved importance-driven
area light sampling.
Changes in version 3.9.1.27
Feature improvements:
- For imf_copy tool, added support for writing out MIPMAP
pyramids for OpenEXR output image files (
-p
command
line option). With this change, imf_copy -p
option is
supported for OpenEXR, Tiff and .map files.
Bug fixes:
- For texture caching, stripes Tiff files with topdown line
numbering (default for Tiff) were read incorrectly. Fixed.
Changes in version 3.9.1.26
Bug fixes:
- For the MetaSL standalone compiler (
ray -mslc
command line), fixed obfuscation option.
- For iray rendering mode:
- GUI attribute lookup introduced in version 3.9.1.24 resolves
the namespace scope properly
- fixed missing illumination from mirrored (transformation with
negative determinant) self-illumination objects
- decrease the default fragment size used to prevent driver
timeouts. This is required for scenes with complex OEM
shaders.
Changes in version 3.9.1.25
Feature improvements:
- For iray rendering mode:
- Improved performance and decrease GPU memory usage
- Added support for a set of OEM procedural textures.
Bug fixes:
- Fixed wrong output if the primary framebuffer type is specified
to be alpha (
a
,a_16
, a_h
,
a_fp
). The intensity was written out instead.
- For unified sampling, if the
quality
parameter is
set to zero, the default quality value is used.
- For unified sampling used in combination with rasterizer, the
rasterizer is derived from the
quality
parameter.
- For MetaSL compiler, fixed compilation const expression for
array size.
- For MetaSL compiler, fixed a series of memory leaks.
- For MetaSL compiler, fixed possible crash if MetaSL files were
not found.
Changes in version 3.9.1.24
Feature improvements:
- For mental ray integrations: API GUIs specified inside of
shader declarations are now put into the namespace of the shader
declaration name. Such attributes are now echoed together with
shader declaration. mental ray echo options have been extended with
a flag (
gui
) allowing to echo all gui attributes from
the global namespace (i.e. not defined inside of the shader or
phenomena declarations). This options is disabled by default. An
equivalent mental ray standalone option (-echo gui
<out_filename>
) has been added.
- For iray rendering mode, allow baking of
3rd-party textures if the resolution gui attributes
(
"bake_resolution_u"
,
"bake_resolution_v"
, "bake_scale_u"
,
"bake_scale_v"
, "bake_coord_shader"
) are
specified.
- For rendering using unified sampling, allow diagnostic
framebuffers to be specified explicitly: buffers matching names
"mr_diagnostic_buffer_*"
are used for corresponding
diagnostics. In particular, this allows to specify image file names
and types where the diagnostic data is saved.
- For MetaSL LLVM backend, improved runtime performance of
generated shaders by allowing LLVM compiler optimization. The
optimization can be disable with the registry " value "0" end
registry
"{_MI_REG_METASL_LLVM_OPTIMIZATION_LEVEL}"
value specified to "0".
- For
imf_disp
tool, allow to switch between images
with Ctrl Left/Right keys.
- For
imf_comp
tool, added a new command line option
-u
. As mental ray creates pre-multiplied rgb/a images
by default, imf_comp composites in premultiplied mode, unless the
new u-u
option is used.
Bug fixes:
- Fixed possible sporadic crashes in finalgather rendering. The
crashes were observed on some multicore machines on 64-bit Windows
platform.
- Fixed possible rare crash in the kernel memory manager.
- Fixed a crash when
-reload
command line option
(auto-converting of objects into placeholders) was used. The
-reload
option is still incompatible with gzipped .mi
scene files.
- For BSP2 acceleration, avoid a crash if a shader traces a ray
from a NaN origin or in a NaN direction.
- For BSP2 acceleration used to render scenes with motion blur,
avoid possible unneeded object tessellation.
- On Linux platforms: in iray rendering mode,
fixed possible freezes when multiple CUDA capability 1.3 devices
were used.
- For MetaSL compiler, fixed compilation of string-from-double
constructor.
- For MetaSL compiler, fixed support of Spectra values in XMSL
files.
- For MetaSL LLVM backend, fixed possible shader compilation
failure on 64-bit Windows platforms.
- For
imf_disp
tool, fixed possible freeze if an
attempt to load an image of an unknown sub-format is done.
Shader changes:
- For base
mib_map_get_*
shaders used for map object
data retrieval, fixed the return types in .mi declarations.
Changes in version 3.9.1.23
Feature improvements:
- Improved performance for motion blur scenes with large number
of fast moving objects when rendered with BSP2 acceleration.
- For
imf_copy
tool, added support for writing out
MIPMAP pyramids for TIFF output image files (-p
command line option).
- Cached texture statistics are printed out sorted by number of
accesses.
Bug fixes:
- Fixed possible memory corruption in MetaSL compiler frontend
and LLVM backend.
Changes in version 3.9.1.22
Bug fixes:
- Fixed mental ray kernel's internal memory management failure to
re-claim pages with small allocated memory blocks after working
thread shutdown. This failure may be perceived as memory leak in
long animation rendering.
- Force writable textures to be unfiltered. Update of pyramids on
texture modifications is not supported.
- For map containers fixed:
- search path substitution not applied properly
- minor memory leaks in map container declaration, definition
headers and global values
- null tag access fatal when echoing a map object with map which
failed to load.
Shader changes:
- For production
mip_motionblur()
and
mip_motion_vector()
shaders, fixed possible crash when
use_coverage
parameter was set.
Changes in version 3.9.1.19
Feature improvements:
- For MetaSL compiler, added support for shader graphs and
phenomena specified in .msl file.
Bug fixes:
- Fixed a crash when empty scene is rendered with BSP2
acceleration and motion blur enabled.
- Fixed a crash if a TIFF image file with (exactly) two channels
is loaded. The first channel is used in such cases, the second one
is ignored.
- Fixed a memory leak when map cache is flushed due to mental ray
running low on memory.
- For
ccmesh
objects without texture
spaces, fixed possible crash if mesh contains polygons
with 5 or more certifies.
- On Linux and MacOSX, fixed possible crash when loading ASCII
map files.
- For MetaSL shaders, fixed raster space transformations for
orthographic camera.
- Fixed doxygen comments in public header files.
Changes in version 3.9.1.18
Feature improvements:
- Added import of map files in ASCII format. The files follow the
general .mi file grammar, but allow only map declaration and
definition elements, as well as nested
$include
statements.
- Per-texture cache statistics are printed out only if IMG module
file verbosity is set (
-message img files --
command
line option). Combined all cached textures and cached framebuffers
statistics is printed after each frame (if not void).
- If
mi_rc_run()
's mode
miRENDER_ACCEL_DELETE
is set, map container cache is
flushed from memory. In particular, this applies to the memory
occupied by finalgather map from the last frame. Map container cash
is also (partially) flushed if mental ray is running low on
memory.
- For iray rendering mode:
- Report the memory available on each CUDA device
- Improved performance on CUDA 2.0 ("Fermi") capable
devices.
- Improved convergence rate for scenes with many lights and
objects.
Bug fixes:
- Fixed a fatal/crash in
mi::integration::Access/Edit_result_image
when the
call was done after the scene postprocessing.
- For mental ray integration, expose functions
mi_colorprofile_to/from_internal
(). Some OEM
integrations depends on these function used to convert colors from
/ to internal color space, in particular in DISP callbacks.
- Fixed minor memory leaks in BSP2 acceleration.
- For iray rendering mode:
- Fixed possible freezes or crashes when rendering images of high
resolution not fitting into the GPU memory.
- Fixed possible failure to detect CUDA kernel execution error.
In particular,this fixes stripe artifacts when GPU + CPU mixed
rendering is used.
- Fixed difference in the images rendered on CPUs and GPUs.
- Fixed possible pattern artifacts in textures using Perlin
noise.
- Fixed possible infinite loop in light sampling for scenes with
transparent materials.
- Fixed artifacts for
Normals_height_bumpmap
MetaSL
shader.
- Added support for shaders returning alpha value of their
input.
- Fixed a warning when a light falloff exponent was used instead
of the value provided by a light shader.
- Fixed possible environment sampling artifacts.
- Fixed conversions of phenomena attached to lights.
- Improved support for OEM shaders.
Shader changes:
- For
mip_bump_basis
shader, fixed the basic
computation for non-orthonormal transformations of geometry
instances.
Changes in version 3.9.1.17
Feature improvements:
- For the
dsm_copy
(detailed shadow map inspector),
added an option -l
. If used, the Z depth is stored to
the color image alpha channel. Note that many image viewers will
not display such output images in a correct way.
Bug fixes:
- For raylib integrations using iray and progressive rendering in
interactive mode, fixed possible freeze in a fast sequence of stop
and resume events.
- Fixed a database tag and memory leak when animation was
rendered with finalgathering and
finalgather rebuild
on
option.
- Some of memory blocks were not accounted into the memory
statistics, fixed.
Changes in version 3.9.1.16
Bug fixes:
- Fixed possible crash for ray-traced hair rendering with motion
blur.
- Platform specific: for 32-bit windows executables (in
particular, running on 64-bit windows systems), fixed segmentation
fault crash in ray-traced hair rendering.
- If unified sampling is used, fixed possible artifacts in user
framebuffers. In earlier versions, if no value was set by a shader
for a raster sample, the previous sample's value was used due to a
missing initialization.
Shader changes:
- For subsurface scattering shader, fixed possible black speckles
self-shadowing artifacts.
Changes in version 3.9.1.15
Feature improvements:
- For cached TIFF textures, added support for MIPMAP pyramids in
the TIFF files.
- For MetaSL language, added
set_importance(float)
for Occlusion_options
,
Irradiance_options
, Trace_options
without
warnings.
Bug fixes:
- Cached TIFF textures were displayed topdown, fixed.
- When rendering finalgather with
"finalgather rebuild
on"
option, a finalgather map created with mental ray 3.8
and prior was not updated with the new content, fixed.
- Fixed possible crash in MetaSL compiler when compiling XMSL
files.
Changes in version 3.9.1.14
Feature improvements:
- For unified sampling, added the time spent for each pixel
buffer (
"mr_diagnostic_buffer_time"
). The time stored
is only approximate any may vary significantly for individual
pixel, in particular when a ray used to compute pixel triggers
tessellation of geometry, loading of texture or assemblies,
executes init shader etc. Few pixels having significantly higher
rendering times are expected for all non-trivial scenes.
Bug fixes:
- Fixed unnecessary resending of tiles through DISP protocols and
callbacks.
- On gcc4-compiled platforms fixed wrong texture cache reporting
due to gcc4 compiler optimization bug.
Changes in version 3.9.1.13
Feature improvements:
- For map containers, added API
(
Map_base::Map_status_write()
parameter) to specify in
the file is saved in optimized binary, simplified binary or ascii
format.
- For MetaSL phenomena, added support for external/internal
input/output parameter name mapping. mental ray API and .mi syntax
operate on external names. Runtime MetaSL cross-shader calls and
message passing use internal names.
- For MetaSL shaders, improved color texture lookup quality when
derivatives are provided. Elliptic filtering lookup is used in that
case now.
Bug fixes:
- Fixed possible out-of-memory fatal in rare cases when a memory
block was
mi_mem_reallocated
to a zero size. In
particular, this was observed in rendering animations with
irradiance particles.
- Texture cache reporting is switched to prints stats after each
frame rendered. Fixed an issue with SPM-protected mental ray
standalone, which exited before the statistics were printed out in
version 3.9.1.10.
- On Linux/MacOSX systems, fixed possible open file descriptor
leak if both texture caching and cached framebuffers were
used.
- For raylib integrations: with unified sampling, 4-channel
buffers were used for 1-channel (
s
or a
)
image types. Fixed.
- Do not print an error message if output shader or raylib
integration code attempts to access a framebuffer with out-of-range
index. A null image pointer is returned, like in earlier mental ray
versions.
- For MetaSL LLVM backend, fixed ray type comparison operators
and shader type state variable.
Shader changes:
- For the subsurface scattering skin shader, fixed possible
stream of error messages for scenes using hull materials (those
with no surface and bsdf shaders).
Changes in version 3.9.1.11
Feature improvements:
- iray rendering mode is switched to use CUDA
3.2. This may require a graphic driver update on machines using
iray. This improves iray performance and fixes broken rendering on
Fermi (GTX 400 series) cards.
- Improved performance of TIFF texture caching introduces in
version 3.9.1.10 (reduced the number of IO operations).
- For raylib integrations, added
mi::integration::Access/Edit_result_image::get_result_image_count()
static method to get the number of images. For stereoscopic
rendering the returned value is the number of images per
camera.
Bug fixes:
- Fixed a performance regression in a special
case when rasterizer with motion steps 1 was used in
combination with BSP2 ray tracing. In this case, a motion version
of the BSP2 tree was constructed, though only a static one is
used.
- Fixed echo of verbatim map containers.
- For hair rendering, rendering abort test was missing, which
could lead to a long reaction time. Fixed.
- For MetaSL compiler, fixed several issues for swizzles.
- Fixed an error message printed with
-iray off
command line options is used.
Shader changes:
- Added a new shader library
userdata.dll
/.so
/.mi
. This
library contains a set of utility mib_data_*
shaders
for accessing named user data values attached to the scene graph
elements. The documentation is provided in the
userdata.html
manual file.
Changes in version 3.9.1.10
Feature improvements:
- Enable texture caching for TIFF file format. In this version,
MIPMAP pyramids form TIFF files are not supported yet. Non-RGBA(A)
images, images with strip height equal to 1 and with components
count equal to 1 are not cached.
- Improved texture cache stat reporting. If a texture is
(re)loaded several time, the consolidated statistics including the
number of re-loads is printed at the end of process / before raylib
shutdown. Number of (re)loads of texture is added. Stats clearly
distinguish between cached textures and cached framebuffers.
- Performance of the hair shadow intersection code has been
improved.
- For raylib integrations using progressive rendering, added an
enum member
MI_RC_PROGRESSIVE_FG_PRECOMP
. This value
is returned by mi_rc_progressive_*()
functions during
finalgather precomputation stage.
- Added registry
{_MI_REG_MAP_CACHE_SIZE}
which
allows to specify the memory size used by map containers. Value is
interpreted in MBs. This is an addition to already existed command
line option -map_cache_size N
.
- For MetaSL compiler, check grammar stricter to catch the
following illegal constructs:
input
, output
, member
sections in structs
typedef
, enum
, constructor,
destructor, or method declaration in struct
output
section in bsdf.
- For the
dsm_copy
tool, fixed the 'color combine'
mode. Added support for conversion to 'z' type images.
Bug fixes:
- Fixed a crash in
mi_shaderstate_set()
function, if
an existing value of a key is reset to a new value of a larger
size.
- For ray integrations based on static raylib library: compile
the PNG library with C++ and wrap it by MI namespace. This solves
possible symbol conflict if the integrating application uses its
own copy of PNG library.
- For progressive rendering and iray rendering mode, fixed
possible freeze if stop and resume events were issued with low time
interval between them.
- Fixed possible wrong min/max samples warning if unified
sampling was used.
- For MetaSL shader, ignore
metasl_connected_normal
parameter if it is not used as an attachment (this is a reserved
parameter name generated for MetaSL shaders for attaching bumped
normals).
- For MetaSL compiler, fixed a serious of bugs related to
shadowing elements defined in an outer scope by elements with the
same name in the inner scope.
- For imf_disp tool, fixed image format error reporting.
Shader changes:
- For subsurface scattering shader, unroll the changes in version
3.9.0.13 due to the possible artifacts in reflection. Instead, a
new parameter
"fallback_shader"
as added to the
misss_fast_shader(_x)
shaders. This parameter allows
to make sure that the proper light is used if lightmap samples are
completely missed due to small lookup radius. Old version of the
shaders used lambert illumination. If this parameter is not
specified, the old behavior (lambert) is maintained.
Changes in version 3.9.1.7
New features:
- Added two new utilities for usage in production rendering:
dsm_copy
allows to create a slice visualization
image of detailed shadow maps, which can be used for tuning the
quality of shadow maps. Usage:
dsm_copy/dsm_copy [-h] [-c] [-v] [-z float]]
detailshadowmap [outimage [outformat [outtype]]]
-h
option print online help
-c
combine z and color/alpha in single image
-v
prints verbose info about the detailed shadow
map
-z <positive float>
specify the z-depth
threshold to sample values from.
imf_comp
is a simple compositing tools which can
be used to combine several images rendered with camera window
(-window
command line option) into a single one.
Usage:
imf_comp [-h] [-v] -o imagefile [compfile...]
-h
option prints online help
-v
prints verbose output
-o
options specified the file name of the
composites image.
Feature improvements:
- In case of finalgather precomputation, create rendering
framebuffers after the finalgather map is build. In case of
in-memory framebuffers this reduces memory consumption during
finalgather precomputation phase.
Bug fixes:
- For rendering with finalgather, fixed possible error message on
unpinning null tag. Regression in version 3.9.1.4.
- Fixed possible crash in rendering finalgather in progressive
interactive mode.
- For hair rendering, fixed possible shadow artifacts due to a
numerical precision issue.
- For MetaSL compiler, fixed compiler error on
operator=
for enumerations.
- For shader writers: fixed a compiler warning on 64-bit Windows
platform in
shader.h
include file.
Shader changes:
- For experimental rendering map particles, added the new base
shaders added in version 3.9.1.1 are renamed to
mib_map_get_scalar/integer/vector. Added shaders
mi_map_get_transform/scalar_ array/integer_array
for
retrieving transforms and arrays. For arrays, the complete array is
returned and the caller must assure that the size of the buffer is
sufficient.
- For
mib_continue
and for rendered particle map
data access shaders (mib_map_*
), added missing
"apply texture
" qualifier to the declaration.
Changes in version 3.9.1.5
Bug fixes:
- For progressive rendering, fixed possible crash when a camera
is deleted or incrementally changed. Regression in version
3.9.1.4.
- Fixed possible numerical precision artifacts in hair
shadows.
Changes in version 3.9.1.4
Feature improvements:
- For interactive progressive rendering, improved the granularity
of detected scene changes. Updating light shaders, updating light
instance transforms, updating lens shader and updating environment
shader are now detected individually.
- Reduced memory consumption of the BSP2 acceleration for motion
blur scenes in a special case when no rasterizer, shadowmaps, are
scanline used, and shadows are limited to the simple mode (not
segmented or sorted).
Bug fixes:
- Fixed confusing warning message on the progressive max
samples.
- Fixed possible crash (frequent on Windows platforms) in
framebuffer image output when contour shaders were used.
- For multihosted rendering, fixed possible crash or missing
indirect illumination in rendering sequences of several
frames.
- For integrations, fixed
mi::integration::Access/Edit_result_image
classes for
the finalgather preview framebuffers created in finalgather
precomputation stage.
- In multi-hosted rendering, fixed a crash of the slave/satellite
hosts at shutdown.
Changes in version 3.9.1.3
Feature improvements:
- Improved controllability and reporting of texture caching.
- Added a command line option
-texture_cache_size
<MB>
and registry {_MI_REG_TEXTURE_CACHE_SIZE} . If
set, the value is taken as a limit of texture cache in MBs. By
default (value 0), the dynamic texture cache limit based on the
size of all textures loaded to mental ray is used (as in mental ray
3.8 and prior). The minimal value of the cache is 20 MB. Command
line option takes precedence over the registry.
- Added a command line option
-texture_cache
<mode>
and registry
{_MI_REG_TEXTURE_CACHE}
. The value can be one of
"on"
, "off"
or "local"
. The
default value is "local"
, meaning that only local (and
.map
, which are automatically local) textures can be
cached. This is the default behavior. With "off"
,
texture caching is disabled and textures are loaded/memory-mapped
completely. With "on"
, the local texture modifier is
ignored and all textures with image formats supporting caching
(currently .map, tiled .exr, .iff, .bmp) are cached. This mode
should not be used with multi-hosted rendering. Applications
integrating raylib should make sure that all non-local textures are
deleted before this mode is enabled.
- Print out texture cache mode and cache size limit in the
options info banner before each frame rendering.
- Print out the statistics on the number of pixel accesses and
per-thread/local cache coherency rate for each cached image file
(i.e., for cached textures and cached framebuffers). Print out
accumulated statistics before process/raylib exit.
- For TIFF images, utilize the full libtiff library. In
particular, reading of LZW-encoded images is supported.
- For raylib integrations, added support for a combination of
finalgather preview mode with progressive interactive rendering
utilizing application framebuffer.
- For MetaSL compiler, allow typedefs inside of shaders and
functions.
- For MetaSL compiler, improved static code analysis.
- For MetaSL LLVM backend, added support for techniques.
Bug fixes:
- Fixed a crash in progressive rendering stopped on the quality
criteria reached (regression on version 3.9.1.2).
- Fixed a crash when finalgather previewing mode
(
-finalgather_display on
command line option) was used
in combination with unified sampling.
- Fixed several memory leaks in MetaSL compiler.
Changes in version 3.9.1.2
Feature improvements:
- Improved integration workflow for mental ray progressive
rendering and iray rendering mode:
- Added support for incremental instance updates (materials and
transformations).
- mental ray kernel monitors database tags for modifications
(with mi_scene_edit/growedit functions), mi_api_* functions). This
information is used on avoid unnecessary re-baking in iray
rendering mode.
- Tags deleted by integrating application during progressive
rendering are not destroyed immediately. Instead, they are
accumulated in a pool which is cleaned up when the rendering is
finished.
- For iray rendering mode:
- added support for texture clipping and alpha
- reduce memory consumption by detecting duplicated textures
- in interactive mode, added support for changes of the
environment shader
- added statistics for texture memory
- fixed black pixel artifacts
- improved support for OEM shaders
- For displacement shaders changing
miState::point
(displacement not in the direction of normals), print a warning if
the sum of the point shift and displacement along the normal is
larger than maxdisplace limit. In such case, reduce the
displacement by normalizing the sum of two components to the vector
of maxdisplace length.
- Use mental ray memory management for blocks allocated by the
integrated OpenEXR library.
Bug fixes:
- For displacement shaders called on the triangle meshes in the
presampling face,
miState::normal
was not normalized.
Fixed.
- For displacement shaders called on
ccmesh
objects,
the modification of miState::point
by a shader was
ignored. Fixed.
- Fixed possible rare race condition crash during finalgather
precomputation, more likely for simple scenes.
- Fixed possible assertion/crash when finalgather precomputation
with legacy mode (
"finalgather precomputation legacy"
string option) was aborted.
- For progressive rendering, fixed tone mapping artifacts if no
filter was applied.
- For MetaSL shaders, fixed shader parameter initialization.
- For MetaSL shaders, fixed missing textures which were not
exposed as input parameters of phenomena.
- On MacOSX platforms, fixed a memory corruption in STL file
streams. In particular, this caused crashes if OpenEXR image files
were used. Regression in version 3.9.1.0.
Changes in version 3.9.1.1
Feature improvements:
- For iray rendering mode, incremental updates for lights,
geometry, textures and materials are now supported.
Bug fixes:
- For raylib integrations: for
Access_result_image/Edit_result_image() calls, fixed possible
deadlock if more than one image is accessed simultaneously.
Shader changes:
- For experimental rendering map particles, added new shaders
mib_map_integer_picker()
,
mib_map_scalar_picker()
,
mib_map_vector_picker()
and
mib_map_color_picker()
. This shaders take a map filed
name as a parameter. The result is set to and the value of the
particle currently being hit. If object is not map, or if the map
does not contain corresponding value, shaders return miFALSE.
Changes in version 3.9.1.0
Feature improvements:
- For MetaSL compiler:
- Added trace() function without explicit differentials. The
differentials are computed by the kernel in this case.
- Empty structs are allowed in MetaSL language now.
- Compiler kernel has been refactored for better performance. A
series of memory leaks has been fixed.
- Hair rendering uses the new acceleration structure now, which
result in significantly better performance and lower memory
consumption. For backward compatibility / performance comparison,
the string option
"hair acceleration"
could be set to
off
.
- Integrated OpenEXR library is updated to version 1.7.0.
Bug fixes:
- Fixed possible artifacts and crashes with scenes containing
several renderable map objects.
- For MetaSL frontend, fixed handling of empty annotations.
- For memory management, memory allocated for the management
system itself was not counted in the statistics. Fixed.
- For geometry shaders and raylib integrations: the inheritance
information on the leaf instances was broken. In particular, the
miLEAFHISTORY
macro did not work properly. Fixed.
- Fixed a regression in version 3.9.0.14. If iray rendering mode
was used with
"gpu"
mode (default), and no
CUDA-capable GPUs were found in the system, mental ray exited with
fatal. Fixed similar regression if echo iray mode (-echo
iray
command line option) was used, independently of the
iray mode specified.
Changes in version 3.9.0.14
Feature improvements:
- For texture caching, the dynamically computed texture cache
memory is based on the in-memory size of the
uncompressed textures instead of the file size
used in the earlier version. In particular, the memory used for
rendering no longer depends on the type of texture compression
used.
- For particle map containers, improved performance of merging
operations.
Bug fixes:
- The value for
"primary"
qualifier of a framebuffer
was ignored. Now interpret the "primary" off
flag
correctly.
- For raylib integrations, fixed a crash when
mi::shader::Framebuffer::reset()
method was
called.
- For unified sampling feature, fixed writing out of multiple
framebuffers.
- For unified sampling feature, fixed finalgather
diagnostics.
- Fixed an assertion in memory management system. Possible memory
leak at shutdown messages are downgraded to debug.
- Fixed echo of trilist object with some rarely used vertex
layouts.
- Fixed a crash in single-threaded baking of environment
map.
- For unified sampling, fixed possible NaN pixel value artifacts
on the tile borders.
- Fixed possible assertion for
ccmesh
objects.
- For iray rendering mode, fixed a fatal for 2D texture
transformation MetaSL nodes.
Changes in version 3.9.0.13
Feature improvements:
- For iray rendering mode, added a string options "iray mode"
which controls the selection of GPUs vs. CPUs. The valid values
are:
"gpu"
. Only GPUs are used. CPUs are used if the
machine has no CUDA-capable GPUs available.
"cpu"
. Only CPUs are used.
"mixed"
. Both GPUs and CPUs are used.
The default value is "gpu"
.
Bug fixes:
- Fixed a crash in
ccmesh/sds
displacement if
displacement shader returned a color (scalar value is
expected).
- Internal
mi_img_mmap_address
function is removed
from the public headers.
Shader changes:
- For subsurface scatter shader, fixed illumination when no
samples could be found within the specified lookup radius.
Changes in version 3.9.0.12
Feature improvements:
- Drastically improved the performance of the MetaSL LLVM
backend.
- Added final gathering diagnostics to unified sampling
modes.
- In approximate mode, the number of light samples for the
environment lighting is calculated based on the value of
miState::importance
.
- Added support for a new map file format (open binary), read
mode only (open binary map files can be read in, but not written
out as of now).
- For the experimental ray-traced particle maps, added two new
mi_query()
modes, miQ_PRI_PARTICLE_TYPE
(that returns 0 for spheres, 1 for tubes and -1 in case it's not a
map object) and miQ_PRI_PARTICLE_UV
(returns the UVs
of the intersection point on the particle).
Bug fixes:
- Fixed an issue with
miState::derivs
for
freeform-surface displacement presampling.
- Fixed an issue with hair radii - sometimes they were not
properly accounted for, causing artifacts.
- Fixed a bug in
imf_disp
that prevented to stop an
animation render after the first frame.
- Fixed an issue regarding an error message being printed before
adding a framebuffer in case there was none. Now only an info
message is printed.
Changes in version 3.9.0.11
Feature improvements:
- For imf_disp, added the build number to the "About"
dialog.
- Reduced the blur in texture lookups, differential-based
filtering was too strong with the default settings.
- Improved the map caching system by making it more adaptive and
more responsive to changing memory conditions.
- For iray rendering mode, added a new mode (ground) to the
environment dome modes.
Bug fixes:
- Fixed an issue with mi_raylib_license_get returning the wrong
number of licenses.
- Fixed an issue with missing derivatives for displacement
presampling.
- Fixed an issue with filtering, no filtering is applied for
secondary rays when differentials are not enabled.
- For iray rendering mode, fixed the echoing of spot lights.
Changes in version 3.9.0.10
Bug fixes:
- Fixed a crash in imf_disp that occurred when opening an image
with only one layer after displaying a different layer in another
image.
Changes in version 3.9.0.9
On MacOSX, minimal supported version is increased to 10.5
(Leopard).
Feature improvements:
Bug fixes:
- For echo, added proper escaping of the quote sign
(
"
) in API names and string values.
- Fixed possible missing shadow artifacts if classic (not detail)
shadow maps with no shadowmap bias were used for scenes utilizing
shadow cast and receive flags (i.e., some object having just one of
the flags set).
- Fixed wrong motion put to motion blur buffer if a shader on a
moving object calls
mi_trace_continue()
function, and
the object hit behind is static. In particular, this is the case
for the mip_card_opacity
production shader.
- Fixed an error in computation of motion factor (
"geom
displace motion factor"
string option) for ccmeshes (since
version 3.9.0.6). For slow motion, the tessellation sometimes was
coarser than for equivalent static case.
- For the deprecated
mi_tri_vector()
function called
from a displacement shader, the value for the first vertex were
returned for all vertices. Fixed. Regression in mental ray
3.9.
- For MetaSL compiler, fixed several memory leaks.
- For MetaSL compiler, fixed shader inputs with external
names.
- For MetaSL LLVM backend, added missing support for String
constructors.
Shader changes:
- For the production
mip_rayswitch_advanced
shader,
fixed a crash if an attached parameter shader had more than one
output. The first output of the latter shader is taken as a result
of mip_rayswitch_advanced
now.
- For
mia_physicalsky
shader, fixed sun disk showing
at night rendering artifacts.
Changes in version 3.9.0.8
New features:
- Experimental / early work in progress: particle maps as
native primitives.
mental ray syntax has been extended, allowing an object to
contain particle maps. Unlike "named" particle maps which are used
by shaders, those maps become a part of the scene DAG and rendered
by mental ray kernel.
Extended .mi syntax with:
object
...
particle "spheres" | "tubes"
[ "take_what" "from_this_map_field"]
map
[ map file list ] |
"<map declaration name>" [ map elements ]
end map
end object
Currently, two particle element types are supported: spheres and
tubes. More types may be added in the future. For integrations,
added function mi_api_map_obj_type()
which allows to
specify a type of the map.
With the next syntax statement, it is possible to specify which
map files should be used as special parameters. For examples, for
spheres "radius"
"my_rad"
would instruct
mental ray to interpret the value "my_rad" of a particle as a
radius. For spheres, "radius" is the only name supported. For
tubes, it is possible to specify "radius0"
,
"radius1"
, "direction"
and
"length"
in addition. For integrations, added function
mi_api_map_obj_field()
.
The body of the map is similar to the declaration of the named
map object, with the exception that the name of the map is
omitted.
For integration: the miObject_type
enum has been
extended with miOBJECT_MAP
entry.
In this alpha version, particle maps have many limitations
including o supportno support for motion blur, rasterizer,
shadow maps, complex shaders.
Feature improvements:
- In unified sampling (introduced in version 3.9.0.6), changed
"samples min" / "samples max" options to float. This is done as
work in progress on allowing less than 1 sample per pixel.
- For BSP2 acceleration used with motion blur in scenes with
multiple instancing,reduced the amount of data not shared
among instances by approximately one third.
- Initial implementation of unified sampling in rasterizer mode
has been enabled. Due to the fundamentals of the rasterizer
algorithm, the semantic of parameters is slightly different. The
raster sampling pattern is taken based on the max samples
parameter. The min samples parameter is used as the minimal number
of shading sampler per pixel. The quality parameter increases the
number of shading samples.
- For finalgather precomputation, "fake" frames no longer
inserted by the talk protocol for finalgather precomputation.
- Added new builtin environment shader
declare shader
color "builtin_environment_lookup" (
color texture "tex"
)
version 1
end declare
If the shader is used in the scene and the IBL settings are
compatible (IBL scale set is not set or set to 1.0, no IBL
resolution set or the resolution matches the resolution of the
builtin shader texture parameter), when the texture is applied
directly as a spherical lookup, bypassing internal environment map
re-baking.
This shader is in particular intended to be used in iray
rendering mode, there environment precomputation may consume a
significant fraction of rendering time otherwise.
- For ray traced hairs, reduce the memory used by acceleration
structures.
Bug fixes:
Changes affecting compatibility:
- The
mi_msg_hyper()
function has been removed from
the integration interface. In many cases, in particular for virtual
machines, there is no way to reliably determine if the machine is
running hyperthreaded CPUs.
Changes in version 3.9.0.7
Feature improvements:
- Print info banner on the sampling parameters if unified
sampling introduced in version 3.9.0.6 is used.
- Improved documentation.
Bug fixes:
- Fixed a crash when rendering with zero framebuffers was
started.
- Fixed importance sampling for BSDF shaders glossy
component.
- Fixed several minor issues in MetaSL compiler.
Changes in version 3.9.0.6
New features:
- New sampling scheme.
In this version, the sampling need to be enabled explicitly with
string option
"unified sampling" on
The controlling string options are:
"samples min" <int>
(<float>
since version 3.9.0.8). Specifies the
minimal number of samples per pixel. Unlike in the old scheme, this
value is linear, not exponential. The minimal acceptable value is
1.
"samples max" <int>
(<float>
since version 3.9.0.8). Specifies the
maximal number of sampler per pixel before stopping the
rendering.
"samples quality" <color>
Synthetic
criterion to stop rendering. Higher value lead to better quality.
The "soft" valid range for color components is [0,1], however
values larger than 1 are accepted. The default value is 0.5.
"sample error cutoff" <color>
This is the
error level where further improvements are considered negligible.
The default value is zero (black). Setting the value higher leads
to less samples taken in the dark area of the image.
"samples per object" <bool>
If enabled,
per-object min/max sample values are taken into account. Note that
the semantic of this values is different from the old sampling
scheme (linear instead of exponential).
New sampling scheme provides per-color framebuffer control over the
filtering. The framebuffer .mi syntax is extended with:
filtering <bool>
Enables / disables
filtering. If framebuffer filter is not specified, the one from
miOptions is used.
filtering [clip] "filter name" [support_x] [support
y]
Specifies the filter type ("box", "gauss", "mitchell",
"lanczos"), clipping version (only relevant for mitchell and
lanczos), and a support size (floating value in pixels).
clip <bool>
This controls clipping of
samples before pixel value is computed. By default, this is on if
the framebuffer is not of float/half resolution.
For the integration API, the Access_fb::set()
method
recognizes the "filter type"
, "filter
support"
, "filter support x"
, "filter
support y"
, "clip filter"
and
"clip"
attributes.
miOptions::images_info
is deprecated.
miOptions::no_buffers
gives the actual number of
framebuffers used in the rendering process. Note that this number
may be different from the number of framebuffers explicitly
specified in the scene.
This feature is WIP.
- For output shaders, added classes
Access_out_img
and Edit_out_img
(shader_output.h), which allow to
access framebuffer images by name and by index.
The enumeration miRC_IMAGE_*
is deprecated.
Feature improvements:
- Improved performance of the BSP2 accelerations in motion blur
scenes. Reduces memory consumption for scenes with multiple
instances. Improved accuracy of motion blur images by shading with
time-accurate geometry normal, interpolated normals and shadow
tolerances.
- For ccmesh objects, implemented support for motion-driven
displacement quality reduction enabled with
"geom displace
motion factor"
.
- Improved performance of ray-traced hairs.
- For ray traced hair, mental ray adds caps at the end of the
hair cylinders. Added a string option
"hair caps"
<bool>
, to make caps optional. By default, caps are
enabled.
- Finalgather maps are switched to the MAP container. The
advantage is that for large maps it is no longer require to keep
complete finalgather map in memory as the map container caching
system is utilized. Also, when a precomputed finalgather map is
loaded from file, the load operation is significantly faster. New
fg_copy
utility can be used to convert mental ray 3.8
and prior finalgather maps into the new format and vice versa.
- For the stereoscopic rendering offaxis mode, added a
possibility to specify parallax distance different form the camera
focal plane.
The .mi camera syntax is extended with stereo
offaxis
<eye_separation>
[<parallax_distance>]
statement (the last parameter is
new and optional). The default value for parallax distance is
camera focal distance.
For raylib integrations,
miCamera::parallax_distance
is added to the camera
structure.
- For stereoscopic rendering, change the scheme used for output
files. The registries
{_MI_REG_STEREO_LEFT_SUFFIX}
and
{_MI_REG_STEREO_RIGHT_SUFFIX}
can be used to specify
the suffix added to the file name before the extension(s) (if any).
The default values are "_left"
and
"_right"
. (For example, if no registers are specified
and a framebuffer file name is output.my.exr
, when the
files output_left.my.exr
and
output_right.my.exr
will be written.) Note that this
naming scheme is incompatible with the fixed prefixes
lgt_
and rgt_
used with earlier mental
ray versions.
- Performance and robustness of MetaSL compiler has been
improved.
- Improved support of MetaSL phenomena in mental ray, including
material phenomena. Enable
ior()
node.
- Improve compatibility of the native C/C++ shader packages with
MetaSL shaders.
When the string option "light relative scale"
<float>
or the registry
"{_MI_REG_LIGHT_RELATIVE_SCALE}
" is set, the colors
passed from MetaSL light shaders to native surface shaders are
multiplied by the specified value. The colors passed from native
C/C++ light shaders to MetaSL surface shaders are multiplied by the
inverse of the value.
Some of the OEM native shader packages use non-standard
conventions. By using the string option/register value of 1/Pi,
identical/consistent rendering results may be achieved with scenes
using both native and MetaSL shaders, as well as builtin BSDFs.
- For MetaSL shaders, do not load MetaSL LLVM backend library
(gen_llvm.dll/.so) if MetaSL C++ backend is used. Improved the
messages: an error message is printed if gen_llvm.dll/.so cannot be
found. An info message containing the full path is printed when the
library is loaded. The path list search is downgraded from info to
debug. The LLVM backend is not loaded when mental ray standalone is
used as MetaSL compiler (
ray -mslc
command line).
- Job scheduler: improved multi-threaded and multi-hosting
scalability. Reduced number of hosts synchronizations in
multi-hosted rendering.
- Memory management: improved multi-threaded scalability.
Frequency of locked operations is reduced significantly.
- For raylib integrations, if application registers a callback
with
mi_job_percent_register_cb()
call, the callback
is called during iray/progressive rendering. The zero percentage
value is passed if the exact percentage is not known (unlimited
rendering), the type parameter of the callback is miJOBP_RENDER. In
earlier mental ray versions, this callback was only called for
other rendering tasks (tile rendering, photon emission etc.).
- In multihosting rendering, reduce shutdown time of
slaves/satellites in case of the master host shutdown or
crash.
- The function
mi_tri_vectors()
is deprecated (but
still functional). Instead, a series of mi_query()
modes is provided:
miQ_PRI_VERTICES_POINTS
miQ_PRI_VERTICES_NORMALS
miQ_PRI_VERTICES_MOTION
miQ_PRI_VERTICES_TEX
(accepts space)
miQ_PRI_VERTICES_USER
(accepts space)
miQ_PRI_VERTICES_BUMPS_U
(accepts space)
miQ_PRI_VERTICES_BUMPS_V
(accepts space)
miQ_PRI_VERTICES_DERIVS_U
miQ_PRI_VERTICES_DERIVS_V
miQ_PRI_VERTICES_DERIVS_UU
miQ_PRI_VERTICES_DERIVS_VV
miQ_PRI_VERTICES_DERIVS_UV
miQ_PRI_VERTICES_DERIVS_VU
miQ_PRI_VERTICES_DERIVS_UV
Caller should provide a space to store results: an array of
vectors, one for each vertex of the primitive. In this version, the
query modes are functional only for triangle mesh, so it is safe to
assume that the number of vectors is 3.
miVector tri[3];
miVector *q[] = { &tri[0], &tri[1], &tri[2]};
mi_query( <query mode>, state, 0, q, <space for modes accepting space>);
Examples of the shader usage are available in the source code of
base shaders.
- For C++ shader interface, added an utility class
mi::shader::State_importance
(shader_importance.h
header file) as a handy way to
adjust importance factor.
- During finalgather precomputation, no longer check if the angle
between interpolated normal and geometry normal is below 90 degrees
and flip geometry normal in such cases. The large angle can be a
result of a string bump mapping is applied.
mental ray 3.8.3.23 and earlier versions printed a warning and
flipped geometry normal, assuming that the issue originates from an
incorrect shader. Many old shaders which computed the irradiance on
the back side failed to flip the geometry normal.
The old geometry normal flipping behavior can be enabled by
setting the string option "finalgather flip bad geom normal"
<bool>
to true.
- For the .mi parser, added syntax to remove a string option:
"optionname" NULL
inside of the option block.
- Added
{_MI_REG_FBVIRTUAL}
registry and
MI_FBVIRTUAL
environment variable for the completeness
of -fb_virtual
command line option interface to
specify if in-memory/memory mapped/cached framebuffers are used.
Added MI_FBDIR
environment variable which specifies
the directory to keep temporary framebuffer files. (The command
line option and {_MI_REG_FBDIR}
registry exist in
earlier mental ray 3.8 and earlier versions).
Bug fixes:
- For BSP2 acceleration, fixed possible crack artifacts on 64-bit
platforms. Rare numerical precision issue.
- Fixed possible crash in rendering of scenes with assemblies
containing shader declarations. If multiple frames were rendered, a
crash could occur in a frame following a scene change removing a
previously used assembly from the scene DAG.
- For rendering of scenes with assemblies containing phenomena
declaration inside of assemblies: fixed possible "phenomenon root
not found" error messages and black images or image parts in second
and subsequent frames.
- Fixed possible artifacts and crashes in hair rendering when
both rasterizer and ray tracing are enabled. The rasterizer and ray
tracing tessellations of hair were mixed up in some cases.
- Fixed possible crash in erroneous scenes with phenomena
containing undeclared shaders.
- For scenes with large number of assemblies, fixed an
inefficiency in rasterizer mode.
- Fixed a memory leak in loading detailed shadowmaps from
file.
- In multihosting rendering, fixed a significant memory leak on
the slave/satellite hosts in finalgathering precomputation.
- The shader C/C++ source code file specified with
"
code
" statement in .mi syntax was removed after
rendering. Fixed.
- For MetaSL light shaders, fixed sampling of area lights with
MetaSL light shaders returning uneven sample weights.
- For MetaSL shaders, fixed light normal (wrong coordinate space
was used).
Shader changes:
- For the production
mip_rayswitch_advanced
shader,
fixed a crash if an attached parameter shader had more than one
output. The first output of the latter shader is taken as a result
of mip_rayswitch_advanced
now.
Changes in version 3.9.0.4
Feature improvements:
- Implemented direct parsing of .mi files compressed with gzip.
The compression is detected automatically. Added an echo bit and
command line option (
-echo compress
...) which would
echo a scene directly into a gzip compressed file.
- Added two new
mi_rc_run_query()
modes:
miRCQ_CUDA_DEVICE_PROPERTIES
and
miRCQ_CUDA_MEMORY_STATS
. The parameter passed to the
call should be the two new structures with the matching names added
to mirelay.h
. On success, mi_rc_run_query
fills the structures are with the corresponding values.
- Extended .mi syntax for verbatim textures. The texture header
can now be given in a form
color texture "texname" [<width> <height>
"typename"]
In particular, this allows to specify "rgbe"
textures not distinguishable from rgba""rgba"
with the
old syntax.
- Added new
mi_rc_run_query()
mode
miRCQ_IRAY_VERSION
. The passed const char
**
parameter is initialized with the address of the iray
plugin version string if iray plugin is successfully loaded. Note
that calling to this function triggers loading of iray plugin.
- For mental ray standalone, added
-echo
command
line option qualifier "iray"
. If used, the scene is
echoed after substituting shaders with those supported by the iray
rendering mode.
- For mental ray standalone, allow http and https URLs to be
specified as echo 'file' output parameter.
- Improved options info banner printed with progressive
rendering. The output format used in standard rendering mode.
- For progressive rendering, including iray mode, allow max
samples to be set to 0 or a negative value. In this case, the value
is treated as "unlimited", and the rendering is stopped by other
criteria: error threshold or maximal rendering time. The default
value (100) is used if the string option
"progressive max
samples"
is not set.
- Build MetaSL LLVM backend on the basis of LLVM 2.6. Earlier
version used LLVM 2.5. With this change, a separate LLVM module is
created for each shader compiled. In particular, this improves
robustness when shaders are deleted or modified.
- iray rendering mode is switched to use CUDA 3.0.
- For raylib integrations using interactive progressive
rendering: added
mi_rc_progressive_resume_rendering()
function. This allows continuation of the rendering process after
mi_rc_progressive_stop_rendering()
or
mi_rc_progressive_cancel_rendering()
calls.
- For raylib integrations using interactive progressive
rendering: added
mi_rc_progressive_region_of_interest()
function. When
called, upcoming samples will be places inside of the region
specified by the function.
- Feature and shader coverage set of iray rendering mode has been
improved.
Bug fixes:
- Fixed a series of issues in MetaSL LLVM backend.
- For
ccmesh
objects, fixed possible wrong
subdivision level selected for subobjects.
- For mental ray standalone, texture (
-T
) and
include (-I
) search paths provided on the command line
were combined. Fixed.
- For mental ray standalone, fixed command line parsing when
multiple
-L
paths are provided. The path lists are
concatenated.
- In lightmap baking, lightmap shaders were executed several
times if an array of materials with several entries of the same
materials was inherited to the lightmap object. Added a test for
this case in order to avoid the redundant work.
- Fixed performance regression: a light shader return value 2 was
ignored and did not terminate the light sampling loops as
specified.
- Significantly improve performance of image based lighting (IBL)
used in combination with finalgathering. The number of environment
samples done for finalgather ray hits was unnecessary high.
- Fixed artifacts for IBL approximate mode (the mode enabled with
"environment lighting mode"
string option value
"approximate"
).
- In some cases, in particular when BSP2 acceleration was used,
available work was not scheduled on all threads, fixed. This
improve multi-threading scalability, in particular during the
construction phase of the BSP2 acceleration for large scenes.
- On Windows platforms, fixed a crash when a shader printed a
very long (1024 or more symbols) message with
mi_info()
, mi_warning()
,
mi_error()
and similar function. The crash was in the
shader.lib
library. 3rd party shader writers should
re-link shader DLLs with the new shader.lib
in order
to profit from this fix.
- For interactive progressive rendering, fixed possible crash in
accessing freed camera while changing the framebuffer
resolution.
- For MetaSL shaders, accept shader graphs with only the
surface_bsdf
node specified.
- Fixed a crash when a MetaSL shaders was used in a frame, and a
C/C++ shader library was loaded after that frame was finished.
Shader changes:
- For fast subsurface scattering shader, fixed possible artifacts
due to missing QMC sampling initialization.
- For fast subsurface scattering shader, fixed possible noise an
unstable images rendered differently with multiple runs on the same
settings. Lightmap textures being rendered are excluded from the
usage by reflection / refraction ray hits coming from the same or
some other lightmap computations.
Changes in version 3.9.0.3
For mental ray standalone executables and integration libraries
protected my SPM, switch the license counting to 1 license per
machine. This is more generous than 1 license per 4 threads used
since version 3.8.1.16.
Known limitations:
- Framebuffer code is undergoing refactoring and may be unstable
in this version.
- MetaSL compiler is undergoing refactoring and may be unstable
in this version.
Changes affecting compatibility:
- In shader C/C++ interface, some missing const qualifiers have
been added. In particular, the
mi_db_access()
and
mi_db_access_type()
functions return const void
*
pointer now, to hint shader writers that the database
elements accessed that way should not be modified. This may require
recompilation of some C++ shaders adding a
const_cast<>
.
miState::cache
has been removed from the
miState
struct. Some volume shader trying to ray trace
shadows from the volume may need minor modifications (remove the
references to that state member).
- iray integration interface has been extended and is not
compatible with libraries used with mental ray 3.8.
Feature improvements:
- Performance, memory consumption and robustness of the BSP2,
acceleration, including motion scenes, has been improved compared
to mental ray 3.8 and mental ray 3.9.0.0.
- For
ccmesh
objects, handing of texture seams has
been improved. The first texture space takes into account possible
texture seams of further texture spaces, and vice versa.
- Added functionality to detect the amount of memory available to
the application. The estimation is printed out before rendering
each frame.
- Significantly improved performance of the Map containers.
- Following customer requests, the default value for
per-framebuffer
premultiplied
flag introduced in
version 3.8.0.8 has been changed to maintain compatibility with
mental ray 3.7+ and prior. For the primary framebuffer, the default
value is true
. For user color framebuffer, the default
value is false
. The flag is effective for rasterizer
mode only.
- For IBL, added option to control the IBL brightness. The
environment lighting scale" f [f f f]
string option
affects all illumination from the environment, but not the directly
visible environment.
- Build MetaSL LLVM backend on the basis of LLVM 2.6. Earlier
version used LLVM 2.5. With this change, a separate LLVM module is
created for each shader compiled. In particular, this improves
robustness when shaders are deleted or modified.
- In progressive rendering, including iray rendering mode, mental
ray kernel now tracks incremental changes to the camera and
immediate (bottom level) camera instance done with
mi_api_*
calls. This makes the requirement to call the
mi_rc_progressive_set_camera()
function obsolete.
- The list of shaders and features supported by iray has been
significantly expanded.
- For iray rendering mode, intercept CUDA errors and memory
allocation errors. CUDA devices issuing errors are excluded from
the rendering.
- For iray rendering mode, improved scalability when rendering
with multiple GPUs and when both GPU and CPU are used.
- For iray rendering mode, improved rendering performance when
multiple CUDA devices with different CUDA capabilities are
used. Capability 1.1 devices are not longer switched to CUDA
capability 1.0 mode in such case.
Bug fixes:
- Light loops did not stop on light shaders returning the value
2. Regression, fixed. Performance of IBL in combination with
finalgathering has been significantly improved.
- For lightmap rendering, avoid running lightmap computation
multiple times in case of redundant materials in the material array
inherited for the lightmap object.
- Fixed possible self-intersection artifacts in the build-in
ambient occlusion.
- Fixed ray differential initialization in finalgather
precomputation stage.
- Fixed possible crash at shutdown if API forward declarations
were used.
- Fixed texture filtering in rasterizer mode. Ray differentials
were not initialized properly.
- For texture lookups with negative filter value: a single image
pixel with no filtering is returned.
- Fixed a crash in case of incremental change for a camera stereo
mode (on/off).
- Fixed possible
ccmesh
artifacts if non-view
dependent approximation was used.
- For
ccmesh
objects, fixed echo of derivatives and
length approximations.
- For subdivision surfaces (
ccmesh
implementation),
fixed a crash observed for some objects.
- Fixed a crash if a hair object with no hairs is rendered.
- Fixed a crash if ambient occlusion with caching was used in
combination with contour rendering.
- Fixed finalgather preview rendering with color profiles. Color
profile was not applied.
- Fixed an artifact on triangle edges that occurred when using
BSP2 acceleration.
- Fixed a clipping artifact when using BSP2 acceleration.
- Fixed rendering speed regression if BSP2 acceleration used for
scenes with builtin IBL.
- For the BSP2 acceleration, fixed a memory leak with assemblies
and multiple instances.
- For scenes with shadow maps, a copy of string option tags was
deleted twice. This is not know to cause any observable
issues.
- Fixed a crash if photon map (
globillum
or
caustic
) was used in a scene with assemblies.
- Added traversal callback functionality for assemblies.
- For mental ray integrations, fixed a race condition which could
lead to a crash in aborted photon emission.
- Do not apply gamma correction for images of
half
type, so that half
and float
images are
handled consistently.
- Fixed a crash in output of multiple framebuffers into the same
OpenEXR file for scenes with more than 6 user framebuffers
rendered.
- Fixed possible too high capacities (bit per pixel, alpha) used
in the main color framebuffer file for scenes with more than 6 user
framebuffers rendered. In particular,
rgba
primary
framebuffer could be advanced to rgba_16
without a
need to do so, consuming more memory.
- In progressive rendering, camera movement was not taken into
account when rendered with
scanline off
. Fixed.
- For IBL (image based lighting), fixed possible NaN pixel colors
if the
"environment lighting shadow"
modes
"solid"
or "off"
were used.
- When rasterizer was used with very low shutter times (0.0001),
the scene was rendered black. Fixed.
- For hair ray tracing,
state->bary[0]
sometimes
was initialized to NaN value, fixed.
- Calling
mi_output_image_open()
function with
out-of-range framebuffer index could cause an unknown tag access
fatal or crash. Fixed, an error message is printed.
- For material phenomena with no surface shader, attach bsdf (if
any) to the surface slot.
- Fixed major memory and database tag leaks for scenes with
assemblies. Shader instances defined inside of assemblies were not
deleted together with assembly.
- Fixed a memory and database tag leak in multihosted rendering.
For geometry tessellation jobs executed on slave hosts, the
parameter tags were not deleted. Tessellation is likely to be
executed on slave hosts for scenes with finalgather.
- In network rendering, fixed possible fatal error master host if
a connection to a slave/satellite on the master host when a
connection to a slave/satellite was closed during the initial
handshake. This was observed on Windows platforms if the satellite
service port was misconfigured.
- In multihosted rendering, fixed possible memory (on Windows
platforms - handle) leak on slave hosts.
- In multihosted rendering, removed some pointless communication
between hosts. This slightly improves performance of the network
rendering.
- For mental ray standalone, the
-core
command line
option was ignored, and the value was always set to
on
. Fixed.
- For iray, prevent possible crash if iray plug-in was not
loaded.
- For MetaSL shaders, the value of Light_iterator::dot_nl was not
adjusted according to the modification of State::normal (bump
mapping). Fixed.
- For MetaSL compiler, fixed missing conversion for
bool
vectors.
- For MetaSL compiler, fixed equal/non-equal operators for
Ray
type.
- For MetaSL compiler, fixed expressions in array sizes.
- For MetaSL Illumination node shaders, removed deprecated
"compile as bsdf" annotation. In particular, this fixes internal
shader declaration generated for these shaders.
- For MetaSL C++ backend, fixed code generated for 3-dimensional
float texture samplers.
- For MetaSL shaders, fixed regression where shader state inputs
were being ignored.
- For MetaSL shader runtime, fixed 4th component of
half4
/float4
/double4
texture
sampler lookups.
- Fixed a crash when a MetaSL shaders was used in a frame, and a
C/C++ shader library was loaded after that frame was finished.
- For MetaSL compiler, issue errors if global variables are
declared. Such variables are illegal according to the MetaSL
spec.
- For MetaSL LLVM backend, fixed the search path provided with
the
{_MI_REG_LIBRARY}
register. The register is now
correctly taken into account.
- For MetaSL LLVM backend, fixed inputs of struct types.
- For MetaSL LLVM backend, fixed problem with consecutive
compilations.
- For MetaSL LLVM backend, evaluate only const and uniform inputs
in the constructor. This resolves possible deadlock on the init
shader lock.
- For MetaSL LLVM backend, fixed possible crash if an input
parameter of enum type was used.
- For MetaSL LLVM backend, fixed code generation on 64-bit
platforms: call immediate instructions are avoided. Call immediate
instructions use 32-bit offsets, which may cause sporadic crashes
when LLVM-generated code is located at addresses with are more than
2GB away from the mental ray kernel code.
- For MetaSL LLVM backend, fixed runtime crash due to calling
generated destructors at improper time.
- For MetaSL LLVM backend, fixed wrong code generation for
swizzles and for the ternary (
"? :"
) operator.
- For MetaSL LLVM backend, fixed bytecode generation for shaders
with array of structs parameters.
Shader changes:
- For fast subsurface scattering shader, fixed possible artifacts
due to missing QMC sampling initialization.
- For fast subsurface scattering shader, fixed possible noise /
unstable images rendered differently with multiple runs. Lightmap
textures in the process of being rendered are excluded from usage
by reflection / refraction ray hits coming from the same or some
other lightmap computation.
- For the architectural material shader, fixed Exact AO feature.
Regression from mental ray 3.7+.
- Fixed a crash in the lume
Glare
output
shader.
- For fast subsurface scattering shader, fixed printing of
progress messages handle id's on 64-bit platforms.
- Platform specific: for physical subsurface shader, fixed
artifacts on 64-bit Windows.
- For paint.dll shader library on Windows platforms,
copyright/version information was not included. Fixed.
Changes in version 3.9.0.0
Feature improvements:
- For the BSP2 acceleration used for motion blur scene, enabled
new prototype implementation of a fast motion blur BSP2 mode with a
much lower memory consumption compared to previous solutions.
Changes in version 3.8.2.0
Feature improvements:
- For progressive rendering, disable clamping of the framebuffer
values by default.
Bug fixes:
- For SPM-protected mental ray licensed by NVIDIA ARC,
fixed the new licensing scheme.
Changes in version 3.8.1.18
Feature improvements:
- For iray, finish the separation of iray
related functionality out of mental ray into the external libraries
libiraymr
and libiray
. The libraries are
loaded automatically by mental ray as soon as iray rendering is
enabled, and searched for along the regular library search
path.
- For iray, enable support for CUDA compute
capabilities 1.0 in addition to compute capabilities 1.1. This
allows to render with iray even on first generation of CUDA-enabled
GPUs, but may take up to 20 percent more time to finish.
Bug fixes:
- For raylib integration, expose functionality to convert
colorprofiles from the internal colorprofile to a specified
colorprofile.
- Fixed a crash that occurred with phenomena declarations in
assemblies.
- Fixed a crash for irradiance particles when increasing the IP
indirect passes between frames.
- Fixed a crash in imf_disp that occurred when changing the
camera resolution or switching stereo mode on incrementally.
- Fixed imf_disp with command line option
--disable-gl
set.
Changes in version 3.8.1.17
Feature improvements:
- For iray, shader mapping functionality and
component of mental ray connectivity has been moved from mental ray
standalone/raylib to a separate dynamic library,
libiraymr.so/.dll/.dylib
. This library is distributed
together with iraylib and is installed at the same location.
- For MetaSL compiler, improved compiler error file/line
reporting.
Bug fixes:
- Fixed another crash for BSP2 acceleration for scenes with
motion blur containing both moving and static objects. The fix in
version 3.8.1.16 was incomplete.
- For the BSP2 acceleration used for motion blur scene, fixed
possible improper selection of splitting planes, which could lead
to memory consumption inefficiency.
- For MetaSL LLVM backend, fixed code generation for enums.
- For MetaSL compiler, fixed search path for the import
statements.
- For MetaSL compiler, fixed texture comparison operators.
Changes in version 3.8.1.16
For SPM-protected mental ray licensed by NVIDIA ARC,
simplified the licensing scheme.
One license per 4 cores on a machine is requested.
In particular this new scheme provides a fair license counting
on virtual machines, which was not possible to achieve with the
per-CPU-socket scheme used before.
Bug fixes:
- Fixed a crash for BSP2 acceleration for scenes scenes with
motion blur containing both moving and static objects.
- When mental ray is low on memory, fixed possible segmentation
fault crashes for shaders using
mi_tri_vectors()
function. The list of such shaders includes architectural material,
subsurface scattering shaders, and many common OEM shaders.
The validity scope of mi_tri_vectors()
function is
adjusted. The returned pointers are valid until the next
call to that function for a given rendering tile/task. In
particular, shaders may need to be adjusted to copy the results
before evaluating shader parameters (mi_eval), tracing rays and
calling other functions which would lead to execution of other
shaders. In earlier versions of mental ray, the validity scope of
the data returned by pointer was not specified and could be
extremely short when mental ray was low on memory.
- When mental ray is low on memory, fixed possible rare unknown
database tag access fatal (rare race condition).
- For
mi_api_add_shader()
function, check if the new
tag for the given name is the same as the old one, and issue an
error in this case. The usage is illegal as this function is
unfenced to delete the old tag.
- In debug version of mental ray, suppress messages from the ZLIB
library, used in particular in (de)compression of some of OpenEXR
images.
Changes in version 3.8.1.15
Bug fixes:
- Fixed MetaSL LLVM backend crash on Windows XP machines.
- For MetaSL LLVM backend, the default optimization level of LLVM
is set to zero. The optimizer in LLVM 2.5 JIT compiler has been
observed to produce illegal code in some case.
Changes in version 3.8.1.14
Summarized release notes for iray are provided in a separate
document.
Feature improvements:
Bug fixes:
Changes in version 3.8.1.13
Known issues in this version:
- On MacOSX platform, mental ray will crash if LLVM backend is
used (since version 3.8.1.8). Fixed in 3.8.1.14.
Bug fixes:
- Removed undocumented and unneeded
mi_phen_clone/unclone
functions.
- For mental ray standalone, fixed a regression in command line
parsing which may lead to a crash.
- Texture pyramid fix in version 3.8.1.12 was incorrect, a proper
fix is added.
- For MetaSL shaders, fixed builtin bsdf names according to the
MetaSL spec.
Changes in version 3.8.1.12
Bug fixes:
- Fixed a crash if a texture with on-demand-created filtering
pyramids is loaded twice.
- For MetaSL compiler, fixed a regressing in parser. The
#define
's values wrapped by ()-brackets are parsed
correctly now.
- For MetaSL compiler, fixed conversion of integer vector
parameters.
- For MetaSL compiler, allow arbitrary const expressions for
array size.
- For MetaSL compiler, fixed improper handling of const and
uniform attributes for constructor calls.
- For mental ray used as a MetaSL standalone compiler (ray -mslc
command line option), fixed compilation of BSDF shaders into C++
code.
Changes in version 3.8.1.11
Feature improvements:
- Added support for MetaSL material phenomena.
- For animation rendering, improved incremental changes on the
camera framebuffers. If a new framebuffer is specified for an
incremental camera, the list of framebuffers is cleaned. In earlier
versions framebuffers were accumulated, which lead to issues when
rendering animations of echoed scenes.
- For finalgathering, provide a way to enforce finalgather
computation of a per object/per instance basis. .mi syntax for
objects and instances has been extended with
finalgather
force <bool>
. Usual scene DAG inheritance rules apply.
The default value is off
.
The miIrrad_options
structure has been extended
with finalgather_force
member , so that a shader has a
possibility to overwrite the value from the scene DAG. The default
value is 0 (inherit). The value 1 can be used to enable, the value
2 to disable finalgather force computation. This option makes the
"state->type = miRAY_LM_VERTEX;" trick obsolete.
If finalgather force is enabled, mental ray will compute
finalgather indirect illumination directly at the hit point instead
of interpolating it from the finalgather map. This produces more
accurate result image at the price of increased rendering time.
- With
-finalgather_passes 0
command line option, it
is now possible to enable the compatibility mode for finalgather
map computation used in mental ray 3.6+ and prior (all finalgather
points are placed in one pass, somewhat lower memory consumption
especially for images with huge resolution).
- On Linux platforms, add
-m32/-m64
option to the
default C++ compiler and linker option list (invoked for MetaSL
shader compilation with MetaSL C++ backend enabled). In particular,
this simplifies deployment of 32-bit mental ray executable on
64-bit Linux platform. On MacOSX this option has already been used
in the earlier mental ray versions.
- Improved physical memory utilization by avoiding unnecessary
largecontinuous memory blocks. In
particular, scenes using finalgather maps and shaders using
mi_kdtree_*
interface are affected,as well as scenes
with BSP2 acceleration in the debug build or in combination with
multihosted rendering.
- Provide
-progressive_max_time F
command line
option in addition to the equivalent string option. This option
limits mental ray progressive rendering and iray execution
time.
Bug fixes:
- Echo requirements for struct and array of struct shader
parameters properly. In particular, fixed missing shader instances
and textures passed as values for such parameters.
- Fixed echo of per-object min/max sample parameters.
- Cylinder area light sources were echoed as discs, fixed.
- Fixed echo of subdivision surface vertices with
dart
s.
- Fixed
-output off
command line option: it disabled
all image file outputs instead of suppressing executions of output
shaders.
- For 3-dimensional DDS textures, fixed error message
(unsupported image format subtype).
- On Windows platforms, fixed "Permission denied" error when
creating directory for shader cache.
- Fixed a crash in unlinking a shader library if MetaSL LLVM
backend has used to create some (other) shaders.
- For MetaSL compiler, fixed compilation of BSDFs used as parts
of phenomena.
- For MetaSL Phenomena provided as xmsl files, set all internal
default parameter values properly even when they do not belong to
the phenomena external interface.
- For MetaSL compiler, fixed code generation for shader classes
inherited from base shader classes.
- For MetaSL runtime, added missing message passing (trace call
returns) for several matrix and vector types.
- For MetaSL LLVM backend, fixed selection of shader primary
output. In particular, this fixes black image rendering if MetaSL
light shaders were used.
- For MetaSL C++ backend, fixed compiler crashes for
Occlusion_options
, Irradiance_options
,
Light_sampler_options
, Light_profiles,
Particle_map
, and Particle_map_options
constructors.
- For MetaSL C++ backend, fixed illegal code generated for some
overloaded matrix and vector functions.
- For MetaSL C++ backend, fixed illegal code generated for the
Bsdf
type.
- For MetaSL C++ backend, fixed illegal code generated for
Cube
and Spectrum
texture samplers.
- For MetaSL C++ backend, fixed swizzles for types other than
float.
- For mental ray used as a standalone MetaSL compiler (
ray
-mslc
command line option), fixed generation of uniform and
const constructor attributes.
- For iray, fixed possible crash when rendering
is canceled.
Changes in version 3.8.1.10
Bug fixes:
Changes in version 3.8.1.9
Feature improvements:
- For mental ray standalone, allow multiple
-T
/
-texture_path
commands on the command line.
- On MacOSX platforms, mental ray loads shader library with
dlopen/dlsym
instead of the platform-specific NS*
function family.
Bug fixes:
- Fixed a performance regression in rasterizer. The regression
was due to unnecessary frequent memory allocations /
deallocations.
- For progressive rendering and iray used in combination with
DISP protocol, fixed growing memory consumption during long
"single-frame" rendering sessions.
- Fixed a crash if
mi_query
function was called in
miQ_PRI_BBOX_MIN/MAX
modes with null
state->pri
. mi_query
now returns
miFALSE
in these cases.
- Fixed possible crash if the
link
statement has
been applied on a file of an unknown or unsupported type.
- For MetaSL C++ backend, fixed code generation for
initialization of inputs of struct types containing texture fields
and for inputs that are arrays of structs.
- For MetaSL LLVM backend, added missing implementation of
uniform and const constructors and destructors.
- For MetaSL runtime, fixed
orthographic
state
variable.
- Fixed a memory leak in MetaSL compiler.
Changes in version 3.8.1.8
Feature improvements:
- On MacOSX platform, added a default substitution rule
.so
-> .dylib.
Old shader libraries with .so
extension must be renamed. The consistent
.so/.dll/.dylib
substitution rules provide
.mi
scene cross-platform compatibility.
- For MetaSL shader cache, add user name to the temporary
directory created to keep the cache. This fixes possible permission
conflicts if mental ray is used by multiple users on the same
machine.
Bug fixes:
- Fixed a crash when echoing camera with multiple
framebuffers.
- Fixed missing echoing of ink
link
statements.
- Avoid echoing of shader declarations derived from MetaSL
(
msl/xmsl
) files.
- For BSP2 acceleration, fixed possible infinite loop and
artifacts if
mi_trace_continue
function or volumetric
rendering with autovolume mode used.
- Implemented missing functionality of MetaSL shader distribution
in multihosting rendering. MetaSL shaders are send to slaves in
text form and generated by each slave host on demand with its own
MetaSL compiler and backend.
- For MetaSL compiler, fix boolean control expression in the
switch
statement.
- For MetaSL compiler, fixed improper logic in some of
switch/break/continue/return
combinations.
- For MetaSL C++ backend, generate correct code for constructors
of texture samplers used in expressions.
- MetaSL compiler errors were printed by a wrong module,
fixed.
- For mental ray standalone invoked as a metasl compiler in order
to (re)generate MetaSL code (
-mslc -t msl
command line
options), fixed missing half/double qualifiers on the
literals.
- Fixed possible mental ray crash at shutdown if MetaSL compiler
was used in the session.
- For iray on MacOSX platform, load
libiray.dylib
(instead of .so
) .
- On Windows platforms, errors in plugin loading (MetaSL LLVM
backend, iray) were silently ignored. Added printing out system
error messages.
Changes in version 3.8.1.7
Bug fixes:
- Fixed crashes in multihosting rendering (regression in version
3.8.1.6/3.8.1.5). Fixed sending link statements from master to
slaves.
- On MacOSX platform, load
gen_llvm.dylib
(not
.so
) for LLVM MetaSL backend.
- For MetaSL C++ backend, fixed significant performance issue for
array shader parameters.
- For MetaSL C++ backend, fixed texture sample constructors used
in expressions. Fixed possible wrong type generated for temporary
swizzles.
Changes in version 3.8.1.6
Known issues in this version:
- In multihosted rendering, a slave would crash when the second
library is send from master to the slave host.
- On MacOSX platforms, mental ray searches for LLVM backend under
the name
gen_llvm.so
, not
gen_llvm.dylib
.
Feature improvements:
- Improved sampling of IBL (image based lighting), which results
in better quality images and in faster convergence of IBL used in
combination with progressive rendering.
- On MacOSX platforms, dynamic libraries (shaders, plugins) file
extension is switched to
.dylib
. mental ray still
allow shaders to have .so extension on these platforms. On Windows,
a default substitution rule .dylib -> .dll
is
added. On Linux, a default substitution rule .dylib ->
.so
is added. On MacOSX, .so
is not substituted
into .dylib
in order to provide compatibility with old
shaders.
- For applications integrating raylib with progressive rendering,
changes the
mi_rc_progressive_tonemapper_function
by
adding an opaque pointer argument passed to the callback function
registered. Note that this changes binary interface and the
applications may require re-compilation as well as minor textual
changes if plain C is used.
- For iray, provide full support for the
mia_physicalsun
shader.
- For iray, improved overall performance. In
particular, the performance of image processing with both DISP and
mi_rc_progressive_*
interfaces has been improved.
- For iray, extended support for several OEM
shaders.
Bug fixes:
- For mental ray standalone on windows platforms, fixed a memory
corruption popup window if rendering is aborted (In particular, by
pressing Ctrl-C).
- Fixed linking info/progress messages incorrectly printed from
the DBN module.
- For MetaSL parser, fixed possible incorrect handling of
import
#import
token.
- For MetaSL compiler, fixed wrong/missing const expression
evaluations.
- For MetaSL LLVM backend, fixed memory leaks.
- For MetaSL LLVM backend, fixed crashes in half and double
texture samplers and matrices.
- For MetaSL LLVM backend, fixed handling of
default
case in switch
statements.
- For MetaSL LLVM backend, fixed support for
light_shadow
output of light shaders.
Shader changes:
- For base and physics shaders,
added missing
apply
attributes.
- For lume shader package, removed the
declaration of the
LumeTools
shader used to GUI
attributes only.
Changes in version 3.8.1.4
Feature improvements:
- For progressive rendering, lift the restriction that task size
had to be a multiple of subsampling size.
- For standalone MetaSL compiler option of mental ray
(mslc
-mslc
command line option), added a possibility
to output MetaSL files. Unused output of binary MetaSL file (.bmsl)
is removed.
- For raylib integration, expose progressive rendering API in the
plain C interface.
- For mental ray standalone, allow to specify the value
cpu
for the -iray
command line option.
With -iray cpu
option, iray rendering
will use CPU mode even if CUDA-capable GPU is present in the
system.
- iray is switched back to CUDA library version
2.2 in order to improve compatibility with drivers.
- For MetaSL LLVM backend, added support for shader parameter
initializers.
Bug fixes:
- Adjusted module id enumeration to keep same error/warning codes
as for mental ray 3.7+ and earlier versions.
- For progressive rendering, changed the default value of the
"progressive error threshold"
string option to 0.05, as
documented. The value for earlier versions was 0.1.
- For MetaSL compiler, implemented missing compatibility between
Spectrum and Color, Spectrum and float3, Spectrum and float4
classes.
- For MetaSL compiler, fixed a possible crash if '
const
String
' type was used.
- For MetaSL C++ backend, map MetaSL half literals (like 1.0h) to
C++ float literals properly.
- For MetaSL LLVM backend, added missing support for invocation
as a shadow shader.
- For MetaSL LLVM backend, added missing
dot(int,
int)
function, Occlusion_options
constructor,
and String
==
and !=
operators.
- For MetaSL LLVM backend, fixed handling of destructors on
leaving scopes with
break
, continue
and
return
operators.
- For iray, fixed wrong light transforms.
- For iray, fixed superfluous verbosity.
Shader changes:
- For precompiled MetaSL shader library, added a set of missing
intrinsic shaders.
- The
paint.mi
file no longer links
base.so
explicitly. Though paint phenomena depend on
base shaders, the way to link shader explicitly was inconsistent
with rayrc
configuration workflow.
Changes in version 3.8.1.3
Feature improvements:
- For mental ray standalone used as a MetaSL compiler
(
-mslc
command line option), allow file arguments to
be specified after compiler options.
- For iray, added support for directional light
sources.
- The GUI attributes for several shader declaration files are
moved into separate files. These GUI files are only used by some of
the OEM raylib integrations and are excluded from other release
tapes.
Bug fixes:
- For raylib integrations, fixed possible unknown tag fatal or
crash when framebuffers are deleted.
- For Map containers, added removal of temporary swap files in
case of rendering abort.
- For MetaSL LLVM backend, fixed several issues related to the
inlining in the generated code with high optimization level
(controlled by the
MI_METASL_LLVM_OPTLEVEL
environment
variable).
- The version 3.8.1.2 64-bit Linux platform
specific issue with MetaSL LLVM backend has been fixed.
- For MetaSL LLVM backend, fixed tangent space code, swizzle
constructors for atomic types, and parameters to the sample
iterators.
- For MetaSL C++ backend, fixed literal string symbol
escaping.
- For raylib OEM integration, fixed a corruption in the GUI
attributes handling.
Changes in version 3.8.1.2
Known platform-specific issue in this version: On 64-bit Linux,
the MetaSL LLVM backend asserts for most of MetaSL shaders.
Feature improvements:
Bug fixes:
- Fixed a possible crash in multihosted rendering for scenes
using instance light lists.
- Fixed on-demand texture filtering (added in version 3.8.0.11)
for textures of tiny resolution.
- For the BSP2 acceleration, fixed possible improper handling of
visibility flags of assemblies. Regression in mental ray 3.8.
- For iray, fixed possible rendering artifacts
with more than 4 threads.
- For iray, fixed an issue in sampling
generation causing significant visual difference between images
rendered on GPU and on CPU.
- For LLVM backend, fixed texture sampler constructors and
texture width/height.
Changes in version 3.8.1.1
Feature improvements:
- Extended DISP talk protocol. The frame begin reply string has
not the form
frame_begin: <frameno> <xres> <yres>,
<is_output_shader>
where is_output_shader is 1 for output shaders and 0 for normal
rendering. This allows display applications to distinguish the
rendering and postprocessing stages.
Bug fixes:
- For the
imf_disp
tool, fixes creating of the
second frame if output shaders are used in the scene.
- For MetaSL LLVM backend, fixed type conversion for mental ray
scene parameters.
Changes in version 3.8.1.0
Feature improvements:
- Added
-assert_fatal <bool>
command line
option. If set to off
, mental ray would continue
execution after assertion (and possibly crash later). Default is
on
. This option should be used for debugging purposes
only. It may be also used to prevent popup on Windows platforms in
batch processing.
- For MetaSL shaders, added native support for
half
type.
- For MetaSL shaders, improve mapping of MetaSL types to mental
ray types. In particular, added support for matrix types.
- Changed signature of the recently added
mi_lookup_*_texture_x
functions, the filter is passed
by value.
- For the
.mi
parser, remove the limit of 4096
characters per line.
- For the
iray
, improved light source handling.
- Removed left-overs of the deprecated hardware rendering (mental
ray 3.4) from the shader and integration interface.
Bug fixes:
- Fixed echo of the
premultiplied
framebuffer
flag.
- Allow BSDFs to be nested inside of Phenomena.
- Fixed a crash for MetaSL shaders used in combination with
multi-hosted rendering.
- For the standalone MetaSL compiler functionality, only shaders
having
brdf_type
annotation are compiled as BRDFs even
with --brdf
command line option is specified.
- For MetaSL C++ backend, fixed possible wrong initializers
inside of phenomena.
- For MetaSL shaders, fixed possible artifacts due to wrong
volume in/out stack computation.
- For MetaSL shaders, fixed missing support for camera
dof_focus
.
Changes in version 3.8.0.12
mental ray's ability to flatten shading trees and Phenomena
specified with .mi syntax or mental ray API and consisting of nodes
which are MetaSL shaders has been disabled for 3.8 release. The
value of the registry {_MI_REG_METASL_FLATTEN}
is
ignored. This does not affect flattening of Phenomena provided as
XMSL files.
Feature improvements:
- Added support for the combination of stereoscopic rendering in
combination with progressive rendering.
- For the rasterizer, changed the default value of the
premultiplied
framebuffer flag added in version
3.8.0.8
to true
. The new default behavior
is backward-compatible with mental ray 3.7 and rendering with
rasterizer disabled.
- Improved performance for progressive rendering and iray used
with DISP callbacks and protocols.
- For the MetaSL LLVM backend, added support for the explicit
shader calls from MetaSL shaders.
Bug fixes:
- For iray, fixed possible crash for scenes
using textures.
Changes in version 3.8.0.11
Feature improvements:
- iray functionality has been encapsulated into
a plugin. This removes the symbol dependencies on the CUDA runtime
from OEM raylib libraries. The plugin is name is
"iraylib.dll/.so"
. mental ray searches for this
library on the path list for the shader lookup (same mechanism as
for the gen_llvm MetaSL backend). The plugin is loaded
automatically.
Standalone and SPM-protected mental ray libraries are now
delivered with iray plugin and CUDA runtime libraries. The plugin
installation is required only for rendering in the iray mode (
-iray
command line option).
- On 64-bit MacOSX platform, provide CPU fallback functionality
for iray.
- Provide MIPMAP pyramids for effective filtered texture lookup
on demand. Like in the earlier version, mental ray will create
MIPMAP pyramids for textures declared filtered at the load/memory
map/cache insertion time. If a texture is not
declared filtered, the pyramids are created on demand when
mi_lookup_color_texture(_x)
or
mi_lookup_filter_color_texture(_x)
function are called
for these textures and the upper pyramid levels would improve the
performance. Same applies for MetaSL shader filtered texture
lookups.
The original image data is not changed, so on-demand MIPMAP
pyramids are not available for shaders using low-level
mi_img_*
interface.
- For MetaSL compiler and C++ backend, added support for user
data.
- For MetaSL LLVM backend, added support for a plurality of
features, including mental ray - MetaSL parameter conversions and
compilation of light shaders.
Bug fixes:
- Fixed a regression: shader cache did not update changed metasl
code.
- Fixed a regression: in network rendering, the link statements
for compiled C/C++ (.so/.dll files) shaders (.so/.dll files) were
not propagated from the master host to the slaves.
- For MetaSL integration, fixed possible wrong default parameter
values in the XMSL phenomena emulation mode (registry
{_MI_REG_METASL_EMULATE_MI_PHEN}
set on).
- Fixed possible false error message on camera stereo mode.
- The function
void mi_msg_usleep(int secs);
is
restored in the integration interface.
Shader changes:
- Improved architectural shader applied to the glass and similar
materials. If after several bounces inside of a glass the trace
depth limit has been reached, the black or environment color has
been returned. In bright environments this lead to visible "light
leak" artifacts. The shader behavior is changed to trace a
transparent ray instead of picking environment or black color. It
is a better approximation to the true result of several additional
reflection/refraction light bounces. For compatibility reasons, the
old behavior still could be achieved by setting the per-shader
trace depth limit to the value "-1".
Changes in version 3.8.0.10
Feature improvements:
- For the BSP2 acceleration and the special case of the shutter
interval
[0,0]
with motion blur option
enabled, use static acceleration
structure in order to improve performance and reduce memory
consumption.
- For the MetaSL C++ backend, added support for displacement
shaders.
- On Windows platforms, removed run-time overhead related to the
discontinued MetaSL CIL backend. mental ray kernel no longer relies
on the .Net installation.
Bug fixes:
- On Windows platforms, fixed a crash when MetaSL compiler LLVM
backend was initialized. The functionality of LLVM is still
limited, only simple shaders can be compiled in this version.
- Fixed possible deadlock or assertion in the debug mental ray
version. The issue has been observed if a MetaSL shader has been
deleted, or if the IBL feature was used.
- Expose
mi_rc_run_query
function to the shader
interface. Though this function is intended for the integration,
some existing mental ray shaders depend on it.
- For IBL rendering, fixed switching IBL modes between
frames.
- Fixed a crash in multihosted rendering if finalgather was
used.
- For MetaSL shaders, fixed possible crash in filtered texture
lookup.
- For MetaSL shaders compiled with C++ backend, fixed possible
improper handling of vector parameters.
Changes in version 3.8.0.9
Feature improvements:
- For iray integrated for into OEM libraries, the fallback into
the CPU solution has been implemented for Windows and 32-bit MacOSX
in addition to Linux.
- For MetaSL shaders and C++ backend, added support for volume
shaders.
Bug fixes:
- Fixed a crash if an attempt to compile MetaSL shader with
non-existing compiler backend was done.
- Fixed possible crash if mental ray 3.5 compatibility
framebuffer syntax was used (regression in version 3.8.0.8).
- For
imf_disp
tool, removed possible display
flickering.
Changes in version 3.8.0.8
New features:
- MetaSL LLVM backend. A new backend for MetaSL shaders is
provided. This backend replaces CIL backend on Windows platforms
(superior performance and uniformity of the solution on all
platforms). The backend is supported on Windows, Linux and MacOSX:
32 and 64 bit each.
The support for MetaSL CIL backend on Windows is
discontinued.
As the name implies, the backend is based on the LLVM
technology. There is no dependency on external compilers or
linkers. The compilation is done on demand in memory, no
intermediate files are created. Currently, it is not possible to
externalize shaders compiled with the LLVM backend. Thus, such
shaders are not stored into the compiled shader cache. However, in
case a shader has been compiled with C++ backend (using external
C++ compiler), the existing shaders in the compiled shader cache
would be used. Shaders compiled with LLVM and with C/C++ compiler
can be mixed in one scene, phenomenon or shading tree.
In order to enable MetaSL LLVM backend, it is necessary to:
- Set the registry
" {_MI_REG_METASL_BACKEND}"
value
to "LLVM"
or "llvm"
.
- Make sure that the file gen_llvm.so / .dll is present in the
path list where mental ray searches for shaders. This paths are
specified by the
-L
command line option and by the
"{_MI_REG_LIBRARY}"
registry value.
LLVM MetaSL backend library is loaded automatically when the
first MetaSL shader is compiled.
This version of LLVM backend is an initial implementation, only
simplest shaders will compile successfully Known issue: on windows
platforms, gen_llvm will crash at initialization.
- OEM integration libraries now contain a functional version of
iray on 32 and 64 bit Windows and Linux, as well
as on 32-bit MacOSX. The 64-bit version of MacOSX is planned.
In this release, iray is linked statically into the mental ray
library. T
On Linux system, an automatic detection of the presence of
CUDA-capable graphics card is provided. If not available, CPU mode
is enabled. This functionality is planned for Windows and MacOSX as
well.
In this version, iray relies on CUDA compute capability version
1.1.
Feature improvements:
- Added new function
miBoolean mi_trace_probe_x(
miState state,
const miVector *direction,
const miVector *origin,
miUint flag );
This function is similar to mi_trace_probe
, but takes
a bitmask of visibility flags to test hits for. The enumeration for
the flags is added to the shader.h
interface
file.
- For the rasterizer, allow per-framebuffer control over the
compositing. The new per-framebuffer modifier
"premultiplied"
on/off has been added to the
.mi
syntax. If set, the compositing of a color
framebuffer(primary or user) is done according to the formula
(A + (1-opacity) * B)
, otherwise it is (opacity
* A + (1-opacity) * B)
.
- For MetaSL shaders, added support for
ddx/ddy
. The
expressions only apply for normals, points and texture coordinates.
Note that the normal derivatives are computed for the interpolated
normal without the effect of bump shaders.
- For the
imf_disp
tool, added "always on top"
functionality.
- For the
imf_disp
tool, added mouse wheel scrolling
of the window.
- For the
imf_disp
tool, and DISP talk protocol,
added the ability to specify region of interest in the progressive
rendering mode.
- For the
imf_disp
tool, display currently rendered
rectangle.
- For the
imf_disp
tool used for stereoscopic
images, allow to select one of the possible ways to display stereo
images (View
menu item):
- Color Anaglyph (default)
- Grey Anaglyph
- Half Color Anaglyph
- Left Only
- Right Only
- For Irradiance Particles, allow to specify number of secondary
rays with additional parameters to the
-ip_rays
command line option. Before it was only possible with a .mi file
string option.
- Missing
const
qualifiers are added to the public
API.
- Improved runtime performance for MetaSL shaders.
Bug fixes:
- Fixed possible wrong illumination if IBL was used in a
combination with other light sources.
- Fixed possible artifacts in motion blur scenes rendered with
BSP2 acceleration.
- Fixed missing visible lights in scenes with no geometry.
- For applications integrating raylib, fixed a possible deadlock
if a GUI element with the same name is re-defined without deleting
the old one.
- Fixed possible crash in rendering of multiple frames with
incremental camera changes which switch stereoscopic rendering
on/off.
- Put some memory blocks allocated with global
new
/new[]
operators under mental ray
memory management/statistics system.
- For integrated version of mental ray, fix the table of exported
symbols needed for the integration.
- For the
imf_disp
tool, link EXPAT library
statically. The dynamic library is missing on some older Linux
system.
- For the
imf_disp
tool, fixed several image
displaying issues.
- For MetaSL shaders, fixed a series of bugs related to type
conversions and multiple output.
- For MetaSL shaders, fixed inefficiently in the coordinate
system transformations.
Changes in version 3.8.0.7
Known limitations in this version:
- Type system and parts of the MetaSL compiler SDK and runtime
system (including headers) have been refactored. Work in progress.
In particular, CIL backend currently fails to compile many
shaders.
- Performance of MetaSL shaders using array parameters is very
poor.
Feature improvements:
- Added a support for number of area light samples, which is not
an exact power of 2. Prior to this version, mental ray would
increase the number of sample for area lights. In the current
implementation, the exact number of samples to be taken is
respected up to the u * v = 64. In order to keep old behavior, the
number of samples per light in the scene could be adjusted to be an
exact power of 2.
- Added echo for the
.msl
/ .xmsl
file
include statements.
- Missing
const
qualifiers are added to the public
API.
Bug fixes:
- For IBL, fixed possible shadow artifacts. The shadow rays are
shot from the lights towards telemetry, like this is done for usual
lights. This increases compatibility of IBL with existing shadow
shaders.
- On 64-bit Linux machines, fixed possible memory corruption
crash. The crash has been in particular been observed during
rendering of large scenes with
scanline on
.
- Fixed possible crash in raylib integration. If an application
was low on memory and a new thread has been registered with raylib,
the application memory handle callback could be called in order to
inform application that some memory should be freed if possible. At
the moment of the call, the thread is not registered into raylib
yet and thus no calls to mental ray functions should be done. In
order to prevent possible crash, added a check to
mi_info
, mi_warning
,
mi_error
etc.: if called from threads not attached to
mental ray, these functions will return immediately without
printing any messages.
- For the SPM-protected mental ray executables and libraries,
fixed possible failure to obtain the necessary number of licenses
in core-restricted environments (such as virtual machines) and some
machines with Intel i7 CPUs.
- On Windows platforms, one of the modules has been compiled with
platform STL headers, which caused symbol conflicts for an
integrated version of mental ray library. Fixed. The complete
mental ray now is compiled with STLPORT put into the namespace
MISTD
. In particular, it does not have a dependency on
the _SECURE_SCL
define value.
- Fixed possible creases during parallel compilation of several
MetaSL shaders.
Changes in version 3.8.0.12
mental ray's ability to flatten shading trees and Phenomena
specified with .mi syntax or mental ray API and consisting of nodes
which are MetaSL shaders has been disabled for 3.8 release. The
value of the registry {_MI_REG_METASL_FLATTEN}
is
ignored. This does not affect flattening of Phenomena provided as
XMSL files.
Feature improvements:
- Added support for the combination of stereoscopic rendering in
combination with progressive rendering.
- For the rasterizer, changed the default value of the
premultiplied
framebuffer flag added in version
3.8.0.8
to true
. The new default behavior
is backward-compatible with mental ray 3.7 and rendering with
rasterizer disabled.
- Improved performance for progressive rendering and iray used
with DISP callbacks and protocols.
- For the MetaSL LLVM backend, added support for the explicit
shader calls from MetaSL shaders.
Bug fixes:
- For iray, fixed possible crash for scenes
using textures.
Changes in version 3.8.0.11
Feature improvements:
- iray functionality has been encapsulated into
a plugin. This removes the symbol dependencies on the CUDA runtime
from OEM raylib libraries. The plugin is name is
"iraylib.dll/.so"
. mental ray searches for this
library on the path list for the shader lookup (same mechanism as
for the gen_llvm MetaSL backend). The plugin is loaded
automatically.
Standalone and SPM-protected mental ray libraries are now
delivered with iray plugin and CUDA runtime libraries. The plugin
installation is required only for rendering in the iray mode (
-iray
command line option).
- On 64-bit MacOSX platform, provide CPU fallback functionality
for iray.
- Provide MIPMAP pyramids for effective filtered texture lookup
on demand. Like in the earlier version, mental ray will create
MIPMAP pyramids for textures declared filtered at the load/memory
map/cache insertion time. If a texture is not
declared filtered, the pyramids are created on demand when
mi_lookup_color_texture(_x)
or
mi_lookup_filter_color_texture(_x)
function are called
for these textures and the upper pyramid levels would improve the
performance. Same applies for MetaSL shader filtered texture
lookups.
The original image data is not changed, so on-demand MIPMAP
pyramids are not available for shaders using low-level
mi_img_*
interface.
- For MetaSL compiler and C++ backend, added support for user
data.
- For MetaSL LLVM backend, added support for a plurality of
features, including mental ray - MetaSL parameter conversions and
compilation of light shaders.
Bug fixes:
- Fixed a regression: shader cache did not update changed metasl
code.
- Fixed a regression: in network rendering, the link statements
for compiled C/C++ (.so/.dll files) shaders (.so/.dll files) were
not propagated from the master host to the slaves.
- For MetaSL integration, fixed possible wrong default parameter
values in the XMSL phenomena emulation mode (registry
{_MI_REG_METASL_EMULATE_MI_PHEN}
set on).
- Fixed possible false error message on camera stereo mode.
- The function
void mi_msg_usleep(int secs);
is
restored in the integration interface.
Shader changes:
- Improved architectural shader applied to the glass and similar
materials. If after several bounces inside of a glass the trace
depth limit has been reached, the black or environment color has
been returned. In bright environments this lead to visible "light
leak" artifacts. The shader behavior is changed to trace a
transparent ray instead of picking environment or black color. It
is a better approximation to the true result of several additional
reflection/refraction light bounces. For compatibility reasons, the
old behavior still could be achieved by setting the per-shader
trace depth limit to the value "-1".
Changes in version 3.8.0.10
Feature improvements:
- For the BSP2 acceleration and the special case of the shutter
interval
[0,0]
with motion blur option
enabled, use static acceleration
structure in order to improve performance and reduce memory
consumption.
- For the MetaSL C++ backend, added support for displacement
shaders.
- On Windows platforms, removed run-time overhead related to the
discontinued MetaSL CIL backend. mental ray kernel no longer relies
on the .Net installation.
Bug fixes:
- On Windows platforms, fixed a crash when MetaSL compiler LLVM
backend was initialized. The functionality of LLVM is still
limited, only simple shaders can be compiled in this version.
- Fixed possible deadlock or assertion in the debug mental ray
version. The issue has been observed if a MetaSL shader has been
deleted, or if the IBL feature was used.
- Expose
mi_rc_run_query
function to the shader
interface. Though this function is intended for the integration,
some existing mental ray shaders depend on it.
- For IBL rendering, fixed switching IBL modes between
frames.
- Fixed a crash in multihosted rendering if finalgather was
used.
- For MetaSL shaders, fixed possible crash in filtered texture
lookup.
- For MetaSL shaders compiled with C++ backend, fixed possible
improper handling of vector parameters.
Changes in version 3.8.0.9
Feature improvements:
- For iray integrated for into OEM libraries, the fallback into
the CPU solution has been implemented for Windows and 32-bit MacOSX
in addition to Linux.
- For MetaSL shaders and C++ backend, added support for volume
shaders.
Bug fixes:
- Fixed a crash if an attempt to compile MetaSL shader with
non-existing compiler backend was done.
- Fixed possible crash if mental ray 3.5 compatibility
framebuffer syntax was used (regression in version 3.8.0.8).
- For
imf_disp
tool, removed possible display
flickering.
Changes in version 3.8.0.8
New features:
- MetaSL LLVM backend. A new backend for MetaSL shaders is
provided. This backend replaces CIL backend on Windows platforms
(superior performance and uniformity of the solution on all
platforms). The backend is supported on Windows, Linux and MacOSX:
32 and 64 bit each.
The support for MetaSL CIL backend on Windows is
discontinued.
As the name implies, the backend is based on the LLVM
technology. There is no dependency on external compilers or
linkers. The compilation is done on demand in memory, no
intermediate files are created. Currently, it is not possible to
externalize shaders compiled with the LLVM backend. Thus, such
shaders are not stored into the compiled shader cache. However, in
case a shader has been compiled with C++ backend (using external
C++ compiler), the existing shaders in the compiled shader cache
would be used. Shaders compiled with LLVM and with C/C++ compiler
can be mixed in one scene, phenomenon or shading tree.
In order to enable MetaSL LLVM backend, it is necessary to:
- Set the registry
" {_MI_REG_METASL_BACKEND}"
value
to "LLVM"
or "llvm"
.
- Make sure that the file gen_llvm.so / .dll is present in the
path list where mental ray searches for shaders. This paths are
specified by the
-L
command line option and by the
"{_MI_REG_LIBRARY}"
registry value.
LLVM MetaSL backend library is loaded automatically when the
first MetaSL shader is compiled.
This version of LLVM backend is an initial implementation, only
simplest shaders will compile successfully Known issue: on windows
platforms, gen_llvm will crash at initialization.
- OEM integration libraries now contain a functional version of
iray on 32 and 64 bit Windows and Linux, as well
as on 32-bit MacOSX. The 64-bit version of MacOSX is planned.
In this release, iray is linked statically into the mental ray
library. T
On Linux system, an automatic detection of the presence of
CUDA-capable graphics card is provided. If not available, CPU mode
is enabled. This functionality is planned for Windows and MacOSX as
well.
In this version, iray relies on CUDA compute capability version
1.1.
Feature improvements:
- Added new function
miBoolean mi_trace_probe_x(
miState state,
const miVector *direction,
const miVector *origin,
miUint flag );
This function is similar to mi_trace_probe
, but takes
a bitmask of visibility flags to test hits for. The enumeration for
the flags is added to the shader.h
interface
file.
- For the rasterizer, allow per-framebuffer control over the
compositing. The new per-framebuffer modifier
"premultiplied"
on/off has been added to the
.mi
syntax. If set, the compositing of a color
framebuffer(primary or user) is done according to the formula
(A + (1-opacity) * B)
, otherwise it is (opacity
* A + (1-opacity) * B)
.
- For MetaSL shaders, added support for
ddx/ddy
. The
expressions only apply for normals, points and texture coordinates.
Note that the normal derivatives are computed for the interpolated
normal without the effect of bump shaders.
- For the
imf_disp
tool, added "always on top"
functionality.
- For the
imf_dis
p tool, added mouse wheel scrolling
of the window.
- For the
imf_disp
tool, and DISP talk protocol,
added the ability to specify region of interest in the progressive
rendering mode.
- For the
imf_disp
tool, display currently rendered
rectangle.
- For the
imf_disp
tool used for stereoscopic
images, allow to select one of the possible ways to display stereo
images (View
menu item):
- Color Anaglyph (default)
- Grey Anaglyph
- Half Color Anaglyph
- Left Only
- Right Only
- For Irradiance Particles, allow to specify number of secondary
rays with additional parameters to the
-ip_rays
command line option. Before it was only possible with a .mi file
string option.
- Missing
const
qualifiers are added to the public
API.
- Improved runtime performance for MetaSL shaders.
Bug fixes:
- Fixed possible wrong illumination if IBL was used in a
combination with other light sources.
- Fixed possible artifacts in motion blur scenes rendered with
BSP2 acceleration.
- Fixed missing visible lights in scenes with no geometry.
- For applications integrating raylib, fixed a possible deadlock
if a GUI element with the same name is re-defined without deleting
the old one.
- Fixed possible crash in rendering of multiple frames with
incremental camera changes which switch stereoscopic rendering
on/off.
- Put some memory blocks allocated with global
new
/new[]
operators under mental ray
memory management/statistics system.
- For integrated version of mental ray, fix the table of exported
symbols needed for the integration.
- For the
imf_disp
tool, link EXPAT library
statically. The dynamic library is missing on some older Linux
system.
- For the
imf_disp
tool, fixed several image
displaying issues.
- For MetaSL shaders, fixed a series of bugs related to type
conversions and multiple output.
- For MetaSL shaders, fixed inefficiently in the coordinate
system transformations.
Changes in version 3.8.0.7
Known limitations in this version:
- Type system and parts of the MetaSL compiler SDK and runtime
system (including headers) have been refactored. Work in progress.
In particular, CIL backend currently fails to compile many
shaders.
- Performance of MetaSL shaders using array parameters is very
poor.
Feature improvements:
- Added a support for number of area light samples, which is not
an exact power of 2. Prior to this version, mental ray would
increase the number of sample for area lights. In the current
implementation, the exact number of samples to be taken is
respected up to the u * v = 64. In order to keep old behavior, the
number of samples per light in the scene could be adjusted to be an
exact power of 2.
- Added echo for the
.msl
/ .xmsl
file
include statements.
- Missing
const
qualifiers are added to the public
API.
Bug fixes:
- For IBL, fixed possible shadow artifacts. The shadow rays are
shot from the lights towards telemetry, like this is done for usual
lights. This increases compatibility of IBL with existing shadow
shaders.
- On 64-bit Linux machines, fixed possible memory corruption
crash. The crash has been in particular been observed during
rendering of large scenes with
scanline on
.
- Fixed possible crash in raylib integration. If an application
was low on memory and a new thread has been registered with raylib,
the application memory handle callback could be called in order to
inform application that some memory should be freed if possible. At
the moment of the call, the thread is not registered into raylib
yet and thus no calls to mental ray functions should be done. In
order to prevent possible crash, added a check to
mi_info
, mi_warning
,
mi_error
etc.: if called from threads not attached to
mental ray, these functions will return immediately without
printing any messages.
- For the SPM-protected mental ray executables and libraries,
fixed possible failure to obtain the necessary number of licenses
in core-restricted environments (such as virtual machines) and some
machines with Intel i7 CPUs.
- On Windows platforms, one of the modules has been compiled with
platform STL headers, which caused symbol conflicts for an
integrated version of mental ray library. Fixed. The complete
mental ray now is compiled with STLPORT put into the namespace
MISTD
. In particular, it does not have a dependency on
the _SECURE_SCL
define value.
- Fixed possible creases during parallel compilation of several
MetaSL shaders.
Changes in version 3.8.0.6
Feature improvements:
- For the integrations of raylib progressive rendering: the
mi_rc_progressive_set_buffer()
function get an
additional bool
argument with the default value
false
. If the new parameter is set to
true
, multiple calls to mi_rc_run()
could
be used with the same framebuffer,allowing a simplified and more
efficient call sequence as in the pseudo-code below. The call to
mi_rc_progressive_shutdown()
is not required in this
case.
mi_rc_run(miRENDER_PREPROC|miRENDER_RENDER| ..., ... );
mi_rc_progressive_set_buffer( ... settings ... , true);
while (loop condition) {
mi_rc_progressive_cancel_rendering() or mi_rc_progressive_stop_rendering();
// do application incremental updates
// BSP is *not* rebuild by the kernel
mi_rc_run(miRENDER_REINHERIT |
[miRENDER_REINHERIT_LIGHTS |]
miRENDER_RENDER, ...);
}
mi_rc_run(miRENDER_POSTPROC, ...);
As the binary interface of the
mi_rc_progressive_set_buffer()
function has been
changed, applications with progressive rendering integration need
to be recompiled against the new header files. No source code
changes are required for application using the old call
sequence.
- Reduced memory occupied by BSP2 acceleration for motion blur
scenes.
- The files generated for the debugging purposes if the registry
"
{_MI_REG_METASL_TRACE}
" is set are put into the
temporary files directory instead of current directory.
Bug fixes:
- Fixed possible crash in raylib integration. If an application
was low on memory and a new thread has been registered with raylib,
the application memory handle callback could be called in order to
inform application that some memory should be freed if possible. At
the moment of the call, the thread is not registered into raylib
yet and thus no calls to mental ray functions should be done. In
order to prevent possible crash, added a check to
mi_info
, mi_warning
,
mi_error
etc.: if called from threads not attached to
mental ray, these functions will return immediately without
printing any messages.
- If a shader declaration was deleted, the DLL library containing
the code for the corresponding shader implementation has been
unlinked. Limit unlinking of the DLLs to the case of MetaSL shaders
compiled by mental ray.
- Put some memory blocks allocated with global
new
/new[]
operators under mental ray
memory management/statistics system.
- Fixed possible crash in erroneous scenes with undefined
material inherited as a component of material array in a scene
DAG.
Changes in version 3.8.0.4
Bug fixes:
- For the rasterizer, fixed possible artifacts for unsplitted
quads crossing the clipping plane. The fix is complimentary to the
fix in version 3.8.0.3.
Changes in version 3.8.0.3
Feature improvements:
- Experimental. Added an experimental extension
to the DISP talk protocol and imf_disp tool.
The command refine_fb
xl,yl,xh,yh can be
used to specify that in the progressive rendering mode, additional
samples are placed in the specified window if progressive rendering
is used. imf_disp tool allows the selection of the window with the
mouse.
- Added
unlink "filename"
command to the .mi syntax
in order to allow shader library replacements in mental ray
standalone. Without this syntax, this functionality was available
for raylib integration only.
- For scenes with motion blur, improved BSP2 construction time
for objects having single motion segment.
- For MetaSL C++ backend, improves support for constructors and
destructors.
Bug fixes:
- For integrations of raylib containing iray, fixed possible
symbol conflicts.
- For integration of raylib in a form of static library, fixed
possible missing debug information due to several pairs of code
object files with the same names. Relevant for Windows platforms
only.
- For the progressive rendering displayed with the imf_disp tool,
fixed stopping of the rendering. During the progressive rendering,
the "stop" (red square) button of the playback button group can be
used to signal mental ray to stop the rendering.
- For
ccmesh
objects, fixed memory allocations
bypassing mental ray memory manager. This memory was not counted in
statistics and could lead to a crash for large scenes.
- Fixed possible ray hit misses for BSP2 acceleration used for
photons (globillum and caustics).
- Fixed a regression: registry substitution has not been applied
when the type of linked library files has been determined, causing
disfunction of
.mi
statements like link
"base.{EXT}"
.
- For the rasterizer, fixed possible artifacts for quads crossing
clipping plane.
Changes in version 3.8.0.2
Feature improvements:
- For MetaSL shaders, implemented IOR in/out stack
functionality.
Bug fixes:
- Restored stop command and stop button functionality in imf_disp
2.0 for the progressive rendering mode.
- Fixed missing indirect illumination of finalgathering was used
in combination with importons for scenes containing materials using
BSDFs.
- Fixed a crash if finalgathering was used in combination with
importons, and the importon map was empty.
- For MetaSL shaders used with C++ backend, fixed passing
parameters over the
trace
calls.
- For MetaSL shaders used with C++ backend, generate correct code
for the conversion of shader type parameters to boolean.
Changes in version 3.8.0.1 (incomplete list).
Extended list and more detailed description for new features and
changes will be provided with the next version.
Iray:
Some mental ray 3.8 distributions are coming with iray. Iray is
a CUDA-based high performance path tracing renderer implementing
NVIDIA ARC architectural material and material library shading
model. The integration of iray into mental ray
follows the raylib progressive rendering interface. In order to
enable iray, the command line -iray on
options, or a
string option "iray" on should be used. iray is work in progress
and is not functional in this alpha version.
New features:
- Stereoscopic rendering. mental ray 3.8
provides a workflow to render two images (for the left and for the
right eyes) simultaneously. Two rendered images are stored in two
separate framebuffers sets and saved as pair(s) of image files. The
names of the files are prefixed with
lft_
and
rgt_
for the left and right eye respectively.
Stereoscopic rendering is supported for the
rasterizer as well as scanline
on/off. View-dependent tessellation and displacement is
applied according to the camera located in the middle of two eye
positions. Same applies for the computation of finalgather maps.
This allows consistent rendering of two images and improves
performance by exploiting locality of the data and avoiding
redundant work.
The .mi syntax for the camera is extended with
camera "mycamera"
stereo <method> <eye_separation>
...
end camera
where method of left/right eye camera could be
one of the following:
off
Default, no stereoscopic rendering.
toein
The camera frustums are rotated so that the
two camera direction vectors meet at the focal length. This method
introduces perceptually incorrect vertical parallax which increases
out from the center of the projection plane and might cause a
visual discomfort when looking at rendered stereo images for a
longer time.
offaxis
This method is the perceptually correct
way to create stereo camera pairs. It introduces no vertical
parallax and is therefore less stressful to the observer. It
requires an asymmetric camera frustum, which most manufactured
cameras do not support as of today.
offset
This is the straightforward method for
rendering stereo pairs. It shifts the eyes along the horizontal
axis in camera space.
eye_separation is the distance between two eyes in
camera space.
It is possible to specify stereoscopic rendering parameters wit
the command line option
-stereo <method> <eye_separation>
The integration/shader API has been extended with
miCamera::miCamera_stereo
(enumeration) and
miCamera::eye_separation
members.
Stereoscopic rendering is not supported for orthographic
cameras. For shaders, the camera space used if the
position/orientation of the camera in the middle of two eye.
- New
imf_disp
2.0
image viewer has been written. Unlike version 1,
the implementation is identical on Windows, Linux and MacOSX
platform, delivering the same set of controls.
The major improvements include the ability to display live any
of the rendering framebuffers (not just the primary color one),
zoom, display individual channels, expose and gamma control.
Automatic tonemapping is provided.
The new image viewer tool is compatible with progressive
rendering and with stereoscopic
images.
The compete list of command line options is given below:
imf_disp [/l <str>] [/c <str>] [/e <str>] [/g <str>] [/t] [/s]
[--frame <num>] [--frame-rate <num>] [--live-update <str>]
[--cache-all-layers <str>] [--view-controls <str>] [--playback-controls <str>]
[--on-image-load <str>] [--disable-gl] [/h] [image files...]
-l, --layer=<layername> layer to display
-c, --channel=<c/r/g/b/a> channel to display
-e, --exposure=<exp> set exposure
-g, --gamma=<gamma> set gamma
-t, --tone-map enable tone mapping
-s, --stereo-display enable stereo display
--frame=<frame_number> frame to display
--frame-rate=<fps> set frame rate (FPS)
--live-update monitor file for changes
--cache-all-layers=<on/off> retrieve and cache all layers
--view-controls=<on/off> toggle displaying the view toolbar
--playback-controls=<on/off> toggle displaying playback toolbar
--on-image-load=<gui_behavior> set GUI behavior on image load
--disable-gl disable GL-based display
Feature improvements:
- BSP2 ray tracing acceleration is made the
default one.
For scenes without motion blur, significant to
performance improvement and dramatically lower memory consumption
have been achieved.
For scenes with motion blur, moderate
improvements on performance and memory consumption have been
achieved. Further improvements are planned before mental ray 3.8
final version.
- Hair rendering improvements.
For hair rendering used with ray tracing, a new
splitting scheme is used. The scheme resolves possible rendering
artifacts known from earlier mental ray versions and moderately
improves the performance.
No longer required MI_HAIR_SPLITTING
environment
variable is removed.
Rendering performance of scenes with many hair objects has been
improved.
For hair rendering used in combination with the
rasterizer, the new string option "rast hair
disposable" <bool>
has been added. Default is off. If
enabled, mental ray will tessellate only hair parts inside of the
current rendered tile view frustum and throw them one one the tile
is rendered. This mode is recommended for scenes with many hair as
the memory consumption is decreased significantly at a price of
slightly longer rendering time.
- Progressive rendering, in particular the
progressive rendering API, has been improved. For convenience, the
summary of the options and API is given below. The complete list of
options of relevant string options is given below:
"progressive" <bool>
Turn progressive
rendering on or off. The default is off
.
"progressive subsampling size" <int>
Enables
and controls coarse sampling of the initial displayed images. The
default is 0 for disabled. Values greater than 1 activate
subsampling in blocks of pixels. The value specifies the size of
pixel blocks (size x size) where initial samples are placed first,
typically displaying as a coarse image with the impression of a
lower resolution. The rendered tile size is adjusted to be a
multiple of this subsampling size.
"progressive min samples" <int>
Set the
minimum number of samples per pixel to compute before considering
any of the listed criteria to stop progressive rendering. The
default is 4.
"progressive max samples" <int>
Set number
of samples per pixel to stop progressive rendering. The default is
100.
"progressive max time" <int>
Set time, in
seconds, when to stop progressive rendering. The default is to run
unlimited. Rendering is not guaranteed to stop exactly at the time
specified. Especially for the low limits, certain minimal time
exceeded those limits may be required.
"progressive error threshold" <float>
Set
error threshold to stop progressive rendering. The default is 0.05.
A value of 0.0 would apply no quality-driven rendering termination.
A value of 0.5 will stop rendering already at a very low
quality.
"progressive interactive" <bool>
For the
integrated version of raylib, enables a high performance image
feedback. Rendering can be displayed and modified interactively via
the mi_rc_progressive_*
set of integration functions.
The DISP image mechanism and disp protocols are disabled for the
performance reasons. Default is off
.
For mental ray library, the following integration API is
provided:
- Set the display buffer and start rendering.
extern "C" bool mi_rc_progressive_set_buffer(
void *display_buffer,
const size_tstride,
const miRc_prog_buffer_typetype,
const boolflip);
This function need to be called by the application after calling
mi_rc_run()
. It provides the buffer used by the
application for display to the core and implicitly starts
rendering.
Two types of buffers are supported, 8 bit and floating
point.
typedef enum {
PROG_BUFFER_RGBA_8 = 0,// RGBA, 8bit
PROG_BUFFER_RGBA_32= 1,// RGBA, 32bit fp
} miRc_prog_buffer_type;
Remark: different pixel layouts (like BGRA)
could be implemented by providing a tonemapper function that swaps
channels.
- Update the display. The application can ask
mental ray core at any time if more samples have been computed to
be displayed. The recommended workflow is to query the number of
computed frames via
mi_rc_progressive_get_update_count()
call with certain
time intervals to see if there is something new to display. If a
new frame is computed,
mi_rc_progressive_update_buffer()
can be used to copy
its data to the application's display buffer. The special method
mi_progressive_update_buffer_first_subframe()
will
always return the first subsampled frame, which allows to display
constant image while moving the camera (which can be less visually
disturbing to the user).
extern "C" miUint mi_rc_progressive_get_update_count();
extern "C" miUint mi_rc_progressive_update_buffer();
extern "C" miUint mi_rc_progressive_update_buffer_first_subframe();
There are special return values to the calls to above:
enum {
// The rendering is not running (not yet started or already
// been shut down)
MI_RC_PROGRESSIVE_NOT_RUNNING = 0xfffffff,
// The rendering has finished rendering and is on hold until the
// application calls mi_rc_progressive_shutdown()
MI_RC_PROGRESSIVE_FINISHED = 0xfffffff - 1
};
If the rendering is finished (maximum number of samples taken), the
rendering can either be reset using
mi_rc_progressive_set_camera()
or it can be shutdown
using mi_rc_progressive_shutdown()
.
- Camera interaction. User-driven navigation can
be implemented by calling
mi_rc_progressive_set_camera()
function. This call
stops the current rendering, sets the camera to the specified
values and restarts rendering from there. It is a full reset of the
rendering and the frame number returned by
mi_rc_progressive_get_update_count()
,
mi_rc_progressive_update_buffer()
and
mi_rc_progressive_update_buffer_first_subframe()
are
reset to 0.
extern "C" void mi_rc_progressive_set_camera(
const miMatrix camera_instance,
const miCamera*camera);
- Stop or cancel a running rendering. The
rendering can be stopped or canceled at any time. Stopping mental
ray kernel will complete the current frame. This can be used to
allow user interaction based termination of rendering. Canceling
the rendering will stop sampling immediately, not finishing the
current frame, and, thus, allows to end rendering as fast as
possible.
extern "C" void mi_rc_progressive_stop_rendering();
extern "C" void mi_rc_progressive_cancel_rendering();
- Shutting down the interactive mode. If the
rendering has finished (e.g. of the error threshold has been
fulfilled, the maximum samples were done, or the rendering was
canceled), the mental ray kernel waits for a shutdown to complete.
After shutting down the interactive mode, none of the API functions
are allowed to be called. Interactive rendering can be restarted by
calling
mi_rc_run()
and
mi_rc_progressive_set_buffer()
.
extern "C" void mi_rc_progressive_shutdown();
- Tonemapping. At any time during rendering it
is possible to enable or change tonemapping which can be used for
applying gamma correction or adjusting the brightness on the fly.
Tonemapping is implemented by registering a function which mental
ray kernel will call per pixel. The tonemapping used for
interactive display purpose only. The framebuffer contains the
values without tonemapping. When the final image is written to
disk, the desired tonemapping can be implemented by using an output
shaders.
Tonemapping functions need to map an arbitrary floating point
value to the valid interval [0,1], i.e. clamping to the maximum
displayable value of 1 and minimum value of 0 has to be performed.
The default builtin tonemapper implements [0,1] clamping with no
further pixel modifications.
Although the tonemapping function can be changed at any time,
the tonemap function can be called called until the current frame
has been transferred to the application. Tonemapping is executed in
parallel (multithreaded). The tonemapping function should be
thread-safe.
extern "C" void mi_rc_progressive_set_tonemapper_function(
void(*tonemapper)(float out[3], const float in[3]));
- Image based lighting (IBL) performance has
been improved. IBL compatibility with MetaSL shaders has been
improved.
- Finalgather combination with Irradiance
particles and with Importons have been enabled. If finalgather is
used in combination with Irradiance Particles, the second and
higher diffuse bounces are computed with help of irradiance
particles. If finalgather is used in combination with importons,
importon distribution is used to drive the distribution of
finalgather rays. Especially for scenes with HDR (high dynamic
range) lighting, this may result in a faster convergence/better
images with the same computational efforts.
- DISP protocol has been extended in order to support
stereoscopic images.
- MetaSL 1.1 support. mental ray 3.8 will
provide extended support for MetaSL shaders with the updated
language specification. The stability, performance and
functionality coverage are significantly improved.
MetaSL integration is subject to active development in this
alpha version. In particular, the planned LLVM-based backend is not
a part of this release.
- Shader cache. mental ray provides a mechanism
to avoid recompilation of MetaSL shaders with CIL/.Net (Windows)
and C++ backend. Same mechanism applies to the C++ shaders provided
as source.
If enabled (default), mental ray will create an MD5 hash code
and create a .so / .dll library identified by that hash code, the
platform (32 or 64 bit, Windows, MacOSX or Linux etc), debug or
optimized, and mental ray version. This gives a unique
identification of a shader and avoids possible conflicts if
different version or mental ray are installed on the same system
(such as 32 and 64-bit executables).
The following registries control the shading cache behavior:
{_MI_SHADER_CACHE_ENABLE}
if not set to "off" /
"false", the cache is enabled.
{_MI_SHADER_CACHE_DIR}
if set, specified the
directory to use for the shader cache.
{_MI_SHADER_CACHE_SIZE}
if set, specifies the size
of the cache to maintain, in Megabytes.
For network rendering, mental ray distributes the source code of
metasl shaders. Each host participating in the network rendering
compiles shaders individually. This includes heterogeneous network
support and possible combination of different backends, like CIL on
windows machines and C++ on Linux machines.
- mental ray 3.8 adds the ability to remove MetaSL
shaders from the scene database, and to
change and re-define them. This
allows the workflow when the MetaSL shader source code is edited
interactively. In mental ray 3.7+ it was necessary to assign a new
name for such shaders.
In the current version, shader instances referring to MetaSL
shader need to be deleted before MetaSL shader modification. It is
planned to remove this requirement for the case when only the
implementation part of the shader, but not the interface
input/output parameters are changed.
Changes affecting compatibility with mental ray
3.7/3.7+.
Overview of the Information related to the changes between
mental ray 3.7/3.7+ and 3.8 can be found in the
upgrading38.html section of the manual.
Support for OpenEXR
OpenEXR is a flexible image format designed by Industrial Light
& Magic, which has been integrated in mental ray 3.3.0.389 and
later versions. OpenEXR comes with the following copyright, which
applies only to the OpenEXR portion of mental ray:
Copyright � 2004, Industrial Light & Magic, a division of
Lucasfilm Entertainment Company Ltd. Portions contributed and
copyright held by others as indicated. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following
conditions are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
- Neither the name of Industrial Light & Magic nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
The ``Pxr24'' compression in OpenEXR comes with the following
copyright, which apples only to parts of the OpenEXR portion of
mental ray:
Copyright � 2004, Pixar Animation Studios
All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following
conditions are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
- Neither the name of Pixar Animation Studios nor the names of
its contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
Multi-View Images in OpenEXR files come with the following
copyright, which apples only to parts of the OpenEXR portion of
mental ray:
Copyright � 2007, Weta Digital Ltd
All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following
conditions are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
- Neither the name of Weta Digital nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
Support for Ptex
Ptex is a file format and library for per-face texture mapping
designed by Walt Disney Animation Studios, which has been
integrated in mental ray 3.10.0.1 and later versions. Ptex comes
with the following copyright, which applies only to the Ptex
portion of mental ray:
PTEX SOFTWARE Copyright 2009 Disney Enterprises, Inc. All rights
reserved
Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following
conditions are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
- The names "Disney", "Walt Disney Pictures", "Walt Disney
Animation Studios" or the names of its contributors may NOT be used
to endorse or promote products derived from this software without
specific prior written permission from Walt Disney Pictures.
Disclaimer: THIS SOFTWARE IS PROVIDED BY WALT DISNEY PICTURES
AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT
AND TITLE ARE DISCLAIMED. IN NO EVENT SHALL WALT DISNEY PICTURES,
THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
Support for Alembic
Alembic is the computer graphics interchange format developed by
Lucasfilm and Sony Imageworks. In mental ray 3.10, support is
provided in geometry shader form. Alembic comes with the following
copyright, which applies only to the Alembic portion of mental
ray:
TM & � 2010-2011 Lucasfilm Entertainment Company Ltd. or
Lucasfilm Ltd. All rights reserved.
Industrial Light & Magic, ILM and the Bulb and Gear design
logo are all registered trademarks or service marks of Lucasfilm
Ltd.
� 2010-2011 Sony Pictures Imageworks Inc. All rights
reserved.
Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following
conditions are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
- Neither the name of Industrial Light & Magic nor the names
of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
ALEMBIC ATTACHMENT A — REQUIRED NOTICES FOR DISTRIBUTION
The Alembic Software is distributed along with certain third
party components licensed under various open source software
licenses ("Open Source Components"). In addition to the warranty
disclaimers contained in the open source licenses found below,
Industrial Light & Magic, a division of Lucasfilm Entertainment
Company Ltd. ("ILM") makes the following disclaimers regarding the
Open Source Components on behalf of itself, the copyright holders,
contributors, and licensors of such Open
Source Components:
TO THE FULLEST EXTENT PERMITTED UNDER APPLICABLE LAW, THE OPEN
SOURCE COMPONENTS ARE PROVIDED BY THE COPYRIGHT HOLDERS,
CONTRIBUTORS, LICENSORS, AND ILM "AS IS" AND ANY REPRESENTATIONS OR
WARRANTIES OF ANY KIND, WHETHER ORAL OR WRITTEN, WHETHER EXPRESS,
IMPLIED, OR ARISING BY STATUTE, CUSTOM, COURSE OF DEALING, OR TRADE
USAGE, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF
TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT WILL THE COPYRIGHT
OWNER, CONTRIBUTORS, LICENSORS, OR ILM AND/OR ITS AFFILIATES BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION), HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THE OPEN SOURCE COMPONENTS, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Boost C++ Libraries.
Boost Software License – Version 1.0 August 17th, 2003
Permission is hereby granted, free of charge, to any person or
organization obtaining a copy of the software and accompanying
documentation covered by this license (the "Software") to use,
reproduce, display, distribute, execute, and transmit the Software,
and to prepare derivative works of the Software, and to permit
third-parties to whom the Software is furnished to do so, all
subject to the following:
The copyright notices in the Software and this entire statement,
including the above license grant, this restriction and the
following disclaimer, must be included in all copies of the
Software, in whole or in part, and all derivative works of the
Software, unless such copies or derivative works are solely in the
form of machine-executable object code generated by a source
language processor.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE
DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER
LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
MurmurHash3
The MIT License (MIT)
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use, copy,
modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Copyright
Information
� 1986, 2012 NVIDIA Corporation. All rights reserved.
This document is protected under copyright law. The contents of
this document may not be translated, copied or duplicated in any
form, in whole or in part, without the express written permission
of NVIDIA Corporation.
The information contained in this document is subject to change
without notice. NVIDIA Corporation and its employees shall not be
responsible for incidental or consequential damages resulting from
the use of this material or liable for technical or editorial
omissions made herein.
NVIDIA, the NVIDIA logo, and DiCE, imatter, iray, mental cloud,
mental images, mental matter, mental mesh, mental mill, mental
queue, mental ray, Metanode, MetaSL, neuray, Phenomenon,
RealityDesigner, RealityPlayer, RealityServer, rendering
imagination visible, Shape-By-Shading, and SPM, are trademarks
and/or registered trademarks of NVIDIA Corporation. Other product
names mentioned in this document may be trademarks or registered
trademarks of their respective companies and are hereby
acknowledged.