本页将介绍 Unity 中光照的工作方式。
Unity 中光照的工作方式类似于光在现实世界中的情况。Unity 使用详细的光线工作模型来获得更逼真的结果,并使用简化模型来获得更具风格化的结果。
下面的流程图从内容创建者的角度,大致显示了 Unity 中的整个光照管线。
首先要选择一个渲染管线。然后决定如何产生间接光照,并相应地选择一个全局光照系统。确保所有全局光照设置都针对项目进行了适当调整后,可以继续添加光源、发光表面、反射探针、光照探针和光照探针代理体 (LPPV)。
光源 (Lights) 是每个场景必不可少的部分。虽然网格和纹理定义了场景的形状和外观,但光源定义了 3D 环境的颜色和氛围。在每个场景中可能会使用多个光源。让这些光源协同工作需要一些精力,但可能会带来非常令人惊叹的结果。
可通过__游戏对象 (GameObject)-> 光源 (Light)__ 菜单将光源添加到场景中。然后从出现的子菜单中选择所需的光源格式。添加光源后,可以像任何其他游戏对象一样操作光源。此外,可使用__组件 (Component)-> 渲染 (Rendering)-> 光源 (Light)__ 将光源 (Light) 组件添加到任何选定的游戏对象。
光源组件在 Inspector 中提供了许多不同的选项。
只需更改光源的__颜色__,即可为场景提供完全不同的氛围。
直射光是发出后照射到表面一次再被直接反射到传感器(例如眼睛的视网膜或摄像机)中的光。间接光是最终反射到传感器中的所有其他光线,包括多次照射到表面的光线和天光。为了获得逼真的光照效果,需要模拟直射光和间接光。
Unity 可以计算直接光照和/或间接光照。Unity 使用什么光照技术取决于项目的配置方式。
实时光照是指 Unity 在运行时计算光照。烘焙光照是指 Unity 提前执行光照计算并将结果保存为光照数据,然后在运行时应用。在 Unity 中,项目可以使用实时光照、烘焙光照或两者的混合(称为混合光照)。
有关配置 Light 组件以提供实时、烘焙或混合光照的信息,请参阅光源模式 (Light Modes)。
全局光照是对直接和间接光照进行建模以提供逼真光照效果的一组技术。Unity 有两个全局光照系统,结合了直接光照和间接光照。
Unity 中可用的全局光照系统有:
实时全局光照 (Realtime Global Illumination):该系统基于第三方中间件解决方案__ Enlighten__Geomerics 出品的光照系统,在 Unity 中用于 Enlighten 实时全局光照。更多信息
See in Glossary 而构建。如果进行预计算并且未在启用 ContributeGI 设置的情况下修改场景中的游戏对象,则可以实时调整光照。
烘焙全局光照 (Baked Global Illumination):选择此系统时,Unity 使用渐进光照贴图程序 (Progressive Lightmapper)(CPU 或 GPU)将光照数据烘焙到光照探针、称为光照贴图的纹理和反射探针中。
渐进光照贴图程序 (Progressive Lightmapper) 使用 CPU 根据路径追踪来计算间接光照值。它可以优先处理影响场景视图摄像机可见对象的预计算光照。虽然仅更新光照贴图部分的光照会增加整体烘焙时间,但也使您能够对光照设计进行更快的迭代。
请参阅渲染管线功能比较了解有关不同渲染管线对光照贴图支持的更多信息。
Unity 支持不同的__渲染路径 (Rendering Paths)__。这些路径主要影响光源和阴影,因此根据游戏要求选择正确的渲染路径可以提高项目的性能。有关渲染路径的更多信息,可访问渲染路径部分。