MSAA 在 Unreal 4.14 中被破坏了吗?

Is MSAA broken in Unreal 4.14?

我正在尝试在 Galaxy S6 上的 GearVR 中使用带有 MSAA 的新前向渲染。但是绝对没有抗锯齿。完全没有。

在网上和编辑器中搜索了很长时间后,我发现了以下可能与打开 MSAA 相关的变量:

1。 Window > 开发者工具 > 设备配置文件 > Android:

None 如果我在 UEd 的设备配置文件编辑器中更改它们,上述内容似乎会有所不同。

2。 编辑 > 项目设置 > 引擎 > 渲染 > 默认设置 > 抗锯齿方法:。将其设置为 MSAA 没有任何作用。

3。 我还尝试从 DefaultEngine.ini 中设置所有以前的变量,但什么也没有。

一定有什么我忽略了。如果有人有任何想法,我将不胜感激。

结果是:

  1. 移动设备默认启用 MSAA。
  2. 4.14中的前向渲染器与移动无关。它仅适用于台式机(即 HTC Vive 和 Rift)。

关于如何检查是否确实启用了MSAA:

您可以在 logcat 中的设备上检查 运行 的时间,方法是搜索: LogHMD: Enabling r.MobileOnChipMSAA, previous value 0

您还可以在 OpenGLRenderTarget.cpp:第 201 行 添加日志(并重新编译引擎)。你想确保你打: glFramebufferTexture2DMultisampleEXT

因为此代码路径中的 else 分支否则会创建非多重采样 FBO。

然而,MSAA 样本计数似乎在引擎源代码的其他地方被硬编码为 2。 在 long discussion in the Oculus forums 之后,我被告知可以在第 152 行更改样本数(例如,将 MSAA x4):

`// TODO: Mali supports 4x with similar hit as 2x, should we do something smarter here? Hard coded to 2 everywhere else

const uint32 SampleCount = 2;

但是当 运行 在设备上时,此代码路径未被执行。所以不确定 2 可能在其他什么地方被硬编码。