URP 使用以下属性来确定反射探针对游戏对象的影响:
注意:执行间接绘制调用时,Unity 在延迟 (Deferred) 和前向 (Forward) 渲染路径中不支持反射探针。Unity 在前向+ (Forward+) 渲染路径中支持反射探针。
每个反射探针都有一个盒体。反射探针仅影响游戏对象位于盒体内的部分。当对象的像素位于任何反射探针体积之外时,Unity 使用天空盒反射。
在 URP 中,Unity 根据像素相对于探针体积边界的位置来计算每个探针对每个单独像素的影响。
此行为与内置渲染管线不同;在内置渲染管线中,Unity 会计算探针对整个对象的影响。
每个反射探针都具有混合距离 (Blend Distance) 属性。此属性是从反射盒体的面到盒体中心的距离。
Unity 使用 Blend Distance 属性来确定反射探针的影响。当对象的像素位于反射探针体积的面上时,该像素从探针获得 0% 的反射。当一个像素位于反射探针体积内并且它与每个面的距离超过 Blend Distance 值时,该像素将获得 100% 的反射。
如果 Blend Distance 值大于反射探针体积面之间距离的一半,则反射探针无法为该体积内的任何像素提供 100% 的影响。
当游戏对象位于多个反射探针体积内时,最多两个探针可以影响游戏对象。Unity 使用以下标准来选择影响游戏对象的探针:
反射探针的重要性 (Importance) 属性。Unity 选择两个具有较高 Importance 值的探针并忽略其他探针。
如果 Importance 值相同,Unity 将选择具有最小盒体的探针。
如果 Importance 值和盒体大小均相同,Unity 将确定哪两个反射探针体积包含游戏对象的更大表面积,然后选择这些体积的探针。
当两个反射探针影响一个游戏对象时,对于每个像素,Unity 会根据该像素与探针盒体面的距离以及混合距离 (Blend Distance) 属性的值来计算每个探针的权重。
如果像素相对靠近两个盒体的面并且两个探针的权重之和小于 1,则 Unity 将剩余的权重分配给 _GlossyEnvironmentCubeMap。此立方体贴图包含光照 (Lighting) 窗口中环境光照 (Environment Lighting) > 来源 (Source) 下设置的光源的反射。在大多数情况下,此来源是天空盒。
如果像素位于两个盒体内并且比两个体积的面的 Blend Distance 值更远:
如果反射探针的重要性 (Importance) 属性相同,Unity 会混合具有相同权重的探针的反射。
如果其中一个探针的重要性 (Importance) 属性更高,则 Unity 仅应用该探针的反射。