Introduction

mental ray is a general-purpose renderer which creates images of exceptional quality and achieves high performance through the exploitation of parallelism on both multiprocessor machines and across networks of machines.

The software uses advanced rendering acceleration techniques such as a scanline algorithm for primary visible surface determination, ray classification for secondary rays, and separate shadow ray classification to accelerate the calculation of shadows. mental ray also supports the BSP (binary space partitioning) algorithm. These algorithms can be fine-tuned by optional user-settable parameters to achieve even higher performance than normally achieved by the built-in automatic scene cost analysis.

Software Architecture

mental ray is a library for integration into third-party software, as well as for integration in standalone versions that read a variety of scene formats. In the standard standalone version, input is via a single .mi file in ASCII. The .mi format is the native scene description format of mental ray. Supported geometric primitives include polygons, and trimmed free-form surfaces. Polygons may be concave or convex and may contain holes.

Free-form surfaces may be input in non-uniform rational B-spline (NURB), Bézier, Taylor polynomial, or cardinal form, or through the use of basis matrices. Free-form surfaces may be of arbitrary degree. The geometry of free-form surfaces may be further modified by the application of trimming curves and displacement maps. Trimming curves need not have the same representation as the surface. Surfaces are triangulated internally using a variety of available approximation techniques which may be dependent on or independent of the distance from the surface to the camera.

Connectivity information between free-form surfaces can be given which will stitch surfaces together and close gaps. If the connectivity is unknown, it can be automatically determined at run-time.

Shaders

The functionality of mental ray may be extended through runtime linking of user-supplied C subroutines, called shaders. This feature can be used to create procedural textures, including bump and displacement maps, materials, atmosphere and other volume rendering effects, environments, camera lenses, and light sources. The user has access to a convenient environment of supporting functions and macros for use in writing shaders. The parameters of a user-provided shader can be freely chosen with name and type; user-defined shaders are not restricted to a list of predefined parameters. Available parameter types include integers, scalars, vectors, colors, textures, light sources, arrays, and nested structures. When a user-defined shader is called, mental ray will provide parameter values according to standard C calling conventions.

The built-in material shaders provide a rich variety of parameters for describing material properties, including ambient color, diffuse color, specular color, transmission and shadow colors, a specular exponent, reflectivity, and transparency coefficients, and an index of refraction. These parameters are interpreted by the shader specified for the material. All material parameters except the index of refraction may be mapped with one or more textures. (see texture shader) Color textures include opacity information and if multiple textures are applied to a single parameter they are composited. In addition, one or more bump, displacement, and/or reflection maps may be associated with a material.

Light passing through the space surrounding objects, as well as light passing through solid objects, is modified according to volume shaders, which allow the creation of effects such as fog and non-homogeneous transparency effects. In addition to standard material environment maps, a global environment map can be specified that provides a solid background for rays leaving the scene.

mental ray can generate a variety of output formats, including common picture file formats and special-purpose formats for depth maps and label channels. Alpha channels and both 8 and 16 bits per component are supported. User-supplied functions can be applied to the rendered image before it is written to disk.

A line rendering capability is available which draws anti-aliased contour lines between different surfaces, within the same surface in the case of partial self-occlusion, and in places where the variation of the normal to the surface shows a discontinuity.

mental ray has been designed to take full advantage of parallel hardware, including both thread parallelism on a single machine, and process level parallelism across networks of machines, and on massively parallel distributed-memory systems. mental ray takes advantage of thread parallelism automatically; the use of other machines on the network as render servers may be configured by the user.

mental ray can be combined with any suitable modeling and/or animation system via the .mi file format, or by integrating the library version into the modeling and animation system, or by combining the library with a translator that reads the modeling system's native file format. mental ray has been fully integrated into SOFTIMAGE's Creative Environment, and supports all rendering features of Version 2.6 and 3.0, as well as additional rendering functionality which is made easily accessible through corresponding enhancements to the user interface of the Creative Environment. mental ray is also the rendering component of Dassault Système's CATIA system. Specifically, it is integrated into the CATIA Visualization Studio, supporting all geometric and nongeometric CATIA entities. Finally, mental ray is available as a stand-alone program for batch-mode rendering.

In addition, translators are currently available for Wavefront Technologies' Advanced Visualizer, Alias' Scene Description Language, and the DESIRE format.



Table of Contents