AMD рассказала о работе над проектом LiquidVR, направленным на решение проблем задержек реакции оборудования, совместимости устройств и качества контента в виртуальной реальности. Во время GDC 2015 этот проект оформился в альфа-версию SDK, доступ к которому получила ограниченная группа разработчиков.
Технический директор AMD по графическим решениям Раджа Кодури (Raja Koduri) в ходе презентации перед аудиторией Game Developers Conference назвал виртуальную реальность «следующим рубежом визуальных вычислений» и обозначил желание компании привести её к абсолютному ощущению присутствия и фотореализму. По его словам, это потребует «полной чувственной интеграции», масштабируемых центральных, графических процессоров и аппаратных ускорителей.
По словам Кодури, путь к виртуальной реальности требует соблюдения двух основных правил: «не нарушать осанку» и «если ваши ЦПУ И ГПУ не тянут, вы от них отказываетесь». Он напомнил, что слаженно должна работать целая экосистема, от графического стека и драйверов до периферии и даже стека обработки звука. Подчеркнув это, Кодури объявил участие в разработке SDK LiquidVR ряда партнёров, включая Oculus и Crytek. Killer apps для виртуальной реальности должны стать игры, однако директор оказался не менее впечатлён возможностями технологии в образовании, медицине, тренировках и симуляциях, а также в визуализации больших данных.
LiquidVR работает с несколькими функциями, включая Latest Data Latch, Asynchronous Shaders, Affinity Multy-GPU и Direct To Display. С многими из них рендеринг переосмысливается с целью уберечь каждую миллисекунду между движением головы и визуализацией.
К примеру, Latest Data Latch гарантирует, что когда графический процессор берёт данные, он использует только последнюю малую часть информации по отслеживанию движений перед началом вертикальной синхронизации. Главный инженер-конструктор AMD Лэйла Ма (Layla Mah) говорит, что старый способ подразумевал сбор сразу всех представленных данных — старых и новых, а теперь разработчики могут выделять для рендеринга самые последние движения.
Шейдеры могут получить доступ к асинхронным вычислительным движкам Graphics Core Next для обработки визуальной информации в виртуальной реальности через аппаратные мощности параллельно с рендерингом. Это даёт LiquidVR асинхронное искривление времени, которое по сути является возможностью переноса пикселей, чтобы те выглядели правильно в текущем положении головы (также это позволяет делать другие вещи, вроде асинхронной трассировки лучей).
На изображениях выше показаны архитектурные особенности работы c асинхронными вычислениями и Latest Data Latch и без них, когда проявляются проблемы дрожания и задержек.
Далее мы наблюдаем последние достижения компаний, таких как Oculus (AMD называет это «VR 2.0»), в решении этих проблем — очевидно, без полного доступа к оборудованию или некоторым из упомянутых функций. Но даже здесь последние данные о положении головы отрендерены и подверглись временному искажению, сокращая задержку. Тем не менее искажение синхронно, поэтому рендеринг кадра должен произойти до VSync, ведь если произойдёт после, мы получим дрожание, говорит Ма.
На следующем слайде показано, что LiquidVR снимет с повестки дня все эти проблемы. AMD даёт возможность двигать time warp асинхронно перед VSync. Если кадр не готов, используется Latest Data Latch с последним или более старым кадром, если кроме него ничего нет, и этот процесс всегда происходит перед VSync.
Компания использует ещё одну функцию LiquidVR — Direct To Display. Она даёт гарнитуре виртуальной реальности право напрямую контролировать приложение вне зависимости от поставщика очков и их SDK (через карту AMD Radeon, разумеется). Это также подразумевает прямой рендеринг через первичный буфер.
Affinity Multy-GPU назначает графические процессоры для каждого глаза. По словам Ма, при ускорении обработки Альтернативным рендерингом кадров (Alternate Frame Rendering, AFR) проявляется нежелательная возможность задержки между глазами. На изображении выше вы можете видеть, как команды отправляются на все или лишь на отдельные процессоры.
На последнем слайде показан процесс рендеринга. AMD позволяет сделать одно временное искажение на один графический процессор. Разработчик может направлять их на глаза по-отдельности и затем передавать данные или передавать данные, а затем устраивать time warp на одном ГПУ, за которым закреплён дисплей.
Напоследок Кодури заметил, что LiquidVR будет поддерживать все релевантные API, но сейчас работает с DirectX 11, а AMD рассматривает возможность интеграции своих технологий с платформой OSVR.
По материалам Tom’s Hardware