Unity / Инструменты

Impostors - Runtime Optimization

Просмотров: 21
Добавил: Waker
Добавлено: 5-06-2026, 18:06
Unity Version
Unity 2020.x.
Built-in
Совместим
URP
Совместим
HDRP
Не совместим

Новое поколение системных ресурсов-самозванцев с учетом DOTS.

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

С помощью самозванцев вы можете значительно упростить эту задачу!

Самозванец - поддельный объект (quad), который пытается выглядеть как оригинальный объект. Рендеринг очень дешев, но требует компромисса между производительностью и визуальным качеством.

На самом деле нам не нужно высокое качество изображения на расстоянии, потому что удаленные объекты занимают очень мало места на экране. Вот почему существуют такие методы, как LODs (Уровень детализации).

Самозванцы расширяют этот подход, а в некоторых случаях могут полностью заменить его.

Почему самозванцы?

Существует несколько проблем с LODs

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

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

  • самозванцам не требуется вручную создавать дополнительные ресурсы,
  • самозванцы не увеличивают размер сборки,
  • самозванцы работают со стилизованными пользовательскими штриховками,
  • в идеальных сценариях самозванцы выглядят точь-в-точь как оригинальные объекты.

Как работают самозванцы

Концепция самозванцев довольно проста. Мы просто фотографируем объект под определенным углом, а затем показываем это фото в виде спрайта вместо исходного объекта. Спрайты очень просты в рендеринге: для них используется специальный шейдер без расчета яркости, а для рисования требуется всего 2 треугольника. Всякий раз, когда камера меняет положение, нам нужно пересоздавать фотографию, чтобы представить объект под новым углом.

Важное замечание

И снова мы выбрали компромисс между производительностью и качеством изображения.

Самозванцы не являются панацеей и не могут заменить стандартный рендеринг.

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

Когда следует использовать самозванцев

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

И последнее замечание: Asset Store осуществляет возврат средств, и я никогда не отклонял запросы на возврат средств, так что вы застрахованы.

1. Камера редко меняет положение

Лучший сценарий для самозванцев!

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

Жанры: виртуальная реальность с телепортационным перемещением или устойчивым игровым процессом, визуальные новеллы, сайд-скроллеры.

2. Камера персонажа от первого лица

Отлично работает с самозванцами!

Жанры: FPS с открытым миром, королевские битвы, выживание.

3. Летающая камера или камера сверху вниз

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

4. Быстрое перемещение камеры

Слабая сторона самозванцев.

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

5. Игры с процедурными объектами

Если в вашей игре есть процедурно сгенерированные сетки, я сомневаюсь, что у вас есть LOD для них :)

В такой ситуации пакет Impostors пригодится, потому что он генерирует все во время выполнения!

6. Низкополигональные игры

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

Ограничения

- Требуются шейдеры, поддерживающие прямой рендеринг и цветовую маску RGBA.

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

- На близком расстоянии довольно легко отличить самозванца от оригинального объекта, поэтому их необходимо использовать не более чем на 10% от размера экрана камеры.

- На данный момент Impostors не поддерживает полупрозрачные объекты. Только шейдеры Opaque и AlphaTest/Cutout.

- На данный момент Impostors поддерживает только один направленный источник света плюс рассеянный свет.

  • Значительное снижение количества повторных вызовов и обратных вызовов
  • Работает со стилизованным пользовательским затенением
  • Никакой предварительной обработки сырья, никакой выпечки
  • Никаких дополнительных активов
  • Не увеличивает размер сборки
  • Генерирует все во время выполнения
  • Быстрая настройка
  • Несколько камер
  • Виртуальная реальность (протестировано с помощью Oculus Quest)
  • Обеспечивает максимальную производительность при использовании заданий и пакетов
  • Unity 2020.3.16 - 6000.2.x
  • Взрыв
  • Математика
  • Коллекции

Поддерживаемые конвейеры рендеринга:

  • Встроенный
  • Универсальный
  • Он может быть использован в пользовательском RP (требуется немного кода для встраивания самозванцев в RP).
  • ОФИЦИАЛЬНОЙ ПОДДЕРЖКИ HDRP НЕТ

Поддерживаемые платформы:

Каждая платформа, поддерживающая рендеринг текстур, то есть почти каждая платформа, поддерживаемая Unity.

WebGL является исключением, поскольку он не работает с системой многопоточных заданий.

Комментарии (0)
Минимальная длина комментария - 50 знаков. Комментарии модерируются

Похожие файлы: