[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Muromes  
Форум » Мультиплатформенный форум » Общий форум » FXAA — новый алгоритм сглаживания от NVIDIA
FXAA — новый алгоритм сглаживания от NVIDIA
GoblinДата: Среда, 01.02.2012, 16:27 | Сообщение # 1

Паладин форума
Группа: Проверенные
Город: Киржач
Сообщений: 119
Награды: 2
Репутация: 4
Статус: Offline
Здравствуйте.

Прошло время, когда видеоигры приносили ураган эмоций просто потому, что мы в них играем; игрок давно стал требовательным, и не в последнюю очередь — к качеству картинки на экране. Об одной из составляющих этого качества — сглаживании — я и хочу рассказать.

Подавляющее большинство игроков знают о «лесенках» на краях объектов и возможном решении этой проблемы — «anti-aliasing», или «сглаживание». Очень подробно этот вопрос описан в статье Дона Волигроски (Don Woligroski) Anti-Aliasing Analysis, Part 1: Settings And Surprises (русский перевод). Также неплохое сравнение с примерами игр текущего поколения игровых консолей есть у Digital Foundry — The Anti-Aliasing Effect (англ.). Вкратце, всё сводится к одному: сглаживание — это здорово, восприятие картинки сильно вырастает в цене, в современных реалиях игропрома продукты с малым сглаживанием или даже без оного находятся в категории освистанных (в первую очередь — фанатами платформ-конкурентов, но тем не менее), но вот реализация качественного сглаживания оставляет желать лучшего, главным образом — из-за недостаточной вычислительной мощности целевого оборудования. В данном случае в гораздо более выгодных условиях оказываются, конечно же, апологеты игры на ПК, т.к. на мощность их железа оказывает влияние только материальный фактор, зато консольщики не упускают случая позубоскалить над ПКшниками на предмет «PC HAZ NO GAEMZ!», мол, игр у вас нет, играете в графику. Я специально не буду затрагивать этот вопрос, потому что рационально-объективных доводов в пользу субъективного ощущения «тёплого лампового гейминга» быть не может в принципе, это вопрос личного выбора со всеми вытекающими. Уже существующие и использующиеся алгоритмы описаны по вышеуказанным ссылкам, поэтому перейду непосредственно к теме: что такое FXAA, с чем его едят и насколько это вкусно.

Начнём с теории. Если быть предельно точным, то FXAA — не такой уж новый алгоритм: впервые он был использован в MMORPG Age of Conan и уже отметился в шутере F.3.A.R., но я буду рассматривать его, как новый, благодаря интересному решению, которое попалось мне на глаза на часто посещаемом форуме (спасибо h0w1er). FXAA — Fast approXimate Anti-Aliasing, это более производительное решение по-сравнению с традиционным MSAA (Multi-Sampling Anti-Aliasing). Это однопроходный пиксельный шейдер, который обсчитывает результирующий кадр на этапе постобработки. Он создан быть более быстрым и менее требовательным к памяти по-сравнению с MSAA, «оплачивая» свои «плюсы» точностью работы и качеством, хотя на самом деле всё не так страшно, как это звучит. FXAA также имеет ряд преимуществ, включая улучшенное сглаживания спекуляров и субпикселей (речь о поверхностях размером меньше одного пикселя, «лесенки» заставляют такие объекты мерцать). В официальном документе (PDF) создатель FXAA Тимоти Лоттс (Timothy Lottes) заявляет, что для алгоритма FXAA с настройками среднего качества («золотая середина» между качеством и производительностью) постобработка кадра разрешением 1920x1200 на GTX 480 занимает меньше миллисекунды. Основные преимущества FXAA, со слов Тимоти, заключаются в алгоритме сглаживания субпикселей FXAA, работающем лучше оного в MLAA, достаточность для работы железа уровня DX9, постообработке кадра за один проход и, по-моему, самое интересное — независимость от используемого GPU Compute API. Но есть и одна неприятность — необходимость для разработчиков встраивать эту технологию сглаживания в свои игры, когда как традиционные методы сглаживания работают (или не работают) на уровне драйверов. Другими словами, пока программисты не используют в своих движках код FXAA для сглаживания, нужного эффекта мы не получим, влючить FXAA извне официально было нельзя. До недавних пор.

31 июля в ветке Alles rund um FXAA (Treibereinstellungen, Shader-replacements) форума 3DCenter Forum, появился «some dude», который произвёл инъекцию кода FXAA в библиотеку d3d.dll и дал возможность гибко настраивать результат через конфигурационные файлы, а также включать и выключать FXAA по кнопке Insert и делать скриншоты нажатием Delete [Pause], а [Print Screen] делает скриншот начиная с версии beta 9. Этот набор файлов копируется в директорию с исполняемым файлом DX9-приложения (игры, демки — не важно), а это приложение при запуске «подхватывает» библиотеку с нужной инъекцией. И пошло-поехало: так как Gast (автор инъекции) изначально озаботился сохранением результатов работы в лог, народ стал ему присылать баги, которые Gast, в свою очередь, начал править. Позже в его наборе появилась инъекция для DX10 (dxgi.dll), сейчас рассматривается вариант добавить FXAA в DX11, но у автора нет DX11 железа, поэтому вопрос немного подвис в воздухе, а с версии beta 10 — и DX11 (но не забывайте, что это всё-таки бета инъекции).

А теперь — танцы практика. Практиковаться будет на World of Tank, версия 0.6.6.



Вариант без сглаживания (No AA) показывает явные «эскалаторы», и хоть модели танков достаточно большие и детализированные, артефакты видно совершенно явно, особенно на тонких объектах, о которых дополнительно ниже.

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

Следующий вариант — FXAA, результат налицо: артефактов по краям нет, однако и мыльности по-сравнению с noAA тоже немного добавилось, хотя с EdgeAA разница почти незаметна.

Ну и вариант FXAA Sharpen. Gast в версии beta 6 добавил фильтр резкости, взятый из MPC-HC, и результат очень достойный: мыло исчезло, текстуры стали выглядеть даже резче, чем в оригинале, а «лесенок», несмотря на этот фильтр, практически не добавилось. Из-за незапланированной авторами резкости текстуры башни чуть-чуть «выбило» (синяя зона), но в игре, могу вас уверить, это абсолютно незаметно.

А что же с производительностью? Да практически ничего плохого. К сожалению, движок WoT живёт в своём мире и всплески/падения производительности могут выскакивать на самом ровном месте. У меня получилось следующее:


Картинка «In battle no AA» — то, о чём я говорил выше: тонкие деревца трещат от артефактов, тогда как на вариант «In battle FXAA Sharpen» картинки гораздо приятнее глазу, за исключением проблем фильтра резкости, который уж слишком тонкие линии сужает в толщину волоса, как, например, навесной прицел артиллерии. А количество кадров в секунду в варианте FXAA даже выше, несмотря на то, что эти два скриншота сделаны с разницей в 1 секунду и танк был неподвижен.

На самом деле при длительном тесте была получена цифра ~10-12% — на столько падает производительность при использовании FXAA, тогда как MSAA 4x, с качеством сглаживания которого и конкурирует FXAA, в довольно часто даёт падение вдвое больше. Если будет интересны сравнения — больше цифр и картинок можно найти в статье NVIDIA's New FXAA Antialiasing Technology сайта [H]ard|OCP, где я почерпнул часть информации, а в завершении своего небольшого обзора соглашусь с Марком Уорнером @ HardOCP: при должной реализации у FXAA большое будущее, особенно на консолях, где ресурсы жёстко ограничены, а имея возможность настроить конфигурацию инъекции по своему вкусу, многие уже сейчас без помощи разработчиков, смогут насладиться красивой картинкой в любимой игре.

UPD. На 10 августа уже появилась более настраиваемая инъекция, так сказать, «сборная солянка» от участников обсуждения. В сборку включены разные фильтры: насыщение цветом, виньетирование, размытие, сепия и другие. Всё это настраивается через единый файл настроек и самое полезное — настройки меняются «на лету»: Alt+Tab из приложения для редактирования настроек, Alt+Tab обратно — новые настройки работают, перезапуск не требуется. С этим вариантом инъекции я избавился от блеклости при включении фильтра резкости, в настройках полностью отключил USE_TECHNICOLOR, USE_TONEMAP и USE_VIGNETTE. Результат выглядит так:



Налицо более чёткая картинка без «лесенок» и мыла, даже текстуры выглядят веселее.




Рыба бесчешуйчатая, тростник мыслящий, голая обезьяна, тварь дрожащая, что звучит и гордо, и трагически, потому - венец творения!И это..Во Имя Луны!


Сообщение отредактировал Goblin - Среда, 01.02.2012, 16:29
 
ESTGoldДата: Четверг, 02.02.2012, 03:50 | Сообщение # 2

Генерал-лейтенант
Группа: Администраторы
Сообщений: 550
Награды: 6
Репутация: 4
Статус: Offline
Даешь воролд оф воркрафт с потными реалистичными рожами happy
 
Форум » Мультиплатформенный форум » Общий форум » FXAA — новый алгоритм сглаживания от NVIDIA
  • Страница 1 из 1
  • 1
Поиск:

ФОРМА ВХОДА
Вы очень поможете развитию консольного движения если зарегистрируйтесь! Регистрация занимает 2 минуты
Навигация
Обзоры участников
Новости
Новости
Наш опрос
Довольны ли вы доменным именем сайта - "vg-village.ru"?
Всего ответов: 45
Обмен ссылками