RealtimeResolution
原文:https://unity3d.com/cn/learn/tutorials/topics/graphics/realtime-resolution?playlist=17102
使用预计算实时GI设置场景照明时,需要做出的首要决定之一是确定场景的默认实时分辨率。实时分辨率是每个世界单位使用的实时光照贴图像素(纹理像素)的数量。
可以在Lighting窗口中观察或设置实时分辨率,如下所示:
(1)打开Lighting窗口(Window > Lighting),然后选择“ 场景”选项卡。
(2)通过选中预计算实时GI复选框,确保勾选Precomputed Realtime GI。
(3)观察Precomputed Realtime
GI复选框下方的Realtime Resolution属性。
一、选择适当的实时分辨率
在设置场景时,了解项目所需的单位比例非常重要。可能是在你的项目中,一个单位是一米,一英尺或一厘米。Unity单元在现实世界范围内没有默认等效性,因此用户可以决定单位代表什么。
在我们的示例项目中,我们确定一个单位相当于1米。某些物理概念假设相同。例如,在Unity中,重力以每秒的单位表示为默认值。假设一个单位相当于1米,因此对于现实世界的游戏场景来说是一个很好的设置。
您的场景的实时分辨率通常可以根据游戏世界的比例来确定。例如,你的场景是一个小但人口稠密的室内环境,在反射的灯光下有很多变化吗?在这种情况下,为了捕获这种更详细或“高频”的照明,更高的光照贴图分辨率(例如每单位2-3个纹素)可能是合理的。
也许你的场景是一个大型户外环境,世界规模要大得多。您可能在面积上有数百甚至数千个单位的表面,几乎没有变化来修改反射光的颜色。在诸如此类的情况下,适合于捕获室内场景中存在的复杂照明细节的分辨率在应用于大型且不太特征的室外环境时将是浪费的。我们将浪费宝贵的CPU时间和可用内存,因为必须存储和更新对场景整体外观没有太大贡献的光照贴图。更重要的是,出于本教程的目的,我们将增加在照明预计算期间必须考虑的光照贴图像素的数量。这会对预计算时间产生巨大影响。
在室外环境的情况下,对于场景中的大对象,适当的光照贴图分辨率可能介于每单位0.5-1个纹素之间,或者对于地形可以是0.1-0.5个纹素。
二、预先计算的实时GI分辨率与传统光照贴图相比
Unity的预计算实时GI所需的实时分辨率值比“传统”光照贴图纹理密度小几个数量级。这是因为我们只捕捉这些光照贴图中的间接照明,而这往往是非常柔和或“低频率”。使用预计算实时GI时,通常会通过实时阴影而不是高分辨率光照贴图提供清晰阴影。
使用传统光照贴图技术中看似合适的值(例如每单位30个纹素)可能会导致预计算失败或无法完成。对于室内场景,更合适的值是每单位2-3个纹素,对于室外环境则是0.5-1。这假设我们正在使用单位大小为1单位= 1米的人体场景。如果世界范围大不相同,则需要相应地调整这些值。
假设具有1个单位代表1m的人类缩放世界(human-scale world)的适当值。最初设置场景的实时分辨率时,我们在场景中指定静态对象的默认分辨率。在Inspector顶部标记为Lightmap Static的MeshRenderer的新GameObject将使用此值,直到另行修改。
除了为整个场景选择实时分辨率外,我们还可以选择基于每个对象更改光照贴图分辨率。如果我们需要更高分辨率提供的额外保真度,我们可以有选择地增加这个值。通常,将最常用的分辨率设置为“场景”默认值,然后手动提高需要更多照明细节的对象的分辨率。我们将在本教程后面讨论修改每个对象的分辨率的方法。
三、设置场景的实时分辨率
如果您想继续学习,我们将使用本页顶部链接的Lighting
Optimization Tutorial附带的LightingTutorialStart场景。
在我们的示例场景中,我们有一个室外环境,中等大小的地形颜色相当一致。为此,每单位0.5个纹素的低实时分辨率足以捕获场景中其他对象的反射光。但是,也有一些木屋。这些更加详细。由于场景中的房屋数量多于地形对象,因此我们应将实时分辨率设置为适合房屋。然后我们可以单独修改地形对象使用的分辨率。这将减少准备场景时所需的工作量。考虑到这一点,我们将使用每世界单位1个纹素的值作为默认的实时分辨率。
打开Lighting窗口(Window > Lighting)并选择Scene选项卡。
将实时分辨率值设置为1。
鉴于我们已确定场景的比例为1单位= 1米,这意味着Unity的预计算实时GI创建的单个光照贴图将相当于1x1m的大小。这可能看起来很低,但请记住,我们只捕获间接光。场景中的实时灯光将提供直接照明的清晰阴影和镜面反射。
网友评论