Отслеживайте и управляйте PSO сборами данных
Отследить новую коллекцию данных PSO и управлять существующими коллекциями.
Важно: GraphicsStateCollection является экспериментальным API и может быть изменен или удален в будущем.
Трассировка PSO — это запись того, какие объекты состояния конвейера (PSO) использует ваше приложение, и связанных с ними данных для предварительного прогрева PSO. Современные графические API компилируют шейдеры в рамках создания PSO, поэтому им требуется отслеживать дополнительные состояния графики и используемый вариант шейдера.
GraphicsStateCollection API позволяет вам отслеживать и предварительно нагревать PSOs в вашем проекте. Совет: См. документацию GraphicsStateCollection API для получения дополнительной информации о GraphicsStateCollection API и образцах кода.
В следующих разделах объясняется, как отслеживать коллекцию PSO и управлять коллекциями PSO в вашем проекте.
Требования в отношении отслеживания
Трассирование с GraphicsStateCollection API поддерживается только в сборках для разработчиков, а не в сборках для выпуска.
Отследить новую коллекцию данных PSO
Отследить PSOs в вашем проекте и создать ресурс GraphicsStateCollection (коллекцию данных PSO), в которой хранятся сведения о сочетаниях вариантов шейдеров и состояний графики, используемых вашим приложением.
Чтобы отслеживать новую коллекцию данных PSO, выполните следующие действия:
- Создайте новую коллекцию GraphicsStateCollection в сценарии C#. Эта новая коллекция будет содержать информацию о отслеживаемых PSOs из вашей программы или сцены.
- Чтобы начать трассировку PSOs в коллекцию данных PSO, вызовите методы GraphicsStateCollection.BeginTrace. Начать трассировку следует во время запуска сцены или приложения, чтобы не пропустить ни одного PSOs.
- Чтобы прекратить трассировку, вызовите методы GraphicsStateCollection.EndTrace. Прекратите трассировку во время завершения сцены или приложения.
Тип: Рекомендуемая оптимальная практика заключается в отслеживании отдельной коллекции для каждой графики API и построить платформу, потому что GPU состояния могут варьироваться API.
Сохранить коллекцию
После завершения трассировки сохраните коллекцию данных PSO на диск с помощью GraphicsStateCollection.SaveToFile.
При сохранении коллекции данных PSO она сохраняется как файл .graphicsstate в указанном вами пути.
Получение коллекции
Если вы развертываете проигрыватель на другом устройстве, вам необходимо вручную извлечь файл .graphicsstate обратно на компьютер Редактора. Это зависит от вашей платформы. На Android используйте adb pull.
Вы также можете использовать GraphicsStateCollection.SendToEditor для сохранения и получения коллекции PSO с помощью PlayerConnection. Чтобы использовать PlayerConnection, включите Разработка Build и Autoconnect Profiler в настройках Build Profile проекта.
Управление коллекцией
GraphicsStateCollection API предоставляет несколько методов, которые можно использовать для управления коллекцией и вариациями шейдеров в ней. Дополнительные сведения см. в документации GraphicsStateCollection API.
Добавить отсутствующий PSOs в коллекцию
Если вы измените шейдеры, используемые вашим приложением или сценой, коллекция может не содержать новые данные PSO. Чтобы проверить, содержит ли коллекция определенный вариант шейдера, вызовите ContainsVariant.
Чтобы отслеживать отсутствующий PSOs, вы можете использовать рабочий процесс отслеживания с той же коллекцией для начала и окончания отслеживания вокруг подмножества вашей сцены, которая использует отсутствующие варианты шейдеров. Unity добавляет любые новые варианты шейдеров, обнаруженные во время отслеживания, к существующим данным коллекции при ее сохранении.