
在 Unity 中,灯光分为三大类型,并可按需要进行定制与搭配。
点光源
- 从一个点向各个方向均匀发光,常用于爆炸、灯泡等场景。它是游戏中最常见的灯光形式之一,但点光源的阴影计算通常最为昂贵。
- 点光源可以附带 Cookie,即带有 alpha 通道的立方贴图,这些贴图会在各个方向投射,并通过 alpha 掩码调节亮度,提升表面的细节与质感。
聚光灯
- 仅在一个方向的圆锥内发光,适合用作手电筒、车灯、路灯等场景。聚光灯对显卡的压力较大,是三种灯光中较为昂贵的一种。
- 聚光灯也可以使用 Cookie,通过圆锥内投射的纹理来模拟光从窗户射入、光线穿过物体等效果。为了获得更好的效果,边缘应尽量呈现黑色,贴图的边界应开启 Border Mipmaps,并将包装模式设为 Clamp。
方向光源
- 主要用于室外场景的日光和月光,光线会照亮场景中所有表面,覆盖范围广且耗费最低。
- 使用 Cookie 时,光线的投影会在光的 Z 轴中心投射,Cookie 的尺寸通过 Cookie Size 属性控制。将纹理包装模式设置为 Repeat,可实现更自然的投影效果。
- Cookie 还能用于大型场景的快速细节添加,甚至可以让光线在场景中平滑移动,模拟云层的变换。
阴影与渲染模式
- 阴影是一个用于提升真实感的特性,部分场景或目标平台可开启阴影。你可以为每个灯光选择硬阴影或柔和阴影来实现不同的阴影效果。
- 场景中的灯光有两种渲染方式:顶点光照与像素光照。顶点光照仅在模型顶点处计算光照,并在表面上进行插值,速度更快;像素光照在每一个屏幕像素处计算,效果更真实但开销更大。
- 像素光照具备普通贴图(法线贴图)、灯光 Cookie、实时阴影等高级特性,点光与聚光灯在像素模式下的表现通常更佳VSport。某些较旧的显卡可能仅支持顶点光照。
- Unity 会根据对象受光程度自动决定是否将灯光归类为像素灯光;你也可以通过渲染模式(Render Mode)属性手动指定。实际被当作像素灯光来渲染的灯光数量,是在场景中逐对象判断的结果。
- 大型高亮对象若距离玩家较远,可能由周边灯光以顶点光照渲染;反之,则可能全部使用像素光照。为提升性能,建议将大型对象拆分成若干小对象。
性能优化要点
- 灯光会显著影响渲染速度,因此需要在光照质量与游戏帧率之间做权衡。像素灯的数量在不同目标平台的质量设置中可进行调整。
- 如需提高整体性能,优先使用 VertexLit 着色器,它仅进行顶点级别的光照计算,适合低端显卡。
额外提示
- 使用 cookies 的教程可帮助你掌握在聚光灯或方向光中创建更真实的光纹投射效果。
- 对于窗户光线效果,合适的 Cookie 贴图与边缘黑色处理能显著提升真实感。
- 想要为场景增加层次与深度,可以通过低强度点光源来增强环境的层次感。
- 如果目标是获得更高的帧率,优先选择 VertexLit 着色器,从而在低端设备上获得更高的吞吐量。
