UnityShader

【Unity Shader入门精要学习】Unity中的基础光照(

2019-08-22  本文已影响0人  小王子称号发放NPC

我们是如何看见这个世界的

图形学第一定律:如果它看起来是对,那么它就是对的

1、光源(light source)

首先光线从光源中被发射出,然后光线和场景中的物体相交,一些光线被物体吸收,一些光线被散射到其他方向,最后被摄像机吸收了一些光,产生了图形。
通常会把光源当成没有体积的点,用辐照度(irradiance)来量化光。对于平行光来说,它的辐照度就是单位面积上单位时间内穿过的能量。在计算光照模型时,我们使用光源方向l表面法线n之间的夹角的余弦值来得到。默认的矢量都是模为1。

点积计算辐照度的由来
由上图可以看出辐照度和d/cosθ成反比,所以就和cosθ成正比,cosθ越大辐照度越大。cosθ就是法线和光线入射方向的点积。

2、吸收和散射

光线和物体相交之后,一般有两种结果:散射(scattering)吸收(absorption)
散射只改变光线的方向,不改变光线的密度和颜色
吸收只改变光线的密度和颜色,不改变光线的方向
光线在物体表面经过散射之后会产生两种情况:反射(reflection)折射(refraction)
折射:光线会散射到物体内部,对于不透明物体,折射进入物体内部的光线会继续与内部的颗粒进行交互,其中有些光线最后会重新发射出物体表面,而另一些光线则会被吸收。
反射:则是光线被直接散射到物体的外面。

反射与折射
而在光照模型中,为了区分折射反射我们使用高光反射(specular)替代反射表示光线如何在物体表面反射的,使用漫反射(diffuse)替代折射,表示会有多少光线会被折射,吸收和散射出表面。
根据入射光线的数量和方向,我们可以计算得到出射光线的数量和方向,通常使用出射度(exitance)来描述它。
辐照度出射度之间满足线性关系,它们之间的比值就是材质的漫反射高光反射的属性。

3、着色(shading)

着色指的是,根据材质属性(如漫反射属性等),光源信息(方向,辐照度等),使用一个等式去计算沿某个观察方向的出射度的过程。我们也把这个等式称为光照模型(Lighting Model),不同的光照模型有不同的目的

4、BRDF

BRDF(Bidirectional Reflectance Distribution Function)双向反射分布函数,用来描述当光线从某个方向照射到一个表面时,有多少光线被反射,反射的方向有哪些。当给定模型表面上的一个点时,BRDF包含了对这个点外观的所有描述信息。在图形学中,BRDF大多使用一个数学公式来表达,并且提供一些参数来调整材质属性。通俗的讲就是给定入射光方向和辐照度,根据BRDF可以算出在某个出射方向上的光照能量分布。

上一篇下一篇

猜你喜欢

热点阅读