0

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

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

1. 窗口 > 开发者工具 > 设备配置文件 > Android:

  • r.MSAACount
  • r.MSAACompositingSampleCount
  • r.DefaultFeature.Antialiasing
  • r.MobileOnChipMSAA
  • r.MobileMSAA
  • r.MobileContentScaleFactor

如果我从 UEd 的设备配置文件编辑器中更改它们,上述所有内容似乎都没有什么不同。

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

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

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

4

1 回答 1

1

结果是:

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

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

您可以通过搜索在 logcat 中检查何时在设备上运行: LogHMD: Enabling r.MobileOnChipMSAA, previous value 0

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

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

然而,MSAA 样本计数似乎在引擎源的其他地方硬编码为 2。在 Oculus 论坛上进行了长时间讨论后,有人告诉我可以在第 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可能在哪里被硬编码。

于 2016-12-23T15:19:09.030 回答