Documentação | Vídeos tutoriais | Linux | Mac OS | Windows | PyPI |
---|---|---|---|---|---|
Atualmente há uma grande quantidade de trabalho indocumentado e instável acontecendo no ramo master
. É altamente recomendável que você use nossa versão mais recente até novo aviso.
Se você já deseja experimentar as próximas mudanças, dê uma olhada neste guia de portabilidade. Deve cobrir a maioria dos novos recursos e mudanças importantes que estão por vir.
Mitsuba 3 é um sistema de renderização orientado para pesquisa para simulação de transporte de luz direto e inverso desenvolvido na EPFL na Suíça. Ele consiste em uma biblioteca principal e um conjunto de plug-ins que implementam funcionalidades que vão desde materiais e fontes de luz até algoritmos de renderização completos.
O Mitsuba 3 é redirecionável : isso significa que as implementações e estruturas de dados subjacentes podem ser transformadas para realizar várias tarefas diferentes. Por exemplo, o mesmo código pode simular transporte RGB escalar (clássico de um raio de cada vez) ou transporte espectral diferencial na GPU. Tudo isso se baseia no Dr.Jit, um compilador just-in-time (JIT) especializado desenvolvido especificamente para este projeto.
Plataforma cruzada : Mitsuba 3 foi testado em Linux ( x86_64
), macOS ( aarch64
, x86_64
) e Windows ( x86_64
).
Alto desempenho : o compilador Dr.Jit subjacente funde o código de renderização em kernels que alcançam desempenho de última geração usando um backend LLVM direcionado à CPU e um backend CUDA/OptiX direcionado a GPUs NVIDIA com aceleração de hardware de rastreamento de raio.
Python primeiro : Mitsuba 3 está profundamente integrado ao Python. Materiais, texturas e até mesmo algoritmos de renderização completos podem ser desenvolvidos em Python, que o sistema compila JIT (e opcionalmente diferencia) dinamicamente. Isso permite a experimentação necessária para pesquisas em computação gráfica e outras disciplinas.
Diferenciação : Mitsuba 3 é um renderizador diferenciável, o que significa que pode calcular derivadas de toda a simulação em relação a parâmetros de entrada, como pose de câmera, geometria, BSDFs, texturas e volumes. Ele implementa algoritmos de renderização diferenciáveis recentes desenvolvidos na EPFL.
Espectral e polarização : Mitsuba 3 pode ser usado como renderizador monocromático, renderizador baseado em RGB ou renderizador espectral. Cada variante pode opcionalmente levar em conta os efeitos da polarização, se desejado.
Gravamos vários vídeos no YouTube que fornecem uma introdução gentil ao Mitsuba 3 e ao Dr.Jit. Além disso, você pode encontrar notebooks Juypter completos cobrindo uma variedade de aplicativos, guias de procedimentos e documentação de referência em readthedocs.
Fornecemos rodas binárias pré-compiladas via PyPI. Instalar o Mitsuba desta forma é tão simples quanto executar
pip install mitsuba
na linha de comando. O pacote Python inclui treze variantes por padrão:
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
Os dois primeiros realizam a simulação clássica de um raio por vez usando uma representação RGB ou de cores espectrais, enquanto os dois últimos podem ser usados para renderização inversa na CPU ou GPU. Para acessar variantes adicionais, você precisará compilar uma versão personalizada do Dr.Jit usando CMake. Consulte a documentação para obter detalhes sobre isso.
Python >= 3.8
Nvidia driver >= 495.89
LLVM >= 11.1
Aqui está um exemplo simples de "Hello World" que mostra como é simples renderizar uma cena usando Mitsuba 3 do 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' )
Tutoriais e cadernos de exemplo cobrindo uma variedade de aplicações podem ser encontrados na documentação.
Este projeto foi criado por Wenzel Jakob. Recursos e/ou melhorias significativas no código foram contribuídos por Sébastien Speierer, Nicolas Roussel, Merlin Nimier-David, Delio Vicini, Tizian Zeltner, Baptiste Nicolet, Miguel Crespo, Vincent Leroy e Ziyi Zhang.
Ao usar o Mitsuba 3 em projetos acadêmicos, cite:
@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
}