> > > > Oculus и AMD рассказали об Asynchronous Time Warp

Oculus и AMD рассказали об Asynchronous Time Warp

Опубликовано:

AMD Logo 2013AMD и NVIDIA за последние месяцы не устают подчеркивать, что обе компании активно участвуют в разработке новых графических API. Впрочем, основную роль по-прежнему играет производительность, независимо от рендеринга игры на плоском экране монитора или на шлеме VR. AMD и NVIDIA разработали собственные интерфейсы, позволяющие разработчикам выжать максимальную производительность при работе с очками VR. AMD предлагает LiquidVR и занимает более открытую позицию, NVIDIA опирается на проприетарный GameWorks VR.

На самом деле технологии конкурентов довольно близки, это касается и Asynchronous Time Warp. AMD вместе с Oculus сделали посты о технологии в своих блогах для разработчиков. NVIDIA рассказала о технологии на GPU Technology Conference в прошлом году, теперь настала очередь AMD добавить ясности и опубликовать подробности.

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

Работа Asynchronous Time Warp в конвейере рендеринга
Работа Asynchronous Time Warp в конвейере рендеринга

В случае Asynchronous Time Warp сохраняется последний выведенный кадр, который будет отображаться вместо «не успевшего» нового кадра. Причем данный кадр не является полной копией предыдущего, что все равно привело бы к появлению подергиваний – система учитывает движение головы или пользователя, модифицируя повторный кадр. Данная модификация выполняется на GPU с помощью шейдеров. Вычисления могут проводиться в асинхронном режиме, здесь AMD опирается на технологии Quick Response Queue и Asynchronous Shaders.

В конечном итоге можно гарантировать, что для дисплеев очков всегда будет готов свежий кадр – либо просчитанный в реальном времени через стандартный конвейер рендеринга, либо резервный, просчитанный через технологию Asynchronous Time Warp. Конечно, на практике все не так просто, поскольку расчет через Asynchronous Time Warp должен выполняться на как можно позднем этапе конвейера рендеринга нынешнего кадра. Но при этом должно оставаться достаточно времени для полного расчета. Если данные для расчета Asynchronous Time Warp будут взяты слишком рано, последующие движения головы или контроллера не будут учитываться.

Поэтому расчет Asynchronous Time Warp выполняется через очередь Quick Response Queue. Таким образом AMD гарантирует, что все вычисления будут выполняться вовремя, также будет использоваться информация с последних ступеней конвейера.

AMD работает и над другими технологиями, которые смогут задействовать возможности Asynchronous Shaders и Quick Response Queue. В качестве примера называется вычисление аудио, которое может выполняться точнее и лучше при перемещении пользователя в виртуальном пространстве. Информацию об этой поддержке AMD планирует опубликовать позднее.