【问题标题】:Get rid of "Postprocessing package expects to be used fullscreen" warning (Mac, built-in pipeline)摆脱“后处理包需要全屏使用”警告(Mac,内置管道)
【发布时间】:2020-10-01 18:26:39
【问题描述】:

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

当与内置渲染管道一起使用时,后处理包需要 在全屏相机上使用。请注意,使用相机 视口可能会导致视觉伪影或某些事情不起作用。 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 代码,我不想更改它。上面rxy 值有时大于0,有时则不大于0。

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

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

【问题讨论】:

  • 嗯,没有任何反馈的问题上的-1是非常没用的。我的问题是真诚地撰写的。如果你希望我以后少打扰你,你应该说出你认为这个问题有问题的原因。

标签: unity3d unity3d-editor


【解决方案1】:

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

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

【讨论】:

  • 那行得通。我很感激你的解释!我现在可以重新启用警告而不会被淹没。
【解决方案2】:

视口上的 W 或 H 是否不是 1?

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

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

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

【讨论】:

  • 我在生成警告的 Unity 后处理代码(不是我的代码)中运行了调试器。显示警告的代码查看活动的相机矩形。在我的调试会话中,该矩形的 W 和 H 为 1,X 和 Y > 0。X 和 Y 大于 0 的条件是触发警告的原因。但是当你说将视口 X 和 Y 设置为 0 时,我迷失了。我该怎么做?
  • 您可以在 Unity 的编辑器中的相机组件下设置视口 x 和 y,x 和 y 都有一个“视口矩形”为 0。
  • 很好的建议,我认为它可能对某些人有所帮助。但不幸的是,在我的例子中,“x”和“y”在 Camera 组件中设置为 0,“w”和“h”设置为 1。我更新了我的问题以包含这些具体结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
  • 2019-12-31
  • 2016-11-20
  • 1970-01-01
相关资源
最近更新 更多