라이트 프로브의 조명 정보는 스피리컬 하모닉스 기반 함수로 인코딩됩니다. Unity는 L2 스피리컬 하모닉스로 알려진 3차 다항식을 사용합니다. 이 다항식은 27개의 플로팅 포인트 값을 이용하여 저장됩니다. 그 중 9개는 각각 컬러 채널에 해당합니다. Unity는 Geomerics’ Enlighten을 사용하긴 하지만 그들의 블로그에 나오는 것과는 다른 SH 기반을 사용합니다(y축과 z축이 바뀝니다). Unity는 Peter-Pike Sloan의 논문에 나오는 표기 및 재구성 메서드를 사용하고 Stupid Spherical Harmonics (SH) Tricks, Geomerics는 Ramamoorthi/Hanrahan의 논문에 나오는 표기 및 재구성 방식을 사용합니다. An Efficient Representation for Irradiance Environment Maps.
재구성에 필요한 Unity 셰이더 코드는 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에 해당하는 9개의 계수는 다음과 같은 순서로 배열됩니다.
L00, L1-1, L10, L11, L2-2, L2-1, L20, L21, L22, // 레드 채널
L00, L1-1, L10, L11, L2-2, L2-1, L20, L21, L22, // 블루 채널
L00, L1-1, L10, L11, L2-2, L2-1, L20, L21, L22 // 그린 채널
Unity의 라이트 프로브 시스템에 관한 자세한 내용은 게임 개발자 컨퍼런스 2012(GDC 2012)에서 Robert Cupisz의 강연 내용을 참조할 수 있습니다. 사면체 테셀레이션을 이용한 라이트 프로브 보간법, GDC 2012