Ambient occlusion

Технология Ambient Occlusion (AO) была представлена В 2002 г. на SIGGRAPH и использовалась как быстрая альтернатива тяжелым методам GI в течение нескольких лет в таких студиях, как BlueSky и ILM. В настоящий момент, Ambient Occlusion активно применяется в играх и рендерах реального времени.

Думаю, что многие (как и я ранее), столкнувшись с термином «occlusion» забили на него и перешли сразу к настройкам :). Однако вот оно, определение. В компьютерной графике, термин occlusion означает метод, в котором объект (преграда), расположенный близко к точке обзора, перекрывает объект, удаленный от точки обзора. Одна из форм ограниченной выборки используется для исключения скрытых поверхностей из процессов затенения и растеризации.

В свою очередь, Ambient occlusion — это модель затенения, используемая в трёхмерной графике и позволяющая добавить реалистичности изображению за счёт вычисления интенсивности света, доходящего до точки поверхности.

Ambient occlusion — это попытка приблизиться к характеру распространения (и отражения) света в реальной жизни, особенно применительно к не отражающим поверхностям. В качестве примера можно привести луч света, попадающий в темную комнату через маленькую щель в шторах и не только освещающий ту область, на которую он непосредственно падает, но дополнительно немного освещающий всю комнату.

В отличие от локальных методов, таких как затенение по Фонгу, Ambient Occlusion — глобальный метод, для которого освещение (яркость) каждой конкретной точки является функцией от всей прочей геометрии сцены. Однако это довольно грубое приближение к полноценному глобальному освещению. Смягченное освещение картинки, полученное с помощью чистого AO, похоже на свет пасмурного дня.

Принцип работы Ambient Occlusion

Что такое Ambient Occlusion

Для каждой точки поверхности, видимой в камеру, строится полусфера относительно ее нормали. Через эту полусферу в сцену испускается в случайных направлениях некоторое количество лучей.

Все испущенные лучи либо столкнутся с поверхностями других объектов и будут считаться «затененными» (заблокированными, occluded), либо беспрепятственно выйдут за пределы сцены (или за пределы расстояния указываемого в настройках) и будут считаться «свободными», не заблокированными. В результате, степень затенения точки будет определяться как отношение числа заблокированных к общему числу испущенных лучей.

Например, если всего испущено 6 лучей, из которых только два пересеклись в пределах сцены с другими объектами (см.рисунок), то цвет точки будет иметь значение яркости 67%, поскольку 33% лучей заблокировано другой геометрией.

Несмотря на то, что алгоритм Ambient Occlusion не рассчитывает освещенность в точке пересечения с другой геометрией, не учитывает затухание света с расстоянием и вторичные переотражения света между объектами, АО шейдер является корректной альтернативой полноценному GI в случае открытых сцен (экстерьеров) и дает неправильные результаты для закрытых сцен (интерьеров).

Однако физическая корректность освещения в компьютерной графике не всегда является первостепенной задачей, чаще достаточно просто правдоподобности освещения. АО вполне способен обеспечить такую правдоподобность, показав убедительное и гладкое «псевдо-глобальное» освещение, причем время расчета будет гораздо меньше по сравнению с временем расчета методом FG + Photon Map.

Ambient Occlusion

При написании статьи использованы следующие источники:

Поделиться в: Опубликовать в twitter Опубликовать в своем блоге livejournal.com