我个人认为,从学习渲染算法和渲染原理的角度而言,PBRT v1/PBRT v2和PBRT v3应该都是很不错的版本。个人推荐具有一定渲染基础的人目前最好把PBRT v3作为最开始的学习版本。不过v1和v2也有很多有趣的功能,比如比较原始的光子映射/球谐光照等内容。
PBRT v4中增加了不少更复杂的的技术,使得PBRT系统变得既达不到工业渲染器的复杂和效率,又难以作为初学者用于学习渲染的工具。但它最好的一点在于对GPU渲染的支持以及GBuffer的获取,使得渲染更快,且我们可以比较容易地使用v4来生成一些深度学习数据集。
Optix虽然现在普及程度并没有特别高,但作为RTX重点支持的平台,尤其是Optix 7版本的发布,使得Optix具有很不错的应用前景。因此,PBRT v4也将是我们重点讲解和分析的内容。其讲解内容详细程度不会低于PBRT v3系列。但值得注意的是,我们不会在PBRT v4中介绍太多专一的渲染理论,例如特定的某种材质。而是重点关注PBRT v4的架构和流程。
最后,本系列文章不是零基础的,需要读者能够掌握PBRT v3的内容。PBRT v3系列中我们教大家怎么从零开始搭建一个渲染器,但v4这种做法就不可取了,尤其是需要对GPU兼容,那么渲染器必须一开始就得严格设计好,而不能一点一点集成和改造。
源码Github链接:https://github.com/feimos32/PBRT-HigherVersion
PBRT v4 基本理论的与代码讲解
· PBRTv4-系列1-初步了解与代码的编译
· PBRTv4-系列2-代码结构与场景加载
· PBRTv4-系列3-PBRT的整体理解
· PBRTv4-小专题一-PBRT中的可交互渲染流程
· PBRTv4-小专题二-PBRT的CMakeLists.txt解读
· PBRTv4-小专题三-PBRT的动态调度
· PBRTv4-小专题四-PBRT的坐标系统和变换