Экспертиза Асинхронного Таймварпа

02.03.2015 1 063 0

О Майкле Антонове:

Майкл – главный архитектор программного обеспечения в Oculus и главный инженер в SDK team. До работы в Oculus, Майкл был финансовым директором Scaleform, где он работал в Scaleform GFx над архитектурой и аппаратным ускорениемFlash движка векторной графики, который теперь используется в сотнях игр. Майкл посвятил свою карьеру изучению комплекса многопоточных архитекрут, компьютерной графики, и языков программирования.

TLDR: Асинхронный таймварп (ATW) – это технология, генерирующая промежуточные кадры в ситуациях, когда игра не может поддержать приемлемую частоту кадров, что уменьшает укачивание. Но всё же ATW не панацея от всех проблем иимеет свои ограничения, о которых разработчики должны знать.

Вступление

За последний год, было большое оживление, вокруг Асинхронного Таймварпа. Многие надеялись, что ATW поможет движкам стабильно работать и рендерить даже при низкой частоте кадров, искусственно заполнив пропущенные кадры без ухудшения качества Виртуальной Реальности.

В разработке очков ВР, ATW являлся ключом в предоставлении уникального игрового опыта. К сожалению, выяснилось, что существуют внутренние технические проблемы и ограничения, которые мешают ATW стать универсальным решением в проблеме с дрожанием в Виртуальной Реальности для ПК, с позиционным отслеживанием, типа Rift. При некоторых условиях эффекты укачивание вместе с Таймварпом могут быть восприняты организмом так же плохо, как и укачивание из-за пропущенных кадров.

В этом блоге мы проанализируем эти ограничения и ситуации, из-за которых возникают наибольшие сложности. Как вы видите, ATW может быть очень полезным время от времени, но не существует никакой полноценной замены высокой частоте кадров, особенно когда это касается высококачественной ВР.

Таймварп, Асинхронный Таймвапр, и Укачивание

Таймварп – это технология, которая деформирует рендерное изображение, перед отправкой его на дисплей, для того, чтоб скорректировать движения головы, которые произошли, после того, как сцена прошла рендеринг, и тем самым уменьшает воспринимаемую организмом задержку. В базовой версии корректируются только вращательные движения головы. Это дает заметное преимущество, будучи 2D основой, так как стоимость небольшая в сочетании с пропуском искажения. Для достаточно сложных сцен это может быть сделано с гораздо меньшим количеством вычислений, чем рендериг всего нового кадра.

Асинхронный тайварп выполняет задачу параллельно (асинхронно) с рендерингом. Перед каждой вертикальной синхронизацией, ATW генерирует новый временно искаженный кадр из последнего кадра прошедшего рендеринг.

Укачивание (тряска, вибрация) подробно описаны Майклом Абрашем в его посту 2013 года. Изучение его записей о тряскебудет хорошим продолжением этого поста.

Для получения перцептивно правильное видение Виртуального Мира, изображения на дисплее должны обновляться с каждым обновлением вертикальной синхронизации. Так или иначе, если рендеринг займет слишком много времени, то кадр будет потерян – укачивание, как результат. Происходит это потому, что, не имея следующего кадра прошедшего рендеринг, видеоадаптер подставляет то же изображение повторно. Вот как выглядит расположение объекта, если один и тот же кадр показан 2 раза перед обновлением:

1

Здесь глаз вращается в левую сторону. Когда то же изображение отображается опять, его свет падает на другую часть сетчатки в результате двойного дрожание изображения.

Конечно же, дублирование это не единственный возможный эффект. Если один и тот же кадр будет отображен 3 раза подряд, вы получите тройное изображение на своей сечатке, и так далее.

ATW может быт использован, чтобы избежать укачивания: если рендеринг кадра не был произведен перед вертикальной синхронизацией, то таймварп может прервать генерацию изображения и создать ему замену, пока следующий кадр не пройдет рендеринг. К слову, новое изображение не будет полностью правильным, он будет создан с поправкой на поворот головы, так отображение позволит снизить укачивание, по сравнению с отображение оригинального кадра снова, что и произошло бы без ATW.

В некоторых ситуациях простой поворот с варпингом отлично работает. Это было использовано в Gear VR Innovator Edition. Тут он заполнял промежутки между кадрами, когда частота кадров была недостаточной. Это убирает многие глюки в многихмалозаметных местах. Многих артефактов и глюков рассмотренных ниже удается избежать.

Существует несколько причин, почему ATW на PC более сложный, чем на Gear VR, начиная с Rift поддержки позиционного отслеживания.

