Unity 6.3
0 онлайн 96 гостей 3 в системе
Вход
Оптимизация Шаг 79 из 208

Отображение ссылки на модуль Profiler

Рендирование Profiler отображает статистику рендеринга и информацию о том, что CPU и GPU делают для рендеринга Scene. Вы можете использовать эту статистику для измерения ресурсоемкости различных областей Scene, что полезно для оптимизации.

Для открытия окна Profiler перейдите в меню: Окно > Анализ > Profiler.

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

Модуль Рендеринг Profiler
Модуль Рендеринг Profiler

Диаграмма модуля 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.

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

Дополнительные ресурсы