Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

IScriptableBakedReflectionSystem

интерфейс в UnityEditor.Experimental.Rendering

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

Описание

Определяет необходимые элементы для реализации ScriptableBakedReflectionSystem.

Вы можете использовать пустую реализацию в качестве базового класса, см. ScriptableBakedReflectionSystem.

using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering; using UnityEditor.Experimental.Rendering;

public interface IBakeJobs { // Add job counts + remove jobs count int count { get; } int toAddCount { get; } int toRemoveCount { get; } }

public interface IBaker { IBakeJobs PrepareBakeJobsFor(SceneStateHash sceneStateHash); void IssueJobs(IBakeJobs jobs); List bakedProbes { get; set; } void StopRunningJobs(); }

abstract class CustomScriptableBakedReflectionSystem : ScriptableBakedReflectionSystem { enum Stage { None, BakeReflectionProbes }

IBaker<ReflectionProbe> m_ReflectionProbeBaker;

public CustomScriptableBakedReflectionSystem( IBaker<ReflectionProbe> reflectionProbeBaker) // Our custom system processes in 1 stage: reflection probes : base(1) { m_ReflectionProbeBaker = reflectionProbeBaker; }

public override void Tick( SceneStateHash sceneStateHash, IScriptableBakedReflectionSystemStageNotifier handle) { // Reflection Probes { // Calculate reflection probes to remove and to bake and add var jobs = m_ReflectionProbeBaker.PrepareBakeJobsFor(sceneStateHash); if (jobs.count > 0) { // Update progression information of current stage // Progress is the progression of to bake and add jobs handle.EnterStage( (int)Stage.BakeReflectionProbes, string.Format("Reflection Probes | {0} jobs", jobs.toAddCount), 1 - (jobs.toAddCount / (float)m_ReflectionProbeBaker.bakedProbes.Count));

// Perform removal of remove jobs // Issue baking of add jobs if they are not in progress m_ReflectionProbeBaker.IssueJobs(jobs);

return; } handle.ExitStage((int)Stage.BakeReflectionProbes); }

// Update the hash of the reflection system stateHashes = CalculateStateHash(); // Baking is complete for this sceneStateHash handle.SetIsDone(true); }

public override void SynchronizeReflectionProbes() { // Synchronize Reflection Probes for (int i = 0, c = m_ReflectionProbeBaker.bakedProbes.Count; i < c; ++i) { var probe = m_ReflectionProbeBaker.bakedProbes[i]; probe.bakedTexture = GetReflectionProbeBakedTexture(probe); } }

public override void Clear() { m_ReflectionProbeBaker.bakedProbes.Clear(); DeleteBakedReflectionProbeTextures(); }

public override void Cancel() { m_ReflectionProbeBaker.StopRunningJobs(); }

Cubemap GetReflectionProbeBakedTexture(ReflectionProbe probe) { throw new System.NotImplementedException(); }

protected abstract void DeleteBakedReflectionProbeTextures(); protected abstract Hash128[] CalculateStateHash(); }

Свойства

stageCount Количество этапов процесса выпечки.
stateHashes Хэши текущего запеченного состояния ScriptableBakedReflectionSystem.

Публичные Методы

BakeAllReflectionProbes Реализуйте этот метод для запекания всех загруженных зондов отражения.
Cancel Отменить текущие задания на выпечку.
Clear Очистить состояние ScriptableBakedReflectionSystem.
SynchronizeReflectionProbes Синхронизируйте запеченные данные с фактическими компонентами и настройками рендеринга.
Tick Этот метод вызывается при каждом обновлении редактора до тех пор, пока ScriptableBakedReflectionSystem не укажет, что запекание завершено с помощью handle.SetIsDone(true). (См. IScriptableBakedReflectionSystemStageNotifier.SetIsDone).
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3