本篇作为PBR专栏笔记的最后一篇(✿✿ヽ(°▽°)ノ✿撒花),着重简单阐述下当前实时渲染中各类GI技术效果,对于各类GI(如SSR SSGI SSAO等)的具体实现细节,会专门在未来的GI专栏中阐述。以下内容也有省略不展开描述的。
GI相关
VXGI(Voxel Global IIIumination)
第一个Pass从光源出发找到每个voxel中所有的radiance,记录下对应的层级和光源
第二个Pass从相机出发,判断每个cone内相交的voxel,找到对应的层级和对应的次级光源(radiance)
SSGI
DDGI
Ambient Occlusion相关
SSAO(Screen Space Ambient Occlusion)
SSAO核心思想就是在采样点周围增加数个采样点来判断AO强度。
SSDO (Screen Space Directional Occlusion)
HDAO(High Definition Ambient Occlusion)
HBAO(Horizon Based Ambient Occlusion)
各类其他的SS效果
SSR (Screen Space Reflection)
其他
LVP(Light Propagation Volumes)
核心思路:Radiance沿直线传播且传播过程中不会发生改变。
主要步骤:
1.生成场景中一系列的radiance point(需要知道哪些表面会被直接光源照亮);
2.将第一步的点注入到场景中划分的3D网格中,计算每一个格子内部所有的虚拟光源,可以用SH压缩;
3.传播radiance。需要计算六个面,传播给相邻六个格子;
4.渲染。
存在漏光问题。
基于RayTracing的GI
基于PathTracing的GI
专栏总结&展望(2023/8/2)
自从开启了PBR专栏以来,中间经历了整整半年,感慨还是很多的。个人认为总结笔记不应该是生硬的搬运,而是边写边加深自己的理解,所以我当初设想是把专栏分为两块内容,一块是笔记,另一块是专题实现。 目前已经完成了全部笔记的整理,当然这些笔记有些我回头去看时发现有些地方不够细节,未来还会逐步完善。现在回头来看,边写代码(也包括使用各类DCC)边记录笔记的方式给自己带来了很多好处,自己当初对于PBR的一些理解确实存在一些误解,自己对于PBR的理解算是经历了以下的心理历程:1.整理专栏之前:不是很清楚是什么东西但是有点清楚是什么东西,总之觉得很简单,就算实际很复杂拿来也能用;2.整理专栏中:原来XX这一块是这么演变过来的,原来XX还有这样的细节,感觉XX好复杂,光是整理相关笔记和代码/工具实现就要很久,完了学不完了;3.笔记整理完后:PBR相关的原理确实存在复杂的部分,但是用来使用的相关代码却很简洁,只要理清各部分之间的关系,就不会出错。有些还没有写的内容,先不要妄下定论。
当谈论到PBR的时候,大家往往想到的是PBR的材质,想到材质光照的四部分组成,很多面试官在问PBR的时候也是在问PBR的材质,本专栏大部分实现目前也是专注于材质这一部分。实际上GI、环境光照这部分基于物理的光照效果也应当归类于PBR的范畴,只不过这部分因为内容太多(就像本篇只能讲个大概一样),所以往往被单独整理出来。
后续自己还会进行PBR材质的代码篇的整理,目前已完成的部分有:
1.Standard Lit、Simple Lit ;2.SkinLit ( 包括SSS在内多种效果) ;3.Clear Coat
待做的有:
1.布料材质;2.头发材质;3.毛发(地毯/毛衣等)材质; 4.眼睛材质;5.其他特殊材质
对于GI篇,未来个人打算整理成一个专栏。但是因为最近工作上对于阴影的研究较多,加上个人对NPR渲染感兴趣,所以未来对于其他专栏的开设顺序可能是 阴影专栏 - NPR专栏 - GI专栏。
完结撒花!