This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
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
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Сэмплы материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии 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.
Total Physics Время, затраченное на выполнение всех физических расчетов.
Waiting Physics Период времени, в течение которого физический модуль дожидается завершения процесса рендеринга для того, чтобы вернуться в основной поток и выполнить остальные кадры физики.
Heap Размер всех пулов памяти, выделенных для приложения. Распределитель Unigine выделяет память в пулах, что позволяет делать выделение быстрее и эффективнее (если по умолчанию используется директива USE_MEMORY ). Поскольку память распределяется по пулам, значение счетчика увеличивается пошагово.
Memory Размер всех блоков памяти, выделяемых по запросу. Этот счетчик сообщает, сколько памяти в выделенных пулах действительно использует ресурсы приложения.
  • Если размер памяти постоянно увеличивается, это может указывать на утечку памяти. Проверьте, правильно ли удалены все созданные объекты и переменные, которые больше не используются.
System Размер оперативной памяти, используемой приложением.
Allocations Количество вызовов распределения во время кадра. (Этот счетчик сообщает о вызове выделения, даже если требуется выделить несколько байтов).
CPUShaders Threads Количество внутренних потоков в движке, которые используются для CPU шейдеров.

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

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

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

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

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

Surfaces

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

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

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

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

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

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

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

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

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

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

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

World Management Profiler включен

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

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

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

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

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

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