SSAO vs. HBAO vs. HDAO - в чем реальная разница?

Эта опция смутила меня, когда в Far Cry 3 у меня был выбор между SSAO, HBAO и HDAO.

Обращение к Google не дало мне никаких ответов, равно как и включение каждого варианта и сравнение результатов. Видимо, я слепой или что-то в этом роде.

Во-первых, какой из них имеет наилучшее качество? Во-вторых, в чем реальная разница между этими вариантами?

Комментарии к вопросу (3)
Решение

H*AO предлагает более высокое качество, но с большим ущербом для производительности.

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

Если вы собираетесь использовать H*AO, насколько я понимаю, вам следует выбрать HDAO, если у вас карта ATI, или HBAO, если у вас карта nVIDIA.

HBAO и HDAO - это, по сути, одно и то же, но реализованное разными производителями.

Вот несколько скриншотов BF3, которые могут помочь: http://www.reddit.com/r/gaming/comments/kwjtw/my_battlefield_3_screenshot_comparison_ssao_vs/

Я рекомендую использовать ссылку, которую они предоставляют здесь: http://www.flickr.com/photos/bmorlok/6197863052/in/set-72157627662461565/lightbox/ и использовать клавиши курсора для быстрого переключения между 3 скриншотами.

Вы быстро сможете определить, где происходит затенение - между отсутствием, SSAO и HBAO.

Посмотрите на области, где объекты пересекаются. Например, где пол пересекается со стеной, где колонна пересекается с потолком, кусты, куски мусора на земле.

Я взял на себя смелость взять одну из фотографий и выделить области, на которые следует обратить внимание при перелистывании вперед-назад.

Вы'заметите, что SSAO оттеняет эти же области, но выражено это гораздо меньше.

Комментарии (3)

Во-первых, окклюзия пространства экрана не является физически обоснованным эффектом, поэтому здесь нет аргумента реализм. Теория эффекта в основном гласит, что

любая поверхность, которая не покрыта (по желанию в пределах определенного расстояния), освещается

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

Во-вторых, все рассматриваемые техники являются лишь итерациями SSAO; все они работают как постпроцесс, после рендеринга сцены. Это означает, что шейдеры должны сделать что-то волшебное, чтобы создать что-то точное из той небольшой информации, которая остается после растеризации.

SSAO

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

Недостаток этого подхода в том, что он как ложно затемняет, так и не обнаруживает некоторые особенности. Вам придется очень внимательно посмотреть на эту колонну, но вы заметите, что, хотя потолок ложно затемнен по бокам, он не затронут на стыке.

В этой статье есть еще несколько наглядных примеров.

HBAO

Этот алгоритм пытается решить проблемы SSAO. Для этого он использует больше информации, а именно карту нормалей. Вместо поиска окклюдеров вокруг пикселя в пространстве экрана он пытается восстановить небольшие фрагменты сцены и сделать более обоснованное приближение яркости, которая должна быть там.

Вы можете заметить, что потолок гораздо четче направлен вниз, также столб темнее в верхней части.

Документ компании NVIDIA содержит более подробную информацию об этом.

Заключение

HBAO - более современный алгоритм, он производит гораздо более близкие аппроксимации... аппроксимации.


Изображения являются фрагментами этих скриншотов.

Комментарии (3)

ответ k1DBLITZ подразумевает, что:

  • HBAO и HDAO выглядят одинаково
  • Они оказывают одинаковое влияние на частоту кадров.

Это может быть верно для Battlefield 3, но это не так в Far Cry 3.

Мой ответ основан на том, что я испытал в игре, а также на этой статье от HardOCP.

В чем разница между SSAO, HBAO и HDAO в Far Cry 3?

Различия есть в том, как они работают, как выглядят и как влияют на частоту кадров. Я не буду подробно описывать, как они работают.

SSAO

SSAO создает тени по краям объектов, иногда неправильно (т.е. по краям объектов, не расположенных близко друг к другу).

HBAO

HBAO создает меньше неправильных теней, чем SSAO, но иногда они слишком выражены (в некоторых местах даже темнее, чем SSAO), особенно вокруг травы, листьев и цветов.

Что касается влияния на частоту кадров, то она практически идентична SSAO на картах AMD и даже немного быстрее SSAO на картах Nvidia.

HDAO

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

Выбор HDAO вместо SSAO или HBAO приводит к небольшому падению частоты кадров на картах AMD и значительному - на картах Nvidia.

Какой из них выглядит лучше?

Ответ на этот вопрос субъективен. HDAO, вероятно, является наиболее реалистично выглядящим вариантом в Far Cry 3. Тем не менее, некоторые люди могут предпочесть SSAO, поскольку в результате получается более контрастное изображение, что может быть более приятным для глаз.

Комментарии (0)

HBAO также подразумевает использование техники плоскости изображения глаза для моделирования различий в размере радужки при взгляде из одних уровней света в другие.

HDAO этого не делает.

Комментарии (1)