Skip to content

简介

光源(Light)组件(Component)用于提供不同种类的光照强度、方向和颜色信息,光照系统通过对应信息计算并为受光照影响的 游戏对象(GameObject)着色。

光源类型

光源(Light)组件(Component)目前支持以下光源类型:

定向光

定向光(Directional Lights)用于创建阳光的效果,可以被认为是存在于无限远的远处的光源。

【Lighting011.png】

定向光光源的效果示意图。

  • 定向光光源游戏对象的位置信息不会影响光照效果,光线强度不会因为定向光的距离而衰减。

【Light001.gif】

  • 旋转信息会影响定向光的方向和场景的光照效果,又会影响游戏对象接受光照的范围以及游戏对象产生阴影的位置。

【Light002.gif】

由于定向光光源会影响场景中所有拥有 网格(Mesh)信息的游戏对象,因此定向光性能损耗与场景照明像素总数相关。尽管如此,与其他光源相比性能损耗比较平衡。

点光源

点光源(Point Light),位于场景中一点并向各个方向均匀发射光的光源。

【Lighting012.png】

点光源在场景中的效果。

  • 点光源有指定的位置和范围,光线在该位置和范围内造成影响。

【Light003.png】

  • 为了打造更真实的光照效果,点光源在影响范围内会产生衰减,亮度与距离的平方成反比,最远距离时衰减为零。

【Light004.gif】

点光源的阴影会按 6 个世界方向渲染 6 次,非常耗费性能,需要谨慎使用。

聚光灯

聚光灯(Spot Lights),位于场景中一点并以锥形发出光的光源。

【Lighting013.png】

聚光灯在场景中的效果。

  • 聚光灯有指定的位置和范围,光线在该位置和范围内造成影响。而且光线的影响范围被限制在固定的角度中,导致照明区域呈锥形(光锥)。

【Light005.png】

  • 亮度会随着距离衰减,直到最远距离衰减为 0;亮度在光锥边缘也会随内角向外角产生衰减,直到大于外角范围衰减为 0。

【Light006.gif】

  • 光锥的投射方向为聚光灯所附加的游戏对象的前方(Z 轴正方向)。

【Light007.gif】

  • 加宽角度会增加锥体的宽度。

【Light008.gif】

Attention:
为游戏项目上线后不会造成卡顿,SandMod 规定每个 游戏对象(Game Object)最多只能接受 4 个除定向光以外的其他光源,4 个以外的其他光源将不会对该游戏对象造成光照效果。

【Light009.png】

创建方法

在 场景编辑器(Scene Editor)的 层级窗口(Hierarchy)中,选中光源对应的 游戏对象(Game Object)。

方法一:

选中对应的游戏对象后,在 检视窗口(Inspector)窗口中用鼠标左键点击 添加组件(Add Component)> 渲染(Rendering)> 光源**(Light)** 进行创建。

【Light010.png】

方法二:

选中对应的 游戏对象 后,在 菜单栏(Menu Bar)中点击 组件(Component) > 渲染(Rendering)> 光源**(Light)** 进行创建。

【Light011.png】

属性

光源(Light)组件(Component)包含以下基础属性:

【Light012.png】

名称描述
类型(Type)设置当前光源的类型,每种类型的光源的详细介绍,请参阅 光源类型 小节。
· 定向光(Directional Lights)。
· 点光源(Point Lights)。
· 聚光灯(Spot Lights)。
颜色(Color)设置光源灯光的颜色。
光照模式(Light Mode)设置光源的光照模式。
· 混合(Mix),提前对该光源的部分照明效果进行预计算,并在运行时也会对部分照明效果进行实时计算。
· 烘焙(Bake),在运行前预先计算该光源的照明效果,并且在运行时的任何光照计算中忽视该光源。

