欢迎光临散文网 会员登陆 & 注册

由浅入深学习PBR的原理和实现part_04(理论知识)转载

2020-03-02 11:07 作者:Game艺视界  | 我要投稿

Hello .大家好

今天是2020年03月02日星期二


01集回顾点击跳转pBR知识体系_认知和应用(重要)

02集回顾点击跳转PBR在游戏引擎的应用

03集回顾点击跳转双向反射分布和PBR制作

3.2 PBR的光照实现

3.1章节阐述了Cook-Torrance反射方程的理论和公式意义。这节将探讨如何将前面讲到的理论转化成一个基于直接光照的渲染器:比如点光源,方向光和聚光灯。


3.2.1 辐照度计算

3.1章节解释了Cook-Torrance反射方程的大部分含义,但有一点未提及:具体要怎么处理场景中的辐照度(Irradiance,也就是辐射的总能量L)?在计算机领域,场景的辐射率L度量的是来自光源光线的辐射通量ϕ穿过指定的立体角ω,在这里我们假设立体角ω无限小,小到辐射度衡量的是光源射出的一束经过指定方向向量的光线的通量。


有了这个假设,我们又要怎么将之融合到之前教程讲的光照计算里去呢?想象我们有一个辐射通量以RGB表示为(23.47, 21.31, 20.79)的点光源,这个光源的辐射强度等于辐射通量除以所有出射方向。当为平面上某个特定的点p着色的时候,所有可能的入射光方向都会经过半球Ω,但只有一个入射方向ωi是直接来自点光源的,又因为我们的场景中只包含有一个光源,且这个光源只是一个点,所以p点所有其它的入射光方向的辐射率都应该是0.

如果我们暂时不考虑点光源的距离衰减问题,且无论光源放在什么地方入射光线的辐射率都一样大(忽略入射光角度cosθ对辐射度的影响),又因为点光源朝各个方向的辐射强度都是一样的,那么有效的辐射强度就跟辐射通量完全一样:恒定值(23.47, 21.31, 20.79)。


然而,辐射率需要使用位置p作为输入参数,因为现实中的灯光根据点p和光源之间距离的不同,辐射强度多少都会有一定的衰减。另外,从原始的辐射方程中我们可以发现,面法线n于入射光方向向量ωi的点积也会影响结果。


用更精炼的话来描述:在点光源直接光照的情况里,辐射率函数L计算的是灯光颜色,经过到p点距离的衰减之后,再经过n⋅ωi缩放。能击中点p的光线方向ωi就是从p点看向光源的方向。把这些写成代码:

3.2.3 使用纹理的PBR(Textured PBR)

完整文章 关注公众号 排版太麻烦 好多公式

完整文章 关注公众号 排版太麻烦 好多公式

完整文章 关注公众号 排版太麻烦 好多公式



由浅入深学习PBR的原理和实现part_04(理论知识)转载的评论 (共 条)

分享到微博请遵守国家法律