基于物理的渲染技术(PBR)系列二

Posted 海洋_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于物理的渲染技术(PBR)系列二相关的知识,希望对你有一定的参考价值。

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。

CSDN视频网址:http://edu.csdn.net/lecturer/144

继续上篇博客中基于物理的渲染技术(PBR)系列一的讲解,在这里我们引入了一种被称为渲染方程(Render Equation)的东西。它是某些聪明绝顶人所构想出来的一个精妙的方程式,是如今我们所拥有的用来模拟光的视觉效果最好的模型。基于物理的渲染所坚定的遵循的是一种被称为 反射率方程 (The Reflectance Equation)的渲染方程的特化版本。要正确的理解PBR 很重要的一点就是要首先透彻的理解反射率方程:


反射率方程一开始可能会显得有些吓人,不过随着我们慢慢对其进行剖析,读者最终会逐渐理解它的。要正确的理解这个方程式,我们必须要稍微涉足一些 辐射度量学 (Radiometry)的内容。辐射度量学是一种用来度量电磁场辐射(包括可见光)的手段。有很多种辐射度量(radiometric quantities)可以用来测量曲面或者某个方向上的光,但是我们将只会讨论其中和反射率方程有关的一种。它被称为 辐射率 (Radiance),在这里用 L 来表示。辐射率被用来量化单一方向上发射来的光线的大小或者强度。由于辐射率是由许多物理变量集合而成的,一开始理解起来可能有些困难,因此我们首先关注一下这些物理量:

辐射通量:辐射通量 Φ 表示的是一个光源所输出的能量,以瓦特为单位。光是由多种不同波长的能量所集合而成的,而每种波长则与一种特定的(可见的)颜色相关。因此一个光源所放射出来的能量可以被视作这个光源包含的所有各种波长的一个函数。波长介于390nm到700nm(纳米)的光被认为是处于可见光光谱中,也就是说它们是人眼可见的波长。在下面你可以看到一幅图片,里面展示了日光中不同波长的光所具有的能量:


辐射通量将会计算这个由不同波长构成的函数的总面积。直接将这种对不同波长的计量作为参数输入计算机图形有一些不切实际,因此我们通常不直接使用波长的强度而是使用三原色编码,也就是RGB(或者按通常的称呼:光色)来作为辐射通量表示的简化。这套编码确实会带来一些信息上的损失,但是这对于视觉效果上的影响基本可以忽略。

立体角:立体角用 ω 表示,它可以为我们描述投射到单位球体上的一个截面的大小或者面积。投射到这个单位球体上的截面的面积就被称为 立体角 (Solid Angle),你可以把立体角想象成为一个带有体积的方向:


可以把自己想象成为一个站在单位球面的中心的观察者,向着投影的方向看。这个投影轮廓的大小就是立体角。

辐射强度:辐射强度(Radiant Intensity)表示的是在单位球面上,一个光源向每单位立体角所投送的辐射通量。举例来说,假设一个全向光源向所有方向均匀的辐射能量,辐射强度就能帮我们计算出它在一个单位面积(立体角)内的能量大小:


计算辐射强度的公式如下所示:


其中 I 表示辐射通量 Φ 除以立体角 ω

在理解了辐射通量,辐射强度与立体角的概念之后,我们终于可以开始讨论辐射率的方程式了。这个方程表示的是,一个拥有辐射强度 Φ 的光源在单位面积 A ,单位立体角 ω 上的辐射出的总能量:

L=d2ΦdAdωcosθ


辐射率是辐射度量学上表示一个区域平面上光线总量的物理量,它受到 入射 (Incident)(或者来射)光线与平面法线间的夹角 θ 的余弦值 cosθ 的影响:当直接辐射到平面上的程度越低时,光线就越弱,而当光线完全垂直于平面时强度最高。这和我们在前面的基础光照教程中对于漫反射光照的概念相似,其中 cosθ 就直接对应于光线的方向向量和平面法向量的点积:

float cosTheta = dot(lightDir, N);  

辐射率方程很有用,因为它把大部分我们感兴趣的物

以上是关于基于物理的渲染技术(PBR)系列二的主要内容,如果未能解决你的问题,请参考以下文章

基于物理的渲染(PBR)白皮书 开篇:PBR核心知识体系总结与概览

基于物理的渲染(PBR)白皮书 PBR核心理论与渲染光学原理总结

计算机图形学(OPENGL):PBR理论

基于物理的渲染(PBR)白皮书法线分布函数相关总结

基于物理的渲染(PBR)白皮书法线分布函数相关总结

UE4是基于物理的渲染PBR,结合自己理解说一说ue4中啥是材质,啥材质实例?