从宏观上讲渲染包含了两大部分:决定一个像素的可见性,决定一个像素的光照计算
而光照模型就是用于决定在一个像素上决定怎样的渲染光照计算。
一、我们是如何看到这个世界的
1.光源
实时渲染中,我们通常把光源当成一个没有体积的点,用l来表示它的方向
辐照度:量化光的方法,一个光源发出了多少光
在计算光照模型时,我们需要知道一个物体的辐照度
对于平行光辐照度通过计算垂直于l的单位时间内穿过的能量来得到。
但物体表面往往时和l不垂直的,那么
如何计算辐照度:光源方向l和法线n之间的夹角的余弦值
注意:这里的默认方向的模都为1
辐照度和照射到物体表面时光线之间的距离成反比,因此辐照度与成正比。
可以使用光源方向l和表面法线n的点积得到。这也是用点积来计算辐照度的由来。
2.吸收和散射
光线由光源发射出来后,会与物体相交,相交的结果有两种:散射和吸收
散射:只改变方向,不改变颜色和密度
吸收:只改变密度和颜色,但不改变光线的方向
散射后的两种方向:
- 1.散射到物体内部,这种现象被称为折射或投射
- 2.散射到外部,这种现象被称为反射
对于不透明物体,折射进入物体内部的光线还会继续与内部的颗粒进行交互。其中一些光线最后会重新发射出物体表面,而另一些则被物体吸收。那些从物体表面重新发射出的光线将具有和入射光线不同的方向分布和颜色。
为了区分两种不同的散射,光照模型中用了两种不同的部分来计算:
- 高光反射:表示物体表面是如何反射光线的
- 漫反射:表示有多少光线会被折射、吸收和散射出表面
出射度:根据入射光线的数量和方向,计算出出射光线的数量和方向
辐照度和出射度之间是满足线性关系的,而他们之间的比值就是材质的漫反射和高光反射属性
3.着色
定义:着色(shading)是指根据材质属性(如漫反射属性等)、光源信息(如光源方向、辐照度等),使用一个等式去计算沿着某一个观察方向的出射度的过程。
我们把这个等式称为光照模型。不同的光照模型有不同的目的。
如:一些用于描述粗糙的物体表面,一些用于描述金属表面
4.BRDF光照模型
通俗的来讲,当给定入射光线的方向和辐照度后,BRDF可以给出在某个出射方向上的能量分布。
本章涉及的BRDF是对真实场景进行理想化和简化后的模型,并不能真实的反应物体与光线的交互。这写光照模型被称为经验模型。
图形学第一定律:如果它看起来是对的,那么它就是对的。
二、标准光照模型
1975年,著名学者裴祥风提出了标准光照模型背后的基本理念。标准光照模型只关心直接光照,也就是那些直接从光源发射出来照射到物体表面后,经过物体表面的一次反射直接进入摄像机的光线。
该方法将光线分为4部分:
自发光(emissive):。用于表述当给定一个方向时,一个表面本身会向该方向发射出多少辐射度。注意,如果没有使用全局光照技术,这些自发光是并不会真的照亮周围物体的,而是它本身看起来更亮了而已。
高光反射(specular):。用于描述当光线从光源照射到模型表面时,该表面会在完全镜面反射方向散射多少辐射量。
漫反射(diffuse):。用于描述当光线从光源照射到模型表面时,该表面会向每个方向散射多少辐射量。
环境光(ambient):。用于描述其他所有间接光照。
1.环境光
间接光照是指,光线通常会在多个物体间反射,最后进入摄像机,也就是说,光线在进入摄像机前,经过了不只一次光照。
在标准光照模型中,使用了一种被称为环境光的部分来近似模拟间接光照。环境光的计算非常简单,它是一个全局变量,即场景中的所有物体都使用这个环境光。
2.自发光
自发光也可以直接由光源发射进摄像机,而不需要经过任何物体的反射。标准光照模型使用自发光来计算这个部分的贡献度。其计算很简答,直接使用该材质的自发光颜色
通常在实时渲染中,自发光表面并不会照亮周围表面,这个物体并不会被当成一个光源。
只有引入全局光照系统后才可以模拟这类自发光物体对周围环境的影响
3.漫反射
漫反射用于对那些被物体表面随机散射到各个方向的辐射度进行建模。
漫反射中视角不重要,入射光线角度很重要
兰伯特定律:反射光线的强度与表面法线和光源方向之间的夹角的余弦值成正比。
材质的漫反射颜色
光源颜色
防止物体被从后面来的光源照亮,所以将负值截去
4.高光反射
用于计算沿着完全镜面防溺水方向被反射的光线,这可以让物体看起来是有光泽的,如金属材质
需要知道的变量:法线方向、视角方向、光源方向、反射方向等