Отображение ссылки на модуль Profiler
Рендирование Profiler отображает статистику рендеринга и информацию о том, что CPU и GPU делают для рендеринга Scene. Вы можете использовать эту статистику для измерения ресурсоемкости различных областей Scene, что полезно для оптимизации.
Для открытия окна Profiler перейдите в меню: Окно > Анализ > Profiler.
На диаграмме отображается количество пакетов, SetPass вызовов, треугольников и вершин, отображенных вашим приложением. В нижней панели отображаются дополнительные статистические данные отображения, которые соответствуют показанным в окне GameView Статистика отображения.
Диаграмма модуля Rendering Profiler разделена на следующие категории:
| Диаграмма | Описание |
|---|---|
| Количество партий | Количество партий Unity, обработанных в течение кадра. |
| SetPass Количество звонков | Количество раз, когда Unity переключал проход шейдера, который он использовал для рендеринга GameObjects в течение кадра. Шейдер может содержать несколько проходов шейдера, и каждый проход рендеринга GameObjects в сцене по-разному. |
| Количество треугольников | Количество triangles Unity, обработанных в течение кадра. |
| Количество вершин | Количество vertices Unity, обработанных в течение кадра. |
Панель сведений о модуле
Когда вы нажимаете на Рендринг Profiler модуля, панель деталей в нижней половине окна отображает подробную статистику отображения. Эта статистика похожа на статистику, показанную в Статистика отображения окно.
В верхнем левом углу панели сведений выберите Открыть Frame Debugger, чтобы открыть Frame Debugger, в котором содержится информация об отдельных вызовах рисования, выполнивших рендеринг кадра.
Эти статистические данные также доступны через ProfilerRecorder API и в редакторе модулей Profiler, так что вы можете добавить их в пользовательский модуль Profiler.
| Статистика | Описание | Доступно в проигрывателях релиза |
|---|---|---|
| SetPass Вызовы | Количество раз, когда Unity переключал проход шейдера, который он использовал для рендеринга GameObjects в течение кадра. Шейдер может содержать несколько проходов шейдера, и каждый проход рендеринга GameObjects в сцене по-разному. | Да |
| Вызовы на выигрыш | Общее число вызовов отрисовки, выполненных Unity за кадр. Вызовы отрисовки происходят, когда Unity выводит GameObject на экран. В это число входят непакетированные вызовы, а также вызовы динамического и статического пакетирования. | Да |
| Партии | Общее число партии обработанных Unity за кадр. Это число включает и статические, и динамические пакеты. | Да |
| Треугольники | Количество triangles Unity, обработанных в течение кадра. | Да |
| Вершины | Количество vertices Unity, обработанных в течение кадра. | Да |
| (динамическая доза) | В этом разделе содержатся статистические данные о динамическом пакетировании. | Нет |
| Пакетные вызовы | Количество вызовов Unity, объединенных в динамические батча. | Нет |
| Партии | Число динамических пакетов Unity, обработанных в течение кадра. | Нет |
| Треугольники | Число треугольников в GameObjects, включенных в динамические партии. | Нет |
| Вершины | Число вершин в GameObjects, включенных в динамические пакеты. | Нет |
| Время | Время, затраченное Unity на создание динамических пакетных структур. | Нет |
| (Статическая дозировка) | В настоящем разделе содержатся статистические данные о static batching. | Нет |
| Пакетные вызовы | Количество вызовов отрисовки, объединённых Unity в статические пакеты. | Нет |
| Партии | Количество статических пакетов, обработанных Unity за кадр. | Нет |
| Треугольники | Количество треугольников в GameObject, вошедших в статические пакеты. | Нет |
| Вершины | Количество вершин в GameObject, вошедших в статические пакеты. | Нет |
| (Инстансирование) | В этом разделе содержится статистика экземпляров GPU и. | Нет |
| Пакетные вызовы | Количество вызовов отрисовки, объединённых Unity в инстансированные пакеты. | Нет |
| Партии | Число пакетов Unity, обработанных для отображения с экземпляром GameObjects в течение кадра. | Нет |
| Треугольники | Количество треугольников в экземпляре GameObjects. | Нет |
| Вершины | Количество вершин в экземпляре GameObjects. | Нет |
| Использованные текстуры | Число текстуры Unity используется во время кадра и количество памяти текстуры используются. | Нет |
| Тексты рендеринга | Количество RenderTextures Unity, использованных в течение кадра, и количество памяти, использованное RenderTextures. | Да |
| Изменения текстур рендеринга | Количество раз, когда Unity установил один или несколько RenderTextures в качестве целей рендеринга во время кадра. | Да |
| Б/у буферы | Общее число буферов GPU и объём занимаемой ими памяти. Сюда входят вершинные, индексные и вычислительные буферы, а также все внутренние буферы, необходимые для рендеринга. | Да |
| Загрузка буфера вершин в кадре | Количество геометрии, которое CPU загрузил в GPU в кадре. Это представляет собой данные вершин/нормальных/текскордов. Возможно, что на GPU. уже есть некоторая геометрия. Эта статистика включает только геометрию, которую Unity передает в кадре. | Да |
| Загрузка буфера индекса в количестве кадров | Количество геометрии, которое CPU загрузил в GPU в кадре. Это представляет собой данные индексов треугольников. Возможно, что на GPU. уже есть некоторая геометрия. Эта статистика включает только геометрию, которую Unity передает в кадре. | Да |
| Число заклинателей тени | Число GameObjects, которые бросают тени в кадре. Если GameObject бросает несколько теней (потому что его освещают несколько источников света), у него есть одна запись на каждую брошенную тень. | Да |
Доступность в игроках
Счетчики модуля Рендирования Profiler также доступны в Проигрывателях. Используйте ProfilerRecorder API для доступа к информации модуля Рендирования Profiler в Проигрывателях. Счетчики высокого уровня также доступны в Проигрывателе Выпуска.
Следующий пример содержит простой скрипт, который собирает метрики SetPass Calls Count, Draw Calls Count и Vertices Count и отображает их как TextArea.
using System.Text;
using Unity.Profiling;
using UnityEngine;
public class RenderStatsScript : MonoBehaviour
{
string statsText;
ProfilerRecorder setPassCallsRecorder;
ProfilerRecorder drawCallsRecorder;
ProfilerRecorder verticesRecorder;
void OnEnable()
{
setPassCallsRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "SetPass Calls Count");
drawCallsRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "Draw Calls Count");
verticesRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "Vertices Count");
}
void OnDisable()
{
setPassCallsRecorder.Dispose();
drawCallsRecorder.Dispose();
verticesRecorder.Dispose();
}
void Update()
{
var sb = new StringBuilder(500);
if (setPassCallsRecorder.Valid)
sb.AppendLine($"SetPass Calls: {setPassCallsRecorder.LastValue}");
if (drawCallsRecorder.Valid)
sb.AppendLine($"Draw Calls: {drawCallsRecorder.LastValue}");
if (verticesRecorder.Valid)
sb.AppendLine($"Vertices: {verticesRecorder.LastValue}");
statsText = sb.ToString();
}
void OnGUI()
{
GUI.TextArea(new Rect(10, 30, 250, 50), statsText);
}
}
Информация о модуле Рендеринг Profiler относится к категории ProfilerCategory.Render Profiler.
Если вы хотите выделить выбранные счетчики отображения в пользовательском модуле, используйте Редактор модулей для настройки графика и детального представления.