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

GraphicsStateCollection.WarmUp

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

Declaration

public Unity.Jobs.JobHandle WarmUp(Unity.Jobs.JobHandle dependency);

Параметры

Параметр Описание
зависимость Работа, которую надо ждать.

Возвращаемое значение

JobHandle Ручка для предварительного нагрева.

Описание

Предварительно нагревает все варианты шейдеров в этой коллекции, используя связанные графические состояния.

Это приведёт к созданию GPU-представлений сохранённых вариантов шейдеров. Полный прогрев коллекции состояний графики поддерживается, только если SystemInfo.supportsParallelPSOCreation является true. В противном случае поведение возвращается к старому ShaderVariantCollection.WarmUp. JobHandle, возвращенный этим методом, может быть использован для управления тем, происходит ли создание представлений GPU синхронно или асинхронно.

Приведенный ниже пример выполнит разогрев асинхронно.

using UnityEngine;
using UnityEngine.Experimental.Rendering;
using Unity.Jobs;

public class WarmUpExample : MonoBehaviour { public GraphicsStateCollection graphicsStateCollection;

void Start() { JobHandle handle = graphicsStateCollection.WarmUp(); } }

Ниже приведен пример того, как дождаться завершения обработки задания, чтобы выполнять операции синхронно.

using UnityEngine;
using UnityEngine.Experimental.Rendering;
using Unity.Jobs;

public class WarmUpSynchronousExample : MonoBehaviour { public GraphicsStateCollection graphicsStateCollection;

void Start() { JobHandle handle = graphicsStateCollection.WarmUp(); handle.Complete(); } }

Предварительная нагрева также может быть связана с другими заданиями с помощью зависимости входа и возвращаемого JobHandle.

using UnityEngine;
using UnityEngine.Experimental.Rendering;
using Unity.Jobs;

public class WarmUpSynchronousExample : MonoBehaviour { struct PostWarmUpJob : IJob { public void Execute() { Debug.Log("WarmUp is complete"); } }

public GraphicsStateCollection graphicsStateCollection; public JobHandle inputJobHandle;

void Start() { JobHandle handle = graphicsStateCollection.WarmUp(inputJobHandle);

var job = new PostWarmUpJob(); job.Schedule(handle); } }

Дополнительные ресурсы: ,WarmUpProgressively,, ,isWarmedUp,, ,ShaderVariantCollection.WarmUp,.