首页 > 解决方案 > 摆脱“后处理包需要全屏使用”警告(Mac,内置管道)

问题描述

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

当与内置渲染管道一起使用时,后处理包预计将在全屏相机上使用。请注意,使用相机视口可能会导致视觉伪影或某些事情无法正常工作。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);
  }
}

同样,上面的代码是 Unity 代码,我不想更改它。上面的xyr有时大于0,有时不大于0。

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

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

标签: unity3dunity3d-editor

解决方案


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

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


推荐阅读