摆脱“后处理包预计用于全屏”警告(Mac,内置管道)

Eri*_*sen 5 unity-game-engine unity3d-editor

我已经在场景中添加了后处理,一切正常。我使用的是单相机。每当我单击场景视图中的任意位置时,我都会在控制台中收到以下警告:

当与内置渲染管道一起使用时,后处理包预计在全屏相机上使用。请注意,使用相机视口可能会导致视觉伪影或某些功能无法正常工作。UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) (位于 /Users/builduser/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:187)

当我进入播放模式时,警告不会显示。仅在场景编辑器中。

我在 Mac 上使用 Unity 2019.4.0f1 的内置渲染管道。我已经进入了生成警告的 Unity 后处理代码(他们的代码,不是我的)。我可以看到相机矩形已被检索,并且由于 X 和 Y 值大于零,因此记录了警告。有问题的 Unity 代码如下所示:

{
  Rect r = m_Camera.rect;
  if(Mathf.Abs(r.x) > 1e-6f || Mathf.Abs(r.y) > 1e-6f || Mathf.Abs(1.0f - r.width) > 1e-6f || Mathf.Abs(1.0f - r.height) > 1e-6f)
  {
    Debug.LogWarning("When used with builtin render pipeline, Postprocessing package expects to be used on a fullscreen Camera.\nPlease note that using Camera viewport may result in visual artefacts or some things not working.", m_Camera);
  }
}
Run Code Online (Sandbox Code Playgroud)

再说一次,上面的代码是Unity代码,我不想改变它。上面的和值有时大于 0,有时则不大于 0 xyr

我已验证检查器中的相机视口设置已设置为 x:0,y:0,w:1,h:1。我已经确认我的场景中只有一台摄像机。

SO 上也有类似的问答。但用户正在使用通用渲染管道,对他有用的解决方案似乎不适用于我。我查看了图形下的项目设置,其中似乎没有一个选项与解决方案相对应。

Yft*_*ach 3

这种情况只发生在 Mac 上,我发现的唯一解决方案是在编辑器场景视图中禁用 Metal API,如下所示: 在此输入图像描述

以下是对所发生情况的解释:在调试 PostProcessingLayer 代码时,看起来 m_Camera 变量不是相机对象,而是场景视图变量。我找不到设置 x 或 y 属性的方法。然而,这仍然不能解释为什么这种情况只发生在Mac上 在此输入图像描述 发生这种情况是因为对于 Metal API(一种与 GPU 通信的 API,仅适用于 Mac),由于某种原因,“SystemInfo.usesLoadStoreActions”在 Metal API 上为 true。第一张图片中显示的复选框将仅在编辑器视图中禁用 Metal API,因此真实的游戏玩法不会受到影响