Эта опция смутила меня, когда в Far Cry 3 у меня был выбор между SSAO, HBAO и HDAO.
Обращение к Google не дало мне никаких ответов, равно как и включение каждого варианта и сравнение результатов. Видимо, я слепой или что-то в этом роде.
Во-первых, какой из них имеет наилучшее качество? Во-вторых, в чем реальная разница между этими вариантами?
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 оттеняет эти же области, но выражено это гораздо меньше.
Во-первых, окклюзия пространства экрана не является физически обоснованным эффектом, поэтому здесь нет аргумента реализм. Теория эффекта в основном гласит, что
любая поверхность, которая не покрыта (по желанию в пределах определенного расстояния), освещается
Даже при использовании лучевой трассировки это просто быстрый и грязный способ выделения мелких деталей на моделях.
Во-вторых, все рассматриваемые техники являются лишь итерациями SSAO; все они работают как постпроцесс, после рендеринга сцены. Это означает, что шейдеры должны сделать что-то волшебное, чтобы создать что-то точное из той небольшой информации, которая остается после растеризации.
Это самая старая техника. Она предполагает, что любой пиксель в заданном радиусе экранного пространства является возможным окклюдером. Это приближенно вычисляется путем расчета разницы между размытым и оригинальным Z (глубиной) буфером и затемнения результата, если размытая версия имеет большее значение.
Недостаток этого подхода в том, что он как ложно затемняет, так и не обнаруживает некоторые особенности. Вам придется очень внимательно посмотреть на эту колонну, но вы заметите, что, хотя потолок ложно затемнен по бокам, он не затронут на стыке.
В этой статье есть еще несколько наглядных примеров.
Этот алгоритм пытается решить проблемы SSAO. Для этого он использует больше информации, а именно карту нормалей. Вместо поиска окклюдеров вокруг пикселя в пространстве экрана он пытается восстановить небольшие фрагменты сцены и сделать более обоснованное приближение яркости, которая должна быть там.
Вы можете заметить, что потолок гораздо четче направлен вниз, также столб темнее в верхней части.
Документ компании NVIDIA содержит более подробную информацию об этом.
HBAO - более современный алгоритм, он производит гораздо более близкие аппроксимации... аппроксимации.
Изображения являются фрагментами этих скриншотов.
ответ k1DBLITZ подразумевает, что:
Это может быть верно для Battlefield 3, но это не так в Far Cry 3.
Мой ответ основан на том, что я испытал в игре, а также на этой статье от HardOCP.
Различия есть в том, как они работают, как выглядят и как влияют на частоту кадров. Я не буду подробно описывать, как они работают.
SSAO создает тени по краям объектов, иногда неправильно (т.е. по краям объектов, не расположенных близко друг к другу).
HBAO создает меньше неправильных теней, чем SSAO, но иногда они слишком выражены (в некоторых местах даже темнее, чем SSAO), особенно вокруг травы, листьев и цветов.
Что касается влияния на частоту кадров, то она практически идентична SSAO на картах AMD и даже немного быстрее SSAO на картах Nvidia.
HDAO является более тонким, чем SSAO и HBAO. Он, вероятно, самый точный, потому что в нем гораздо меньше неправильного затемнения.
Выбор HDAO вместо SSAO или HBAO приводит к небольшому падению частоты кадров на картах AMD и значительному - на картах Nvidia.
Ответ на этот вопрос субъективен. HDAO, вероятно, является наиболее реалистично выглядящим вариантом в Far Cry 3. Тем не менее, некоторые люди могут предпочесть SSAO, поскольку в результате получается более контрастное изображение, что может быть более приятным для глаз.
HBAO также подразумевает использование техники плоскости изображения глаза для моделирования различий в размере радужки при взгляде из одних уровней света в другие.
HDAO этого не делает.