MSAA 在 Unreal 4.14 中被破坏了吗?
Is MSAA broken in Unreal 4.14?
我正在尝试在 Galaxy S6 上的 GearVR 中使用带有 MSAA 的新前向渲染。但是绝对没有抗锯齿。完全没有。
在网上和编辑器中搜索了很长时间后,我发现了以下可能与打开 MSAA 相关的变量:
1。
Window > 开发者工具 > 设备配置文件 > Android:
- r.MSAACount
- r.MSAACompositingSampleCount
- r.DefaultFeature.Antialiasing
- r.MobileOnChipMSAA
- r.MobileMSAA
- r.MobileContentScaleFactor
None 如果我在 UEd 的设备配置文件编辑器中更改它们,上述内容似乎会有所不同。
2。
编辑 > 项目设置 > 引擎 > 渲染 > 默认设置 > 抗锯齿方法:。将其设置为 MSAA 没有任何作用。
3。
我还尝试从 DefaultEngine.ini 中设置所有以前的变量,但什么也没有。
一定有什么我忽略了。如果有人有任何想法,我将不胜感激。
结果是:
- 移动设备默认启用 MSAA。
- 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 可能在其他什么地方被硬编码。
我正在尝试在 Galaxy S6 上的 GearVR 中使用带有 MSAA 的新前向渲染。但是绝对没有抗锯齿。完全没有。
在网上和编辑器中搜索了很长时间后,我发现了以下可能与打开 MSAA 相关的变量:
1。 Window > 开发者工具 > 设备配置文件 > Android:
- r.MSAACount
- r.MSAACompositingSampleCount
- r.DefaultFeature.Antialiasing
- r.MobileOnChipMSAA
- r.MobileMSAA
- r.MobileContentScaleFactor
None 如果我在 UEd 的设备配置文件编辑器中更改它们,上述内容似乎会有所不同。
2。 编辑 > 项目设置 > 引擎 > 渲染 > 默认设置 > 抗锯齿方法:。将其设置为 MSAA 没有任何作用。
3。 我还尝试从 DefaultEngine.ini 中设置所有以前的变量,但什么也没有。
一定有什么我忽略了。如果有人有任何想法,我将不胜感激。
结果是:
- 移动设备默认启用 MSAA。
- 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 可能在其他什么地方被硬编码。