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);