去掉 "Postprocessing package expects to be used fullscreen" 警告(Mac,内置管道)

Get rid of "Postprocessing package expects to be used fullscreen" warning (Mac, built-in pipeline)

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

When used with builtin render pipeline, Postprocessing package expects to be used on a fullscreen Camera. Please note that using Camera viewport may result in visual artefacts or some things not working. UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) (at /Users/builduser/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:187)

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

我在 Mac 上使用 Unity 2019.4.0f1 的内置渲染管线。我已经进入 Unity post-处理生成警告的代码(他们的代码,不是我的)。我可以看到已检索到相机矩形,并且由于 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代码,我不想改。上面 rxy 值有时大于 0,有时则不。

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

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

您在视口上的 W 或 H 不是 1 吗?

前一段时间有一个更新,如果视口不是那个,则显示警告:https://docs.unity3d.com/Packages/com.unity.postprocessing@2.1/changelog/CHANGELOG.html

变更日志说警告仅适用于移动设备,但我可以在我的编辑器中看到它并且我的构建未设置为移动设备。

但无论如何,将视口设置为 1 w 和 h,将 x 和 y 设置为 0 即可解决问题。

这只发生在 macs 上,我找到的唯一解决方案是在编辑器场景视图中禁用金属 API,如下所示:

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