renderformer
RenderFormer 是一款基于 Transformer 架构的创新神经渲染工具,旨在直接从三角形网格场景生成具备完整全局光照效果的高质量图像。传统渲染方法往往依赖复杂的物理模拟计算,导致速度较慢或需要针对每个场景重新训练模型,而 RenderFormer 巧妙地将渲染过程转化为“序列到序列”的转换任务:它将带有反射属性的三角形视为输入令牌序列,直接输出对应的像素块序列。
该工具的核心优势在于其通用的泛化能力,无需针对特定场景进行微调或额外训练,即可处理包含镜面反射、复杂阴影、漫反射间接照明及多光源等高级光照效果的场景。其技术亮点在于采用了两阶段流水线设计:第一阶段独立于视角建模三角形间的光线传输,第二阶段则结合视角信息将光线束转化为最终像素值,两阶段均基于 Transformer 架构并通过极少的先验约束学习而成。
RenderFormer 非常适合计算机图形学研究人员、AI 开发者以及需要高效高质量渲染解决方案的技术设计师使用。无论是探索神经渲染的前沿算法,还是快速验证复杂光照下的场景表现,它都提供了一个强大且灵活的开源平台,让用户能够轻松尝试将自定义的三维场景转化为逼真的视觉作品。
使用场景
某游戏工作室的美术团队需要在短时间内为一款新 RPG 生成大量包含复杂光影互动的过场动画预览,且场景中包含大量高反光材质和动态光源。
没有 renderformer 时
- 渲染耗时极长:传统光线追踪算法计算全局光照(如多次镜面反射、柔和阴影)需要数小时甚至数天,严重拖慢迭代速度。
- 调试成本高昂:每次调整材质或灯光后,必须重新等待漫长的渲染过程才能查看效果,导致创意验证周期被拉长。
- 硬件资源紧张:为了加速渲染,团队不得不占用大量高性能 GPU 集群,挤占了其他项目的算力资源。
- 泛化能力差:若更换全新场景,往往需要针对特定场景重新训练神经网络或手动微调参数,无法即插即用。
使用 renderformer 后
- 实时级推理速度:renderformer 基于 Transformer 架构直接将三角网格序列转换为像素,无需逐场景训练,能在秒级内输出含完整全局光照的图像。
- 即时反馈循环:美术师修改场景配置后,可立即通过推理脚本看到包含复杂漫反射间接照明和高光反射的最终效果,大幅提升创作效率。
- 降低算力门槛:由于不再依赖昂贵的物理模拟计算,普通工作站即可流畅运行,释放了集群资源用于最终成品渲染。
- 零样本泛化能力:无论是简单室内还是拥有多光源的复杂室外场景,renderformer 均能直接处理,无需任何额外的微调或预训练。
renderformer 通过将渲染重构为序列到序列的转换任务,彻底打破了高质量全局光照渲染在速度与灵活性上的传统瓶颈。
运行环境要求
- Linux
- macOS
- Windows
- 必需
- 支持 NVIDIA CUDA GPU 或 Apple Metal GPU
- 最低显存要求为 8GB
未说明

