【Unity】4.6 灯光

分类:Unity、C#、VS2015 网络

建立日期:2016-04-11 app

1、简介

灯光(Light,也叫光源)是每个场景的重要组成部分,用于照亮场景和对象,从而让游戏具备本身的个性和风格,好比利用灯光可模拟太阳、燃烧的火柴光、手电筒、炮火或爆炸等。 性能

网格模型和材质纹理决定了场景的形状和质感。灯光则决定了场景环境的明暗、色彩和氛围。每一个场景中可使用—个以上的灯光,合理地使用灯光能够创造完美的视觉效果。 3d

在 Unity 专业版中,全部灯光均可以有选择地投射立方体贴图纹理。立方体贴图 (Cubemap) 在全部方向都会被投射出阴影。 orm

2、灯光类型

Unity 5.3.4中有 4 种灯光。建立灯光的方式同建立其余游戏对象的方式类似: htm

image

因为不一样类型的光源属性类似,所以这里将其放在一块儿来介绍。 对象

一、Type blog

光源类型。 游戏

(1)Directional ip

方向光源。这种类型的灯光能够被放置在无穷远处,能够影响场景中的一切游戏对象,相似于天然界中太阳光的照明效果。

方向光源是最不耗费图形处理器资源的光源类型。

image

方向灯主要用于模拟室外场景中的太阳光与月光。其会影响场景中全部对象的表面。它们的图形处理器成本最低。方向灯(对支持阴影的平台而言)投射的阴影在下图中获得了深刻地解释。

image

在方向灯具备 Cookie 时,Cookie 会被投影到灯的 Z 轴的中心位置。Cookie 的大小是由Coikie 大小 (Cookie Size) 属性控制的。在检视器 (Inspector) 中将 Cookie 纹理的循环模式设置为重复 (Repeat)。

下图是投影云状 Cookie 纹理的方向灯:

image

Cookie 是在大型户外场景中快速添加细节的好方法。你甚至能够在场景中慢慢移动灯,制造出云在动的效果。

注意,当使用正向渲染时,会对具备 Cookie 的方向灯禁用阴影。然而,能够经过使用 fullforwardshadows编写自定义着色器 (custom shader) 来启用阴影。

(2)Point

点光源从一个位置向四面八方发出光线,影响其范围(Range)内的全部对象,相似灯泡的照明效果。点光源的阴影是较耗费图像处理器资源的光源类型。

image

(3)Spot

聚光灯。这种灯光从一点发出,在一个方向按照—个锥形的范围照射,该锥形是由聚光灯角度 (Spot Angle) 和范围 (Range) 界定的。

聚光灯是较耗费图形处理器资源的光源类型。

image

这种灯只影响它照射区域内的对象,适用于模拟汽车的前灯、手电筒、舞台场景中的射灯、……等照明效果。下图是聚光灯效果:

image

聚光灯也能够有 Cookie - 锥形光照投射下来的纹理。这很适合用于制做光照穿过窗户的效果。纹理的边缘是黑色很是重要,也就是要启用边框多层贴图 (Border Mipmaps) 选项,并且其循环模式 (wrapping mode) 要设置为拉伸 (Clamp)。

下图是具备一个 Cookie 的聚光灯:

image

(4)Area

区域光/面光源。该类型的光源没法应用于实时光照,仅适用于光照贴图烘焙 (lightmap baking)),这种光能从各方向照射一个平面的矩形截面的一侧。

image

区域灯。能从各方向照射一个平面的矩形截面的一侧的灯。矩形是由宽度 (Width) 和高度 (Height) 属性定义的。区域灯仅可于光照贴图烘焙 (lightmap baking) 期间使用,且在运行时对对象没有影响。

区域灯从一个平面的矩形截面的一侧投射灯光。

灯光被投射在灯光范围内的全部对象上。矩形的大小是由“宽度”(Width) 和“高度”(Height) 属性决定的,且平面的法线(例如灯光投射到的一侧)与灯光的正 Z 方向相同。灯光从矩形的整个表面发出,所以受其影响的对象的阴影比受点灯或方向性灯影响的对象的阴影更柔和。

因为光照计算需密集使用处理器,因此区域灯在运行时没法使用,且只能烘焙到光照贴图 (lightmap) 中。

二、Range

范围。用于控制光线从光源对象的中心发射的距离。该属性仅适用于点光源(Point Light)或者聚光灯(Spot Light)。

三、Spot Angle

聚光灯角度。决定锥形的角度。仅适用于聚光灯 (Spot)。

四、Color

颜色。所发射的光的颜色。

五、Intensity

强度。光的亮度。点灯 (Point)/聚光灯 (Spot)/区域灯 (Area) 的默认值为 1。方向灯 (Directional) 的默认值为 0.5。

六、Cookie

该项用于为光源指定拥有alpha通道的纹理,使光线在不一样的地方有不一样的亮度。若是果光源是聚光灯或方向光,只能指定—个2D纹理。若是光源是一个点光源,该项必须指定—个Cubemap(立方体贴图)。

您能够建立一个含有 alpha 通道的纹理,并将其分配给灯光的 Cookie变量。Cookie 会被灯光投影。Cookie 的 alpha 遮蔽图调节光量,在表面生成亮点和黑点。这种方法很是适合用于大大增长场景的复杂性和氛围。

