Unity 6.3
0 онлайн 77 гостей 3 в системе
Вход

Разогрев PSOs

Разогревает коллекции PSO на GPU во время выполнения.

Важно: GraphicsStateCollection является экспериментальным API и может быть изменен или удален в будущем.

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

Разогрейте коллекцию

После того, как вы проследили PSO коллекцию данных, вы можете нагреть кэшированный PSOs на диск.

Примечание: Рекомендуемая наилучшая практика заключается в предварительном разогревании коллекции во время последовательностей загрузки приложения или сцены.

Для разогрева коллекции данных PSO можно использовать два метода API:

  • GraphicsStateCollection.WarmUp планирует создание всех PSOs в коллекции.
  • GraphicsStateCollection.WarmUpProgressively планирует создание установленного количества PSOs в коллекции. Прогрессивное прогрев может привести к более плавному опыту и предотвратить блокировку приложения.

Методы предварительного нагрева GraphicsStateCollection.WarmUp и GraphicsStateCollection.WarmUpProgressively возвращают указатель задания, который можно использовать для определения того, выполняет ли Unity нагрев синхронно или асинхронно.

После создания PSOs они кэшируются на диск. В следующий раз, когда GPU потребуется PSO, они могут быть загружены непосредственно из кэша.

Проверка на разогрев шейдеров

Чтобы проверить, когда Unity и графический драйвер компилируют шейдеры и создают PSOs, поиск следующих маркеров профилирования в Profiler:

  • Shader.CreateGPUProgram для Unity создает версию варианта шейдера, специфическую для GPU.
  • CreateGraphicsGraphicsPipelineImpl для Unity создание PSO.

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