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

2020-10-13 Эта статья переведена по

Если у вас нет опыта мобильной разработки, перенос контента с ПК и хостов на платформу может оказаться непростым процессом. То же самое верно и при переносе работы в Oculus Quest, и еще одна проблема заключается в том, что VR-моноблок застревает перед пользователем, поэтому малейшая ошибка будет очевидна и легко заметна. Правильная оптимизация проекта будет означать один из следующих двух результатов: плавное и приятное взаимодействие с пользователем; постоянное падение кадров из-за перегрева графического процессора.


Несколько дней назад Arm представил 20-минутное руководство по оптимизации мобильной виртуальной реальности для программы Oculus Start в виде видео. Ниже Yingwei.com собрал пять основных моментов в видео:


1. Сжатие текстур очень важно


Даже если текстуры экспортируются как PNG, JPEG, TGA или PSD, они не останутся в формате во время выполнения проекта. Каждая текстура преобразуется в формат, который может быть быстрее считан графическим процессором, тем самым уменьшая полосу пропускания и занимая меньше памяти во VRAM. Хотя вы можете выбрать целый ряд различных решений, Arm рекомендует ASTC (адаптивное масштабируемое сжатие текстур) для мобильных платформ. ASTC был разработан Arm и AMD, и одна из его главных особенностей заключается в том, что он предоставляет вам многочисленные возможности для управления качеством сжатия. Вначале разные уровни размера блока (Block-Size) могут быть пугающими. Поэтому Arm рекомендует начинать с 5 × 5 или 6 × 6, а затем увеличивать размер блока для ресурсов, которые занимают меньше места для просмотра. Но обязательно попробуйте разные настройки, чтобы найти лучший вариант для проекта.


Другой вариант, который вы можете попробовать в своем проекте, - это ETC (Ericsson Texture Compression). Но это обычно оставляет больше памяти для текстуры, более низкое визуальное качество и снижает производительность во время выполнения. Для получения дополнительной информации об ASTC, использовании ASTC и различных вариантах кодировщика ASTC посетите эту страницу (20 августа компания Arm выпустила обновленную версию кодировщика ASTC v2.0).


2. Используйте LOD (уровень детализации), чтобы уменьшить количество вершин и избежать микротреугольников.


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


Для сеток, находящихся далеко от пользователя, LOD покажет версию с более низкой полигональностью. Связанные модели являются сборными, и расстояние их изменения можно контролировать. В более сложных сценах пользователи могут видеть вдаль, что поможет уменьшить количество вершин и решить другую проблему: треугольники Мирко. Такой треугольник занимает от 1 до 10 пикселей при полной визуализации. Хотя они не сильно влияют на окончательное изображение, графическому процессору все же необходимо его полностью обработать.


3. Используйте MIP-карты для повышения эффективности и видения проекта.


Мипмаппинг похож на LOD, но в основном для текстуры. Mipmap - это копия текстуры, сохраненная с более низким разрешением. Когда графический процессор сэмплирует текстуру, он выбирает соответствующий уровень Mip в соответствии с размером текстурного пространства, занимаемого фрагментом. На первый взгляд Mipmap кажется немного странным. Копии текстур действительно увеличивают объем памяти. Но взамен вы можете увеличить производительность графического процессора, потому что ему не нужно визуализировать объекты далеко от камеры с полным разрешением. В то же время это может предотвратить появление неровностей текстуры. При использовании в комбинации Mipmap и LOD могут ускорить рендеринг сцены.


4. Тонкий треугольник.


Как я упоминал ранее, чем меньше вершин составляет сетка, тем быстрее вычисляется графический процессор. Однако даже низкополигональные сетки могут иметь определенные проблемы и оказывать большее давление на графический процессор. Чаще всего встречается вытянутый треугольник. Для этого типа треугольника, поскольку третья вершина находится далеко, она будет занимать десятки пикселей при полной визуализации. Причина проблемы в том, что графическому процессору необходимо обрабатывать несколько пикселей в виде квадратных блоков. Это сложная задача, потому что даже если этот треугольник занимает лишь небольшую часть элемента управления представлением, графический процессор должен выполнять вычисления для нескольких блоков. Лучший вариант - удалить все вытянутые треугольники и проследить, чтобы треугольники были как можно ближе к равносторонним.


5. Используйте альфа-канал для покрытия


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


Alpha-to-Coverage (ATOC) может помочь уменьшить наложение спектров путем преобразования выходных данных компонента Alpha фрагментного шейдера в маску наложения и комбинирования его с маской с множественной выборкой. Затем он будет использовать оператор AND и отобразить только те пиксели, которые прошли операцию.


Левая часть изображения выше - это базовый альфа-тест, а правая часть - ATOC. Даже в статических изображениях сглаживание очень важно, а когда изображение находится в движении, изменения гораздо более очевидны. Хотя достижение этого звучит довольно сложно, Arm предоставляет простое руководство для каждого двигателя.


6. Разминка


Из-за мультидисциплинарного характера проектов виртуальной реальности пять навыков не могут полностью охватить все аспекты. Чтобы разработать отличный проект, нужно приложить немало усилий. Вышесказанное - лишь верхушка айсберга методов оптимизации. Чтобы изучить более подробную информацию об оптимизации геометрии, текстур и материалов, следуйте рекомендациям Arms Best Practices для художников и проверьте технологию графики VR в примере проекта Unity и примере проекта UE4. Кроме того, я призываю всех активно делиться своими навыками и предложениями с сообществом, чтобы помочь всем вместе совершенствоваться.


from: 映维网yivian.com/news/78877.html

© 2020 www.ourvrworld.com