Documentation | Vidéos tutorielles | Linux | Mac OS | Fenêtres | PyPI |
---|---|---|---|---|---|
Il existe actuellement une grande quantité de travail non documenté et instable en cours dans la branche master
. Nous vous recommandons fortement d'utiliser notre dernière version jusqu'à nouvel ordre.
Si vous souhaitez déjà essayer les changements à venir, veuillez consulter ce guide de portage. Il devrait couvrir la plupart des nouvelles fonctionnalités et des modifications majeures à venir.
Mitsuba 3 est un système de rendu orienté recherche pour la simulation du transport léger vers l'avant et vers l'arrière, développé à l'EPFL en Suisse. Il se compose d'une bibliothèque principale et d'un ensemble de plugins qui implémentent des fonctionnalités allant des matériaux et sources de lumière aux algorithmes de rendu complets.
Mitsuba 3 est reciblable : cela signifie que les implémentations et les structures de données sous-jacentes peuvent se transformer pour accomplir diverses tâches différentes. Par exemple, le même code peut simuler à la fois le transport RVB scalaire (classique un rayon à la fois) ou le transport spectral différentiel sur le GPU. Tout cela s'appuie sur Dr.Jit, un compilateur spécialisé juste à temps (JIT) développé spécifiquement pour ce projet.
Multiplateforme : Mitsuba 3 a été testé sur Linux ( x86_64
), macOS ( aarch64
, x86_64
) et Windows ( x86_64
).
Hautes performances : le compilateur Dr.Jit sous-jacent fusionne le code de rendu dans des noyaux qui atteignent des performances de pointe en utilisant un backend LLVM ciblant le processeur et un backend CUDA/OptiX ciblant les GPU NVIDIA avec accélération matérielle de lancer de rayons.
Python d'abord : Mitsuba 3 est profondément intégré à Python. Les matériaux, les textures et même les algorithmes de rendu complets peuvent être développés en Python, que le système compile (et éventuellement différencie) à la volée. Cela permet l’expérimentation nécessaire à la recherche en infographie et dans d’autres disciplines.
Différenciation : Mitsuba 3 est un moteur de rendu différentiable, ce qui signifie qu'il peut calculer les dérivées de l'ensemble de la simulation par rapport aux paramètres d'entrée tels que la pose de la caméra, la géométrie, les BSDF, les textures et les volumes. Il implémente les récents algorithmes de rendu différenciable développés à l'EPFL.
Spectral et polarisation : Mitsuba 3 peut être utilisé comme moteur de rendu monochromatique, moteur de rendu basé sur RVB ou moteur de rendu spectral. Chaque variante peut éventuellement prendre en compte les effets de polarisation si on le souhaite.
Nous avons enregistré plusieurs vidéos YouTube qui présentent en douceur Mitsuba 3 et Dr.Jit. Au-delà de cela, vous pouvez trouver des cahiers Juypter complets couvrant une variété d'applications, des guides pratiques et une documentation de référence sur readthedocs.
Nous fournissons des roues binaires précompilées via PyPI. Installer Mitsuba de cette façon est aussi simple que d'exécuter
pip install mitsuba
sur la ligne de commande. Le package Python comprend treize variantes par défaut :
scalar_rgb
scalar_spectral
scalar_spectral_polarized
llvm_ad_rgb
llvm_ad_mono
llvm_ad_mono_polarized
llvm_ad_spectral
llvm_ad_spectral_polarized
cuda_ad_rgb
cuda_ad_mono
cuda_ad_mono_polarized
cuda_ad_spectral
cuda_ad_spectral_polarized
Les deux premiers effectuent une simulation classique un rayon à la fois en utilisant une représentation des couleurs RVB ou spectrale, tandis que les deux derniers peuvent être utilisés pour un rendu inverse sur le CPU ou le GPU. Pour accéder à des variantes supplémentaires, vous devrez compiler une version personnalisée de Dr.Jit à l'aide de CMake. Veuillez consulter la documentation pour plus de détails à ce sujet.
Python >= 3.8
Nvidia driver >= 495.89
LLVM >= 11.1
Voici un exemple simple « Hello World » qui montre à quel point il est simple de rendre une scène à l'aide de Mitsuba 3 à partir de 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' )
Des didacticiels et des exemples de cahiers couvrant une variété d'applications peuvent être trouvés dans la documentation.
Ce projet a été créé par Wenzel Jakob. Des fonctionnalités et/ou améliorations significatives du code ont été apportées par Sébastien Speierer, Nicolas Roussel, Merlin Nimier-David, Delio Vicini, Tizian Zeltner, Baptiste Nicolet, Miguel Crespo, Vincent Leroy et Ziyi Zhang.
Lorsque vous utilisez Mitsuba 3 dans des projets académiques, veuillez citer :
@software { Mitsuba3 ,
title = { Mitsuba 3 renderer } ,
author = { Wenzel Jakob and Sébastien Speierer and Nicolas Roussel and Merlin Nimier-David and Delio Vicini and Tizian Zeltner and Baptiste Nicolet and Miguel Crespo and Vincent Leroy and Ziyi Zhang } ,
note = { https://mitsuba-renderer.org } ,
version = { 3.1.1 } ,
year = 2022
}