This page has been translated automatically.
Видеоуроки
Interface
Essentials
Advanced
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Настройки и предпочтения
Работа с проектами
Настройка параметров узла
Setting Up Materials
Настройка свойств
Освещение
Landscape Tool
Sandworm
Использование инструментов редактора для конкретных задач
Extending Editor Functionality
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World Objects
Звуковые объекты
Объекты поиска пути
Players
Программирование
Основы
Настройка среды разработки
Примеры использования
UnigineScript
C++
C#
Унифицированный язык шейдеров UUSL
File Formats
Rebuilding the Engine Tools
GUI
Двойная точность координат
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Art Samples
Tutorials
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Профилировщик производительности

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

С помощью профилировщика вы можете:

  • Обнаружить узкие места в вашем приложении
  • Проверить, требуется ли оптимизация художественных активов.
  • Проверить, требуется ли оптимизация кода.
  • Сравнить результаты профилирования до и после изменений.

Профилировщик производительности

Активация профилировщика#

Чтобы включить профилировщик, нажмите Tools -> Performance Profiler и выберите нужный режим профилирования:

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

Доступны следующие режимы профилирования:

  1. Generic profiler показывает только блок общей статистики.
  2. Rendering profiler показывает подробную статистику рендеринга и временную диаграмму.
  3. Physics profiler показывает подробную статистику по физике (в пределах Physics radius ) и временную диаграмму.
  4. World Management profiler показывает статистику по всему загруженному миру.
  5. Thread profiler показывает статистику загрузки потоковых ресурсов.

Чтобы показать статистику профилировщика в игровом режиме, введите команду show_profiler и значение от 1 до 5 в консоли. Чтобы отключить профилировщик в игровом режиме, введите в консоли show_profiler 0 .

Универсальный профилировщик#

Общий профилировщик включен
Total Общее время в миллисекундах, затраченное на расчет и визуализацию текущего кадра. Это продолжительность основного цикла в последовательности выполнения приложения.
Всего = Всего ЦП + ожидающий графический процессор
Total CPU Общее время в миллисекундах, затраченное на подготовку текущего кадра (включая обновление, рендеринг и свопинг ).
Total GPU Общее время в миллисекундах, затраченное на рендеринг текущего кадра на графическом процессоре.
Примечание
Этот счетчик может не работать на некоторых графических процессорах.
Update Время, затраченное на обновление логики приложения. Это включает выполнение всех шагов функции update() world-скрипта. Он также включает в себя обновление состояний всех узлов (например, обновление skinned-анимации со скинами или системы частиц для генерации новых частиц).
  • Если время обновления слишком велико, это означает, что вам необходимо оптимизировать логику приложения, выполняемого каждый кадр.
  • Вам также может потребоваться уменьшить количество объектов в мире, так как обновление их состояний (создание частиц системами частиц, воспроизведение анимации скелетной сетки и т.д.) увеличивает нагрузку.
Render CPU Время, необходимое для подготовки всех данных к рендерингу в текущем кадре и передачи команд рендеринга из ЦП в ГП. Если процессорное время рендеринга слишком велико, это сигнализирует о необходимости оптимизации художественных ресурсов, например:
  • LOD система должна использоваться;
  • количество полигонов моделей должно быть уменьшено.
Waiting GPU Время между завершением всех вычислений на ЦП до момента, когда графический процессор завершил рендеринг кадра. (См. иллюстрацию ). Этот счетчик полезен для анализа узких мест в производительности вашего приложения.
  • Если время ожидания GPU равно 0 , это означает, что скрипты слишком долго обновляются, а вычисления слишком интенсивны, чтобы ЦП мог их выполнять достаточно быстро. В этом случае ваше приложение имеет узкое место в ЦП. Оптимизируйте блок обновления в скриптах мира или уменьшите количество объектов, обновляемых в каждом кадре.
  • Время высокого ожидания GPU означает одно из следующих:
    • низкая частота кадров свидетельствует о наличии узкого места в графическом процессоре. В этом случае необходимо оптимизировать художественное содержание.
    • стабильно высокая частота кадров означает, что у вас есть свободные ресурсы ЦП для обработки большего количества чисел в update () сценария world.
Interface Время, затраченное на рендеринг всех виджетов GUI.
Physics Время, затраченное на выполнение всех физических расчетов.
Heap Размер всех пулов памяти, выделенных для приложения. Распределитель Unigine выделяет память в пулах, что позволяет делать выделение быстрее и эффективнее (если по умолчанию используется директива USE_MEMORY ). Поскольку память распределяется по пулам, значение счетчика увеличивается пошагово.
Memory Размер всех блоков памяти, выделяемых по запросу. Этот счетчик сообщает, сколько памяти в выделенных пулах действительно использует ресурсы приложения.
  • Если размер памяти постоянно увеличивается, это может указывать на утечку памяти. Проверьте, правильно ли удалены все созданные объекты и переменные, которые больше не используются.
