This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Режимы вывода изображения
Физика
Браузер SDK 2
Лицензирование и типы лицензий
Дополнения (Add-Ons)
Демонстрационные проекты
API Samples
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Унифицированный язык шейдеров UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
API
Animations-Related Classes
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
VR-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы

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

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

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

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

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

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

Чтобы включить профилировщик, нажмите 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 в консоли. Чтобы отключить профилировщик в игровом режиме, введите show_profiler 0 в консоли.

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

Общий профилировщик включен
Total Общее время в миллисекундах, затраченное на расчет и визуализацию текущего кадра. Это продолжительность основного цикла в последовательности выполнения приложения.
Total = Total CPU + Waiting GPU
Total CPU Общее время в миллисекундах, затраченное на подготовку текущего кадра (включая обновление, рендеринг и свопинг ).
Total GPU Общее время в миллисекундах, затраченное на рендеринг текущего кадра на графическом процессоре.
Примечание
Этот счетчик может не работать на некоторых графических процессорах.
Update Время, затраченное на обновление логики приложения. Это включает выполнение всех шагов функции update() world-скрипта. Он также включает в себя обновление состояний всех нод (например, обновление skinned-анимации со скинами или системы частиц для генерации новых частиц).
  • Если время обновления слишком велико, это означает, что вам необходимо оптимизировать логику приложения, выполняемого каждый кадр.
  • Вам также может потребоваться уменьшить количество объектов в мире, так как обновление их состояний (создание частиц системами частиц, воспроизведение анимации скелетного меша и т.д.) увеличивает нагрузку.
Render CPU Время, необходимое для подготовки всех данных к рендерингу в текущем кадре и передачи команд рендеринга из ЦП в ГП. Если процессорное время рендеринга слишком велико, это сигнализирует о необходимости оптимизации художественных ресурсов, например:
  • LOD система должна использоваться;
  • количество полигонов моделей должно быть уменьшено.
Waiting GPU Время между завершением всех вычислений на ЦП до момента, когда графический процессор завершил рендеринг кадра. (См. иллюстрацию ). Этот счетчик полезен для анализа узких мест в производительности вашего приложения.
  • Если время ожидания GPU равно 0 , это означает, что скрипты слишком долго обновляются, а вычисления слишком интенсивны, чтобы ЦП мог их выполнять достаточно быстро. В этом случае ваше приложение имеет узкое место в ЦП. Оптимизируйте блок обновления в скриптах мира или уменьшите количество объектов, обновляемых в каждом кадре.
  • Время высокого ожидания GPU означает одно из следующих:
    • низкая частота кадров свидетельствует о наличии узкого места в графическом процессоре. В этом случае необходимо оптимизировать художественное содержание.
    • стабильно высокая частота кадров означает, что у вас есть свободные ресурсы ЦП для обработки большего количества чисел в update () сценария world.
Interface Время, затраченное на рендеринг всех виджетов GUI.
Total Physics Время, затраченное на выполнение всех физических расчетов.
Waiting Physics Период времени, в течение которого физический модуль дожидается завершения процесса рендеринга для того, чтобы вернуться в основной поток и выполнить остальные кадры физики.
CPU ram free Объем доступной в данный момент памяти.
CPU ram usage physics Текущий размер рабочего набора. Рабочий набор - это набор страниц памяти, которые в данный момент отображаются в физической оперативной памяти (см. источник).
CPU ram usage committed Общий объем частной памяти, выделенный менеджером памяти для запущенного процесса (см. источник).
CPU ram malloc Объем памяти, выделяемый пользовательским аллокатором UNIGINE.
CPU ram static pool Объем памяти, выделяемой в статических пулах.
CPU ram dynamic pool Объем памяти, выделяемой в динамических пулах. Доступно только в Windows.
CPU ram instance pool Объем памяти, выделяемой в пулах экземпляров.
Frame Allocations Количество выделений, выполняемых для каждого кадра. Аллокатор UNIGINE распределяет память в пулах, что позволяет распределять память быстрее и эффективнее.
Live Allocations Текущее количество выполненных распределений / Максимальное количество распределений, выполненных во время выполнения (пиковое потребление).
GPU vram free Объем доступной в данный момент видеопамяти.
GPU vram usage Объем видеопамяти, используемый графическим процессором. Это значение задается графическим драйвером.
GPU ram usage Объем оперативной памяти, используемый графическим процессором. Это значение задается графическим драйвером.
GPU alloc Количество выделений, выполненных движком на графическом процессоре.
GPU Frame Allocations Количество выделяемой видеопамяти для каждого кадра.
GPU Live Allocations Текущее количество выполненных распределений / Максимальное количество распределений, выполненных во время выполнения (пиковое потребление).

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

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

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

