ShaderWarmup.WarmupShaderFromCollection
Declaration
public static void WarmupShaderFromCollection(ShaderVariantCollection collection, Shader shader, Experimental.Rendering.ShaderWarmupSetup setup);Описание
Предварительно нагревает варианты шейдеров для заданного Shader, которые находятся в заданном ShaderVariantCollection, используя заданную конфигурацию отображения.
Информацию о загрузке и предварительном разогреве шейдера, включая список различных методов предварительного разогрева, см. в Загрузка шейдера.
Unity требуется дополнительная информация, чтобы корректно построить представления вариантов шейдера на GPU («объекты состояния конвейера», или PSO), если ваше приложение работает с одним из следующих графических API:
- DirectX 12
- Metal
- Vulkan
Если Unity имеет эту информацию, то, скорее всего, предварительно загруженные варианты соответствуют тому, что требуется GPU при рендеринге вашего Scene.
Чтобы предоставить Unity больше информации, вы можете сделать следующее:
- Используйте параметр
setupдля указания расположения вершинных данных, используемых с шейдером. - Прежде чем вызвать
WarmupShader, задайте состояние рендеринга как можно ближе к тому состоянию, которое вы используете с шейдером. Например, задайте формат для целевого рендераили используйте команды render state для установки таких состояний, как режим смешивания.
Unity также асинхронно предварительно нагревает варианты шейдеров с использованием нескольких фоновых потоков, если ваше приложение работает на платформе, которая поддерживает это. Unity использует столько потоков, сколько может. В созданном приложении вы можете использовать -max-async-pso-job-count аргумент командной строки установить количество потоков Unity использования.
Дополнительные ресурсы: ShaderWarmup.WarmupShader, Shader.WarmupAllShaders, ShaderVariantCollection.WarmUp, Загрузка шейдера