> > > > VALVE рассказала о трудностях рендеринга VR

VALVE рассказала о трудностях рендеринга VR

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

valveПредставление 3D-контента в очках виртуальной реальности связано с рядом трудностей, которые необходимо преодолевать. Начнем с того, что приходится выводить картинку в разрешении 1.280 x 1.440 пикселей на каждый глаз с частотой обновления 90 Гц. Выводить один кадр каждые 11,1 мс – непростая задача даже для современных high-end GPU, особенно учитывая многоуровневые API.

Представитель VALVE Алекс Влачос (Alex Vlachos) прочитал на Game Developer Conference 2016 лекцию. Конечно, он рассказал о достигнутом прогрессе и технологиях, но также поделился и некоторыми новыми подходами. Он начал свою презентацию с известных подробностей. Готовый кадр в шлеме VR представляет собой не двумерную картинку с разрешением 2.560 x 1.440 пикселей (для двух глаз), а специально адаптированное изображение, учитывающее особенности человеческого глаза. В частности, создаются два пересекающихся круглых изображения с определенными искажениями. Области за пределами двух кругов не прорисовываются, что экономит часть аппаратных ресурсов.

Лекция VALVE на GDC 2016
Лекция VALVE на GDC 2016

Конечно, VR API, подобные LiquidVR от AMD или GameWorks VR от NVIDIA, позволяют использовать два или больше GPU, но поддержка пока не реализована в играх, поскольку большинство систем VR будут использовать один GPU. Как считает VALVE, и этого более чем достаточно. Последовательный рендеринг двух изображений для каждого глаза можно выполнять с оптимизациями, экономящими аппаратные ресурсы и повышающими производительность. Например, карты теней для обоих расчетов можно использовать одинаковые, не создавая их два раза.

Лекция VALVE на GDC 2016 Лекция VALVE на GDC 2016 Лекция VALVE на GDC 2016

Лекция VALVE на GDC 2016

Что касается систем multi-GPU, то здесь есть определенные проблемы, хотя они уже частично решены LiquidVR и GameWorks VR, но не полностью. Между GPU придется обмениваться некоторой информацией, чтобы они не высчитывали ее два раза. Но обмен данными вносит определенные задержки, в системах multi-GPU добавляются избыточные вычисления, которых нет в системах с одним GPU.

Технология Alternate Frame Rendering в обычных играх может дать прирост производительности более 50 процентов. Но для VR VALVE указывает прирост производительности всего 30-35 процентов. Конечно, при работе систем multi-GPU необходимо, чтобы те же два GPU соответствовали минимальным требованиям 11,1 мс на кадр или 90 Гц.

Лекция VALVE на GDC 2016 Лекция VALVE на GDC 2016 Лекция VALVE на GDC 2016

Лекция VALVE на GDC 2016

Дополнительный прирост производительности можно ожидать с системами на четырех GPU. Но здесь вновь возникают дополнительные вычисления на уровне API, как и задержки, они становятся еще больше, нивелируя преимущества от теоретически более высокой «чистой» производительности. Самые большие проблемы вызывает распределение целей рендеринга по GPU, здесь могут использоваться теоретически разные подходы.

Для задействования более высокого вычислительного потенциала GPU в системах multi-GPU имеет смысл увеличивать разрешение. В качестве примера VALVE приводит демонстрацию Aperture Robot Repair с разрешением 1.512 x 1.680 пикселей на глаз и сглаживанием 4x MSAA. На HTC Vive изображение выводится в разрешении 1.080 x 1.200 пикселей. С двумя или четырьмя GPU можно выполнять рендеринг в разрешении 2.116 x 2.352 пикселей с 8x MSAA, при этом соответствуя минимальному требованию 11,1 мс на кадр.

Чтобы сэкономить больше ресурсов, VALVE также использует технику Over Rendering. Области ближе к центру дисплея просчитываются более точно, а внешние области просчитываются с меньшей точностью. VALVE разделяет дисплей на несколько зон, каждая из которых имеет свой уровень детализации.

NVIDIA разработала схожую технологию под названием Multi-Resolution Shading. NVIDIA нацеливает технологию на ту же сферу, что и VALVE: пользователь очков VR видит искаженную картинку с дисплея через систему линз, поэтому картинку имеет смысл оптимизировать в зависимости от дальности видимости и углов обзора. В результате картинка на дисплее получает искажения, похожие на «рыбий глаз», после системы линз пользователь воспринимает такое изображение как совершенно нормальную картинку без искажений. GPU и процесс рендеринга под подобную технологию не оптимизированы, производители добавляли необходимые искажения в виде пост-обработки. Конечно, пост-обработка требует вычислительных затрат, но что еще хуже, она вносит дополнительные задержки, а их для оптимального восприятия VR необходимо минимизировать.

NVIDIA GameWorks VR с Multi Resolution ShadingNVIDIA GameWorks VR с Multi Resolution Shading

NVIDIA GameWorks VR с Multi Resolution Shading

NVIDIA тоже использует трюк, позволяющий снизить вычислительные расходы при рендеринге областей с ограниченной видимостью. Изображение разделяется на девять зон. Так называемые зоны Viewports выделены так, чтобы быть как можно ближе к зонам пост-обработки. Самая большая зона Viewport по центру просчитывается почти как в оригинале. Боковые области, а особенно четыре угла, подвергаются сжатию, у них изменяется разрешение в зависимости от желаемого результата.

Все девять зон одновременно рассчитываются на GPU, но отдельно друг от друга. И финальная картинка получается уже адаптированной для очков VR, пост-обработки не требуется. Вырезание невидимых областей, сжатие и оптимизация разрешения областей позволили NVIDIA увеличить производительность пиксельных шейдеров в 1,3-2 раза. Работа с разными зонами viewports в конвейере рендеринга возможна только на GPU с архитектурой "Maxwell".

Лекция VALVE на GDC 2016 Лекция VALVE на GDC 2016

Лекция VALVE на GDC 2016

По информации VALVE, использование Multi Resolution Shading или Fixed Foveated Rendering позволяет получить прирост производительности от 5 до 10 процентов без ощутимой разницы в качестве картинки.

Возникает вопрос, как быть в ситуации, когда видеокарта не может выдать необходимые 90 fps, чтобы геймплей не сильно пострадал. VALVE выбрала подход, ранее описанный NVIDIA. В случае Asynchronous Time Warp новый кадр не рассчитывается, а используется предыдущий кадр, в который добавляются изменения по направлению видимости. Впрочем, технология Positional Reprojecting является лишь временным решением, методика повторного использования кадра и предсказания следующего кадра или выбранного направления видимости пока «сырая».

Лекция VALVE на GDC 2016 Лекция VALVE на GDC 2016

Лекция VALVE на GDC 2016

В последней части презентации Алекс Влачос вновь поговорил об аппаратных требованиях. Планка 11,1 мс является теоретической, чтобы подстраховаться, разработчикам лучше ориентироваться на 10 мс или 100 fps. Но VALVE с помощью упомянутых технологий планирует уменьшить требования для игр VR, чтобы та же Aperture Robot Repair работала на GeForce GTX 680, пусть и с уменьшенным разрешением. Для оптимального качества необходима видеокарта класса GeForce GTX 980 Ti, так что разброс требований довольно широк.

Конечно, следует дождаться появления на рынке очков VR, чтобы оценить требования к GPU в реальности. Но разработчикам следует очень осторожно использовать доступные ресурсы.