【Unity】入门学习笔记180720——Unity Shader入门(2-2)——Unity中的基础光照

1、从宏观上说,渲染包含了lian两大部分:决定一个像素的可见性,决定这个像素上的光照计算

     辐照度:照射到物体表面之间的光线距离

     光线由光源发射出来后,就会与一些物体相交。通常,相交的结果有两个:散射和吸收

     散射有两种方向,一种将会散射到物体内部内部,称为折射或投射;一种散射到外部,称为反射

2、为了区分两种不同的散射方向,在光照模型中使用了不同的部分来计算它们:

     高光反射部分表示物体表面是如何反射光线的;

     漫反射部分表示有多少光线会被折射、吸收和散射出表面

     使用出射度来描述出射光线的数量和方向

     辐照度和出射度之间满足线性关系,它们之间的比值就是材质的漫反射和高光反射属性

3、着色

     根据材质属性、光源信息,使用一个等式去计算沿某个观察方向的出射度的过程。该等式也称为光照模型

     BRDF光照模型

4、标准光照模型

      基本方法是,将进入摄像机内的光线分为4个部分,每个部分用一种方法来计算它的贡献度:

      #自发光

      #高光反射

      #漫反射

      #环境光

5、计算光照模型,通常有两种选择,在片元着色器中计算,称为逐像素光照;在顶点着色器中计算,称为逐顶点光照

      标准光照模型仅仅是一个经验模型,并不完全符合真实世界中的光照现象。但由于它的易用性、计算速度和得到的效果都比较好,因此仍然被广泛使用。也被称为Phong光照模型,而后Blinn的方法简化了计算,又称为Blinn-Phong光照模型。  

       局限性:菲涅尔反射、各项同性

6、Unity中的环境光和自发光

在Unity中,场景中的环境光可以在Window > Lighting > Ambient Source/Ambient Color/Ambient Intensity中控制

我们只需要通过Unity的内置变量UNITY_LIGHTMODEL_AMBIENT就可以得到环境光的颜色和强度xin信息

计算自发光,只需要在片元着色器输出最后的颜色之前,把材质的自发光颜色tian添加到输出颜色即可

7、Unity中实现man漫反射光照模型

基本光照模型中漫反射部分的计算公式:

Cdiffuse=(Clight · Mdoffuse) max(0,n · l)

4个参数:入射光线的颜色和强度Clight,材质的漫反射系数Mdiffuse,表面法线n以及光源方向l

逐顶点漫反射光照、逐像素漫反射光照

半兰伯特光照模型:

Cdiffuse=(Clight · Mdoffuse)(α(n · l)+β),绝大多数情况下取0.5

8、在Unity Shader中实现高光反射光照类型

基本光照模型中高光反射部分计算公式:

Cspecular=(Clight· Mspecilar)max(0,v·r)^Mglass

4个参数:入射光线的颜色和强度Clight,材质的高光反射系数Mspecilar,视角方向vyi'j以及反射方向r

其中,反射方向r可以由表面fa'x法线n和光源方向l计算而得:

r=2(n·l)n-l

Blinn-Phong光照模型:

h=(v+l)/|v+l|

Cspecular=(Clight· Mspecilar)max(0,n·h)^Mglass

猜你喜欢

转载自blog.csdn.net/Dylan_Day/article/details/81075881