Dokumentation | Tutorial-Videos | Linux | MacOS | Windows | PyPI |
---|---|---|---|---|---|
Derzeit werden in der master
zahlreiche undokumentierte und instabile Arbeiten ausgeführt. Wir empfehlen Ihnen dringend, bis auf Weiteres unsere neueste Version zu verwenden.
Wenn Sie die bevorstehenden Änderungen bereits ausprobieren möchten, schauen Sie sich bitte diesen Portierungsleitfaden an. Es sollte die meisten kommenden neuen Funktionen und Breaking Changes abdecken.
Mitsuba 3 ist ein forschungsorientiertes Rendering-System für die Vorwärts- und Rückwärts-Lichttransportsimulation, das an der EPFL in der Schweiz entwickelt wurde. Es besteht aus einer Kernbibliothek und einer Reihe von Plugins, die Funktionen implementieren, die von Materialien und Lichtquellen bis hin zu vollständigen Rendering-Algorithmen reichen.
Mitsuba 3 ist retargetierbar : Das bedeutet, dass die zugrunde liegenden Implementierungen und Datenstrukturen transformiert werden können, um verschiedene Aufgaben zu erfüllen. Beispielsweise kann derselbe Code sowohl den skalaren (klassischen, jeweils einen Strahl gleichzeitig ausführenden) RGB-Transport als auch den differenziellen Spektraltransport auf der GPU simulieren. Dies alles basiert auf Dr.Jit, einem speziellen Just-in-Time -Compiler (JIT), der speziell für dieses Projekt entwickelt wurde.
Plattformübergreifend : Mitsuba 3 wurde unter Linux ( x86_64
), macOS ( aarch64
, x86_64
) und Windows ( x86_64
) getestet.
Hohe Leistung : Der zugrunde liegende Dr.Jit-Compiler verschmilzt Rendering-Code in Kerneln, die mithilfe eines LLVM-Backends für die CPU und eines CUDA/OptiX-Backends für NVIDIA-GPUs mit Raytracing-Hardwarebeschleunigung eine hochmoderne Leistung erzielen.
Python zuerst : Mitsuba 3 ist tief in Python integriert. Materialien, Texturen und sogar vollständige Rendering-Algorithmen können in Python entwickelt werden, die das System im laufenden Betrieb JIT-kompiliert (und optional differenziert). Dies ermöglicht die Experimente, die für die Forschung in der Computergrafik und anderen Disziplinen erforderlich sind.
Differenzierung : Mitsuba 3 ist ein differenzierbarer Renderer, was bedeutet, dass er Ableitungen der gesamten Simulation in Bezug auf Eingabeparameter wie Kameraposition, Geometrie, BSDFs, Texturen und Volumina berechnen kann. Es implementiert aktuelle differenzierbare Rendering-Algorithmen, die an der EPFL entwickelt wurden.
Spektral und Polarisation : Mitsuba 3 kann als monochromatischer Renderer, RGB-basierter Renderer oder Spektralrenderer verwendet werden. Bei Bedarf kann jede Variante optional die Auswirkungen der Polarisation berücksichtigen.
Wir haben mehrere YouTube-Videos aufgenommen, die eine sanfte Einführung in Mitsuba 3 und Dr.Jit bieten. Darüber hinaus finden Sie auf readthedocs vollständige Juypter-Notizbücher zu verschiedenen Anwendungen, Anleitungen und Referenzdokumentationen.
Wir stellen vorkompilierte Binärräder über PyPI bereit. Mitsuba auf diese Weise zu installieren ist so einfach wie das Ausführen
pip install mitsuba
auf der Kommandozeile. Das Python-Paket enthält standardmäßig dreizehn Varianten:
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
Die ersten beiden führen eine klassische Einzelstrahl-Simulation unter Verwendung einer RGB- oder Spektralfarbdarstellung durch, während die beiden letzteren für das inverse Rendering auf der CPU oder GPU verwendet werden können. Um auf zusätzliche Varianten zuzugreifen, müssen Sie mit CMake eine benutzerdefinierte Version von Dr.Jit kompilieren. Einzelheiten dazu finden Sie in der Dokumentation.
Python >= 3.8
Nvidia driver >= 495.89
LLVM >= 11.1
Hier ist ein einfaches „Hello World“-Beispiel, das zeigt, wie einfach es ist, eine Szene mit Mitsuba 3 aus Python zu rendern:
# 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' )
In der Dokumentation finden Sie Tutorials und Beispiel-Notebooks zu verschiedenen Anwendungen.
Dieses Projekt wurde von Wenzel Jakob erstellt. Bedeutende Funktionen und/oder Verbesserungen des Codes wurden von Sébastien Speierer, Nicolas Roussel, Merlin Nimier-David, Delio Vicini, Tizian Zeltner, Baptiste Nicolet, Miguel Crespo, Vincent Leroy und Ziyi Zhang beigesteuert.
Wenn Sie Mitsuba 3 in akademischen Projekten verwenden, geben Sie bitte Folgendes an:
@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
}