248 lines
11 KiB
Plaintext
248 lines
11 KiB
Plaintext
Mitsuba renderer v2.0.2 (c) 2010 by Wenzel Jakob
|
|
|
|
Features:
|
|
- Runs on Linux (32/64-bit), MacOS X (x86/PPC) and Microsoft
|
|
Windows (32-bit).
|
|
- Written in portable C++ with optional SSE2 optimizations when compiled
|
|
for the i386 and x86_64 platforms.
|
|
- Modular architecture inspired by PBRT.
|
|
- Fully parallelized for multi-core operation.
|
|
- Supports interactive walkthroughs using OpenGL and real-time coherent ray tracing.
|
|
- Network rendering - can distribute the computational load of a single job
|
|
over a cluster without requiring a shared filesystem.
|
|
- For convenience, Mitsuba can also transparently SSH into a cluster,
|
|
remotely launch itself and communicate through the encrypted link.
|
|
- Uses a O(n log n) KD-tree compiler with primitive clipping support
|
|
and Havran's fast traversal algorithm.
|
|
- Highly optimized SSE2 intersection code for triangle meshes. Custom
|
|
shapes such as spheres and cylinders are also supported.
|
|
- High dynamic-range (EXR) support for textures and generated images
|
|
- Cross-platform hardware rendering abstraction layer.
|
|
- BSDFs: Lambertian, Perfect Mirror, Phong, Dielectric, Anisotropic Ward,
|
|
Microfacet BRDF, Rough Glass (Walter et al.),
|
|
- Supports homogeneous as well as heterogeneous participating media
|
|
- Implements Jensen's dipole approximations to sub-surface scattering
|
|
- Supports a variety of image reconstruction filters
|
|
(eg. Mitchell-Netravali, Catmull-Rom, Gaussian, Lanczos-Sinc, ..)
|
|
- Comes with several numerical testbenches, which verify rendered
|
|
test scenes against analytic results.
|
|
- Full spectral rendering is supported.
|
|
- Light sources: area lights, point lights, environment maps,
|
|
collimated beams.
|
|
- QMC sampling
|
|
- Cluster job submission support using PBS
|
|
- Low dynamic-range textures (JPEG and PNG)
|
|
- Depth of field
|
|
- Adaptive/error-estimating sampling
|
|
|
|
External dependencies:
|
|
A recent C++ compiler (GCC 4.1-4.3 or Visual Studio 2005/2008)
|
|
SCons (An advanced build system built on top of Python)
|
|
Xerces-C (For scene description XML parsing)
|
|
GLEW (For the hardware acceleration abstraction layer)
|
|
OpenEXR (Needed for high dynamic-range image file export/import)
|
|
Boost (An extensive C++ class library)
|
|
libpng & libjpeg (For PNG & JPG image import/export)
|
|
|
|
When building Mitsuba on Windows or OSX, it is recommended to use
|
|
the pre-compiled versions of these dependencies, which are supplied
|
|
with the source code. If you follow the instructions below, this
|
|
will happen automatically.
|
|
|
|
Building:
|
|
Go to the "config" directory and copy the "config.py" version which
|
|
best matches your environment. Some minor adaptions may be
|
|
required. The following configurations are currently provided:
|
|
|
|
config-linux.py - Linux build (GCC 4.2+ recommended)
|
|
config-linux-icc.py - Linux build using the Intel compiler
|
|
config-darwin-x86.py - OSX build targeting x86 using GCC4.2
|
|
config-darwin-ppc.py - OSX build targeting PPC using GCC4.2
|
|
config-msvc2005-win32.py - Windows build using MSVC 2005 or 2008 (32 bit)
|
|
config-msvc2005-win64.py - Windows build using MSVC 2005 or 2008 (64 bit)
|
|
|
|
Make sure that you have a working install of Python. On the Windows
|
|
platform, SCons (http://www.scons.org/) must also be installed before
|
|
building.
|
|
|
|
Next, run the script "tools/build.sh" (Linux, OSX) or "scons" (Windows)
|
|
to start compiling using the supplied version of SCons. On Windows, this
|
|
must be done on the Visual Studio command prompt (e.g by launching
|
|
Start->Programs->Microsoft Visual Studio 2005->
|
|
Visual Studio Tools->Visual Studio 2005 Command Prompt).
|
|
|
|
If Windows complains about a missing library named 'MSVCR80.dll',
|
|
please install the redistributable in "tools/windows/bin". Also,
|
|
be sure to add the path containing the Qt tools (e.g. 'moc.exe')
|
|
to the PATH.
|
|
|
|
To build an universal binary on OSX, enter
|
|
|
|
$ tools/darwin/build-universal.sh
|
|
|
|
and have a cup of coffee :).
|
|
|
|
Compilation flags:
|
|
Some of the compilation flags in "config.py" have a big impact on
|
|
the resulting executable:
|
|
|
|
'MTS_DEBUG' - Enable assertions etc.. Usually a good idea.
|
|
'SINGLE_PRECISION' - Use single precision floating point values
|
|
'DOUBLE_PRECISION' - Use double precision floating point values
|
|
'MTS_SSE' - Activate optimized SSE routines.
|
|
'MTS_HAS_COHERENT_RT' - Include coherent ray tracing support (needs SSE)
|
|
'MTS_DEBUG_FP' - Generated NaNs will cause FP exceptions, which
|
|
can be caught in a debugger. Warning: This is slow!
|
|
|
|
Single precision is sufficient in most cases. The use of double precision
|
|
currently precludes the SSE feature, since the accelerated code has only
|
|
been written as a single-precision version.
|
|
|
|
Getting started:
|
|
On Linux/OSX, the library path must be manually set: on the command line,
|
|
this can be done using the script "setpath.sh":
|
|
|
|
$ . setpath.sh
|
|
|
|
On Windows, all relevant files are installed to 'dist' and the binaries
|
|
should be executed from there.
|
|
|
|
On Linux, an interactive preview can be launched by entering (e.g.)
|
|
|
|
$ mtsgui scenes/cornell/box.xml
|
|
|
|
Rendering can be started by pressing the 'r' key.
|
|
|
|
The 'mitsuba' binary is an alternative non-interactive rendering
|
|
frontend for command-line use and batch job operation.
|
|
|
|
To get a listing of the supported command-line parameters, run
|
|
the executables without parameters:
|
|
|
|
$ mitsuba
|
|
|
|
Mitsuba version 2.0.2, Copyright (c) 2010 Wenzel Jakob
|
|
Usage: mitsuba [options] <One or more scene XML files>
|
|
Options/Arguments:
|
|
-h Display this help text
|
|
|
|
-D key=val Define a constant, which can referenced as "$key" in the scene
|
|
|
|
-o fname Write the output image to the file denoted by "fname"
|
|
|
|
-a p1;p2;.. Add one or more entries to the resource search path
|
|
|
|
-p count Override the detected number of processors. Useful for reducing
|
|
the load or creating scheduling-only nodes in conjunction with
|
|
the -c and -s parameters, e.g. -p 0 -c host1;host2;host3,...
|
|
|
|
-q Quiet mode - do not print any log messages to stdout
|
|
|
|
-c hosts Network rendering: connect to mtssrv instances over a network.
|
|
Requires a semicolon-separated list of host names of the form
|
|
host.domain[:port] for a direct connection
|
|
or
|
|
user@host.domain[:path] for a SSH connection (where
|
|
"path" denotes the place where Mitsuba is checked
|
|
out -- by default, "~/mitsuba" is used)
|
|
|
|
-s file Connect to additional Mitsuba servers specified in a file
|
|
with one name per line (same format as in -c)
|
|
|
|
-j count Simultaneously schedule several scenes. Can sometimes accelerate
|
|
rendering when large amounts of processing power are available
|
|
(e.g. when running Mitsuba on a cluster. Default: 1)
|
|
|
|
-n name Assign a node name to this instance (Default: host name)
|
|
|
|
-t Test case mode (see Mitsuba docs for more information)
|
|
|
|
-v Be more verbose
|
|
|
|
-b Disable progress bars
|
|
|
|
The README file included with the distribution contains further information.
|
|
|
|
On Windows, a scene file can simply be dropped on the 'mtsgui.exe'
|
|
executable to start the interactive preview.
|
|
|
|
When doing lengthy command line renders on Linux or OSX, it is possible
|
|
to send a signal to the process using 'kill -HUP', causing Mitsuba to
|
|
write out the partially finished image and continue rendering.
|
|
|
|
Network rendering:
|
|
For extremely lengthy rendering tasks, it may make sense to spread the
|
|
computational load of a single job over multiple machines. Mitsuba
|
|
supports this via two mechanisms: The easiest and most secure method can
|
|
only be used when Linux or OSX is installed on the server machine
|
|
machine:
|
|
|
|
This works as follows: The client creates an encrypted SSH connection
|
|
to the server, launches a Mitsuba worker instance on the remote end
|
|
and tunnels all subsequent communication over the encrypted link. All
|
|
of this can be done simply by running
|
|
|
|
$ mitsuba -c user1@host:path-to-mitsuba-install path/to/scene.xml
|
|
|
|
Passwordless logins must be enabled for this to work, which generally
|
|
entails installing a suitable "~/.ssh/authorized_keys2" file on the server
|
|
and running "ssh-agent" on the client. On Windows, the situation is a bit
|
|
more complicated because it does not come with a suitable SSH client by
|
|
default. To get SSH to work, biquaque requires plink.exe (from PUTTY) to
|
|
be on the $PATH. For passwordless authentication with a Linux/OSX-based
|
|
server, convert your private key to PuTTY's format (with the help
|
|
of puttygen.exe). Afterwards, pageant.exe is required to load and
|
|
authenticate the key. All of these binaries are available in
|
|
'tools/windows/bin'
|
|
|
|
The alternative to SSH-based communication is to run a dedicated mitsuba
|
|
server:
|
|
|
|
$ mtssrv
|
|
|
|
By default, the server is configured to listen on port 7554. Clients can
|
|
then connect using the following syntax:
|
|
|
|
$ mitsuba -c host1;host2:1234 path/to/scene.xml
|
|
|
|
Note that it is possible to use both connection mechanisms at the same
|
|
time and connect to, say, 3 SSH-based servers and 10 dedicated servers.
|
|
|
|
CAUTION: The dedicated Mitsuba server setup uses no authentication
|
|
mechanism whatsoever! It might easily be possible to perform denial of
|
|
service- or remote code execution attacks by sending corrupt requests
|
|
to the server. It was not written to withstand these kinds of attacks
|
|
and is only meant as a high-performance option for trusted and firewalled
|
|
networks.
|
|
|
|
Cluster rendering:
|
|
The directory 'tools/pbs' contains sample files illustrating how lengthy
|
|
render jobs can be sent to a cluster using the PBS job submission system.
|
|
|
|
Structure:
|
|
Mitsuba is split into several libraries and modular extension types:
|
|
|
|
libcore - Core components such as plugin support, logging, file
|
|
streams, threading, scheduling and elementary graphics
|
|
classes such as color spectra + matrices.
|
|
librender - Ray-tracing and rendering-specific components.
|
|
libhw - Hardware acceleration using OpenGL. Used by some
|
|
of the integrators.
|
|
|
|
cameras - Different types of cameras
|
|
bsdfs - Bidirectional scattering distribution functions
|
|
films - Floating-point framebuffer implementations
|
|
integrators - Rendering algorithms such as 'direct', 'photonmapper', etc.
|
|
luminaires - Different types of light sources for use in scenes.
|
|
samplers - Sampling methods (independent/stratified/QMC sampling etc.)
|
|
subsurface - Subsurface scattering integrators
|
|
textures - Procedural and loadable surface textures
|
|
shapes - Intersection primitives and 3D model loaders
|
|
rfilters - Image reconstruction filters
|
|
|
|
Acknowledgements:
|
|
The architecture of Mitsuba as well as some individual components
|
|
are based on implementations discussed in:
|
|
"Physically Based Rendering - From Theory To Implementation"
|
|
by Matt Pharr and Greg Humphreys.
|