本文檔提供有關 Java 反編譯器 FernFlower 和研究導向的渲染系統 Mitsuba 3 的資訊。 FernFlower 的詳細資訊包括其功能、許可、命令列使用以及重命名標識符的選項。 Mitsuba 3 的描述涵蓋其功能、安裝、使用和貢獻者。這兩部分都提供了全面的解釋和範例。
關於蕨花
FernFlower 是第一個實際運作的 Java 和
可能對於一般的高階程式語言來說。自然還是
正在開發中,請將您的錯誤報告和改進建議發送至
問題追蹤器。
FernFlower 和 ForgeFlower
FernFlower 包含來自 ForgeFlower 的一些補丁。
衷心感謝 ForgeFlower 的維護者所做的寶貴貢獻和改進。
執照
FernFlower 根據 Apache 授權版本 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
文件 | 教學影片 | Linux | 蘋果系統 | 視窗 | 皮伊 |
---|---|---|---|---|---|
️
警告
️
目前,大量無證且不穩定的工作正在進行
master
分支。我們強烈建議您使用我們的
最新版本
直至另行通知。
如果您已經想嘗試即將發生的更改,請查看
本移植指引。
它應該涵蓋大部分新功能和即將到來的重大變化。
介紹
Mitsuba 3 是一款以研究為導向的前向光和反向光渲染系統
瑞士洛桑聯邦理工學院 (EPFL) 開發的交通模擬。
它由一個核心庫和一組實現功能的插件組成
從材質和光源到完整的渲染演算法。
Mitsuba 3 是可重定向的:這意味著底層實作和
資料結構可以轉換以完成各種不同的任務。為了
例如,相同的程式碼可以模擬標量(經典的一次一束)RGB 傳輸
或 GPU 上的差分光譜傳輸。這一切都建立在
Dr.Jit,專為此專案開發的專用即時(JIT) 編譯器。
主要特點
跨平台:Mitsuba 3 已在 Linux ( x86_64
)、macOS 上進行測試
( aarch64
、 x8664
)和 Windows ( x8664
)。
高效能:底層Dr.Jit編譯器融合渲染程式碼
進入內核,使用實現最先進的性能
針對 CPU 的 LLVM 後端和 CUDA/OptiX 後端
針對具有光線追蹤硬體加速功能的 NVIDIA GPU。
Python優先:Mitsuba 3與Python深度整合。材料,
紋理,甚至完整的渲染演算法都可以用Python開發,
系統即時編譯(並可選擇區分)。
這使得電腦圖形學研究所需的實驗成為可能
其他學科。
差異化:Mitsuba 3 是一個可微分渲染器,這表示它
可以計算整個模擬相對於輸入的導數
參數,例如相機姿態、幾何形狀、BSDF、紋理和體積。它
實作了 EPFL 最近開發的可微分渲染演算法。
光譜和偏振:Mitsuba 3 可用作單色儀
渲染器、基於 RGB 的渲染器或光譜渲染器。每個變體都可以
如果需要的話,可以選擇考慮極化的影響。
教學影片、文檔
我們錄製了幾個 YouTube 視頻,提供了溫和的介紹
三葉 3 和 Dr.Jit。除此之外,您還可以找到完整的 Juypter 筆記本
涵蓋各種應用程式、操作指南和參考文檔
閱讀文檔。
安裝
我們透過 PyPI 提供預編譯的二進位輪。以這種方式安裝三葉就像運行一樣簡單
pip安裝三葉
在命令列上。 Python 套件預設包含 13 個變體:
scalar_rgb
scalar_spectral
scalarspectralpolarized
llvmadrgb
llvmadmono
llvmadmono_polarized
llvmadspectral
llvmadspectral_polarized
cudaadrgb
cudaadmono
cudaadmono_polarized
cudaadspectral
cudaadspectral_polarized
前兩個使用 RGB 執行經典的一次一光模擬
或光譜顏色表示,而後兩者可用於反演
在 CPU 或 GPU 上渲染。要存取其他變體,您需要
使用 CMake 編譯 Dr.Jit 的自訂版本。請參閱
文件
有關詳細資訊。
要求
Python >= 3.8
(可選)對於 GPU 上的計算: Nvidia driver >= 495.89
(可選)對於 CPU 上的向量化/平行計算: LLVM >= 11.1
用法
這是一個簡單的「Hello World」範例,展示了渲染一個
使用 Python 中的 Mitsuba 3 的場景:
# 使用別名「mi」導入庫 import mitsuba as mi# 設定渲染器的變體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,標題= {Mitsuba 3 渲染器},作者= {Wenzel Jakob 和Sébastien Speierer 和Nicolas Roussel 和Merlin Nimier-David 和Delio Vicini 和Tizian Zeltner 和Baptiste Nicolet 和Miguel Crespo 和Vincent Leroy 和Ziyi Zhu},註= {https://mitsuba-renderer.org},版本 = {3.1.1},年份 = 2022}