System Размер оперативной памяти, используемой приложением.
Allocations Количество вызовов распределения во время кадра. (Этот счетчик сообщает о вызове выделения, даже если требуется выделить несколько байтов).
Sync Threads Количество потоков синхронного внутреннего движка (по умолчанию значение равно количеству доступных ядер ЦП минус 1 и ограничено 32).
Async Threads Количество потоков асинхронного внутреннего движка (по умолчанию значение равно количеству доступных ядер ЦП и ограничено 32).

Профилировщик рендеринга#

Профилировщик рендеринга включен

Следующая статистика отображается в дополнение к общей статистике:

Terrain Cache CPU Объем кеш-памяти ЦП, используемый в настоящее время для листов ландшафта ландшафта, в мегабайтах.
Terrain Cache GPU Объем кеш-памяти VRAM, используемый в настоящее время для фрагментов ландшафта ландшафта, в мегабайтах.
Terrain Virtual Texture Объем памяти, используемый в настоящее время для виртуальной текстуры ландшафта ландшафта, в мегабайтах.
Terrain Detail Textures Объем памяти, используемый в настоящее время для деталей ландшафта, в мегабайтах.
Terrain Reload Tiles Количество плиток ландшафтного ландшафта, ожидающих перезагрузки после модификации.
Terrain Reload Bounds Количество событий, вызывающих перезагрузку тайлов (одна граница может вызвать перезагрузку нескольких тайлов).
Sounds Объем памяти, используемый в настоящее время для звуковых образцов, в мегабайтах.
Meshes Limit Максимальный объем VRAM, который может использоваться для геометрии сетки, в мегабайтах.
Meshes Объем VRAM, используемый в настоящее время для геометрии сетки, в мегабайтах.
Textures Limit Максимальный объем VRAM, который можно использовать для текстур, в мегабайтах.
Textures Объем VRAM, используемый в настоящее время для текстур, в мегабайтах.
Textures Cache Объем VRAM, используемый в настоящее время для кеширования текстур, в мегабайтах.
Buffers Render Объем VRAM, который в настоящее время используется для буферов рендеринга (Gbuffer, пост-эффекты и т. д.), в мегабайтах.
Buffers Shadows Объем VRAM, используемый в настоящее время для карт теней, в мегабайтах.
Async Buffer Объем памяти, используемый в настоящее время для асинхронного буфера, в мегабайтах. Промежуточный буфер, в который асинхронно загружаются ресурсы в процессе потоковой передачи.
Примечание
Доступно только для OpenGL.
Async Buffer Indices Объем памяти, используемый в настоящее время для буфера индексов сетки, в мегабайтах. Этот буфер используется для хранения индексов сеток, асинхронно загружаемых в процессе потоковой передачи.
Примечание
Доступно только для OpenGL.
Grasses Объем VRAM, используемый в настоящее время для узлов травы, в мегабайтах.
Terrains Объем VRAM, используемый в настоящее время для ландшафтов, в мегабайтах.
Allocations Textures Количество выделений памяти для текстур во время кадра.
Compile Shaders Количество шейдеров, скомпилированных во время кадра.
Dynamic Reflections Количество динамических отражений, отрисовываемых за кадр. В случае отражений кубической карты, если обновлены все шесть граней, в каждом кадре рендерится шесть отражений.
Lights Количество проходов света, визуализируемых на кадр. Это означает, что счетчик отображает количество всех источников света, которые в данный момент видны, освещая что-то в области просмотра. Это значение также включает дополнительные проходы для визуализации источников света на отражающих поверхностях (если используются динамические отражения). Простое 2D-отражение умножит количество проходов рендеринга на два, в то время как отражение на кубической карте с шестью гранями, обновленными в каждом кадре, умножит количество проходов рендеринга на шесть.
Примечание
Каждый источник света перерисовывает полигоны сетки, которые он освещает. Вот почему, чем больше количество источников света, тем большее количество полигонов должна визуализировать видеокарта и тем ниже производительность. Например, использование двух всенаправленных источников света вдвое увеличивает визуализированную геометрию, на которую они светят.
Shadows Количество проходов тени, визуализируемых за кадр. Для каждого источника света требуется проход тени для расчета теней. Опять же, если есть отражающие поверхности с нарисованными отраженными тенями, это увеличит количество проходов тени.
Decals

Количество декалей, отображаемых за кадр (во всех проходах отрисовки ).