Примечание
Статистика памяти, представленная в этом разделе, доступна в профилировщике рендеринга, если он включен через интерфейс UnigineEditor (Tools -> Performance Profiler -> Rendering).
Однако вы можете включить профилировщик памяти отдельно, используя консольную команду show_profiler_memory 1. В этом случае будет отображаться только статистика по памяти.
GPU Allocator small pool size Максимальный размер пула видеопамяти для небольших выделений.
GPU Allocator small pool usage Фактическое использование пула видеопамяти для небольших выделений.
GPU Allocator skinned Объем видеопамяти, выделенный для Skinned Mesh.
GPU Allocator decals Объем видеопамяти, выделенный для декалей.
RAM ImagePool Объем памяти (RAM), используемый в данный момент для пула изображений.
RAM StringPool Объем оперативной памяти (RAM), используемый в настоящее время для глобального пула строк, в котором хранятся повторяющиеся строки. Пул строк повышает производительность, поскольку в нем хранится только одна строка вместо нескольких ее дубликатов. Однако этот пул очищается только при завершении работы движка, поэтому важно поддерживать его размер на достаточном уровне во время выполнения.
RAM Sounds Объем оперативной памяти (RAM), используемый в настоящее время для обработки звуковых сэмплов, в мегабайтах.
RAM Terrain Объем оперативной памяти (RAM), используемый в настоящее время для асинхронной загрузки ландшафта, и максимальный объем оперативной памяти, который может для этого использоваться, в мегабайтах.
RAM Animations Объем памяти (RAM), используемый в данный момент для анимации (хранится в файлах .anim).
RAM Meshes Static All Общий объем оперативной памяти, используемый в настоящее время для потоковой передачи статических мешей.
Примечание
Один и тот же статический меш будет использовать больше оперативной памяти, чем VRAM, поскольку в оперативной памяти генерируются дополнительные данные для расчета столкновений, пересечений, пространственных деревьев и так далее.
RAM Meshes Static Active Объем оперативной памяти, активно используемый для рендеринга статических мешей.
RAM Meshes Static Cache Объем оперативной памяти, используемый для кэширования статических мешей.
RAM Meshes Skinned All Общий объем оперативной памяти, используемый в настоящее время для потоковой передачи Skinned Mesh.
RAM Meshes Skinned Active Объем оперативной памяти, активно используемый для рендеринга Skinned Mesh.
RAM Meshes Skinned Cache Объем оперативной памяти, используемый для кэширования Skinned Mesh.
VRAM Render Buffers Объем видеопамяти, используемый в данный момент для рендеринга буферов (Gbuffer, постэффектов и т.д.), в мегабайтах.
VRAM Particles Объем видеопамяти, используемой в настоящее время для вершин систем частиц, и максимальный объем видеопамяти, который может быть использован для них, в мегабайтах.
VRAM Meshes Static All Общий объем видеопамяти, используемый в настоящее время для потоковой передачи статических мешей.
VRAM Meshes Static Active Объем видеопамяти, активно используемый для рендеринга статических мешей.
VRAM Meshes Static Cache Объем видеопамяти, используемой для кэширования статических мешей.
VRAM Meshes Skinned All Общий объем видеопамяти, используемый в настоящее время для Skinned Mesh.
VRAM Meshes Skinned Active Объем видеопамяти, активно используемый для рендеринга Skinned Mesh.
VRAM Meshes Skinned Cache Объем видеопамяти, используемый для кэширования Skinned Mesh.
VRAM Textures All Общий объем видеопамяти, используемый в данный момент для текстур, и максимальный объем видеопамяти, который может быть использован для них, в мегабайтах.
VRAM Textures Active Объем видеопамяти, активно используемый для рендеринга текстур.
VRAM Textures Cache Объем видеопамяти, используемой в настоящее время для кэширования текстур, в мегабайтах.
VRAM Terrain Cache Объем кэша VRAM, используемого в настоящее время для фрагментов Landscape Terrain, в мегабайтах.
VRAM Terrain Virtual Texture Объем видеопамяти, используемый в настоящее время для виртуальной текстуры Landscape Terrain, в мегабайтах.
VRAM Terrain Detail Textures Объем видеопамяти, используемый в настоящее время для получения сведений о Landscape Terrain, в мегабайтах.
RAM Streaming need Объем оперативной памяти, который в данный момент требуется для потоковой передачи.
VRAM Streaming need Объем видеопамяти, который в данный момент требуется для потоковой передачи.

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

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

