このドキュメントでは、Java デコンパイラである FernFflower と研究指向のレンダリング システムである Mitoba 3 についての情報を提供します。 FernFflower の詳細には、その機能、ライセンス、コマンドラインの使用法、識別子の名前を変更するオプションが含まれます。ミツバ 3 の説明では、その機能、インストール、使用法、および貢献者について説明します。どちらのセクションでも、包括的な説明と例が提供されます。
シダフラワーについて
FernFflower は、Java および
おそらく高級プログラミング言語全般に当てはまります。当然それはまだです
開発中のため、バグレポートや改善提案を下記までお送りください。
問題トラッカー。
シダフラワーとフォージフラワー
FernFflower には、ForgeFflower からのパッチがいくつか含まれています。
ForgeFflower のメンテナーの貴重な貢献と機能強化に心からの感謝の意を表します。
ライセンス
FernFflower は、Apache License Version 2.0 に基づいてライセンスされています。
コマンドラインから実行する
java -jar fernflower.jar [-
=
]*[
]+
0回以上を意味します
1回以上を意味します
: 逆コンパイルするファイルが含まれるファイルまたはディレクトリ。ディレクトリは再帰的にスキャンされます。許可されるファイル拡張子は、class、zip、jar です。
-e= という接頭辞が付いたソースは、逆コンパイルされない「ライブラリ」ファイルを意味しますが、ソース間の関係を分析する際には考慮されます。
クラスまたはメソッド。特に識別子の名前変更 (s. オプション 'ren') は、外部クラスに関する情報から恩恵を受けることができます。
: 宛先ディレクトリ
、
: 対応する値を持つコマンド ライン オプション (下記の「コマンド ライン オプション」を参照)。
例:
java -jar fernflower.jar -hes=0 -hdc=0 c:Tempbinary -e=c:Javart.jar c:Tempsource
java -jar fernflower.jar -dgs=1 c:Tempbinarylibrary.jar c:TempbinaryBoot.class c:Tempsource
コマンドラインオプション
mpm と urc を除き、値 1 はオプションがアクティブ化されていることを意味し、0 - 非アクティブ化されていることを意味します。デフォルト
値がある場合は、括弧内に値を指定します。
通常、次のオプションは、ユーザーがあれば変更します: hes、hdc、dgs、mpm、ren、urc
残りのオプションはそのままにしておくことができます。これらはプロのリバース エンジニアを対象としています。
識別子の名前変更
難読化ツールの中には、クラスとそのメンバー要素に短く、意味のない、そして何よりも曖昧な名前を付けるものがあります。そのようなものの再コンパイル
コードは多数の競合を引き起こします。したがって、逆コンパイラーに要素の名前を順番に変更させることをお勧めします。
各識別子の一意性を確保します。
オプション「ren」(つまり、-ren=1) は、名前変更機能を有効にします。デフォルトの名前変更戦略は次のようになります。
各メソッドの意味は名前から明らかです。toBeRenamed は要素の名前が変更されるかどうかを決定し、他の 3 つは要素の名前を変更するかどうかを決定します。
クラス、メソッド、フィールドにそれぞれ新しい名前を付けます。
例:
ミツバレンダラー3
ドキュメント | チュートリアルビデオ | Linux | MacOS | 窓 | PyPI |
---|---|---|---|---|---|
️
警告
️
現在、文書化されていない不安定な作業が大量に行われています。
master
ブランチ。ぜひご利用ください。
最新リリース
追って通知があるまで。
今後の変更をすでに試してみたい場合は、こちらをご覧ください。
この移植ガイド。
今後の新機能と重大な変更のほとんどがカバーされているはずです。
導入
ミツバ 3 は、順光と逆光の研究指向のレンダリング システムです。
スイスのEPFLで開発された輸送シミュレーション。
コア ライブラリと機能を実装するプラグインのセットで構成されます。
マテリアルや光源から完全なレンダリング アルゴリズムに至るまで。
ミツバ 3 は再ターゲット可能です。これは、基礎となる実装と
データ構造は、さまざまな異なるタスクを実行するために変換できます。のために
たとえば、同じコードで両方のスカラー (一度に 1 レイずつの古典的な) RGB トランスポートをシミュレートできます。
または GPU 上の差分スペクトル転送。これはすべてに基づいています
Dr.Jit は、このプロジェクトのために特別に開発された特殊なジャストインタイム(JIT) コンパイラーです。
主な特長
クロスプラットフォーム:Mitsuba 3 は Linux ( x86_64
)、macOS でテストされています
( aarch64
、 x8664
)、および Windows ( x8664
)。
高いパフォーマンス: 基盤となる Dr.Jit コンパイラーがレンダリング コードを融合します
を使用して最先端のパフォーマンスを実現するカーネルに組み込まれます。
CPU をターゲットとする LLVM バックエンドと CUDA/OptiX バックエンド
レイ トレーシング ハードウェア アクセラレーションを備えた NVIDIA GPU をターゲットとしています。
Python ファースト: ミツバ 3 は Python と深く統合されています。材料、
テクスチャ、さらには完全なレンダリング アルゴリズムさえも Python で開発できます。
これは、システムによってオンザフライで JIT コンパイル (およびオプションで微分) されます。
これにより、コンピュータ グラフィックスの研究に必要な実験が可能になり、
他の分野。
微分: ミツバ 3 は微分可能なレンダラーです。
入力に関するシミュレーション全体の導関数を計算できます
カメラのポーズ、ジオメトリ、BSDF、テクスチャ、ボリュームなどのパラメータ。それ
EPFL で開発された最近の微分可能レンダリング アルゴリズムを実装します。
スペクトルと偏光:Mitsuba 3 は単色として使用可能
レンダラー、RGB ベースのレンダラー、またはスペクトル レンダラー。各バリアントでは、
必要に応じて、分極の影響をオプションで考慮します。
チュートリアルビデオ、ドキュメント
優しい紹介を提供する YouTube ビデオをいくつか録画しました。
ミツバ3とドクタージット。さらに、完全な Juypter ノートブックを見つけることができます。
さまざまなアプリケーション、ハウツー ガイド、リファレンス ドキュメントを網羅
readthedocs で。
インストール
PyPI 経由でコンパイル済みのバイナリ ホイールを提供します。この方法でのMitsubaのインストールは、実行するのと同じくらい簡単です
pip インストールミツバ
コマンドラインで。 Python パッケージにはデフォルトで 13 のバリアントが含まれています。
scalar_rgb
scalar_spectral
scalarspectralpolarized
llvmadrgb
llvmadmono
llvmadmono_polarized
llvmadspectral
llvmadspectral_polarized
cudaadrgb
cudaadmono
cudaadmono_polarized
cudaadspectral
cudaadspectral_polarized
最初の 2 つは、RGB のいずれかを使用して、一度に 1 レイずつの古典的なシミュレーションを実行します。
またはスペクトル色表現、後者の 2 つは逆変換に使用できます。
CPU または GPU でのレンダリング。追加のバリアントにアクセスするには、次のことを行う必要があります。
CMake を使用して Dr.Jit のカスタム バージョンをコンパイルします。をご覧ください。
ドキュメント
詳細については。
要件
Python >= 3.8
(オプション) GPU での計算の場合: Nvidia driver >= 495.89
(オプション) CPU でのベクトル化/並列計算の場合: LLVM >= 11.1
使用法
これは、レンダリングがいかに簡単であるかを示す単純な「Hello World」の例です。
PythonからMitsuba 3を使用したシーン:
# エイリアス "mi" を使用してライブラリをインポートしますimport tsuba as mi# renderer のバリアントを設定しますmi.setvariant('scalarrgb')# シーンをロードしますscene = mi.loaddict(mi.cornellbox())# シーンをレンダリングしますimg = mi。 render(scene)# レンダリングされたイメージを EXR ファイルに書き込みますmi.Bitmap(img).write('cbox.exr')
さまざまなアプリケーションをカバーするチュートリアルとノートブックの例が見つかります。
ドキュメントにあります。
について
このプロジェクトは Wenzel Jakob によって作成されました。
コードの重要な機能や改善は、次の寄稿者によって行われました。
セバスチャン・シュパイラー
ニコラ・ルーセル
マーリン・ニミエ=デイヴィッド
デリオ・ヴィチーニ
ティツィアン・ツェルトナー
バティスト・ニコレット
ミゲル・クレスポ
ヴァンサン・リロイと
チャン・ツィイー。
学術プロジェクトでMitsuba 3を使用する場合は、以下を引用してください。
@software{Mitsuba3,title = {Mitsuba 3 renderer},author = {Wenzel Jakob、Sébastien Speierer、Nicolas Roussel、Merlin Nimier-David、Delio Vicini、Tizian Zeltner、Baptiste Nicolet、Miguel Crespo、Vincent Leroy、Ziyi Zhang},note = {https://tsuba-renderer.org}、バージョン = {3.1.1}、年 = 2022}