Профилирование графического процессора
Производительность графического процессора может сильно повлиять на производительность. В моем случае (TrajektAR) — это в основном приложение AR, поэтому отсечение окклюзии не было вариантом (по крайней мере, для ar-камеры), кроме того, у меня была другая камера, снова визуализирующая всю сцену. , Поэтому оптимизация имела решающее значение для обеспечения более высокой частоты кадров в секунду.
Мне пришлось пройти некоторые процедуры оптимизации, прежде чем начать профилирование
1. Плоскости отсечения камеры
Поиграйте с ближним и дальним расстоянием, чтобы показать только то, что нужно показать с помощью этой конкретной камеры.
Другими словами, с точки зрения рендеринга может быть очень дорого рисовать объекты, которые находятся далеко или очень близко от камеры и не важны для функциональности приложения/игры.
В моей ситуации у меня была AR-камера и оверлейная камера, показывающая всю карту, было нонсенсом показывать игрока и рисовать сетку игрока, однако я хотел показать землю под игроком, а не самого игрока.
В этом случае номер 2 был полезен.
2. Слои маски отсечения камеры
Culling Mask Layer — хорошее решение, когда у вас есть две камеры в сцене и вы хотите визуализировать определенные объекты на каждой камере (группировать определенные объекты по слою и выбирать, должны ли они визуализироваться с помощью этой камеры или нет).
3. Маска отбраковки освещения
Как и в случае с маской отбраковки камеры, освещение не должно влиять на каждый объект в сцене. Постарайтесь свести к минимуму работу по рендерингу, применяя освещение только к тем слоям, которые должны быть освещены.
(В приложениях дополненной реальности я не думаю, что Unity Lighting — это то, что нужно. Если вы пишете свои собственные шейдеры или используете шейдер неосвещенной текстуры, это может обеспечить лучший опыт и меньше работы)
Кроме того, в качестве меры предосторожности я пытаюсь снять галочку с отбрасываемыми тенями в компоненте рендеринга сетки для объектов, которым не требуется рендеринг теней.
4. Текстуры
Текстуры обычно находятся в верхней части списка с точки зрения размера в сборке и проблем с производительностью рендеринга.
Я начал с текстур, отвечающих за 75% размера сборки, до следующих:
При работе с текстурами мы должны учитывать целевые устройства, настоятельно рекомендуется переопределить значение максимального размера для телефонных платформ.
В некоторых онлайн-статьях говорится, что отключение генерации MIP-карт является хорошим подходом, поскольку он занимает больше места на 33%, но в документации Unity говорится, что вы должны включить MIP-карты.
5. Статическая пакетная обработка
Включение статической пакетной обработки путем установки флажка «Статический» полезно, если объект не является движущимся объектом, и сводит к минимуму вызовы отрисовки для этого объекта.
6. Инстанс GPU
Включите создание экземпляров графического процессора, если у вас есть игровой объект, который создается снова и снова, вы можете найти эту опцию, настроив свойства материала.
После соблюдения этих мер предосторожности пришло время начать профилирование
Выберите вкладку рендеринга в профилировщике
Основная цель профилирования рендеринга должна состоять в том, чтобы свести к минимуму количество вызовов отрисовки.
Отладчик кадров — это полезный инструмент, позволяющий понять, как визуализируются объекты.
Нажмите «Отладчик открытых кадров».
Используйте ползунок и проверьте представление игры, чтобы увидеть, как объекты отображаются в представлении игры.