Chapter 10 – Local Illumination 局部光照

10.2 环境光照

理论上,反射率并不会因为是直接光照或者间接光照而不同,例如,对于同一个表面,由光源直接射出的光与被墙面反射或者天空散射的光,反射率都是相同的。所有的入射方向上都会有radiance,而反射率的等式将会对它们进行积分。但是,实践中我们会进行区分,直接光照一般会有相对较小的体积角与较高的radiance,而间接光照将会以漫反射的形式覆盖剩余的半球且radiance较低。这也使得我们能在实践中对这两种光照进行独立处理。

到现在为止,我们所学习的区域光源技术都是对光源形状所涉出的恒定radiance进行积分。这么做使得着色表面上的每一个点都有一组方向,而在这组方向上的入射radiance都不等于0。而我们现在要做的是对所有可能的入射方向上的radiance进行积分。

虽然在本小节中我们将会学习间接光照和环境光照,但是我们并不会研究全局光照的算法。这两者之间最显著的区别就是,本章节中所有的着色计算都不会考虑场景中的其他物体表面,也就是说,光都是来自于光源。所以,假设我们使用一个区域光源来模拟墙面反射的光,这虽然是一个全局效果,但是在着色算法中并不会考虑墙体的存在,其中只包含区域光源。我们在下一章所学习的全局光照通常会与本小节的一些理念紧密结合。

Ambient light是环境光照中最简单的一种模型,其radiance并不会随着方向而改变,只有一个恒定的LA。但是如此简单的光照模型都能大大改善渲染效果。在场景中如果不考虑由其他对象反射的间接光,那么会使得画面极不真实。处于阴影中的物体或者背向光源的物体将会是完全黑色的,这明显不同于现实世界中的场景。

准确的ambient light效果将会取决于BRDF。对于Lambertian表面,如果LA保持不变,那么也意味着物体表面的法线n或者视野方向v并不会改变ambient light。

当进行着色计算时,该恒定radiance将会加上直接光源的radiance。对于任意BRDF,其等式为:

上述等式中的积分与directional albedo(方向性反射率)R(v)(9.3小节)相同,所以上述等式也能够写成Lo(v)=LAR(v)。较早的实时渲染应用有时会使用一个常量,也就是ambient color camb。这将会把等式简化为Lo(v)=cambLA

上述反射率等式忽略了遮蔽性这一点,例如,表面上的许多点会被遮盖而并不能被其他物体“看见”,因此也不会接受ambient light。而我们将在下一章节中学习如何解决这一问题。

留下评论

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