Позиционное дрожание (раздвоение)

Позиционное дрожание является одним из наиболее заметных арефактов. Когда вы двигаете своей головой, только дополнительный компонент вращения находит свое отражение в генерируемых с помощью ATW изображениях, в то время, когда любое движение головы, когда кадр проходил рендеринг игнорируется. Это означает, что, когда вы двигаете головой из стороны в сторону, или даже просто переводите взгляд – вы увидите раздвоенное изображение и дрожание близких к вам объектов. Эффект очень заметен в пространстве с близлежащими объектами, как на нижеприведенном скриншоте субмарины.

2
Скриншот, на котором близлежащие объекты подверглись раздвоению и вибарции.

Итак, насколько плох этот эффект??

Величина позиционного дрожания зависит от среды, окружающей игрока, и зависит от движений, которые он делает. Если вы будете держать свою голову неподвижной и только посмотрите на окружающие вас декорации, вы увидите небольшое, еле заметное дрожание.

Примечание: Как правило, это относится к Gear VR Innovator Edition, которая не включает в себя систему позиционного отслеживания. Тем не менее, модель головы генерирует виртуальные переводы, так что, когда игра запускается с низкой частотой кадров на Gear VR, можно будет наблюдать позиционное дрожание близких к вам объектов.

Если вы устремите свой взгляд на дальний объект, то смещение из-за вашего движения головой вряд ли будет достаточным чтобы его заметить. В таких случаях, ATW позволят вам осмотреть объекты на близком и дальнем расстоянии от вас, без каких либо заметных вибраций, дрожаний.

С другой стороны, если вы находитесь в окружении объектов, которые находятся близко от вас, и двигаете головой, то дрожание будет настолько же заметным, как и без применения ATW. Также, если посмотреть вниз на текстурированую плоскость, то тоже увидите артефакты. Результатом этих эффектов является – глючный, нестабильный мир, нахождение в котором не комфортно и дезориентирующе.

Позиционный Таймварп

One possible way to address positional judder is to implement full positional warping, which applies both translation and orientation fixups to the original rendered frame. Positional warping needs to consider the depth of the original rendered frame, displacing parts of the image by different amounts. However, such displacement generates dis-occlusion artifacts at object edges, where areas of space are uncovered that don’t have data in the original frame.

Additionally, positional warping is more expensive, can’t easily handle translucency, has trouble with certain anti-aliasing approaches, and doesn’t address the other ATW artifacts discussed below.

Двигающиеся и анимированные объекты

Анимированные или подвижные объекты вызывают другой эффект вместе с ATW: из-за того, что новое изображение генерируется просто заменив оригинал, не зная, куда двинется объект, все ATW-генерируемые кадры подвергаются физам. Этот артефакт проявляется в виде нескольких образов движущихся объектов, то есть – вибрация, дрожание, раздвоенное изображение.

3Движущийся объект, подвергшийся дрожанию.

Воздействие этого артефакта зависит от величины создаваемой территории, и скорости анимированных объектов: если количество небольшое, или размер движущихся объектов мал, наложение изображение не особо заметно. Однако, когдаобъекты занимают болшую часть экранадрожание очень заметно.

Кроме того, отношение частоты кадров между внутренне игровым рендерингом и частотой обновления устройства влияет на силу вибрации объектов. Опираясь на наш опыт, ATW должен работать на фиксированной частоте кадров. Например, с частотой обновления 90Hz, мы должны либо повысить 90Hz либо снизить до полвины 45Hz с ATW. Это приведет к дублированию изображения, но расположение на сетчатке будет стабильным Рендеринг на промежуточной скорости, например 65Hz, приведет к постоянному изменению положения изображения на сетчатке глаза, что еще хуже, чем графические артефакты

Зеркальность и рефлексия

Расчеты для отраженного и зеркального света, отмечая направление вектора глаз или камеры рендеринга, создающего изображения, каждое из которых проходит рендеринг отдельно, для каждого глаза.

4

Начиная с этого, вектор изменят направление с движением головы, отражение и зеркальность рендеринга уже неправильная после таймварпа. Это приводит к отражению бликов дрожания.

Реализация

Реализация ATW является сложной задачей по двум основным причинам:

  • требует высокопроизводительную GPU чтобы поддерживать высокую детализацию

  • требует ОС и поддержку драйверов для высокопроизводительной GPU

