本文档提供有关 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}