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

InputExtraction.GetShadowmaskChannelsFromLightIndices

Declaration

public static int[] GetShadowmaskChannelsFromLightIndices(LightTransport.InputExtraction.BakeInput bakeInput, int[] lightIndices);

Параметры

Параметр Описание
bakeInput BakeInput, содержащий данные конфигурации света.
lightIndices Массив светлых индексов для запроса каналов shadowmask.

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

int[] Массив индексов каналов shadowmask (0-3 для RGBA, или -1 для отсутствия канала), соответствующих каждому индексу входного света.

Описание

Получает назначения каналов shadowmask для указанных смешанных светов.

Этот метод отображает световые индексы на назначенные им каналы shadowmask в системе смешанного освещения Unity. Смешанное освещение использует текстуры shadowmask для хранения предварительно рассчитанной информации о тени, обеспечивая освещение в реальном времени.

Отображение каналов:

  • 0: Красный канал.
  • 1: Зеленый канал.
  • 2: Синий канал.
  • 3: Альфа-канал.
  • -1: Свет не имеет назначенного канала shadowmask.

Каналы теневых масок автоматически назначаются системой освещения Unity на основе наложения света и приоритета. Используйте эту информацию для правильного толкования данных окклюзии из IProbeIntegrator.IntegrateOcclusion.

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

// Get light indices for occlusion computation
var lightIndices = InputExtraction.ComputeOcclusionLightIndicesFromBakeInput(bakeInput, probePositions, 4);

// Map indices to shadowmask channels var channels = InputExtraction.GetShadowmaskChannelsFromLightIndices(bakeInput, lightIndices);

// Process occlusion results with channel mapping for (int probeIndex = 0; probeIndex < probeCount; probeIndex++) { for (int lightIndex = 0; lightIndex < 4; lightIndex++) { int arrayIndex = probeIndex * 4 + lightIndex; int globalLightIndex = lightIndices[arrayIndex]; int shadowmaskChannel = channels[arrayIndex]; float occlusion = occlusionResults[arrayIndex];

if (shadowmaskChannel >= 0) { Debug.Log($"Probe {probeIndex}, Light {globalLightIndex}: " + $"Channel {shadowmaskChannel}, Occlusion {occlusion}"); } } }