一:光源参数 属性面板的属性含义:
Type:四种光源类型之一 。
1.平行光:最为简单的光照,我们认为受平行光影响的物体接收到的光线方向是一致的,unity中平行光源的位置是无所谓的,可以放在任何位置,这并不会影响光源的方向。
2.点光源:从一个点发出的光,影响范围只有半径范围为r的球体内,且光照强度随着远离球心而不断衰减。
3.聚光灯:同样从一个点出发,但照亮范围是一个锥形区域,我们可以把他想象成手电筒,宏观来看,他是点光源的1/n,光照同样会衰减,由于是锥形,比起圆来计算上要稍微复杂一点,他有一个张开的角度angle可以调节。
4.面光源:目前只有在烘焙时才起作用,向某个方向发射的光,同样会衰减。
Color:光源颜色。
Mode:实时光照,烘焙,混合三种模式。
Intensity:光照强度。
Indirect Multiplier:间接光照强度,即太阳光照射到物体之后,物体之间的反射强度,可以调节亮度。ShadowType:阴影类型:Hard Shadows, Soft Shadows, No shadows。
RealtimeShadows:实时阴影,相关参数可以调节光照的阴影效果,同时消耗也会不同。
RenderMode:光照的渲染计算类型,延迟渲染中会用到。
important:计算光照时会逐片元计算。
not important:逐顶点计算光照或者更高效的计算方式。
auto:由unity自己决定此光源的光照计算方式。
Culling Mask:根据物体的layer即层来控制此光源影响物体,我们可以将不想被光源影响的物体标记为统一的layer,在这里设置他们。
二:BRDF(光照模型)任何在游戏中看起来的表现都是数学计算的结果,那么如何让我们的光照看起来更加真实,更加符合人类的感知认识,就看我们用的光照模型厉不厉害了。
1.标准光照模型光 = 自发光 + 环境光 + 漫反射 + 高光反射自发光:物体本身辐射的光,很简单,可以直接使用材质的自发光颜色环境光:真实世界中,物体不仅会被光源照亮,还会被周围环境中的物体照亮,我们假定用环境光来模拟周围物体对我们物体影响的总和漫反射:与视角方向无关的,被认为反射出的光是随机的,均等的高光反射:受表面法线,光照方向,视角方向影响的部分,可以想象利刃上的光泽,是高光反射的结果,从不同的观察角度,得到的计算结果不一样
2.漫反射的计算兰伯特定律:发射光线的强度和表面法线和光源方向之间夹角的余弦值成正比(读者可以画个图就理解了),其实就是越光线越是垂直表面,漫反射越强,计算公式为:Clight为光照颜色,Mdiffuse为漫反射颜色,Max取0和点乘结果的最大值,也就是将点乘结果小于0的部分设置为0,这也正是物体表面会分布不同强度的光照,而背面全是黑色的原因(背面的点乘为负值,被设置为0)
3.高光反射的计算Clight光照颜色,Mspecular高光反射颜色,n为法线方向,h为视角方向加上光照方向然后归一化(简化计算,避免计算反射方向)
4.菲涅尔反射想一下这样的情景,你站在河边,远处的河水熠熠发光,近处的河水还能看见水下的鱼,这是不是和我们的常规光照模型矛盾了呢,好像是这样,我们视角越是垂直于表面,反而反射效果越弱,我们如果需要得到更加丰富和更加细节的光照效果,菲涅尔反射也是我们需要考虑的一部分,比如把菲尼尔反射和标准光照模型结合起来。冯乐乐前辈的博客中有篇就是利用漫反射和高光反射以及菲涅反射叠加起来,而在我们知道了原理后,调整各个部分的比例得到我们想要的结果就是不断调节的过程了,没有对错之分只有合不合适,“如果它看起来是对的 那么它就是对的”。
5.逐顶点还是逐像素首先我们要了解一点,在模型中,片元说要比定点数多很多,三个顶点构成的三角形,里面可以有几十个片元,这些片元的某些数据是三个顶点线性插值的结果,因此,很明显,在顶点中计算光照要比在片元中计算开销更小,同样的得到的效果也会稍差一些,这是相对的,需要我们去取舍。
更多unity2018的功能介绍请到paws3d爪爪学院查找。