Unity 6.3
0 онлайн 3 гостей 3 в системе
Вход

Оптимизация отражений

Рендирование кубического отображения зонда отражения занимает значительное время процессора по ряду причин:

  1. Каждая из шести поверхностей кубической карты должна быть отображена отдельно с помощью «камеры» в месте начала зонда.

  2. Зонд должен отображать отдельное время для каждого уровня отражения (см. документацию по Advanced Reflection Probes для более подробной информации).

  3. Различные уровни mipmap кубического отображения должны пройти процесс размытия, чтобы позволить глянцевым отражениям.

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

Общие советы

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

Резолюция

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

Маска для уборки

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

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

Чтобы оптимизировать время рендеринга и снизить GPU Чтобы контролировать сжатие текстуры для выпеченных зондов отражения, откройте окно Освещение (меню: Окно > Рендеринг > Освещение), перейти к Экологическое освещение > Размышления и использовать Сжатие Обратите внимание, что зонды отражения реального времени не сжимаются в памяти, и их размер в памяти зависит от разрешения и HDR Из-за этого выборка Reflection Probes в режиме реального времени обычно более ресурсоемка, чем выборка baked Reflection Probes.

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

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

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

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

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

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

Разрезание по времени

Когда Режим Обновления, описанный выше, установлен на Каждый Фрейм, нагрузка на обработку может быть значительной. Временная Разбивка позволяет распределить стоимость обновления на несколько кадров и тем самым уменьшить нагрузку в любое время. Это свойство имеет три различных варианта:

  1. Все лица сразу Это приведет к тому, что шесть поверхностей кубического изображения будут отображены немедленно (в одном кадре), но затем операция размытия для каждого из шести первого уровня mipmaps будет происходить на отдельных кадрах. Остальные mipmaps будут затем размыты на одном кадре и результаты будут скопированы в кубическое изображение на другом кадре. Таким образом, полное обновление занимает девять кадров для завершения.

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

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

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