В дополнение к общей статистике и статистике по памяти отображаются следующие статистические данные:

Примечание
При включении через интерфейс UnigineEditor (Tools -> Performance Profiler -> Rendering) профилировщик дополнительно предоставляет статистику по памяти.
Однако, если вы включите его с помощью консольной команды show_profiler_render 1, будут отображаться только приведенные ниже статистические данные.
Terrain Reload Tiles Количество тайлов Landscape Terrain, ожидающих перезагрузки после модификации.
Terrain Reload Bounds Количество событий, вызывающих перезагрузку тайлов (одна граница может вызвать перезагрузку нескольких тайлов).
Dynamic Reflections Количество динамических отражений, отрисовываемых за кадр. В случае отражений кубической текстуры, если обновлены все шесть граней, в каждом кадре рендерится шесть отражений.
Lights Количество проходов света, визуализируемых на кадр. Это означает, что счетчик отображает количество всех источников света, которые в данный момент видны и освещают что-то во вьюпорте. Это значение также включает дополнительные проходы для визуализации источников света на отражающих поверхностях (если используются динамические отражения). Простое 2D-отражение умножит количество проходов рендеринга на два, в то время как отражение на кубической карте с шестью гранями, обновленными в каждом кадре, умножит количество проходов рендеринга на шесть.
Примечание
Каждый источник света перерисовывает полигоны меша, который он освещает. Вот почему, чем больше количество источников света, тем большее количество полигонов должна визуализировать видеокарта и тем ниже производительность. Например, использование двух всенаправленных источников света вдвое увеличивает количество отрисовываемой геометрии, на которую они светят.
Shadows Количество проходов тени, визуализируемых за кадр. Для каждого источника света требуется проход тени для расчета теней. Опять же, если есть отражающие поверхности с нарисованными отраженными тенями, это увеличит количество проходов тени.
Decals

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

Surfaces

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

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

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

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

Примечание
Вы можете включить этот профилировщик через интерфейс UnigineEditor (Tools -> Performance Profiler -> Physics) и с помощью консольной команды show_profiler_physics 1.

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

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

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

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

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

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

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

World Management Profiler включен
Примечание
Вы можете включить этот профилировщик через интерфейс UnigineEditor (Tools -> Performance Profiler -> World Management) и с помощью консольной команды show_profiler_world 1.

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

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

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

Профилировщик потоков включен
Примечание
Вы можете включить этот профилировщик через интерфейс UnigineEditor (Tools -> Performance Profiler -> Thread) и с помощью консольной команды show_profiler_thread 1.

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

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