有两套 GI 光照贴图:__烘焙 (Baked)__ 和__实时 (Realtime)__。决定要使用哪套光照贴图取决于您使用的是环境光照还是特定光源:
Global illumination(环境光照)可以设置为 Realtime 或 Baked。选择 Window > Rendering > Lighting Settings__,然后从 Ambient GI__ 下拉菜单中选择一个选项。
Lights 可以设置为 Realtime、Baked 或 Mixed。前往 Inspector 窗口,然后从 Baking 下拉菜单中选择一个选项。
材质包含发光控件,这些控件可以设置为 Realtime 或 Baked。请参阅有关标准着色器材质发光参数的文档以了解更多信息。
光照贴图 | 属性 |
---|---|
烘焙 (Baked) | 烘焙光照贴图主要用于在运行时一直不变的光源(例如,点亮的街灯),因此在光照贴图中存储为静态渲染。功能包括直接光照、间接光照和环境光遮挡。 |
实时 (Realtime) | 实时光照贴图主要用于在运行期间有动画效果的光源(例如,闪烁的街灯),因此需要实时渲染。功能仅包括间接光照,通常分辨率较低。直射光不在光照贴图中,而是实时渲染。 |
混合 (Mixed) | 将光照设置为“混合”模式时,会产生烘焙光照贴图,同时还会为非静态对象提供直接的实时光照。 |
您可以使用其中一个光照贴图或同时使用这些光照贴图来对场景进行光照。您的选择决定了光源影响因素和产生的 GI 将添加到哪些光照贴图。
能够查看正在使用的 UV 非常重要,Unity 有一个可视化工具来帮助您执行此操作。首先,打开 Lighting 窗口(菜单:__Window__ > Rendering > Lighting Settings__),然后勾选底部的 Auto__ 复选框。这可确保您的烘焙和预计算是最新的,并输出查看 UV 所需的数据。等待该过程完成(对于大型或复杂的场景,这可能需要一些时间)。
要查看预计算实时 GI UV,请执行以下操作:
这将显示所选网格的实例的实时光照贴图的 UV 布局。
可以将多个实例打包到实时光照贴图中,因此您看到的某些图表可能实际上属于其他游戏对象。
注意:实时和烘焙光照贴图之间的实例分组没有直接对应关系。同一实时光照贴图中的两个实例也可能位于两个不同的烘焙光照贴图中,反之亦然。
要查看烘焙 UV,请执行以下操作:
如您所见,烘焙 UV 与预计算实时 UV 大不相同。这是因为烘焙和预计算实时 UV 的要求不同。
必须注意,即使勾选 __Preserve UVs__,也无法使预计算实时 GI 获得与烘焙 GI 相同的 UV。
如果可以,您会在不起眼的地方看到明显锯齿(例如浅色或深色边缘)。这是因为实时光照贴图的分辨率有意被降低,这样实时更新它们才变得切实可行。这不会影响图形质量,因为它只存储通常为低频率(也就是说通常情况下不会突然改变强度或细节图案)的间接光照。直射光和阴影将使用标准实时光照和阴影贴图单独渲染。直射光通常频率更高(也就是说它更可能突然改变强度或细节图案,例如阴影的锐边),因此需要更高分辨率的光照贴图来获取这些信息。
当图表共享纹理像素时,低分辨率光照贴图会产生渗色问题。这会对光照质量产生不利影响,但可以通过重新打包 UV 图表来包含它们周围的半像素边界,从而解决此问题。这样,即便使用双线性插值,也绝不要跨越图表(在细节最高的 Mip 上)进行采样。采用保证半像素边界的图表的另一个好处是,您可以将图表放在彼此旁边,从而节省光照贴图空间。
总之,用于预计算实时 GI 光照贴图的 UV 始终会重新打包。
由于重新打包可确保图表周围的半像素边界,因此 UV 取决于实例的比例和光照贴图分辨率。如果放大 UV 以获得更高分辨率的光照贴图,则无法保证此半像素边界。UV 单独打包,并会考虑实例的比例和分辨率。因此,实时 UV 与每个实例有关。请注意,如果 1000 个对象具有相同比例和分辨率,则这些对象共享 UV。
2017–07–04 页面已发布
2017–07–04 仅更新文档,Unity 功能无变化
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.