Если для декали предусмотрен дополнительный эффект (прозрачность, эмиссия, освещенность или другой эффект), который подразумевает дополнительный проход отрисовки для этой декали, то эта декаль будет дополнительно отрисовываться в каждом соответствующем проходе, таким образом число отрисованных декалей увеличится.

Surfaces

Количество поверхностей, визуализируемых за кадр (во всех проходах визуализации ).

Если для поверхности предусмотрен дополнительный эффект (прозрачность, эмиссия, освещенность или другой эффект), который подразумевает дополнительный проход отрисовки для этой поверхности, то эта поверхность будет дополнительно отрисовываться в каждом соответствующем проходе, таким образом число отрисованных поверхностей увеличится.

Triangles All Общее количество треугольников, визуализируемых за кадр, включая все полигоны, которые в данный момент видны в окне просмотра, а также те, которые отображаются в процессе визуализации теней.
Triangles Shadows Количество треугольников, визуализируемых за кадр в процессе визуализации теней. Каждый источник света должен перерисовывать геометрию, которую он освещает, увеличивая общее количество визуализированных треугольников. Чтобы избежать проблем с графическим процессором, сохраняйте как можно меньшее количество динамических источников света и их радиус.
Triangles Viewport Количество треугольников, отображаемых за кадр. Сюда входят все полигоны, которые в данный момент видны в области просмотра (геометрия).
Primitives Количество геометрических примитивов, визуализируемых за кадр. Сюда входят точки, линии, треугольники и многоугольники. Визуализатор и сам профилировщик также добавляют к этому счетчику. При использовании тесселяции значение сильно отличается. В этом случае Треугольники отображает количество треугольников в грубой сетке, а Примитивы показывает статистику количества примитивов с мозаикой.
Dips Количество вызовов отрисовки. Чем больше количество идентичных поверхностей сетки с одним и тем же материалом, тем эффективнее создание экземпляров (по умолчанию включено). Это означает, что количество вызовов отрисовки сводится к минимуму, разгружая как ЦП, так и ГП.
Вы можете сравнить количество поверхностей ( Поверхности ) и количество DIP, используемых для их рендеринга. Например, если имеется 30000 поверхностей и 1000 DIP, это означает, что 30 экземпляров поверхностей сеток визуализируются только за один вызов отрисовки (Surfaces / Dips). Таким образом, инстансинг обеспечивает повышение производительности.
Shaders Количество шейдеров, установленных на кадр. (Шейдеры устанавливаются в каждом из проходов рендеринга ; следовательно, если используется только один материал, его шейдер все равно нужно установить несколько раз. Когда ничего не видно и экран черный, даже в этом случае композитный шейдер все еще используется.)
Materials Количество материалов, установленных для каждого кадра. (Материалы задаются в каждом из этапов рендеринга .)
Примечание
Значения меньше 1 Мб отображаются как 0 .

Профилировщик физики#

Этот профилировщик показывает статистику в пределах Физического радиуса .

Профилировщик физики включен

Следующая статистика отображается в дополнение к общей статистике:

PIslands Число физических островов в пределах физического радиуса , которое можно рассчитать отдельно. Чем меньше это число, тем менее эффективна многопоточность .
PBodies Количество тел в пределах физического радиуса .
PJoints Количество соединений в пределах физического радиуса .
PContacts Общее количество контактов в пределах радиуса физики; это включает контакты между телами (их формы) и контакты тела и сетки.
PCollision Продолжительность фазы обнаружения столкновений физического моделирования при обнаружении столкновений между объектами.
PResponse Продолжительность фазы ответа , когда рассчитывается реакция на столкновение и устраняются стыки.
PIntegrate Продолжительность фазы интеграции , когда результаты физического моделирования применяются к телам.
PSimulation Продолжительность всех этапов моделирования, суммированных вместе.

Посмотрите обзор параметров Physics Profiler в нашем видеоуроке по физике .

Профилировщик управления миром#

Этот профилировщик показывает статистику по всему миру.

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

World Management Profiler включен

Следующая статистика отображается в дополнение к общей статистике:

WNodes Общее количество узлов в мире (как включенных, так и отключенных).
WBodies Общее количество тел в мире.
WJoints Общее количество соединений в мире.
WSpawn Время в миллисекундах, затрачиваемое движком на создание контента в процедурных узлах (например, трава, беспорядок, мир слои).

Профилировщик потоков#

Профилировщик потоков включен

Следующая статистика отображается в дополнение к общей статистике:

AsyncQueue Время асинхронной загрузки ресурсов (файлов / сеток / изображений / узлов), в миллисекундах.
Sound Время асинхронной загрузки звуков в миллисекундах.
PathFind Время асинхронных вычислений поиска пути в миллисекундах.
Последнее обновление: 24.08.2021
Build: ()