一、渲染方程
在games101课程中我们了解到,所有的渲染都可以根据一个渲染方程来得到。在某一点x,他在方向的出射值(output radiance)等于他本身在这一点这一方向的辐射值(emitted radiance)加上在这一点的入射值(incoming radiance)反射出的能量的总和。
为散射函数,表示在表示在
方向入射
方向出射能量的反射比例。
越大表示入射光线于平面夹角越小,能反射更多的能量。
现代的图形学工作基本都是围绕如何去实现这个渲染方程来进行的,因此我们会面临诸多挑战。第一个挑战就是,如何去更好的实现阴影(shadow),阴影能更好的体现出层次信息,阴影效果好不好就能直接影响到图像真实性的优劣,做好阴影就是对光源的分析足够透彻,点光源和平行光源很容易去分析,但是实际上现实世界更多的是面光源,在分析面光源,整个过程就会变得非常的复杂。第二个挑战就是在渲染方程中,我们会有一个积分的过程,要求我们不断去进行采样,整个过程是十分昂贵的,如何去更高效的得到积分结果便是另一个面临的问题。在物体的每一个点都有出射的过程,这就意味着所有的物体本身就是个光源,在一个场景无穷多个光源当中,如何去分析这便是第三个挑战。
二、基础光照解决方案
1、光照
最开始,我们将光照直接分成主光(simple light,光源直接照射)和环境光(ambient light,除去光源环境带来的光照)。
进一步,假设我物体表面是一个非常光滑的,会反射出周围的情景,因此引入了一个环境贴图(Environment Map)的概念。环境贴图相当于一个包围住物体的包围盒,人眼发射的光线直接去寻找反射光对应的贴图位置,这就用了一种最简单而又基本符合渲染方程的一种方法解决了问题。
2、材质
材质模型最简单的解决方案就无疑是Blinn-Phong模型。这个模型很好诠释了光的可叠加原理,将材质分为环境(Ambient)、漫反射(Diffuse)、高光(Specular),将这三项叠加在一起就是得到的结果。这个模型虽然简单,但是却能得出良好的结果。
但实际Blinn-Phong模型也有一些问题。首先计算下来会发现它的能量实际是不守恒的,反射方向的能量有时会大于入射能量,单一的反射