Новые методы экономного ямкового рендеринга и отображения от Google

0
448

Разрешения дисплеев для виртуальной реальности растут, однако мощность графических процессоров для обслуживания всё более высоких разрешений не обязательно растёт с той же скоростью. Для решения этой проблемы используются обходные пути, которые оптимизируют процесс рендеринга с целью сокращения требуемых ресурсов при сохранении визуального качества. Самым известным из подобных решений, внедряемым на широкий рынок, является ямковый рендеринг (англ. foveated rendering), о котором вы не раз читали на страницах Голографики. Его суть в том, чтобы отслеживать направление взгляда пользователя для снижения качества картинки на периферии его внимания, где он этого всё равно не замечает. Тем не менее, проблема оптимизации картинки на этом не исчерпывается — она немного сложнее.

Чтобы пояснить актуальную ситуацию на рынке, менеджер по программному обеспечению Google Бехнам Бастани (Behnam Bastani) и разработчик программного обеспечения для Daydream Эрик Тёрнер (Eric Turner) опубликовали краткий обзор нескольких методов в зарождающейся области рендеринга для дополненной и виртуальной реальности. Мы предлагаем вам познакомиться со слегка упрощённой версией их материала.


Справка Голографики:

Ямковый рендеринг («foveated rendering», от лат. fovea centralis — центральная ямка) — техника графического рендеринга, основанная на динамическом отслеживании внимания пользователя к областям изображения на дисплее. Человеческий глаз устроен так, что внимание к деталям изображения возрастает по мере приближения к центру поля зрения. На периферии же внимание к деталям снижается, но повышается восприимчивость к движению. Это связано с эволюционным развитием такого зрительного аппарата, который даёт идеальный баланс подробного восприятия и безопасного отслеживания угроз. Техника ямкового рендеринга предполагает снижение качества картинки на периферии поля зрения пользователя — вне зоны покрытия центральной ямки в глазу — для оптимизации затрат вычислительных ресурсов.  


Бастани и Тёрнер говорят, что текущие ограничения в решении проблем с рендерингом — это малое количество контента, скорость передачи данных, задержки и вопросы взаимодействия с объектами реального мира в дополненной реальности. Чтобы помочь решить некоторые из этих проблем, специалисты рассказали о трёх областях исследований, которые, по их мнению, должны быть основными: ямковый рендеринг, чтобы уменьшить вычислительные затраты на пиксель, ямковую обработку изображений для уменьшения количества визуальных артефактов и преодоление задержек через уменьшение количества передаваемых бит на пиксель.

Традиционные методы рендеринга на основе данных о положении глаз пользователя, которые делят кадры на несколько областей разного разрешения, имеют свойство вызывать заметные артефакты. Это нарушает ожидаемый эффект, ведь периферия должна быть «сжата» незаметно для зрителя. На приведённой ниже анимации слева показан рендеринг в полном разрешении, а справа — традиционный ямковый рендеринг с областью высокого качества в середине.

Исследователи Google предлагают два метода борьбы с артефактами: фазово-выровненный ямковый рендеринг (Phase-Aligned Foveated Rendering) и конформный ямковый рендеринг (Conformal Foveated Rendering). Ещё два метода описывают более эффективное отображение контента.

Фазово-выровненный ямковый рендеринг

Этот тип рендеринга уменьшает количество артефактов, выравнивая усечённые пирамиды — детали геометрии сцены — вращая их по отношению к миру (например, всегда обращённые к северу, востоку, югу или западу), а не к повороту головы в текущем кадре, как это делается традиционно.

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

Исследователи говорят, что этот метод обходится компьютеру дороже, поскольку требует двух проходов растеризации или отрисовки изображения для дисплея. Тем не менее, он позволяет получить «чистую экономию» благодаря уменьшению качества в областях низкой чёткости. Недостатком является то, что метод по-прежнему создаёт заметную границу между областями высокой и низкой чёткости.

Конформный ямковый рендеринг

Поскольку человеческий глаз может плавно переходить от низкой к более высокой чёткости по мере приближения к области покрытия центральной ямки, в рендеринге можно использовать подход максимального соответствия этой плавной градации.

По сравнению с другими методами, этот сулит уменьшение общего количества вычисляемых пикселей, а также не даёт пользователю видеть явную разделительную линию между областями высокой и низкой чёткости. Бастани и Тёрнер говорят, что эти преимущества открывают «агрессивное использование ямкового рендеринга … при сохранении того же уровня качества, что усиливает экономию».

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

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

Ямковая обработка изображений

После рендеринга нужно сделать ещё несколько вещей, чтобы изображение появилось перед вашими глазными яблоками. Например, пройти этапы обработки картинки, такие как локальное тонирование, коррекция линзовых искажений или смешивание освещения.

Коррекция хроматической аберрации. На верхнем изображении показан обычный способ. Нижнее (зелёное) изображение показывает процесс при ямковом рендеринге.
Левое изображение показывает восстановленную после оптических искажений «ямковую» картинку. На правом изображении показана граница при коррекции линзовых искажений в фоновом режиме. Правое изображение показывает, что минимальная ошибка появляется рядом с границами буфера кадров. В очках это не заметно.

Исправляя коррекцию искажений от линз на контенте, прошедшем ямковый рендеринг, но до апскейлинга, вы получаете значительную экономию при отсутствии дополнительных ощутимых артефактов. Ниже вы можете видеть, что, хотя предлагаемый способ предполагает дополнительные шаги перед слиянием изображений с низкой и высокой чёткостью, он подразумевает меньше работы в целом, становясь более эффективным.

Ямковая передача

Поскольку Google уделяет значительное внимание именно мобильным приложениям виртуальной и дополненной реальности, важной проблемой для неё является экономия энергии. Исследователи говорят, что их «ямковая передача» сэкономит энергию и пропускную способность, передавая минимальный объём данных, необходимый для отображения.

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

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

Сравнение мерцающей картинки после применения потоковой компрессии (Display Stream Compression — DSC) к обычному «ямковому» контенту (слева) и полной интеграции описанных методов.

Полный текст отчёта доступен здесь.

Не пропускайте важнейшие новости о дополненной, смешанной и виртуальной реальности — подписывайтесь на Голографику в ВКTwitter и Facebook

Далее: В дополненной реальности Apple нет ничего революционного — и это хорошо

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.