3: A Retargetable Forward and Inverse Renderer
Project description
Introduction
Mitsuba 3 is a research-oriented rendering system for forward and inverse light transport simulation developed at EPFL in Switzerland. It consists of a core library and a set of plugins that implement functionality ranging from materials and light sources to complete rendering algorithms.
Mitsuba 3 is retargetable: this means that the underlying implementations and data structures can transform to accomplish various different tasks. For example, the same code can simulate both scalar (classic one-ray-at-a-time) RGB transport or differential spectral transport on the GPU. This all builds on Dr.Jit, a specialized just-in-time (JIT) compiler developed specifically for this project.
Main Features
-
Cross-platform: Mitsuba 3 has been tested on Linux (
x86_64
), macOS (aarch64
,x86_64
), and Windows (x86_64
). -
High performance: The underlying Dr.Jit compiler fuses rendering code into kernels that achieve state-of-the-art performance using an LLVM backend targeting the CPU and a CUDA/OptiX backend targeting NVIDIA GPUs with ray tracing hardware acceleration.
-
Python first: Mitsuba 3 is deeply integrated with Python. Materials, textures, and even full rendering algorithms can be developed in Python, which the system JIT-compiles (and optionally differentiates) on the fly. This enables the experimentation needed for research in computer graphics and other disciplines.
-
Differentiation: Mitsuba 3 is a differentiable renderer, meaning that it can compute derivatives of the entire simulation with respect to input parameters such as camera pose, geometry, BSDFs, textures, and volumes. It implements recent differentiable rendering algorithms developed at EPFL.
-
Spectral & Polarization: Mitsuba 3 can be used as a monochromatic renderer, RGB-based renderer, or spectral renderer. Each variant can optionally account for the effects of polarization if desired.
Tutorial videos, documentation
We've recorded several [YouTube videos][10] that provide a gentle introduction Mitsuba 3 and Dr.Jit. Beyond this you can find complete Juypter notebooks covering a variety of applications, how-to guides, and reference documentation on [readthedocs][2].
Installation
We provide pre-compiled binary wheels via PyPI. Installing Mitsuba this way is as simple as running
pip install mitsuba
on the command line. The Python package includes four variants by default:
scalar_spectral
scalar_rgb
llvm_ad_rgb
cuda_ad_rgb
The first two perform classic one-ray-at-a-time simulation using either a RGB or spectral color representation, while the latter two can be used for inverse rendering on the CPU or GPU. To access additional variants, you will need to compile a custom version of Dr.Jit using CMake. Please see the documentation for details on this.
Requirements
Python >= 3.8
- (optional) For computation on the GPU:
Nvidia driver >= 495.89
- (optional) For vectorized / parallel computation on the CPU:
LLVM >= 11.1
Usage
Here is a simple "Hello World" example that shows how simple it is to render a scene using Mitsuba 3 from Python:
# Import the library using the alias "mi"
import mitsuba as mi
# Set the variant of the renderer
mi.set_variant('scalar_rgb')
# Load a scene
scene = mi.load_dict(mi.cornell_box())
# Render the scene
img = mi.render(scene)
# Write the rendered image to an EXR file
mi.Bitmap(img).write('cbox.exr')
Tutorials and example notebooks covering a variety of applications can be found in the [documentation][2].
About
This project was created by Wenzel Jakob. Significant features and/or improvements to the code were contributed by Sébastien Speierer, Nicolas Roussel, Merlin Nimier-David, Delio Vicini, Tizian Zeltner, Baptiste Nicolet, Miguel Crespo, Vincent Leroy, and Ziyi Zhang.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for mitsuba-3.0.1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c5be9328b2838dea88026fd07daca8efe11edaef9babec2178f12e3fe7d2293b |
|
MD5 | 218472c1ed561d1958f4f90270f61dc3 |
|
BLAKE2b-256 | 5d74c70f997f889f6c468a0fb4e1e3fc41e09cee54b28fd329d7bd845b9af913 |
Hashes for mitsuba-3.0.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc99e66a5c3dab4d1c494d789729238e0ecd431ef3ce902a6858516861a1c770 |
|
MD5 | 640ae37038988ed1498262bcedd66abe |
|
BLAKE2b-256 | 1188c51e2d82b9f018480880f5846cb7a17702e4cb4d323e5eb85b1859a1e545 |
Hashes for mitsuba-3.0.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46be67f65cce265031ac6cd6a5f3a25a724b36e52a97ef5c9cf448410ee28a7f |
|
MD5 | 911676fde6ef52f3789d65ccc4e049b7 |
|
BLAKE2b-256 | 8f38114768360630ba6ab8613b8793a3f693dddd70a57e048da295b99bcc0722 |
Hashes for mitsuba-3.0.1-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e776325c79c26bdeafc258c4fe7f5b1e944daaaeebeab68c761a3233bb2b259 |
|
MD5 | dc5cbda79945b814b04f29013f6031bd |
|
BLAKE2b-256 | e1c62cbadb767b554c5568a6d964629dc1771fbfb26b7bb3f8a3a6c28cf58965 |
Hashes for mitsuba-3.0.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83f6ab5a3ebc92afb9997e3762745e47689e3955a143934642158b12e093d71a |
|
MD5 | 1d48779a93b1a13bf3e0b81dd1b75cb9 |
|
BLAKE2b-256 | ce22e413b27b2030289051673f47f14a355ff2a64c744b3d3cc7eef69c6d7833 |
Hashes for mitsuba-3.0.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f9c7060d35e2ecd9ed4e62c5e7004b62718be7ef5b1c4e649dae5e0ef1e5954e |
|
MD5 | 6d0f07ac176a18c95373c8d1192e9247 |
|
BLAKE2b-256 | ee451f05e252343c11341b0b6ea34d0ab837313094a9eeb5d000a896c53ab728 |
Hashes for mitsuba-3.0.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e07e9d8e5f74c921f7e5d6d983ddc1c6b6052f9dd422259c7386b08db0419876 |
|
MD5 | bd5cfdaec2f13951c1c66fdae99af89e |
|
BLAKE2b-256 | 46b2e29fda2c98b3fb577b260fa39d4d3e54e379e30025a85b152dad8418075d |
Hashes for mitsuba-3.0.1-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20992059e860727937d8dbbbc054f3fe3ec8121779ac8fbf971f866ed304f003 |
|
MD5 | f77a9a1d51cc64834c87099b6e1dc1c8 |
|
BLAKE2b-256 | 2119fc2a2bd3ec67cd1e4e7ca21df3773c76c8ceaeca89eab4bbbed4eebd1b1b |
Hashes for mitsuba-3.0.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d010298cb22854ebd4690c03e50ca02a4d88664afe7c87d958672c542be05d49 |
|
MD5 | cc2c2b380246fb9a308cf645705fe722 |
|
BLAKE2b-256 | fc9801974b8188515a72d82e53fd577e3bc77036cd96c9228c09e4a80e7a4b22 |
Hashes for mitsuba-3.0.1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 32ef27aaf9c47df55680a7feac7800a4652566e9672bc36164d7317444261fba |
|
MD5 | 8ab7eaa61efb91f8657960765c156e13 |
|
BLAKE2b-256 | ddc40535a284fac1622683f9bdb774fa0067d2bc16515ded16fb1d9af8f77f6d |
Hashes for mitsuba-3.0.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba2e71b2cca7754c68881c9714f70cd825ffa8ed989bdee91cbcc82360178821 |
|
MD5 | 09fc4dedc6df727eae985bb0e0e4c749 |
|
BLAKE2b-256 | f775554f42ae3fb27126ea08d151615a48f31f12e35c374e82ee722c6082cda5 |
Hashes for mitsuba-3.0.1-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e27db4bbb65a4fe4047fe4b73433b3d3177c740e62ec1ad975f30f3546fc5457 |
|
MD5 | fbead6b4dd3d773572fd181b34efba12 |
|
BLAKE2b-256 | cca863f843d1244ec0bc8d703e8f9da070319f72649cffeffcd2ee876e23530b |