Opengl: SSAO против отображения теней

Буквально каждый туториал, в котором написана статья по SSAO, заканчивается фразой «не давать точно реалистичных результатов». Мы можем получить гораздо более точные тени с помощью отображения теней без дополнительной памяти, необходимой для хранить текстуру [или равномерный массив], полную случайных векторов для выборки или дополнительного прохода размытия, чтобы уменьшить полосатость, так зачем все еще использовать SSAO?

Я также видел несколько руководств, сочетающих SSAO и отображение теней, которые мне кажутся излишними. Обе техники предназначены для создания теней, верно?


person Sync it    schedule 12.01.2021    source источник
comment
SSAO — это окружающее затенение, отображение теней связано с точечным освещением. Это разные вещи.   -  person Hihikomori    schedule 12.01.2021


Ответы (2)


Они решают разные задачи и дополняют друг друга.

SSAO устраняет окружающую окклюзию. Даже если ваша точка находится в тени, SSAO изменяет интенсивность таким образом, чтобы более закрытые области были более темными. Карты теней не такие точные.

Вот сравнительное изображение. Вся область находится в тени, но с SSAO вы можете лучше увидеть форму занавески (щелкните по ней, чтобы увеличить ее, чтобы она была более заметной):

введите здесь описание изображения Карты теней решают проблему видимости при свете source без учета отражения света (SSAO имитирует это с помощью буфера глубины).

Сцена, визуализированная только с использованием карт теней, выглядит более плоской, чем сцена с SSAO и картами теней.

person SurvivalMachine    schedule 12.01.2021
comment
Как SSAO учитывает отражение света? Он просто выбирает случайную сферу точек вокруг фрагмента. и поскольку это случайно, как мы можем сказать, что это надежно? - person Sync it; 12.01.2021
comment
@Syncit проверяет, сколько видимых случайных точек, и изменяет интенсивность на основе этого. Это случайно, это хак, но это быстро. - person SurvivalMachine; 12.01.2021
comment
Я понимаю. может быть использован для замены карты теней тогда?. Любой источник света, будь то точечный, направленный, точечный, может просто сэмплировать фактор окклюзии и использовать его для создания правильных теней. Или это зависит? - person Sync it; 12.01.2021
comment
@Syncit Он не может заменить отображение теней, потому что он измеряет только небольшое расстояние. Тени могут охватывать большое расстояние. - person SurvivalMachine; 12.01.2021
comment
SSAO работает даже без источников света. Это просто делает вещи более темными, если рядом с пикселем есть что-то. - person SurvivalMachine; 12.01.2021
comment
Итак, можем ли мы сказать, что SSAO делает карты теней более реалистичными? - person Sync it; 12.01.2021
comment
@Syncit без SSAO области теней обычно имеют одинаковую интенсивность везде. SSAO может затемнить некоторые области, поэтому интенсивность зависит от окружающей геометрии. - person SurvivalMachine; 12.01.2021
comment
Так что я принимаю это как да тогда. Мне нужно некоторое время, чтобы поэкспериментировать с обоими вместе, прежде чем я смогу отметить это как принятое. я вернусь тогда - person Sync it; 12.01.2021
comment
@Syncit Я добавил сравнительное изображение, которое показывает сцену, отрендеренную только с картами теней и тенями + SSAO. - person SurvivalMachine; 12.01.2021

Shadow Mapping и Screen-Space Ambient Occlusion решают разные части уравнения рендеринга, потому что они делают разные предположения.

Как следует из названия, Screen-Space Ambient Occlusion предполагает, что свет падает одинаково со всех возможных направлений над полушарием нашей выбранной точки по направлению к этой точке. точка. То есть, чтобы решить окружающее затенение, нам нужно проинтегрировать постоянную функцию (освещенность) по полусфере точки выборки, чтобы определить долю телесного угла полусферы, которая закрыта от окружающего источник света.

А также в слове Screen-Space Ambient Occlusion есть словосочетание Screen-Space. Это означает, что вычисление, которое мы делаем, чтобы вычислить долю полушария точки выборки, перекрытую однородным источником окружающего света, основано только на информации, которая уже доступна в экранном пространстве (а не в мировом пространстве, например, путем выполнения аналитическое литье лучей/трассировка геометрии сцены — что мы могли сделать, конечно, но тогда это больше не будет называться Screen-Space Ambient Occlusion).

Итак, Ambient Occlusion (окружающее затенение экранного пространства является способом приближения к этому на основе информации, которую мы визуализировали в экранном пространстве):

  1. предполагается, что свет падает одинаково со всех всех направлений на полушарие точки выборки
  2. аппроксимирует коэффициент окклюзии (доля телесного угла над полусферой точки выборки, на которую не падает свет от источника окружающего света)

С другой стороны: Shadow Mapping. Это метод, который делает совершенно другое предположение об освещенности, падающей на нашу точку выборки. Здесь мы не предполагаем, что свет исходит одинаково со всех направлений над полусферой нашей точки выборки, а предполагаем, что свет исходит из одного направления (или под небольшим телесным углом вокруг этого направления, когда мы аппроксимируем мягкие тени).

Чтобы решить это, мы можем сэмплировать сцену с направления света, а затем проверить, могла ли наша точка сэмпла получать свет с этого направления света.

person Kai Burjack    schedule 12.01.2021