Давайте начнем с преимуществ детализации. При90Hz, интервал между кадрами составляет примерно 11 мс. Это означает, что для того, чтобы ATW имел хоть какие-то шансы сгенерировать кадр, он должен быть в состоянии упредить основной поток команд рендеринга за 11мс.

Тем не менее, 11 мс это не слишком хорошо — если ATW работает в случайной точке кадра, количество времени между выполнением и сканированием тоже будет случайным. И мы должны убедиться, что не пропустим никаких прошедших рендеринг кадров.

Мы действительно хотим, чтобы ATW запускался прямо перед тем, как видео карта переключится на новый кадр, с достаточным количеством времени, чтобы закончить генерацию нового прошедшего таймварп кадра.

Выясняется, что время отклика в 2мс на полный рендерниг – это трудная задача для современных видеокарт и драйверов. Хотя многие разработчики видеокарт и драйвером ограничивают формы упреждения, реализация их значительно варьируется:

  • Некоторые драйвера позволяют нарисовать вызов гранулярности.

  • Другие драйвера позволяют вытеснять вычисление шейдеров, но требуют расширенную фирмупоставщика чтобыподдерживать вытеснения рендеринга.

Если вытеснение не будет произведено достаточно быстро то, ATW не закончит вапрпинг нового кадра перед вертикально синхронизацией и старый кадр будет показан снова, что приведет к дрожанию. Это означает, что правильном применении нужно выгрузить и возобновить рендеринг, вне зависимости от (трубопровода?). В теории, даже при треугольной детализации упреждение не достаточно хорошо, потому что с сложными шейдерами, мне не знаем, как много займет рендеринг. Мы работаем с производителями GPU для реализации вытеснения, но требуется некоторое время прежде, чем оно пройдет полностью.

Другой частью уравнения является – оказание поддержки преимущественно для ОС. Приоритетно Windows 8, WindowsDisplay Driver Model (WDDM) поддерживает ограниченное вытеснение, используя “пакетные очереди” детализации, где партии были созданы благодаря графическому драйверу. К сожалению, графические драйверы имеют тенденцию накапливать большие партии, для эффективности рендеринга, результатом чего является прерывание.

В Windows 8, ситуация улучшилась, в WDDM 1.2 былa добавлена поддержка для упреждения, сосредоточенная на детализации; Однако эти режимы в настоящее время не поддерживаются современными графическими драйверами. Рендеринг трубопровода, как ожидалось более успешен на Windows 10 с DirectX 12, что дает разработчикам более низкого управление. Это хороша новость, но мы по-прежнему остаемся без стандартной поддержки рендреринга, пока Windows 10 не станет популярнее. В результате, ATW требует конкретного производителя расширенных драйверов в ближайшем будущем.

ATW полезен, но не является панацеей

После того, как мы повсеместно проведем управление рендерингом, ATW станет еще одним инструментом, который поможет повысить производительность и уменьшить дрожание в ВР. Тем не менее, из-за вопросов и проблем, мы понимаем, что ATW – это не панацея. Приложения Виртуальной реальности должны поддерживать высокую частоту кадров, чтобы предоставить уникальный игровой опыт. В худшем случае артефакты ATW могут вызвать артефакты, которые испортят игровой опыт. Или же, иначе говоря: ATW не сможет предотвратить неудачный игровой опыт.

Учитывая сложность и артефакты, становится понятно, что ATW, даже с позиционным timewarp, не является универсальным решением. Это означет, что обе ориентированные только на одну позицию ATW должны рассматриваться только в качестве подстраховки, когда кадр может быть пропущен. Чтобы предоставить качественную ВР с эффектом присутствия разработчики должны достичь устойчивой частоты кадров в 90Hz+.

К счастью, уровень графики как в Crysis не является необходимым для предоставления уникального игрового опыта в ВР.

Двухрежимные видеоадаптеры, которые пытаются поддерживать традиционные мониторы, будут иметь наибольшие трудности с производительностью, поскольку системные требования являются большой проблемой. Для разработчиков в данной ситуации ATW выглядит очень привлекательно, несмотря на артефакты, так как с ним, можно меньше сосредоточится на частоте кадров и требованиях. Однако это не принесет такой уникальный игровой опыт, которого можно достигнуть в Виртуальной реальности, благодаря 90Hz. Это будет намного более комфортно создаст эффект присутствия, что и является волшебством Виртуальной Реальности.

Майкл Антонов, Главный программный архитектор.


Добавить комментарий

Ваше имя *
Ваш email
Комментарий

0
Товар успешно добавлен в корзину.