快速开始
RenderFormer:基于Transformer的三角网格全局光照神经渲染
SIGGRAPH 2025 会议论文
使用RenderFormer渲染的基于三角网格的场景示例,无需针对每个场景进行训练或微调,即可呈现(多重)镜面反射、复杂阴影、漫反射间接光照、光泽反射、软硬阴影以及多个光源。
RenderFormer是一种神经渲染管线,能够直接从基于三角形的场景表示中渲染出包含完整全局光照效果的图像,且无需针对每个场景进行训练或微调。我们并未采用以物理为中心的渲染方法,而是将渲染建模为一种序列到序列的转换:将代表具有反射属性的三角形的标记序列转换为代表像素小块的输出标记序列。RenderFormer遵循两阶段流程:一个与视点无关的阶段,用于模拟三角形之间的光线传输;另一个与视点相关的阶段,根据前一阶段生成的三角形序列,将代表光线束的标记转换为对应的像素值。这两个阶段均基于Transformer架构,并在极少先验约束的情况下进行学习。我们在形状和光线传输复杂度各异的场景上展示了并评估了RenderFormer。
目录
安装
先决条件
- 系统:代码已在Linux、MacOS和Windows上测试通过。
- 硬件:代码已在NVIDIA CUDA GPU和Apple Metal GPU上测试过。最低GPU显存要求为8GB。
环境设置
首先搭建一个支持PyTorch 2.0+的环境。对于CUDA用户,可以从https://github.com/Dao-AILab/flash-attention安装Flash Attention。
其余依赖项可通过以下命令安装:
git clone https://github.com/microsoft/renderformer
cd renderformer
pip install -r requirements.txt
python3 -c "import imageio; imageio.plugins.freeimage.download()" # 用于HDR图像输入输出
预训练模型
| 模型 | 参数量 | 链接 | 模型ID |
|---|---|---|---|
| RenderFormer-V1-Base | 2.05亿 | Hugging Face | microsoft/renderformer-v1-base |
| RenderFormer-V1.1-Large | 4.83亿 | Hugging Face | microsoft/renderformer-v1.1-swin-large |
关于已发布模型的说明
我们在提交时使用的训练数据中发现了一个着色器错误。我们使用修正后的着色器重新训练了模型,并发布了新版本。因此,模型性能和输出可能与论文中的结果有所不同。
使用
图像渲染
场景转换
我们在examples目录下提供了示例场景配置JSON文件。要渲染场景,首先需将场景配置JSON文件转换为我们的HDF5场景格式:
python3 scene_processor/convert_scene.py examples/cbox.json --output_h5_path tmp/cbox/cbox.h5
使用推理脚本渲染单张图像
python3 infer.py --h5_file tmp/cbox/cbox.h5 --output_dir output/cbox/
此时,您应在输出文件夹中看到output/cbox/cbox_view_0.exr和output/cbox/cbox_view_0.png。.exr是RenderFormer输出的HDR线性图像,而.png则是渲染图像的LDR版本。您可以通过--tone_mapper参数启用不同的色调映射器,以获得更好的视觉效果。
如果系统中未找到Flash Attention,脚本会自动回退到使用PyTorch的缩放点积注意力。我们还提供了一个环境变量ATTN_IMPL,供您选择使用哪种注意力实现:
# 有意使用 SDPA
ATTN_IMPL=sdpa python3 infer.py --h5_file tmp/cbox/cbox.h5 --output_dir output/cbox/
更多示例请查看 图像渲染 Shell 脚本。
推理脚本可用参数
--h5_file H5_FILE 输入 H5 文件路径
--model_id MODEL_ID Hugging Face 上的模型 ID 或本地路径
--precision {bf16,fp16,fp32}
推理精度(默认:fp16)
--resolution RESOLUTION
推理分辨率(默认:512)
--output_dir OUTPUT_DIR
输出目录(默认:与输入 H5 文件相同)
--tone_mapper {none,agx,filmic,pbr_neutral}
推理色调映射器(默认:无)
使用 RenderFormerRenderingPipeline 进行推理
通过提供一批输入场景和渲染相机参数,您可以使用 RenderFormerRenderingPipeline 实现批量渲染。
最小示例(无实际意义的输入,仅用于测试):
import torch
from renderformer import RenderFormerRenderingPipeline
pipeline = RenderFormerRenderingPipeline.from_pretrained("microsoft/renderformer-v1.1-swin-large")
device = torch.device('cuda')
pipeline.to(device)
BATCH_SIZE = 2
NUM_TRIANGLES = 1024
TEX_PATCH_SIZE = 32
NUM_VIEWS = 4
triangles = torch.randn((BATCH_SIZE, NUM_TRIANGLES, 3, 3), device=device)
texture = torch.randn((BATCH_SIZE, NUM_TRIANGLES, 13, TEX_PATCH_SIZE, TEX_PATCH_SIZE), device=device)
mask = torch.ones((BATCH_SIZE, NUM_TRIANGLES), dtype=torch.bool, device=device)
vn = torch.randn((BATCH_SIZE, NUM_TRIANGLES, 3, 3), device=device)
c2w = torch.randn((BATCH_SIZE, NUM_VIEWS, 4, 4), device=device)
fov = torch.randn((BATCH_SIZE, NUM_VIEWS, 1), device=device)
rendered_imgs = pipeline(
triangles=triangles,
texture=texture,
mask=mask,
vn=vn,
c2w=c2w,
fov=fov,
resolution=512,
torch_dtype=torch.float16,
)
print("推理完成。渲染的线性 HDR 图像形状:", rendered_imgs.shape)
# 推理完成。渲染的线性 HDR 图像形状:torch.Size([2, 4, 512, 512, 3])
详细用法请参阅 infer.py 和 rendering_pipeline.py。
视频渲染
下载示例数据
我们已将示例视频输入数据放置在 Hugging Face 上。您可以通过 此脚本 下载并解压这些数据。
使用推理脚本渲染视频
python3 batch_infer.py --h5_folder renderformer-video-data/submission-videos/cbox-roughness/ --output_dir output/videos/cbox-roughness
更多示例请查看 视频渲染 Shell 脚本。
推理脚本可用参数
--h5_folder H5_FOLDER
包含输入 H5 文件的文件夹路径
--model_id MODEL_ID Hugging Face 上的模型 ID 或本地路径
--precision {bf16,fp16,fp32}
推理精度
--resolution RESOLUTION
推理分辨率
--batch_size BATCH_SIZE
推理批次大小
--padding_length PADDING_LENGTH
推理填充长度
--num_workers NUM_WORKERS
数据加载的工作进程数
--output_dir OUTPUT_DIR
渲染图像的输出目录(默认:与输入文件夹相同)
--save_video 将渲染图像合并为 video.mp4 视频文件。
--tone_mapper {none,agx,filmic,pbr_neutral}
推理色调映射器
自定义场景!
场景定义 JSON
RenderFormer 使用基于 JSON 的场景描述格式,用于定义场景的几何、材质、光照和相机设置。场景配置采用分层结构,包含以下关键组件:
场景结构
scene_name: 场景的描述性名称version: 场景描述格式的版本(当前为“1.0”)objects: 场景中对象的字典,包括几何和光源cameras: 渲染用相机配置列表
对象配置
场景中的每个对象需要:
mesh_path: .obj 网格文件的路径material: 材质属性,包括:diffuse: RGB 漫反射颜色 [r, g, b]specular: RGB 镜面反射颜色 [r, g, b](目前仅支持白色镜面反射,且漫反射 + 镜面反射之和不得超过 1.0)roughness: 表面粗糙度(0.01 至 1.0)emissive: RGB 发光颜色 [r, g, b](目前仅支持白色发光,且仅限于光源三角形)smooth_shading: 是否对此对象启用平滑着色rand_tri_diffuse_seed: 随机三角形着色的可选种子,若未指定,则直接使用漫反射颜色random_diffuse_max: 随机漫反射颜色的最大值(漫反射 + 镜面反射之和不得超过 1.0)random_diffuse_type: 随机漫反射颜色分配类型,可按三角形或着色组分配
transform: 对象变换,包括:translation: [x, y, z] 位置rotation: [x, y, z] 旋转角度scale: [x, y, z] 缩放因子normalize: 是否将对象归一化到单位球体
remesh: 是否对对象进行重新网格化remesh_target_face_num: 重新网格化后的目标面数
相机配置
每个相机需要:
position: [x, y, z] 相机位置look_at: [x, y, z] 目标点up: [x, y, z] 上方向量fov: 视场角(以度为单位)
示例场景
建议从 examples/init-template.json 开始,并根据需求进行修改。对于更复杂的场景,请参考 examples 目录中的场景配置。
HDF5 数据字段
HDF5 文件包含以下字段:
triangles: [N, 3, 3] 三角形顶点数组texture: [N, 13, 32, 32] 纹理贴图数组vn: [N, 3, 3] 顶点法向量数组c2w: [N, 4, 4] 相机到世界矩阵数组fov: [N] 视场角数组
我们使用的相机坐标系与 Blender 一致(-Z = 观察方向,+Y = 上方,+X = 右侧),在实现自己的 HDF5 转换器时请注意坐标系问题。
更多详情请参阅 scene_processor/to_h5.py。
重新网格化对象
我们在 scene_processor/remesh.py 中提供了一个简单的重新网格化工具。您可以在将对象放入场景之前使用该工具对其进行重新网格化。
此外,场景配置 JSON 文件中还提供了 remesh 和 remesh_target_face_num 字段,允许您在场景转换过程中对对象进行重新网格化。
python3 scene_processor/remesh.py --input path/to/your/high_res_mesh.obj ----output remeshed_object.obj --target_face_num 1024
使用 Blender 渲染参考图像
我们提供了一个脚本 scene_processor/to_blend.py,用于使用 Blender 渲染参考图像。该脚本会将 JSON 描述的场景转换为 Blender 场景,这样你就可以用 Blender 渲染场景,或者将其保存为 Blend 文件以供后续使用。
示例用法:
python3 scene_processor/to_blend.py examples/cbox.json --output_dir tmp/cbox --dump_blend --save_img --spp 4096
有关详细用法,请查看该脚本。
Blender 扩展
我们提供了一个 Blender 扩展,以简化为 RenderFormer 设置场景的过程。更多详情请参阅 Blender 扩展。
场景设置提示
- 始终从
examples/init-template.json开始。 - 请将场景限制在我们的训练数据范围内,外推虽然可能有效,但无法保证。
- 相机到场景中心的距离在 [1.5, 2.0] 米之间,视场角在 [30, 60] 度之间。
- 场景包围盒在 x、y、z 方向上的范围均为 [-0.5, 0.5]。
- 光源:最多 8 个三角形(请使用
examples/templates/lighting/tri.obj中的三角网格),每个光源的缩放比例在 [2.0, 2.5] 之间,到场景中心的距离在 [2.1, 2.7] 米之间,所有光源的总发光强度之和应在 [2500, 5000] 之间。 - 三角形总数:训练数据涵盖最多 4096 个三角形,但在推理时扩展到 8192 个三角形通常仍然可行。
- 所有训练对象都是水密且经过 QSlim 简化的。建议使用均匀的三角形大小。如果发现你的对象无法正常工作,可以尝试使用我们提供的脚本或其他网格重拓扑工具对其进行重新网格化。
致谢
我们借鉴了以下仓库中的一些代码,在此感谢作者们的贡献:
除了来自 Objaverse 的 3D 模型外,我们还对我们在示例中使用的 3D 模型的贡献者表示深深的感谢:
- 着色球:由 Wenzel Jakob 来自 Mitsuba Gallery
- 斯坦福兔子与露西:来自 斯坦福 3D 扫描库
- 康奈尔盒子:来自 康奈尔大学计算机图形学项目中的康奈尔盒子数据
- 犹他茶壶:来自 犹他模型库
- Veach MIS:由 Eric Veach 和 Leonidas J. Guibas 提出。1995 年发表的论文《蒙特卡洛渲染中采样技术的最优组合》
- Spot:由 Keenan Crane 来自 Keenan 的 3D 模型库
- 克莱因瓶:由 Fausto Javier Da Rosa 创作
- 常宽体:原始网格来自 小体积常宽体。衍生网格来自 Keenan 的 3D 模型库
- 珠宝:由 elbenZ 创作
- 香蕉、复活节篮子、水瓶、野马车、心形拼图:均由 Microsoft 创作
- 低多边形狐狸:由 Vlad Zaichyk 创作
- 低多边形水晶:由 Mongze 创作
- 保龄球瓶:由 SINOFWRATH 创作
- 立方体瀑布、漫步立方体:由 Tycho Magnetic Anomaly 创作
- 跳舞的螃蟹:由 Bohdan Lvov 创作
- 魔法陀螺仪:由 reddification 创作
- 卡波耶拉立方体:由 mortaleiros 创作
- P.U.C. 安全机器人:由 Gouhadouken 创作
许可证
RenderFormer 模型及大部分代码采用 MIT 许可证授权。以下子模块可能有不同的许可证:
- renderformer-liger-kernel:为 RenderFormer 集成而重新分发的 Liger Kernel。它源自原始的 Liger Kernel,并采用 BSD 2-Clause “简化” 许可证授权(详见 LICENSE.txt)。
- simple-ocio:我们使用此工具来简化 OpenColorIO 在色调映射中的使用。该包重新分发了完整的 Blender 颜色管理目录。完整的许可证文本可在 ocio-license.txt 以及各配置文件的头部找到。该包本身仍采用 MIT 许可证授权(详见 LICENSE)。
引用
如果您觉得这项工作对您有所帮助,请引用我们的论文:
@inproceedings {zeng2025renderformer,
title = {RenderFormer: 基于 Transformer 的三角网格全局光照神经渲染},
author = {Chong Zeng 和 Yue Dong 和 Pieter Peers 和 Hongzhi Wu 和 Xin Tong},
booktitle = {ACM SIGGRAPH 2025 会议论文集},
year = {2025}
}
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器