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

IProbeIntegrator.Prepare

Declaration

public void Prepare(LightTransport.IDeviceContext context, LightTransport.IWorld world, BufferSlice<Vector3> positions, float pushoff, int bounceCount);

Параметры

Параметр Описание
контекст Контекст устройства для вычислений и операций памяти.
мир Объект мира, содержащий геометрию сцены и другие входные данные.
должностей Буферный сегмент, содержащий позиции 3D встраиваемых световых зондов.
Пусхофф Расстояние до смещения лучей от позиций зонда во избежание артефактов самопересечения.
bounceCount Максимальное число отражений света для расчетов косвенного освещения.

Описание

Инициализация интегратора зонда с данными сцены и параметрами интеграции.

Этот метод необходимо вызвать до любых операций интегрирования. Он готовит внутренние структуры данных, при необходимости компилирует шейдеры и задаёт параметры интегрирования.

Этап подготовки может быть весьма продолжительным для крупных сцен, поскольку он может включать:

  • Создание ускоряющих структур.
  • Компиляция вычислительных шейдеров для целевого устройства.
  • Предварительная обработка геометрии сцены и материалов.
  • Создание легких структур данных.

Параметр pushoff помогает предотвратить самопересечение луча, когда зонды расположены очень близко к поверхности.

// Create probe positions buffer
var probePositions = new NativeArray<Vector3>(numProbes, Allocator.Persistent);
// ... populate positions ...

BufferID posBuffer = context.CreateBuffer((ulong)numProbes, 12); var posSlice = new BufferSlice<Vector3>(posBuffer, 0); context.WriteBuffer(posSlice, probePositions); context.Flush();

// Prepare integrator with 2 bounce indirect lighting integrator.Prepare( context, world, posSlice, 0.05f, // 5cm push-off to avoid self-intersection 2 // 2 bounce indirect lighting );

// Now ready for integration operations var result = integrator.IntegrateDirectRadiance(context, 0, numProbes, 1024, false, outputBuffer);