GI(Global illumination),即全局光照。能够计算直接光、间接光、环境光(ambient)以及反射光(reflection)的光照系统。通过GI算法可以使渲染出来的光更加真是丰富。这里简单介绍下Light组件的属性。
“官方吐槽”
1.Type:当前光源类型,可分为四种光源:
- Directional:平行光(和位置无光,和角度有关)
说明:平行光对于在场景中创建阳光等效果非常有用。在许多方面,平行光像太阳,可以认为是遥远的光源存在无限远。平行光没有任何可识别的光源位置,因此光源可以被放置在场景中的任何位置。场景中的所有物体都被照亮,就好像光线总是来自同一个方向。光线到目标物体的距离没有定义,因此光线不会减弱。
用途:平行光代表来自游戏世界范围之外的位置的巨大的、遥远的光源。在现实场景中,它们可以用来模拟太阳或月亮。在抽象的游戏世界中,它们是一种有用的方法,可以为对象添加令人信服的阴影,而无需精确地指定光线来自何处。(最不消耗图形处理器资源的光源类型)
- Point:点光源(类似于一个灯泡的效果)
说明:点光源位于空间中的一个点上,向各个方向均匀地发出光。光线照射到物体表面的方向是从接触点回到物体中心的直线。强度随着距离光的距离而减小,在指定范围内达到零。光强度与距离源的平方成反比。这就是所谓的“平方反比定律”,它与现实世界中的光行为相似。
用途:点光源对于模拟场景中的灯具和其他局部光源非常有用。(比较耗费图形处理器资源的光源类型)
- Spot:聚光灯(由一个点像一个椎体一样照射,类似于手电筒)
说明:像点光源一样,聚光灯也有特定的位置和范围,在这个范围内,光线就会脱落。然而,聚光灯被限制在一个角度上,从而形成一个锥形的照明区域。圆锥的中心点指向光物体的正(Z)方向。聚光灯锥体边缘的光也会减弱。扩大角度会增加圆锥的宽度,同时也会增加这种渐淡的大小,也就是所谓的“半影”。
用途:聚光灯通常用于人工光源,如手电筒,汽车前大灯和探照灯。(比较耗费图形处理器资源的光源类型)
- Area(baked only):区域光
说明:面积光由空间中的矩形定义。光在它们的表面积上均匀地向各个方向发射,但只从矩形的一侧发射。没有人为地控制一个区域光的范围,然而强度会在距离源的倒数平方处减弱。由于灯光计算过程相当重要,所以区域照明在运行时是不可用的,并且只能烘焙成灯光映射。
用途:因为一个区域的光线会同时从几个不同的方向照亮一个物体,所以阴影比其他类型的光线更加柔和和微妙。你可以用它来创建一个逼真的街灯或靠近玩家的一排灯光。小面积的光线可以模拟较小的光源(如室内照明),但比点光源更逼真。(用于实时光照,仅用于光照贴图烘焙)
2.Color:光源的颜色
3.Mode:指定光模式,用于确定光是否和如何被“烘烤”。有三种处理方式:
Realtime:实时计算光照和阴影,如果场景比较大,灯光比较多,会较消耗性能。
Mixed:Realtime和Baked的混合模式
Baked:烘焙相关static的物体;将烘焙好的信息映射到一张贴图上,在运行时将贴图直接赋予给相关场景,使其产生“假”的阴影。
4.Intensity:设置灯光的亮度。Directional的默认值是0.5。Point、Spot或Area的默认值是1。(2018版本好像都是1)
5.Indirect Multiplier:间接光照的强度。间接光是从一个物体反射到另一个物体的光。间接乘法器定义了由全局照明(GI)系统计算的反弹光的亮度。如果你将间接乘数设置为低于1的值,反弹的光会随着每次反弹而变暗。值大于1时,每次反弹都会使光线更亮。
6.Shadow Type:确定这个光是否有阴影(阴影类型)。Hard Shadows,Soft Shadows,No Shadows。
- Strength:光线照射后的阴影强度,用0到1之间的值表示,0表示阴影消失,1表示阴影呈现黑色。默认设置为1
- Resolution:控制阴影渲染分辨率的质量。更高的分辨率增加了阴影的保真度,但是需要更多的GPU时间和内存使用。
- Bias:偏移度;设置灯光空间的像素位置与阴影贴图的值比较的偏移量,定义为0到2之间的值,默认设置为0.05。当值过小,游戏对象表面会产生self-shadow,就是物体的表面会有来自自身阴影的错误显示;当值过大,阴影就会较大程度地偏离投影的游戏对象。
- Normal Bias:控制阴影投射表面沿表面法线收缩的距离,定义为0到3之间的值,默认设置为0.4。
- Near Plane:使用滑动条来控制夹面附近的值呈现阴影时,定义为一个值0.1至10。这个值被限制在0.1单位或1%的光范围属性,以较低的为准。默认设置为0.2。(这里的几个说明只是官方文档的直译,之后研究再去理解)
说明:硬阴影性能比软阴影好(有锯齿)。软阴影很消耗性能(但是软阴影效果比较好),所以需要阴影剔除。
shadow distance(阴影距离):如果等于40则等于距离摄像机40米以内渲染阴影,40米以外不渲染阴影。(这个参数在unity2018暂时没找到,留待求证)
选中个别物体,可以在组件中选择关闭阴影。
7.Cookie:为光源指定拥有alpha通道的纹理,使光线在不同的地方有不同的亮度。如果光源是Directional或者Spot,可以指定一个2D纹理。如果光源是一个Point,必须指定一个Cubemap(立方体纹理)。(理解为舞厅里面,射灯照射到地上有各种图案,这里就是放入需要的图案贴图)
Cookie Size:用于控制缩放Cookie投影 <Directional参数独有>
8.Draw Halo:绘制一个光晕(环);直径为Range的值(Range属性只有在Spot和Point光照里面才有)
9.Flare:斑耀/炫光;为光源指定斑耀/镜头光晕的效果。
10.Render Mode:渲染模式;不同的模式影响光照强度和性能开销。
- Auto:自动;根据光源的亮度以及运行时Quality Settings(质量设置)的设置来确定光源渲染模式。
- Important:重要;光源逐像素进行渲染。一般用非常重要的光源渲染。以每像素进行渲染来获得最明显的视觉效果(例如,一个玩家的汽车的前灯)。
- Not Important:不重要;光线总是以更快的、顶点/目标光线模式进行渲染。
11.Culling Mask:剔除遮罩;根据层级(Layer)来排除一些游戏物体不受光照射影响。
这里记录下不同模式的光照的属性图:
Range:光照范围
Spot Angle:光照角度
说明:区域光的特殊参数暂时不记录,还不了解
“个人吐槽”
这里仅仅只是介绍下Unity中light组件的属性,实际上在Unity中还存在“中心控光枢纽”。只是这部分过于复杂,我暂时选择放弃,哈哈!