MSAA не работает в Unreal 4.14?

Я пытаюсь использовать новый прямой рендеринг с MSAA в GearVR на Galaxy S6. Но сглаживания определенно не происходит. Совсем.

После долгих поисков в Интернете и в редакторе я обнаружил следующие переменные, которые могут быть связаны с включением MSAA:

1.Окно> Инструменты разработчика> Профили устройств> Android:

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

Кажется, что ничего из вышеперечисленного не имеет значения, если я изменю их в редакторе профилей устройств в UEd.

2.Измените> Настройки проекта> Engine > Рендеринг> Настройки по умолчанию> Метод сглаживания:. Установка MSAA ничего не делает.

3. Я также попытался установить все предыдущие переменные из DefaultEngine.ini и ничего.

Должно быть что-то, что я пропускаю. Если у кого-то есть какие-то мысли, я бы очень признателен

1 ответ

Решение

Получается что:

  1. MSAA включен по умолчанию для мобильных устройств.
  2. Рендерер Forward в 4.14 не имеет ничего общего с мобильным. Это новое только для настольных компьютеров (например, HTC Vive и Rift).

Что касается того, как проверить, что MSAA действительно включен:

Вы можете проверить при запуске на устройстве в logcat, выполнив поиск:LogHMD: Enabling r.MobileOnChipMSAA, previous value 0

Вы также можете добавить журнал (и перекомпилировать движок) в OpenGLRenderTarget.cpp: строка 201. Вы хотите убедиться, что вы попали:glFramebufferTexture2DMultisampleEXT

Так как в противном случае ветвь else в этом кодовом пути создаст FBO без мультисэмплинга.

Однако счетчик отсчетов MSAA, по-видимому, жестко закодирован в 2 где-то еще в источнике двигателя. После долгого обсуждения на форумах Oculus мне сказали, что я могу изменить количество выборок (например, MSAA x4) в строке 152:

`// 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 могут быть жестко закодированы.

Другие вопросы по тегам