Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Производительность датчика отражения

Визуализация зонда отраженияКомпонент визуализации, который захватывает сферическое изображение своего окружения во всех направлениях, подобно камере. Захваченное изображение затем сохраняется как кубическая карта, которую можно использовать для объектов с отражающими материалами. Подробнее
См. Словарь
пользователя cubemapНабор из шести квадратных текстур, которые могут представлять отражения в окружающей среде или небоскреб, нарисованный позади вашей геометрии. Шесть квадратов образуют грани воображаемого куба, окружающего объект; каждая грань представляет вид по направлениям мировых осей (вверх, вниз, влево, вправо, вперед и назад). Подробнее
See in Словарь
занимает много процессорного времени по ряду причин:

  1. Каждая из шести граней кубической карты должна визуализироваться отдельно с помощью «камерыкомпонента, который создает изображение конкретная точка зрения в вашей сцене. Вывод либо рисуется на экране, либо фиксируется в виде текстуры. Подробнее
    См. в Словарь
    » в источнике зонда.
  2. Зонды необходимо визуализировать отдельно для каждого уровня отражения (дополнительную информацию см. в документации по Расширенным зондам отражения).
  3. Различные уровни MIP-карты кубической карты должны пройти процесс размытия, чтобы обеспечить глянцевые отражения.

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

Общие советы

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

Разрешение

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

Маска отбраковки

Стандартный метод повышения производительности обычной камеры — использование маски отсечения. Позволяет включать или опускать объекты, визуализируется камерой, по слою.
См. в свойстве Словарь
, чтобы избежать рендеринга незначительных объектов; этот метод одинаково хорошо работает для отражательных зондов. Например, если ваша СценаСцена содержит среду и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь
содержит много мелких объектов (например, камней и растений), которые вы можете рассмотрите возможность размещения их всех на одном слое, а затем используйте маску отсечения, чтобы не отображать их в отражении.

Сжатие текстур

Чтобы оптимизировать время рендеринга и снизить потребление памяти графическим процессором, используйте сжатие текстур. Чтобы управлять сжатием текстуры для запеченных зондов отражения, откройте окно Освещение (меню: Окно > Rendering процесс отрисовки графики на экран (или текстуру рендеринга). По умолчанию основная камера в Unity отрисовывает свой вид на экран. Подробнее См. в разделе Словарь > Освещение), перейдите к Environmental Lighting > Reflections и используйте метод CompressionA для хранения данных что уменьшает объем требуемого дискового пространства. См. Сжатие текстур, Сжатие анимации, Сжатие звука, Сжатие компоновки.
См. в Словарь
. Обратите внимание, что датчики отражения в реальном времени не сжимаются в памяти, а их размер в памяти зависит от настроек разрешения и HDR. Из-за этого выборка проб Reflection Probes в реальном времени обычно требует больше ресурсов, чем выборка запеченных проб Reflection Probes.

Оптимизация проверки в реальном времени

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

Режим обновления

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

Если для режима установлено значение При пробуждении, зонд будет обновляться во время выполнения, но только один раз в начале сцены. Это полезно, если сцена (или ее часть) настраивается во время выполнения, но не изменяется в течение своего существования.

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

Расчет времени

Если для описанного выше Режима обновления установлено значение Каждый кадр, нагрузка на обработку может быть значительной. Time Slicing позволяет распределить стоимость обновлений на несколько кадров и тем самым снизить нагрузку в любой момент времени. У этого свойства есть три разных параметра:

  1. All Faces at Once приведет к немедленному рендерингу шести граней кубической карты (в одном кадре), но затем операция размытия для каждой из шести мип-карт первого уровня будет выполняться в отдельных кадрах. Остальные MIP-карты затем будут размыты в одном кадре, а результаты скопированы в кубическую карту в другом кадре. Таким образом, полное обновление занимает девять кадров.

  2. Отдельные грани работают так же, как Все грани одновременно, за исключением того, что начальная визуализация каждой грани кубической карты происходит в отдельном кадре (вместо всех шести в первом кадре). . Полное обновление занимает четырнадцать кадров; этот параметр оказывает наименьшее влияние на частоту кадров, но относительно долгое время обновления может быть заметно, например, при резком изменении условий освещения (например, при внезапном включении лампы).

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

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

  • Обновлено в 5.6

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3