关于光照模式的详细描述,请参阅 光照模式 小节。
强度(Intensity)设置光源的亮度。属性值为大于等于 0 的布尔值类型,默认值为 1。
阴影类型(Shadow Type)设置光源投射的阴影的效果。
· 禁用(Disable),光源不投射阴影。
· 硬阴影(Hard),由光源投射产生具有锐利边缘的阴影。硬阴影并不真实,但产生硬阴影涉及的处理较少,能有效节省性能。
· 软阴影(Soft),由光源投射产生具有模糊过渡边缘的阴影。软阴影还可以减少阴影贴图的锯齿效果,让阴影看起来更真实。
偏差(Bias)设置阴影远离光源的距离,通常用于避免错误的阴影瑕疵。详细使用方法请参阅 阴影 章节。
属性值为 0 到 2 之间的布尔值,默认值为 1。
阴影法线偏差(Normal Bias)设置阴影在投射表面沿表面法线收缩的距离,通常用于避免错误的阴影瑕疵。详细使用方法请参阅 阴影 章节。
属性值为 0 到 3 之间的布尔值,默认值为 1。
阴影强度(Shadow Strength)设置光源投射的阴影的暗度。
属性值为 0 到 1 之间的布尔值,默认值为 0.75。
剔除遮罩(Culling Mask)用于指定哪些 层次(Layer)的 游戏对象(Game Object)受该光源的影响。

除了基础的属性,光源(Light)组件还会根据不同的光源 类型(Type)有不同的可设置属性。光源类型包括:定向光(Directional Lights)、点光源(Point Lights)、聚光灯(Spot Lights)。每种类型的光源的详细介绍,请参阅 光源类型 小节。

  • 定向光(Directional Lights)的可设置属性与光源组件的基础属性相同,定向光的方向取决于光源组件所附加的 游戏对象(Game Object)的 旋转(Rotation)变换(Transform)。

【Light013.gif】

  • 点光源(Point Lights)光源类型下还包含以下可设置属性。

【Light014.png】

名称描述
范围(Range)设置光线从组件所附加的游戏对象原点发出传播的最远距离。属性值为布尔值类型,单位为场景单位长度。
  • 聚光灯(Spot Lights)光源类型下还包含以下可设置属性。

【Light015.png】

名称描述
范围(Range)设置光线从组件所附加的游戏对象原点发出传播的最远距离。属性值为布尔值类型,单位为场景单位长度。
内角(Inner Angle)聚光灯光源锥形照明区域亮度开始衰减的角度。属性值为 0.1 到 179 之间的布尔值,且此属性值必须要小于或等于 外角(Outer Angle)属性的值,单位为度。
外角(Outer Angle)聚光灯光源锥形照明区域亮度衰减为 0 的角度。属性值为 0.1 到 179 之间的布尔值,且此属性值必须要大于或等于 内角(Inner Angle)属性的值,单位为度。

光照模式

为了确保游戏项目在移动端设备上能流畅运行,SanMod 不支持纯实时计算的光照模式,仅支持烘焙模式以及结合了实时光照和部分预计算的混合模式。

混合光照模式

混合光照模式的光源结合了实时光照和部分预计算。在游戏项目运行时混合光照模式的光源每帧执行一次实时的光照计算,模拟光源的效果。可用于在角色或可移动物体上照明和投射阴影。

您可以在运行时更改混合光照模式的光源的属性,这会更新对应光源的实时光照,实时更新该光源的光照效果。

局限性:

  • 混合光照模式的光源仅向场景提供直接照明,并且没有任何间接照明效果,这可能会导致场景中的光照不真实。
  • 由于混合光照模式的光源总是结合一些实时光照和一些光照效果预计算,因此混合光源总是在运行时比完全烘焙的光照涉及更多的计算,使用过多会影响游戏项目流畅程度。相对的,会比完全烘焙的光照涉及更少的内存使用量。

烘焙光照模式

烘焙光照模式的光源的光照效果会在烘焙光照时纳入计算中,并将结果作为光照数据保存为光照贴图,有关使用光照贴图的更多信息,请参阅 光照贴图 章节。在运行时,光照系统加载烘焙产出的光照数据,并使用该数据呈现 场景(Scene)的光照效果。由于复杂的计算是提前进行的,烘焙光照减少了运行时的着色成本,并减少了阴影的渲染成本。

局限性:

  • 对应场景在烘焙光照后,更改 静态(Static)的烘焙光照模式的光源的属性,光照效果也不会在场景中显示,需要清除烘焙或重新烘焙才会显示更改后的光照效果。
  • 非 静态(Static)的 游戏对象(Game Object)不接收来自烘焙光照模式的光源的光照效果或阴影。