
Что вы получите с этой страницы: Советы по оптимизации художественных ресурсов для разработчиков мобильных игр, работающих в Unity. Это первая из двух статей по оптимизации искусства для мобильных игр.
Вы можете найти много других советов по оптимизации мобильных приложений в этом обширном электронном учебнике и этом курсе Unity Learn по оптимизации 3D-искусства для мобильных приложений.

Как полигоны, так и вершины являются вычислительно затратными на мобильных платформах. Размещайте полигоны в областях, которые действительно способствуют визуальному качеству приложения, чтобы не тратить свой бюджет на обработку.
Из-за небольшого размера экрана на большинстве мобильных устройств и расположения 3D-объектов в вашем приложении многие мелкие детали треугольников на 3D-объекте могут быть невидимы. Это означает, что вам следует сосредоточиться на крупных формах и частях, которые способствуют силуэту объекта, а не на мелких деталях, которые могут быть не видны. Используйте текстуры и нормальные карты для тонких деталей.

Когда объекты удаляются на расстояние, Уровень детализации (LOD) может регулировать или переключать их на использование более простых сеток с более простыми материалами и шейдерами для улучшения производительности GPU.
Больше советов по подготовке LOD
Когда не использовать LOD
LOD не подходит для каждой ситуации. Например, избегайте его использования в приложении, где как вид камеры, так и объекты статичны, или где объект уже использует низкое количество полигонов. LOD имеет накладные расходы по памяти и больший размер файла, потому что данные сетки должны быть сохранены, чтобы их можно было использовать в реальном времени.

Вы можете объединить несколько сеток в одну, чтобы уменьшить количество вызовов отрисовки, необходимых для рендеринга. Чтобы применить эту технику, создайте пустой GameObject в иерархии и сделайте его родителем мешей, которые вы хотите объединить, затем прикрепите скрипт, реализующий метод Mesh.CombineMeshes(), к родительскому GameObject.
Используйте Occlusion Culling
Объекты, скрытые за другими объектами, все еще могут рендериться и потреблять ресурсы. Используйте Occlusion Culling, чтобы исключить их.
Хотя отсечение фрустрации вне поля зрения камеры происходит автоматически, отсечение окклюзий — это запеченный процесс. Просто отметьте ваши объекты как Static Occluders или Static Occludees, затем запеките через диалог Window > Rendering > Occlusion Culling . Хотя это не обязательно для каждой сцены, отсечение может улучшить производительность во многих случаях. Посмотрите учебник Работа с Occlusion Culling для получения дополнительной информации.

Вот несколько хороших советов, которые стоит учитывать при импорте ваших моделей.

Текстуры могут быть разного размера. Снижение размера текстур, которые требуют меньшей детализации, поможет уменьшить пропускную способность. Например, диффузная текстура может быть установлена на 1024 x 1024, а связанная карта шероховатости/металличности может быть установлена на 512 x 512. Старайтесь избирательно уменьшать размер текстуры и всегда проверяйте, ухудшилось ли качество визуализации после этого.
Большинство программного обеспечения для текстурирования работает с текстурами и экспортирует их, используя цветовое пространство sRGB.
Мы рекомендуем использовать диффузные текстуры в цветовом пространстве sRGB. Текстуры, которые не обрабатываются как цвет, не должны находиться в цветовом пространстве sRGB. Примеры таких текстур включают металлические, шероховатые и нормальные карты, так как карты используются как данные, а не как цвет. Использование sRGB в этих картах приведет к неправильному визуальному отображению материала.
Примечание. Убедитесь, что настройка sRGB (цветная текстура) в окне инспектора не имеет отметок рядом с шероховатостью, спекулярными, нормальными картами или подобными элементами.

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

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

Фильтрация текстур часто улучшает качество текстур в сцене, но также может ухудшить производительность, так как достижение лучшего качества текстур часто требует больше обработки. Фильтрация текстур иногда может составлять до половины потребления энергии GPU. Выбор более простых и подходящих фильтров текстур может помочь снизить энергетические требования приложения.

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

Используйте адаптивное масштабируемое сжатие текстур (ATSC) как для iOS, так и для Android. Подавляющее большинство игр в разработке, как правило, нацелены на минимальные устройства, поддерживающие сжатие ATSC. Единственные исключения:

Упаковка каналов текстур помогает сэкономить память текстур, так как вы можете поместить три карты в одну текстуру. Это означает меньшее количество выборок текстур. Этот подход обычно используется для упаковки шероховатости, гладкости и/или металлического блеска в одну текстуру. Он также может быть применен к любой маске текстуры. Например, вы также можете хранить альфа-маску. Изображения с прозрачностями могут занимать больше памяти, так как требуют 32-битного формата, но, используя свободный канал для хранения альфа-маски, вы можете сохранить диффузную текстуру в 16-битном формате и эффективно уменьшить размер файла вдвое.
Используйте зеленый канал для хранения самой важной маски. Зеленый канал обычно имеет больше бит, так как наши глаза более чувствительны к зеленому и менее чувствительны к синему.

UV-карта проецирует 2D текстуры на поверхность 3D модели. UV-раскрытие — это процесс создания UV-карты.