mitsuba3 - ミツバ3:リターゲット可能なフォワードおよびインバースレンダラー

(Mitsuba 3: A Retargetable Forward and Inverse Renderer)

Created at: 2021-04-28 21:50:41
Language: C++
License: NOASSERTION

ミツババナー

ミツバレンダラー3

ドキュメンテーション チュートリアルビデオ Linux マックOS ウィンドウズ
ドキュメント vids rgl-ci rgl-ci rgl-ci

序章

Mitsuba 3は、スイスのEPFLで開発された順方向および逆方向の光輸送シミュレーション用の研究指向のレンダリングシステムです。これは、コアライブラリと、マテリアルや光源から完全なレンダリングアルゴリズムに至るまでの機能を実装するプラグインのセットで構成されています。

Mitsuba 3はリターゲット可能です。つまり、基盤となる実装とデータ構造を変換して、さまざまな異なるタスクを実行できます。たとえば、同じコードで、GPUでスカラー(クラシックな一度に1つの光線)RGBトランスポートまたは差分スペクトルトランスポートの両方をシミュレートできます。これはすべて 、このプロジェクト用に特別に開発された専用のジャストインタイム (JIT)コンパイラであるDr.Jitに基づいています。

主な特徴

  • クロスプラットフォーム:Mitsuba 3は、Linux(

    x86_64
    )、macOS(
    aarch64
    x86_64
    )、およびWindows(
    x86_64
    )でテストされています。

  • 高性能:基盤となるDr.Jitコンパイラは、レンダリングコードをカーネルに融合し、CPUをターゲットとするLLVMバックエンドと、レイトレーシングハードウェアアクセラレーションを備えたNVIDIAGPUをターゲットとするCUDA/OptiXバックエンドを使用して最先端のパフォーマンスを実現します。

  • Pythonファースト:Mitsuba3はPythonと緊密に統合されています。マテリアル、テクスチャ、さらには完全なレンダリングアルゴリズムも、Pythonで開発できます。Pythonは、システムがオンザフライでJITコンパイル(およびオプションで差別化)します。これにより、コンピュータグラフィックスやその他の分野の研究に必要な実験が可能になります。

  • 微分:Mitsuba 3は微分可能なレンダラーです。つまり、カメラのポーズ、ジオメトリ、BSDF、テクスチャ、ボリュームなどの入力パラメータに関して、シミュレーション全体の導関数を計算できます。これは、EPFLで開発された最近の微分可能なレンダリングアルゴリズムを実装しています。

  • スペクトルと偏光:Mitsuba 3は、単色レンダラー、RGBベースのレンダラー、またはスペクトルレンダラーとして使用できます。各バリアントは、必要に応じて、オプションで分極の影響を説明できます。

チュートリアルビデオ、ドキュメント

Mitsuba3とDr.Jitを優しく紹介するYouTubeビデオをいくつか録画しました。これ以外にも、さまざまなアプリケーション、ハウツーガイド、readthedocsのリファレンスドキュメントをカバーする完全なJuypterノートブックを見つけることができます

インストール

PyPIを介してコンパイル済みのバイナリホイールを提供します。この方法でMitsubaをインストールするのは、実行するのと同じくらい簡単です。

pip install mitsuba

コマンドラインで。Pythonパッケージには、デフォルトで4つのバリアントが含まれています。

  • scalar_spectral
  • scalar_rgb
  • llvm_ad_rgb
  • cuda_ad_rgb

最初の2つは、RGBまたはスペクトルカラー表現のいずれかを使用して、古典的な1光線ずつのシミュレーションを実行します。後者の2つは、CPUまたはGPUでの逆レンダリングに使用できます。追加のバリアントにアクセスするには、CMakeを使用してDr.Jitのカスタムバージョンをコンパイルする必要があります。詳細については、 ドキュメント を参照してください。

要件

  • Python >= 3.8
  • (オプション)GPUでの計算の場合:
    Nvidia driver >= 495.89
  • (オプション)CPUでのベクトル化/並列計算の場合:
    LLVM >= 11.1

使用法

これは、PythonのMitsuba3を使用してシーンをレンダリングすることがいかに簡単であるかを示す簡単な「HelloWorld」の例です。

# 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')

さまざまなアプリケーションをカバーするチュートリアルとサンプルノートブックは、ドキュメントにあります。

このプロジェクトは、WenzelJakobによって作成されました。コードの重要な機能や改善は、 SébastienSpeiererNicolas RousselMerlin Nimier-DavidDelio ViciniTizian ZeltnerBaptiste NicoletMiguel CrespoVincent LeroyZiyiZhangによって提供されました。