Unity中的基础光照
通常来讲,我们要模拟真实的光照环境来生成一张图像,需要考虑3种物理现象:
1.光线从光源(light source)中被发射出来。
2.光线和场景中的一些物体相交:一些光线被物体吸收了,而另一些光线被散射到其他方向。
3.摄像机吸收了一些光,产生了一张图像。
光源
光不是从石头里蹦出来的,而是由光源发射出来的。在光学了,我们使用辐照度(irradiance)来量化光。
吸收和散射
光线有光源发射后,就会与一些物体相交。通常,相交的结果有2个:散射(scattering)和吸收(absorption)。散射只改变光线的方向。光线在物体表面经过散射后,有2种方向:一种将会散射到物体内部,这种现象被称为折射(refraction)或透视(transmission);另一种将会散射到外部,这种现象被称为反射(reflection)。
为了区分这2种不同的散射方向,我们在光照模型中使用了不同的部分来计算它们:高光反射(specular)部分表示物体表面是如何反射光线的,而漫反射(diffuse)部分则表示有多少光线会被折射、吸收和散射出表面。
着色
着色(shading)是指根据材质属性、光源信息,使用一个等式去计算沿某个观察方向的出射度的过程。我们把这个等式称为光照模型(Lighting Model)。
BRDF光照模型
在图形学中,BRDF大多使用一个数学公式来表示,并且提供了一些参数来调整材质属性。通俗来讲,当给定入射光线的方向和辐照度后,BRDF可以给出在某个出射方向上的光照能量分布。
标准光照模型
把进入到摄像机内的光线分为4个部分:
1.自发光(emissive)部分
2.高光反射(specular)部分
3.漫反射(diffuse)部分
4.环境光(ambient)部分
Unity中的漫反射光照模型
基本光照模型中漫反射部分的计算公式:
Unity中高光反射光照模型
基本光照模型中光照反射部分的计算公式: