Кто может сказать в чем отличаются режимах сглаживания FXAA или MSAA,CSAA. FXAA - что это? Метод сглаживания. Сглаживание в играх

Начнем с определения:

Сгла́живание (англ. anti-aliasing) - технология, используемая для устранения эффекта «зубчатости», возникающего на краях одновременно выводимого на экран множества отдельных друг от друга плоских или объёмных изображений.

Почему возникает «зубчатость»? Проблема в том, что мониторы современных ПК состоят из квадратных пикселей, а значит на них действительно прямыми будут только горизонтальные и вертикальные линии. Все линии, находящиеся под углом, будут строиться из пикселей, находящихся по диагонали друг к другу, что и вызывает «зубчатость». К примеру, справа на картинке - вроде бы ровная линия. Однако стоит ее увеличить, как сразу становится видно, что никакая она не прямая:


Чем это грозит в играх? Тем, что, во-первых, при движении будет возникать эффект «мельтешения» - такие неровные линии будут постоянно перестраиваться, что будет и отвлекать от игры, и делать картинку неестественной. Во-вторых - далекие объекты будут выглядеть нечетко.

Сразу же возникает вопрос - а как убрать эти неприятные эффекты? Самый простой способ - сделать пиксели меньше при том же размере экрана (иными словами - сделать разрешение больше и поднять плотность пикселей). Тогда «зубчатость» будет проявляться слабее, и картинка будет выглядеть естественнее. Но увы - способ хоть и простой, но дорогой, да и для видеокарты это достаточно сильная дополнительная нагрузка. И тогда, дабы улучшить картинку не меняя монитора, было придумано сглаживание.

Типы сглаживания

SSAA (Supersample anti-aliasing) - самое тяжелое сглаживание, потому что оно, по сути, описывает способ убирания лесенок, который я привел выше: при четырехкратном (4х) сглаживании видеокарта готовит картинку в разрешении вчетверо выше, чем выводит на экран, потом происходит усреднение цвета соседних пикселей и вывод на экран в исходном разрешении. Получается, что виртуальная плотность пикселей вдвое выше, чем у экрана, и лесенки практически перестают быть заметными. Очень сильно сказывается на производительности: к примеру, если разрешение в игре 1920х1080, то видеокарта вынуждена готовить картинку в 4К - 3840х2160. Однако результат получается великолепным - картинка выглядит как живая, никакого мельтешения нет:

MSAA (Multisample anti-aliasing) - улучшенная версия SSAA, которая потребляет гораздо меньше ресурсов. К примеру - зачем сглаживать то, что находится внутри текстуры, если лесенки есть только на краях? Если текстура представляет собой прямую линию под углом к игроку, то можно сгладить лишь один участок и продолжить эффект на весь край текстуры. В результате нагрузка на видеокарту становится ощутимо меньше, и по тяжести даже 8х MSAA оказывается ощутимо легче 4х SSAA при сравнимом качестве картинки.

CSAA и CFAA (Coverage Sampling anti-aliasing и Custom-filter anti-aliasing) - по сути несколько улучшенный MSAA от Nvidia и AMD (позволяют выбирать дополнительные отсчёты «перекрытия» пикселя, по которым можно уточнять итоговое значение цвета попадающего на край треугольника экранного пикселя). 8x CSAA/CFAA дает сравнимое с 8x MSAA качество картинки, однако потребляет примерно столько же ресурсов, столько и 4х MSAA. На сегодняшний момент оба сглаживания не используются - разработчики игр решили использовать унифицированные для всех видеокарт сглаживания.

FXAA (Fast approXimate anti-aliasing) - нетребовательное быстрое сглаживание. Алгоритм прост - совершается один проход по всем пикселям изображения и усредняются цвета соседних пикселей. Это слабо нагружает видеокарту, однако сильно мылит картинку (обратите внимание на четкость текстуры камня), делая далекие объекты вообще неузнаваемыми:

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

MLAA (MorphoLogical anti-aliasing) - аналог FXAA от Intel. Работает схожим образом, однако алгоритм сложнее - все изображение разбивается на Z, L и U -образные части, и сглаживание происходит смешением цветов пикселей, входящих в каждую такую часть:

Из особенностей - это единственное сглаживание, работающее полностью на процессоре, поэтому практически не влияет на fps в играх при мощном процессоре. Из-за более сложного алгоритма изображение получается более качественным, чем с FXAA, однако до 2x MSAA все еще далеко.

SMAA (Subpixel Morphological anti-aliasing) - смесь FXAA и MLAA. По сути несколько улучшенный MLAA, но работающий на видеокарте (так как процессор для сглаживания подходит гораздо хуже). Дает картинку, сравнимую с MLAA, лучше, чем FXAA (обратите внимание на бочки), однако потребляет больше ресурсов:

Такое сглаживание является хорошей заменой FXAA, и по уровню нагрузки на видеокарту находится между отсутствием сглаживания и 2x MSAA, так что есть надежда, что в будущем игр с ним будет все больше.

TXAA(Temporal antialiasing) - новая технология сглаживания от Nvidia. В отличии от других типов сглаживания, которые работают только с одним кадром (то есть с неподвижной картинкой), это умеет работать с движущимися объектами и хорошо убирает «мельтешение» картинки. По сути является смесью MSAA и SMAA, дает очень качественную картинку, однако немного ее мылит и очень требовательно к ресурсам.

Итог

В итоге - какое сглаживание выбрать? Если видеокарта совсем плохо тянет игру, то или оставаться без сглаживания и смотреть на лесенки, или же выбрать FXAA и любоваться на мыло. Если же система по-мощнее, но MSAA все еще не тянет - стоит выбрать MLAA или SMAA. Если видеокарта играючи справилась с 8х MSAA - стоит смотреть на SSAA или TXAA.

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

Суперсэмплинг (SSAA) - это самый простой и прямолинейный метод сглаживания. Он заключается в том, что изображение рассчитывается в виртуальном разрешении, в несколько раз превосходящем реальное разрешение монитора ПК, после чего масштабируется и фильтруется до итогового разрешения.

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

Перед выводом масштаб изображения уменьшается. Это делает края мягче, картинка кажется более естественной. Драйверы AMD Radeon предлагают эту функцию под названием «Virtual Super Resolution», у продуктов NVIDIA ее можно найти под названием «DSR-Factor» - в обоих случаях требуется весьма мощная графическая карта.

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

Также можно применить бесплатную утилиту Custom Resolution Utility, которая выполняет нужные для этого шаги просто по клику мышью.

Это работает следующим образом: в левой верхней части меню подключенный монитор должен быть отмечен как «активный». Если он не появляется автоматически, то выберите его в выпадающем меню. С помощью кнопки «Add» (добавить) теперь можно указать более высокое разрешение. Далее необходимо протестировать, какое максимально высокое разрешение возможно использовать.

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

Например, для мониторов с разрешением Full HD (1920×1080 точек) и разъемом DisplayPort предельное значение составляет 2560х1440 точек.

Проверить это достаточно просто: новое разрешение пригодно к использованию сразу же после перезагрузки. Если же вы установили слишком высокое разрешение, то экран остается черным. Для того, чтобы вернуть картинку на экран монитора, загрузите операционную систему Windows в безопасном режиме.

В безопасном режиме запуск ОС выполняется с использованием ограниченного набора драйверов. Также не производится запуск программ из автозагрузки.

Для запуска компьютера в безопасном режиме в момент старта системы нажимайте клавишу F8. Будьте внимательны: эту кнопку необходимо нажать в самом начале, то есть до того, как появится логотип Windows. Если вы пропустили нужный момент и эмблема Windows успела появиться - дождитесь окончания загрузки операционной системы, затем перезагрузите компьютер и попробуйте снова.

ФОТО: Nikolaus Schäffler; компании-производители

Nvidia представила новый графический драйвер 334.75 WHQL серии Game Ready. В нем оптимизирована поддержка World of Warcraft’s: Warlords of Draenor, Far Cry 4, Dragon Age Inquisition и The Crew. Кроме этого, в драйвере присутствует расхваленная представителями Nvidia функция MFAA (Multi-Frame Anti-Aliasing).

Что такое MFAA?

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

Каждая из этих технологий искала компромисс в производительности. AMD и Nvidia экспериментировали с разнообразными фильтрами и временными сглаживаниями. В результате у Nvidia появилось TXAA. MFAA отличается от TXAA тем, что последнее требует от разработчиков игры рендеринга на каждом отрезке, нужно использовать информацию из прошлого кадра, чтобы получить на выходе сглаженное изображение. Этот метод придумали, чтобы разработчики могли делать изображение «киношным» без ущерба производительности.

MFAA похоже на TXAA тем, что оно тоже использует временный сэмплинг в своем алгоритме, но не использует фильтры-шейдеры и не требует такой вовлеченности движка. Nvidia все еще работает над добавлением поддержки MFAA в большее количество игр (уже доступен для двадцати игр, вкючая Assassin’s Creed Unity, Battlefield 4, Civilization 5, Civilization: Beyond Earth, Crysis 3 и Titanfall).

Целью MFAA является достижение равноценного сглаживания при более высокой частоте кадров. В идеале 4 x MFAA по производительности должен соответствовать 2 x MSAA, но обеспечить качество как у 4 x MSAA или выше.

Одна из особенностей видеокарт серии Maxwell - их MFAA-система поддерживает гораздо больший набор семплинговых шаблонов, про сравнению с любым графическим процессором Nvidia предидущих поколений. Некоторые еще помнят, как для некоторых игр 5-6 лет назад можно было заставить определенные карты GeForce использовать суперсемплинг с упорядоченной сеткой (OGSSAA). Такой тип сглаживания наносил огромный ущерб производительности и размывал окончательное изображение, но позволял практически полностью убрать неровные линии. Как правило, графический процессор имеет заранее запрограммированный набор методов, хранящихся в ПЗУ, и пользователь ничего не мог в них поменять - если чип использовал OGSSAA с квадратным узором, то никто ничего не мог с этим поделать.

Карты класса Maxwell (GTX 980, GTX 970 и GTX 980M) хранят шаблоны в оперативной памяти и могут варьировать их в зависимости от активности на экране. В результате должно получиться более кчественное сглаживание.

Тестирование качества изображений с MSAA, TXAA, и MFAA

Тестировалась игра Assassin’s Creed Unity на системе Core i7-4970K с 16ГБ оперативной памяти DDR3-2133 и видеокартой Nvidia GeForce GTX 980.

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

По порядку идут 4 x MSAA, TXAA и 8 x MFAA.

Чтобы создать такое изображение с MFAA, использовался Shadowplay. Видите разницу между MSAA и MFAA? Можно заметить серые зоны в промежутках между железными решетками. Сглаживание MFAA не такое мягкое, как TXAA. Оно использует другой алгоритм шейдеров, но MFAA обрабатывает некоторые переходы искуснее.

На этих скриншотах (MFAA) присутствуют некоторые визуальные странности, которые не заметны в игре. Это искажение вызвано тем, что скриншоты делает FRAPS, а не движок игры.
4xMSAA, TXAA, 8x MFAA:

Разница сглаживания линии MFAA и MSAA:

MSAA слева, а MFAA справа. Эта картинка показывает одно из главных преимуществ системы MFAA: в отличие от MSAA, она лучшее смешивае оттенков. Неровные линии появляются из-за разницы в цвете и линиях. MFAA сгладит контраст, используя тени.

Между 8 x MFAA и 4 x MSAA ощущается значительная разница. Nvidia утверждает, что 4 x MFAA должена работать быстрее 4 x MSAA.

Влияние MSAA, MFAA и TXAA на частоту кадров

TXAA является наиболее приемлемым вариантом, но каково влияние каждой системы на частоту кадров?

Мультисемплинг в Assassin’s Creed Unity очень сильно бьет по графическому процессору. Сможет ли MFAA отыграть несколько очков в производительности?

Для GTX 980 ответ оказался утвердительным, однако не стоит слишком обнадеживаться. Такой метод сглаживания лучше подходит средним видеокартам, у которых есть проблемы с современными играми, но, к сожалению, он доступен только для GTX 980 и 970. Визуальная разница между 4x MFAA и 4x MSAA незначительная, и Nvidia утверждает, что выбор в пользу 4 x MFAA может улучшить производительность по сравнению с MSAA на 30%.

Достойное начало

На данный момент MFAA - второстепенная функция со скромной историей, коротким списком игр и ограниченным количеством совместимых карт. Но в перспективе всё может измениться. Разрешение 4К снизило потребность в сглаживании, но не исключило его полностью. Легковесный подход Nvidia может быть лучшим способом решения этой задачи, так как он позволяет избежать неудобства более сложных методов.

Будем надеяться, что эта функция просочится в средний и бюджетный сегменты линейки Maxwell в ближайшее время. Легковесное изображение в распространенных системах так же важно, как и топовая графика. Прошло только 5 лет с тех пор, как FXAA MLAA представлены для Intel. Это означает, что рынок систем сглаживания может открыться для новых подходов, особенно тех, которые будут просты в использовании для разработчиков.

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

Анизотропная фильтрация

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

Билинейная фильтрация является самым простым алгоритмом и требует меньше вычислительной мощности, однако и дает наихудший результат. Трилинейная добавляет четкости, но по-прежнему генерирует артефакты. Наиболее продвинутым способом, устраняющим заметные искажения на объектах, сильно наклоненных относительно камеры, считается анизо-тропная фильтрация. В отличие от двух предыдущих методов она успешно борется с эффектом ступенчатости (когда одни части текстуры размываются сильнее других, и граница между ними становится явно заметной). При использовании билинейной или трилинейной фильтрации с увеличением расстояния текстура становится все более размытой, анизотропная же этого недостатка лишена.

Учитывая объем обрабатываемых данных (а в сцене может быть множество 32-битовых текстур высокого разрешения), анизотропная фильтрация особенно требовательна к пропускной способности памяти. Уменьшить трафик можно в первую очередь за счет компрессии текстур, которая сейчас применяется повсеместно. Ранее, когда она практиковалась не так часто, а пропуская способность видеопамяти была гораздо ниже, анизотропная фильтрация ощутимо снижала количество кадров. На современных же видеокартах она почти не влияет на fps.

Анизотропная фильтрация имеет лишь одну настройку - коэффициент фильтрации (2x, 4x, 8x, 16x). Чем он выше, тем четче и естественнее выглядят текстуры. Обычно при высоком значении небольшие артефакты заметны лишь на самых удаленных пикселах наклоненных текстур. Значений 4x и 8x, как правило, вполне достаточно для избавления от львиной доли визуальных искажений. Интересно, что при переходе от 8x к 16x снижение производительности будет довольно слабым даже в теории, поскольку дополнительная обработка понадобится лишь для малого числа ранее не фильтрованных пикселов.

Шейдеры

Шейдеры - это небольшие программы, которые могут производить определенные манипуляции с 3D-сценой, например, изменять освещенность, накладывать текстуру, добавлять постобработку и другие эффекты.

Шейдеры делятся на три типа: вершинные (Vertex Shader) оперируют координатами, геометрические (Geometry Shader) могут обрабатывать не только отдельные вершины, но и целые геометрические фигуры, состоящие максимум из 6 вершин, пиксельные (Pixel Shader) работают с отдельными пикселами и их параметрами.

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

Шейдеры очень продуктивно работают в параллельном режиме, и именно поэтому в современных графических адаптерах так много потоковых процессоров, которые тоже называют шейдерами. Например, в GeForce GTX 580 их целых 512 штук.

Parallax mapping

Parallax mapping - это модифицированная версия известной техники bumpmapping, используемой для придания текстурам рельефности. Parallax mapping не создает 3D-объектов в обычном понимании этого слова. Например, пол или стена в игровой сцене будут выглядеть шероховатыми, оставаясь на самом деле абсолютно плоскими. Эффект рельефности здесь достигается лишь за счет манипуляций с текстурами.

Исходный объект не обязательно должен быть плоским. Метод работает на разных игровых предметах, однако его применение желательно лишь в тех случаях, когда высота поверхности изменяется плавно. Резкие перепады обрабатываются неверно, и на объекте появляются артефакты.

Parallax mapping существенно экономит вычислительные ресурсы компьютера, поскольку при использовании объектов-аналогов со столь же детальной 3D-структурой производительности видеоадаптеров не хватало бы для просчета сцен в режиме реального времени.

Эффект чаще всего применяется для каменных мостовых, стен, кирпичей и плитки.

Anti-Aliasing

До появления DirectX 8 сглаживание в играх осуществлялось методом SuperSampling Anti-Aliasing (SSAA), известным также как Full-Scene Anti-Aliasing (FSAA). Его применение приводило к значительному снижению быстродействия, поэтому с выходом DX8 от него тут же отказались и заменили на Multisample Аnti-Аliasing (MSAA). Несмотря на то что данный способ давал худшие результаты, он был гораздо производительнее своего предшественника. С тех пор появились и более продвинутые алгоритмы, например CSAA.

Учитывая, что за последние несколько лет быстродействие видеокарт заметно увеличилось, как AMD, так и NVIDIA вновь вернули в свои ускорители поддержку технологии SSAA. Тем не менее использовать ее даже сейчас в современных играх не получится, поскольку количество кадров/с будет очень низким. SSAA окажется эффективной лишь в проектах предыдущих лет, либо в нынешних, но со скромными настройками других графических параметров. AMD реализовала поддержку SSAA только для DX9-игр, а вот в NVIDIA SSAA функционирует также в режимах DX10 и DX11.

Принцип работы сглаживания очень прост. До вывода кадра на экран определенная информация рассчитывается не в родном разрешении, а увеличенном и кратном двум. Затем результат уменьшают до требуемых размеров, и тогда «лесенка» по краям объекта становится не такой заметной. Чем выше исходное изображение и коэффициент сглаживания (2x, 4x, 8x, 16x, 32x), тем меньше ступенек будет на моделях. MSAA в отличие от FSAA сглаживает лишь края объектов, что значительно экономит ресурсы видеокарты, однако такая техника может оставлять артефакты внутри полигонов.

Раньше Anti-Aliasing всегда существенно снижал fps в играх, однако теперь влияет на количество кадров незначительно, а иногда и вовсе никак не cказывается.

Тесселяция

С помощью тесселяции в компьютерной модели повышается количество полигонов в произвольное число раз. Для этого каждый полигон разбивается на несколько новых, которые располагаются приблизительно так же, как и исходная поверхность. Такой способ позволяет легко увеличивать детализацию простых 3D-объектов. При этом, однако, нагрузка на компьютер тоже возрастет, и в ряде случаев даже не исключены небольшие артефакты.

На первый взгляд, тесселяцию можно спутать с Parallax mapping. Хотя это совершенно разные эффекты, поскольку тесселяция реально изменяет геометрическую форму предмета, а не просто симулирует рельефность. Помимо этого, ее можно применять практически для любых объектов, в то время как использование Parallax mapping сильно ограничено.

Технология тесселяции известна в кинематографе еще с 80-х го-дов, однако в играх она стала поддерживаться лишь недавно, а точнее после того, как графические ускорители наконец достигли необходимого уровня производительности, при котором она может выполняться в режиме реального времени.

Чтобы игра могла использовать тесселяцию, ей требуется видеокарта с поддержкой DirectX 11.

Вертикальная синхронизация

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

Если частота обновления монитора составляет 60 Гц, и видео-карта успевает просчитывать 3D-сцену как минимум с таким же количеством кадров, то каждое обновление монитора будет отображать новый кадр. Другими словами, с интервалом 16,66 мс пользователь будет видеть полное обновление игровой сцены на экране.

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

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

Post-processing

Это общее название всех эффектов, которые накладываются на уже готовый кадр полностью просчитанной 3D-сцены (иными словами, на двухмерное изображение) для улучшения качества финальной картинки. Постпроцессинг использует пиксельные шейдеры, и к нему прибегают в тех случаях, когда для дополнительных эффектов требуется полная информация обо всей сцене. Изолированно к отдельным 3D-объектам такие приемы не могут быть применены без появления в кадре артефактов.

High dynamic range (HDR)

Эффект, часто используемый в игровых сценах с контрастным освещением. Если одна область экрана является очень яркой, а другая, наоборот, затемненной, многие детали в каждой из них теряются, и они выглядят монотонными. HDR добавляет больше градаций в кадр и позволяет детализировать сцену. Для его применения обычно приходится работать с более широким диапазоном оттенков, чем может обеспечить стандартная 24-битовая точность. Предварительные просчеты происходят в повышенной точности (64 или 96 бит), и лишь на финальной стадии изображение подгоняется под 24 бита.

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

Bloom

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

Bloom симулирует эффект, который можно наблюдать при съемке очень ярких сцен обычными камерами. На полученном изображении кажется, что интенсивный свет занимает больше объема, чем должен, и «залазит» на объекты, хотя и находится позади них. При использовании Bloom на границах предметов могут появляться дополнительные артефакты в виде цветных линий.

Film Grain

Зернистость - артефакт, возникающий в аналоговом ТВ при плохом сигнале, на старых магнитных видеокассетах или фотографиях (в частности, цифровых изображениях, сделанных при недостаточном освещении). Игроки часто отключают данный эффект, поскольку он в определенной мере портит картинку, а не улучшает ее. Чтобы понять это, можно запустить Mass Effect в каждом из режимов. В некоторых «ужастиках», например Silent Hill, шум на экране, наоборот, добавляет атмосферности.

Motion Blur

Motion Blur - эффект смазывания изображения при быстром перемещении камеры. Может быть удачно применен, когда сцене следует придать больше динамики и скорости, поэтому особенно востребован в гоночных играх. В шутерах же использование размытия не всегда воспринимается однозначно. Правильное применение Motion Blur способно добавить кинематографичности в происходящее на экране.

Эффект также поможет при необходимости завуалировать низкую частоту смены кадров и добавить плавности в игровой процесс.

SSAO

Ambient occlusion - техника, применяемая для придания сцене фотореалистичности за счет создания более правдоподобного освещения находящихся в ней объектов, при котором учитывается наличие поблизости других предметов со своими характеристиками поглощения и отражения света.

Screen Space Ambient Occlusion является модифицированной версией Ambient Occlusion и тоже имитирует непрямое освещение и затенение. Появление SSAO было обусловлено тем, что при современном уровне быстродействия GPU Ambient Occlusion не мог использоваться для просчета сцен в режиме реального времени. За повышенную производительность в SSAO приходится расплачиваться более низким качеством, однако даже его хватает для улучшения реалистичности картинки.

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

Cel shading

Игры с эффектом Cel shading начали делать с 2000 г., причем в первую очередь они появились на консолях. На ПК по-настоящему популярной данная техника стала лишь через пару лет, после выхода нашумевшего шутера XIII. С помощью Cel shading каждый кадр практически превращается в рисунок, сделанный от руки, или фрагмент из детского мультика.

В похожем стиле создают комиксы, поэтому прием часто используют именно в играх, имеющих к ним отношение. Из последних известных релизов можно назвать шутер Borderlands, где Cel shading заметен невооруженным глазом.

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

Depth of field

Глубина резкости - это расстояние между ближней и дальней границей пространства, в пределах которого все объекты будут в фокусе, в то время как остальная сцена окажется размытой.

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

Лицезреть эффект глубины резкости в гипертрофированной форме можно на некоторых фотографиях. Именно такую степень размытия часто и пытаются симулировать в 3D-сценах.

В играх с использованием Depth of field геймер обычно сильнее ощущает эффект присутствия. Например, заглядывая куда-то через траву или кусты, он видит в фокусе лишь небольшие фрагменты сцены, что создает иллюзию присутствия.

Влияние на производительность

Чтобы выяснить, как включение тех или иных опций сказывается на производительности, мы воспользовались игровым бенчмарком Heaven DX11 Benchmark 2.5. Все тесты проводились на системе Intel Core2 Duo e6300, GeForce GTX460 в разрешении 1280×800 точек (за исключением вертикальной синхронизации, где разрешение составляло 1680×1050).

Как уже упоминалось, анизо-тропная фильтрация практически не влияет на количество кадров. Разница между отключенной анизотропией и 16x составляет всего лишь 2 кадра, поэтому рекомендуем ее всегда ставить на максимум.

Сглаживание в Heaven Benchmark снизило fps существеннее, чем мы того ожидали, особенно в самом тяжелом режиме 8x. Тем не менее, поскольку для ощутимого улучшения картинки достаточно и 2x, советуем выбирать именно такой вариант, если на более высоких играть некомфортно.

Тесселяция в отличие от предыдущих параметров может принимать произвольное значение в каждой отдельной игре. В Heaven Benchmark картинка без нее существенно ухудшается, а на максимальном уровне, наоборот, становится немного нереалистичной. Поэтому следует устанавливать промежуточные значения - moderate или normal.

Для вертикальной синхронизации было выбрано более высокое разрешение, чтобы fps не ограничивался вертикальной частотой развертки экрана. Как и предполагалось, количество кадров на протяжении почти всего теста при включенной синхронизации держалось четко на отметке 20 или 30 кадров/с. Это связано с тем, что они выводятся одновременно с обновлением экрана, и при частоте развертки 60 Гц это удается сделать не с каждым импульсом, а лишь с каждым вторым (60/2 = 30 кадров/с) или третьим (60/3 = 20 кадров/с). При отключении V-Sync число кадров увеличилось, однако на экране появились характерные артефакты. Тройная буферизация не оказала никакого положительного эффекта на плавность сцены. Возможно, это связано с тем, что в настройках драйвера видеокарты нет опции принудительного отключения буферизации, а обычное деактивирование игнорируется бенчмарком, и он все равно использует эту функцию.

Если бы Heaven Benchmark был игрой, то на максимальных настройках (1280×800; AA - 8x; AF - 16x; Tessellation Extreme) в нее было бы некомфортно играть, поскольку 24 кадров для этого явно недостаточно. С минимальной потерей качества (1280×800; AA - 2x; AF - 16x, Tessellation Normal) можно добиться более приемлемого показателя в 45 кадров/с.

Уже прошло то время, когда игры впечатляли исключительно своим геймплеем: игрок давным-давно стал требовательным и, в частности, требовательным к качеству представленной на экране картинки. При этом мало кто знает, что для обеспечения высокой степени качества сегодня многими разработчиками игр используется сглаживание FXAA. Что это такое - сегодня известно далеко не всем геймерам, поэтому многие и задумываются, стоит ли вообще включать эту функцию.

Преимущественное большинство игроков прекрасно знает о том, что представляют собой так называемые лесенки по краям объектов, а также о том, как можно решить данную проблему, использовав «anti-aliansing» или просто «сглаживание».

Что такое сглаживание?

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

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

Что такое FXAA?

Сразу стоит отметить, что уже достаточно давно игроделами используется технология сглаживания FXAA. Что это такое, тогда еще не знали, но первое его использование встречается в ММО Age of Conan, а также в известном по всему миру шутере F.E.A.R. В этих играх, правда, использовалась только первоначальная версия данного сглаживания, которая на тот момент представляла собой не самое производительное решение.

В наше время в играх используется несколько иной формат FXAA. как Fast approximate Anti-Aliasing, что представляет собой более эффективное решение по сравнению с традиционной технологией MSAA. Это однопроходный пиксельный шейдер, при помощи которого обсчет результирующего кадра осуществляется еще на этапе постобработки. Данный шейдер создавался в качестве более быстрого решения, которое является менее требовательным к памяти в сравнении с вышеуказанными, однако за свои преимущества технология расплачивается точностью работы, а также качеством. Увидев это, многие могут посчитать, что технология неактуальна. На самом деле это не совсем так.

В чем преимущества этого метода?

Сглаживание FXAA отличается целым рядом преимуществ, включая улучшенное сглаживание так называемых субпикселей и спекуляров. В официальном документе разработчик данной технологии Тимоти Лоттс говорит о том, что его продукт с настройками среднего качества осуществляет постобработку кадров разрешением 1920х1200 на основе со скоростью менее одной миллисекунды.

Основные преимущества, которые имеет сглаживание FXAA, заключаются в том, какой именно здесь используется алгоритм сглаживания субпикселей, который работает более эффективно по сравнению с алгоритмом MLAA, что является вполне достаточным для работы оборудования, которое работает на уровне DirectX9. То есть в данном случае осуществляется постобработка в один проход, и самым интересным является полная независимость от того, какой используется GPU Compute API. Однако здесь есть и один минус - разработчики должны эту технологию в обязательном порядке встраивать в различные игры. В то же время традиционные технологии сглаживания работают или же, наоборот, не могут работать на уровне драйверов. Таким образом, пока программисты будут использовать в своих движках метод экспоненциального сглаживания и при этом не будут применять в своих движках код FXAA, невозможно будет добиться необходимого эффекта, так как включить код извне до недавнего времени было невозможно.

Как была решена проблема?

С течением времени было принято решение изначально ввести код FXAA в библиотеку d3d.dl, вследствие чего появилась возможность гибкой настройки результата через различные конфигурационные файлы, а также включение или же выключение FXAA при помощи кнопки . Данный набор файлов изначально копируется в директорию, где присутствует исполняемый файл приложения DX9, а это приложение при запуске будет подхватывать библиотеку, в которой присутствует нужный код. При этом, так как разработчик технологии внедрения данного кода в библиотеку изначально позаботился о том, чтобы результаты работы были помещены в лог, пользователи активно начали определять баги в работе этой технологии, которые достаточно быстро исправлялись. С течением времени появились также «инъекции» с кодом для форматов DirectX 10 и 11.

Как проверить?

Наиболее очевидно определить эффект от того, что используется метод экспоненциального сглаживания и FXAA, можно в игре World of Tanks.

Если сглаживание FXAA не используется, начинают проявляться явные «эскалаторы», и несмотря на то, что модели танков могут быть достаточно большими, а также будут отличаться приличной детализацией, артефакты проявляются очень заметно, и в особенности это касается различных тонких объектов. Технология встроенного сглаживания пытается некоторым образом смазывать края объектов, но делает это довольно посредственно, не говоря уже о том, что местами картинка может быть размытой.

В чем проявляются изменения?

После того как включается FXAA tool, результат становится налицо: артефакты полностью исчезают, однако появляется некоторая размытость картинки. Помимо этого, есть также уникальный вариант FXAA Sharpen. Разработчик технологии в одной из версий добавил фильтр резкости, который был взят из MPC-HC, при этом конечный результат оказался вполне приличным: размытости полностью исчезают, текстуры получают еще более резкий вид по сравнению с оригиналом, а «лесенки», несмотря на использование данного фильтра, практически полностью отсутствуют. Теперь вы знаете, что такое FXAA в играх типа World of Tanks. Из-за того что авторы изначально не планировали такую резкость текстуры, могло немного «выбивать» башни, но в игровом процессе это является практически незаметным.

Производительность здесь практически не уменьшается. Конечно, движок World of Tanks работает несколько удивительным образом, поэтому всплески или же, наоборот, падения производительности в конечном итоге могут проявляться буквально из ничего.

NoAA, SMAA или FXAA

Если сравнивать режимы «noAA» или SMAA и «FXAA Sharpen», то картинка значительно изменяется в лучшую сторону в последнем случае. Единственным исключением здесь является используемый фильтр резкости, который чрезмерно тонкие линии сужает еще больше, в частности, это особенно заметно в навесном прицеле артиллерии. При этом количество кадров в секунду в варианте FXAA значительно превышает предыдущий вариант.

В процессе проведения длительных тестов было определено, что при использовании FXAA производительность падает приблизительно на 10-12%, в то время как в случае, если используется метод сглаживания MSAA 4x, качество которого конкурирует на сегодняшний день с технологией FXAA, и вовсе проявляется падение производительности на 50% и более.

Update

В 2011 году появилась также настраиваемая версия инъекции, в которую были включены все вышеперечисленные варианты FXAA и их преимущества. В данной сборке присутствовало достаточно большое количество фильтров, среди которых стоит выделить:

  • Размытие.
  • Виньетирование.
  • Насыщение цветом.
  • Сепию.
  • И множество других.

Все это достаточно просто настраивается через один файл, и самое полезное в данном случае: настройки без труда можно изменить даже во время игры, достаточно просто свернуть приложение, открыть редактор настроек, развернуть приложение и наслаждаться новыми настройками без необходимости перезапуска интересующего вас приложения. Таким образом, получилось полностью исключить блеклость впоследствии активации фильтра резкости, обеспечивая более четкую картину, в которой отсутствуют «лесенки» размытия и достигнуто высокое качество текстур.