Формат данных Light Probe
Информация об освещении в световых зондах кодируется как базовые функции сферических гармоник. Мы используем многочлены третьего порядка, также известные как сферические гармоники L2. Они хранятся с использованием 27 значений с плавающей запятой, 9 для каждого цветового канала.
Внедрение системы Enlighten Realtime Global Illumination в Unity использует другой подход к сферическим гармоникам, чем Geomerics, первоначальный разработчик функции, а именно метод нотации и реконструкции из статьи Peter-Pike Sloan, Глупые сферические гармоникиSH) Триксы. Первоначальный подход Geomerics был основан на методе нотации и реконструкции из статьи Ramamoorthi/Hanrahan, Эффективное представление для карт радиационной среды.
Код шейдера для реконструкции находится в UnityCG.cginc и использует метод, указанный в добавлении A10 Шейдер/CPU код для карт облучения окружающей среды, взятый из документа Петера-Пайкса.
Внутренний порядок данных выглядит следующим образом:
[L00: DC]
[L1-1: y] [L10: z] [L11: x]
[L2-2: xy] [L2-1: yz] [L20: zz] [L21: xz] [L22: xx - yy]
Девять коэффициентов для R, G и B расположены в следующем порядке:
L00, L1-1, L10, L11, L2-2, L2-1, L20, L21, L22, // red channel
L00, L1-1, L10, L11, L2-2, L2-1, L20, L21, L22, // blue channel
L00, L1-1, L10, L11, L2-2, L2-1, L20, L21, L22 // green channel
Дополнительные сведения о внутреннем устройстве системы Light Probe в Unity см. в докладе Роберта Купиша (Robert Cupisz) на GDC 2012: «Интерполяция Light Probe с помощью тетраэдрических разбиений», GDC 2012