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

InputExtraction.ComputeOcclusionLightIndicesFromBakeInput

Declaration

public static int[] ComputeOcclusionLightIndicesFromBakeInput(LightTransport.InputExtraction.BakeInput bakeInput, Vector3[] probePositions, uint maxLightsPerProbe);

Параметры

Параметр Описание
bakeInput BakeInput, содержащий информацию об источнике света.
probePositions Массив позиций в мировом пространстве, в которых должно рассчитываться окклюзионное положение.
maxLightsPerProbe Максимальное количество источников света для выбора на зонд (обычно 4 для совместимости с shadowmask).

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

int[] Уплощенный массив световых индексов, где каждая последовательная группа maxLightsPerProbe индексов соответствует одному положению зонда.

Описание

Определяет наиболее влиятельные источники света для расчетов окклюзии в каждом положении зонда.

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

Возвращенные индексы используются с IProbeIntegrator.IntegrateOcclusion для вычисления данных маскировки тени для смешанного режима освещения.

Формат массива: Для N зондов и M светильников на зонд результат содержит индексы N × M, где индексы [I × M до (I + 1) × M — 1] относятся к зонду i.

Дополнительные ресурсы: IProbeIntegrator.IntegrateOcclusion, InputExtraction.GetShadowmaskChannelsFromLightIndices.

// Extract probe positions from light probe groups
var probePositions = new List<Vector3>();
var lightProbeGroups = FindObjectsOfType<LightProbeGroup>();
foreach (var group in lightProbeGroups)
{
    probePositions.AddRange(group.probePositions.Select(p =>
        group.transform.TransformPoint(p)));
}

// Compute light indices for shadowmask occlusion var lightIndices = InputExtraction.ComputeOcclusionLightIndicesFromBakeInput( bakeInput, probePositions.ToArray(), 4 // 4 lights per probe for RGBA shadowmask );

// Get corresponding shadowmask channels var shadowmaskChannels = InputExtraction.GetShadowmaskChannelsFromLightIndices(bakeInput, lightIndices);

// Use with integrator var result = integrator.IntegrateOcclusion(context, 0, probePositions.Count, 512, 4, lightIndexBuffer, occlusionBuffer);