概要: 此文讲述了我在接触PBR时的体会。
在刚开始听说PBR时,感觉它是个很神奇的东西,这么牛叉的东西能用在光栅化渲染器中吗?当时感觉用于Ray-Tracing中较为合适。
一、 感性认识,从基本教程着手。
非常感谢https://learnopengl.com/#!PBR/Theory 这个OpenGL教程,让我看到了一个BPR的实现。
二、 到底哪儿基于物理渲染了?
在进行Graphic Rendering时,主要工作是于处理好物质对光的反馈,也就是光照效果。这就需要光照方程,它核心就是BRDF。
双向反射分布函数(Bidirectional Reflectance Distribution Function,BRDF)用来定义给定入射方向上的辐射照度(irradiance)如何影响给定出射方向上的辐射率
(radiance)。 这里推荐BRDF(双向反射分布函数)清华大学讲义,读完此文后,发现原来我们以前的光照模型Phong Model也是BRDF的一种模型(只怪自己基础不扎 实,没有好好研读Real-Time Rendering),这个讲义很好地介绍了光辐射与平面交互理论,要点如下:
1. Reflect Light 与 Diffuse Light的形成原理。
2. 辉度、光亮度 概念。
3. 光学平面 与 微米级别的粗糙平面。
4. 能量守恒。
5. 理想的光学平面要点:入射角等于出射角。
6. 菲涅耳效应,光学平面反射的光数量与入射角的大小相关。
现实生活中不存在大块的光学平面,在微小的面元里、微米级别下, 将该面元看成是由许多锯齿状的很小的光学平面组成。关于这个讲述请阅读
注:上图中淡蓝色的点为物体里的杂质,不纯的物质会造成光的散射,上述链接中的pdf中有详细地说明散射。
基于物理的BRDF要考虑如下几个因素:
a. 面元的粗糙度(法线分布、反射光遮挡)
b. 菲涅耳效应
c. 金属与非金属物质
c. 射入感光器的光量 由 diffuse 和 specular组成。
d. 能量守恒
基于上面的光辐射理论,基于物理的BRDF又有多种模型(我们只能逼近物理理论)。
感光器接收到的光亮度公式(也就是常说的 渲染方程)为:
Cook-Torrance BRDF:
其中D,F,G分别为:
- Normal distribution function: approximates the amount the surface's microfacets are aligned to the halfway vector influenced by the roughness of the surface; this is the primary function approximating the microfacets.
- Geometry function: describes the self-shadowing property of the microfacets. When a surface is relatively rough the surface's microfacets can overshadow other microfacets thereby reducing the light the surface reflects.
- Fresnel equation: The Fresnel equation describes the ratio of surface reflection at different surface angles.
具体公式细节参阅链接教程。