Сферические гармоники и причем тут лайтпробы
Рано или поздно, в CG, нас всех настигает тема сферических гармоник. Гармоники - это удобный способ емко сохранить информацию(в данном случае освещенность) со всех сторон сферы.
Предположим, что мы хотим получить информацию о свете в случайной точке в пространстве, для этого нам придется снимать из одной, единственной точки целый панорамный снимок, что очень дорого.
Гармоника же по своей сути это математическая функция, которая аппроксимирует информацию о свете в этих точках. Да, это не очень точно, но очень эффективно и достаточно убедительно, поэтому обычно используется именно для диффузного освещения.
При запекании, каждая точка лайтпробы упаковывает в себя данные сферических гармоник второго порядка, включающий в себя 9 полиномов на каждый канал цвета, которые в результате хранятся в виде 27 коэффициентов с плавающей запятой, что чрезвычайно компактно.
А теперь, самое крутое! При расчете запеченного освещения в пространстве, мы выбираем ближайшие лайтпробы, линейно интерполируем их коэффициенты для интересующей точки и используем их в единой фунции, для определения аппроксимированной освещенности со всех сторон.
При этом лайтпробы, это лишь частный случай использования гармоник, Activision, например, использует их для размытых "glossy" отражений, которым так же не нужна высокая детализация.
Подробнее о реализации этого эффекта можно почитать в прикладной статье тут: https://gpfault.net/posts/sph.html
rendering
real-rime
gamedev
light