Unity 中的全部内置着色器均可与每一类型灯光无缝配合。然而,顶点光照 (VertexLit) 着色器没法显示 Cookie 或阴影 (Shadows)。

七、Cookie Size

缩放 Cookie 的投影。仅方向灯 (Directional) 才有此参数。

八、Shadow Type

阴影类型(仅限专业版)。为光源选择阴影类型。能够选择No Shadows(关闭阴影)、Hard Shadows(硬阴影)以及Soft Shadows(软阴影)。

注意软阴影会消耗更多的系统资源。

默认设置下,只有方向光源才能够开启阴影。

若是但愿开启点光源或者聚光灯光源的阴影(只有发布为Web版或单机版才支持),可经过菜单栏中的【Edit】→【Project Settings】→【P!ayer】选项,而后在检视器视图中经过Rendering Path(渲染路径)进一步设置Deferred Light类型。

Rendering Path的选项有:

(1)VertexLit

顶点光照。这种光照效果最差,不支持阴影。通常用于配置交叉的机器或受限的移动平台。

(2)Forward

正向着色。能很好地支持光的照射效果,但不支持点光源、聚光灯。

(3)Deferred Lighting

延迟光照(仅Pro版才支持)。支持最佳的光照效果及全部类型光源投射的阴影,但须要必定程度的硬件支持。

九、Strength

阴影强度。阴影的暗度。其值介于 0 和 1 之间。

十、Resolution

分辨率。控制阴影分辨率的质量。有5项可供选择:使用质量没置、低质量、中等质量、高质量、更高质量。

十一、Bias

偏移。该项用于设置灯光空间的像素位置与阴影贴图的值相比较时使用的偏移量。取值范围是0~0.5。若是该值太小,游戏对象表面会产生sele-shadow,即物体的表面会有来自于自身阴影的错误显示;若是该值过大,阴影就会较大程度地偏离投影的游戏对象。

十二、Softness

柔化。控制阴影模糊采样区的偏移量。仅适用于方向灯 (Directional)。

1三、Softness Fade

柔化淡出。控制阴影与摄像机的距离淡出的程度。仅适用于方向灯 (Directional)。

1四、Draw Halo

绘制光晕。若是勾选此项,光线的球形光晕将被绘制,该光晕的半径与范围 (Range) 相等。有关更多详细信息,另请参阅光晕文档和渲染设置文档。

1五、Flare

耀斑/眩光。可选择指代为将在光的位置被渲染的光斑。

1六、Render Mode

渲染模式。此种光的重要性。这会影响光照保真度和性能,请参阅下面的性能注意事项。选项包括:

Auto:自动。在运行时根据附近灯光的亮度和当前的质量设置肯定渲染方法。

Important:重要。灯光老是逐个像素被渲染。请仅将此功能用于很是重要的效果(例如,玩家汽车的前灯)。

Not Important:不重要。灯光老是在更快的顶点/对象光模式下被渲染。

1七、Culling Mask

剔除遮蔽图。用于有选择地使某些对象组不受灯光影响;请参阅双光照贴图。

1八、Lightmapping

光照贴图。该项用于控制光源对光照贴图影晌的模式。

RealtimeOnly:仅实时灯光计算,不参与光照贴图的烘焙计算。

Auto:自动。

Bakedonly:仅做用于光照贴图的烘焙,不进行实时灯光计算。

1九、Width、Height

宽度 (Width) (仅适用于区域灯)矩形光照区域的宽度。

高度 (Height) (仅适用于区域灯)矩形光照区域的高度。

3、性能注意事项

灯光有两种渲染方式:顶点光照和像素光照。

顶点光照仅计算游戏模型顶点处的光照,且将光照插入到模型的表面上。

像素光照在屏幕的每一个像素处被计算,所以更消耗资源。

一些较旧的显卡只支持顶点光照

尽管像素光照渲染得更慢,但它可以实现一些顶点光照不能实现的效果。法线贴图 (normal mapping)、灯光Cookie (light Cookie) 和实时阴影(realtime shadow) 都是仅能在像素模式下渲染。在像素模式下,聚光灯的形状和点灯高光效果也更好。

在顶点灯光模式下渲染时,以上三种灯的光的效果以下。

下图是顶点光照模式下点光源(Point)的照射效果:

image

下图是顶点光照模式下聚光灯(Spot)的照射效果:

image

下图是顶点光照模式下方向灯(Directional)的照射效果:

image

灯光对渲染速度有很是大的影响 - 所以必须在光照质量和游戏速度之间加以权衡。因为像素灯光比顶点灯光耗费的资源要多得多,所以Unity仅仅逐像素渲染须要“最亮的光”时的效果。可在质量设置中为网络播放器和单机版编译目标设置像素灯光的实际数量。

您可使用渲染模式 (Render Mode) 属性来明确地控制光是否应渲染为顶点或像素灯光。默认状况下,Unity将基于对象受光影响的程度自动将光分类。哪些灯光实际上被渲染为像素灯光是由具体的对象决定的。

相关文章
相关标签/搜索