Chapter 9 – Physically Based Shading 基于物理的着色

9.4 Illumination(照度)

上述反射率等式中的入射光radiance Li(l),其表示场景中的光线撞击到了着色表面。Global illumination(全局光照)算法将会通过模拟场景中的光线如何传播以及反射来计算Li(l)的值。我们将在第十一章中学习全局光照。在本章与下一章中,我们将专注于local illumination(局部光照),该技术使用反射率等式来计算物体表面每一个点的局部着色。在局部光照算法中,Li(l)是一个给定的常量,其并不需要计算。

在逼真的场景中,Li(l)将包括所有方向上的非零radiance,有些可能是由光源直接发出,有些可能由其他表面反射。现实世界中的光源都不同于我们在第五章中学习的精准光或者方向光,它们都是area lights(区域光),并且会覆盖一个非零的立体角。在本章节中,我们使用的Li(l)只由精准光与方向光所组成,在第十章中我们才会学习更多类型的Li(l)。

虽然精准光和方向光都是现实中不存在的光源,但是我们可以通过这两种光源来模拟现实中具有“物理意义”的光源。而这种模拟过程是非常重要的,这样我们才能将光源也纳入PBR渲染框架,也能理解其中的潜在错误。

假设我们在场景中设置一个区域光,且将指向光源中心的向量定义为lc。同时我们将光源的颜色定义为clight,其表示白色的Lambertian表面反射向光源中心的反射radiance(也就是说,该表面的法线满足n=lc)。而光线的颜色其实就是光线的视觉表面(经过白色表面的反射,光线的颜色并不会改变)。

有了这些限制,我们所使用的方向光可以衍生为尺寸缩小为0的区域光,同时光源的颜色仍然是clight。在这种情况下,本章开头的反射率等式的积分将简化为一个BRDF等式,其开销也会显著降低:

上述等式中(n·l)的点乘将会被clamp到0,这样就能避免位于物体表面下方的光线。

同时,我可以通过类似的方法处理精准光源。唯一的区别是精准光源的clight会随着到光源坐标位置的距离的平方而减弱。如果场景中有多个精准光源,那么我们可以使用以下等式进行累加以得到最终的结果:

其中,lc分别表示第i个光源的光线方向以及颜色。

上述等式中的因子π将会抵消BRDF中的1/π(例如,上一小节中最后介绍的等式)。这也使得着色器中的着色等式更便于理解。但是,当我们使用实时渲染领域内的一些学术论文中的BRDF时,需要注意π这个因子。尤其是那些需要乘以π的BRDF。

留下评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据