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


Сглаживание - это... Что такое Сглаживание?

Пример сглаживания — изображение слева не сглажено, к изображению справа применено сглаживание 4x

Сгла́живание — технология, использующаяся в обработке изображений с целью сделать границы кривых линий визуально более гладкими, убирая «зубцы», возникающие при растеризации на краях объектов. Сглаживание было придумано в 1972 в Массачусетском технологическом институте в Architecture Machine Group, которая позже стала основной частью Media Lab.

Основной принцип сглаживания

Буква а с ClearType сглаживанием (слева) и без сглаживания (справа) на TFT-мониторе

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

Применяется два варианта сглаживания:

  • Общее сглаживание отрисовкой излишне крупного несглаженного изображения с последующим уменьшением разрешения.
  • Специализированные алгоритмы сглаживания, работающие на изображениях определённого типа (например, Алгоритм Ву для отрисовки отрезков).

Следует заметить, что сглаживание зависит от гаммы монитора. В частности, среднее между 0,2 и 0,8 — это не обязательно 0,5, а . Особенно это заметно на тонких узорах и тексте. Поэтому сглаживание наилучшего качества получается только тогда, когда известна.

Полноэкранное сглаживание

Избыточная выборка сглаживания (англ. Super Sampling anti-aliasing, SSAA) [1], также называемое полносценным или полноэкранным сглаживанием (FSAA)[2], используется, для исправления алиасинга (или «зубцов») на полноэкранных изображениях.[3] SSAA было доступно на ранних видеокартах, вплоть до DirectX 7. Начиная с DirectX 8 было убрано всеми производителями графических процессоров из-за его огромных вычислительных требований, и было заменено на множественную выборку сглаживания (англ. Multisample anti-aliasing, MSAA), которое также было заменено другими методам, такими как CSAA + TrAA/AAA. MSAA даёт несколько худшее качество графики, но и обеспечивает огромную экономию вычислительной мощности. Поскольку SSAA даёт более высокое качество изображения, поэтому оно было некоторое время тому назад возвращено у AMD и NVIDIA. В модельный ряд AMD HD6xxx он включён в качестве особенности (ограничено только для игр на DirectX 9), также он был выпущен драйверами NVIDIA Fermi, для всех игр, начиная с игр на DirectX 9, и заканчивая играми на DirectX 11 с использованием любых видеокарт NVIDIA с поддержкой DX10+. Из-за больших вычислительных требований, с ним можно запустить только старые игры, которые значительно меньше используют графический процессор.

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

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

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

См. также

Примечания

Ссылки

dic.academic.ru

Настройки графики в играх: на что они влияют?

©

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

 

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

http://itc.ua/files/pics/pp-01s.jpghttp://itc.ua/files/pics/pp-02s.jpg

трилинейная

анизотропная

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

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

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

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

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

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

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

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

http://itc.ua/files/pics/pp-03v.jpg

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

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

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

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

http://itc.ua/files/pics/pp-04s.jpghttp://itc.ua/files/pics/pp-05s.jpg

AA off AA on

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

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

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

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

http://itc.ua/files/pics/pp-07s.jpghttp://itc.ua/files/pics/pp-07s.jpg

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

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

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

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

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

http://itc.ua/files/pics/pp-08s.jpg

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

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

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

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

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

http://itc.ua/files/pics/pp-09s.jpghttp://itc.ua/files/pics/pp-10s.jpg

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

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

http://itc.ua/files/pics/pp-11.jpg

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

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

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

http://itc.ua/files/pics/pp-12.jpghttp://itc.ua/files/pics/pp-13.jpg

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

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

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

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

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

http://itc.ua/files/pics/pp-14.jpg

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

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

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

http://itc.ua/files/pics/pp-15.jpg

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

Лицезреть эффект глубины резкости в гипертрофированной форме можно на некоторых фотографиях. Именно такую степень размытия часто и пытаются симулировать в 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 кадров/с.

http://itc.ua/files/pics/pp-16.jpg

Источник

www.playground.ru

Анализ методов сглаживания на основе super-sampling

Введение

Эта статья рассматривает два метода реализации сглаживания (antialiasing) на основе избыточной выборки (super-sample): сглаживание с повернутой опорной решеткой (Rotated Grid Super-sampling, RGSS) и c упорядоченной решеткой (Ordered Grid Super-sampling, OGSS). В RGSS применяется сетка разбиений, повернутая относительно стандартных осей изображения, как правило, на значения порядка 20o или 30o. По всей видимости, RGSS имеет одно основное преимущество перед OGSS: более эффективное сглаживание границ, близких по направлению к горизонтальной или вертикальной оси, т.е. там, где человеческому глазу наиболее легко заметить дискретные артефакты изображения (aliasing). Это преимущество позволяет использовать меньшее количество выборок (sub-sample) на одну результирующую точку изображения для достижения такого же визуального эффекта, как и при OGSS.

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

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

Компьютеры всегда боролись за достижение лучшего качества графики с конечной целью — получить возможность создания точного отображения реальности. Естественно, достичь самой реальности невозможно, так как реальность бесконечно детальна. Люди имеют дело с компьютерными системами, которые имеют ограниченное и чётко обозначенное количество оперативной памяти, пропускной способности, вычислительной мощности. Из-за этого попросту невозможно иметь дело с неограниченной детализацией. Чем ближе вы смотрите на что-то, тем больше вы можете увидеть (или измерить каким-либо другим образом), вплоть до субатомного уровня.

Итак, компьютеры (по крайней мере, ближайшего будущего) вынуждены работать, используя сознательные упрощения. Например, они могут использовать дискретную выборку для аппроксимации объекта со сверхсложными и комплексными исходными данными. Избыточная выборка состоит из набора дискретных отсчетов, полученных по определенному правилу. Отсчет (sample) — это одно измерение, нахождение какой-то очень специфической особенности во времени и/или местоположении в пространстве. Чтобы понять это, возьмём, к примеру, звуковые волны.

Звук — не более, чем волна плотности: сжатие и растяжение воздуха. Это физическое событие бесконечно детально, и оно модифицируется в пространстве вместе со временем. CD — это цифровой носитель для звука; он содержит числа, эквивалентные "количеству" звука в определённые моменты времени. Перевод этих сжатий, колебаний в числа производится через микрофон и АЦП (analog to digital converter, AD). Микрофон может перевести бесконечно детальные колебания в бесконечно детальный электрический сигнал. А АЦП, в свою очередь, измеряет электрический сигнал в определённые моменты времени, сопоставляя с ним конкретное дискретное числовое значение. Каждое такое измерение и есть отсчет. В итоге, бесконечно детальное событие получило дискретное описание, которое уже может быть обработано процессором или может быть сохранено на цифровом носителе, таком, как CD.

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

Для лучшего понимания эффекта ступенчатости ниже приведены два скриншота. В части 'a' рисунка 1 — пример того, что может случиться с краями полученного изображения, например, гор. Мы видим, что поверхность располагается на сетке, каждая секция которой представляет собой пиксель. Так как обычно строим изображение мы пополигонно (а в конечном итоге — попиксельно), мы заполняем или не заполняем каждый пиксель. Получается дискретная система, в которой не может быть частично заполненных пикселей. Выбор решения — заполнять или нет — зависит от местоположения центра пиксельной зоны (на рисунке зоны показаны маленькими кружками).


Рисунок 1: иллюстрация лестничного эффекта, вызванного дискретностью отсчетов
  • (а): Бесконечно детальная кривая
  • (b): Ступенчатое дискретное изображение

На части B мы видим результат: группа пикселей, которая пытается заместить и замещает поверхность, которую мы хотели отрендерить. К сожалению, результатом этого процесса дискретизации может быть полный бардак, все портит изрядный лестничный эффект. Другим примером дискретных искажений в компьютерной графике может послужить исчезновение полигонов или пикселей (так называемый "polygon popping" или "pixel popping"). Эта проблема проявляет себя при работе с маленькими объектами, менее пикселя в ширину или высоту. Например, маленький полигон может быть помещён в такое место, в котором одиночный отсчет невозможен. В итоге полигон исчезает полностью или частично.

Рисунок 2 показывает различные эффекты исчезновения полигонов. Слева мы видим желаемый нами результат, а справа — рассчитанный результат, пострадавший от артефактов нежелательного исчезновения полигонов. Например, обратите внимание на зелёную полоску 'a'. Она закрывает центры пикселей (a) и поэтому видна. Но теперь представьте, что анимация пошла (вниз) и зелёная полоса оказалась в положении (b). В этом положении центры пикселей полосой не закрыты, поэтому, в итоге, фактически ничего и не рендерится. Заметьте, как легко зелёная полоса из видимой стала невидимой всего лишь после небольшого сдвига. Если сдвиг продолжить, то полоса снова закроет центры пикселей и станет полностью видимой. Начинается "мерцание" — прекрасный пример дискретного артефакта. К тому же, заметьте, как изменяются жёлтые фигуры от кадра (a) к (b). На разных кадрах они получились по-разному из-за недостатка отсчетов для точного представления модели. Красные продолговатые треугольники имеют совершенно одинаковые размеры, но они стали различаться в результате разного количества пикселей. Синий квадрат в кадре (a) показывает, как отличающийся от других полигон может перестать отличаться при его растеризации в изменённом месте и положении.

[1] Все эти артефакты, характеризующиеся различным растровым представлением одних и тех же обьектов только в результате изменения их положения и ориентации — симптомы дискретных искажений. Чтобы сократить эти артефакты, применяются специальные алгоритмы сглаживания, в том числе на основе избыточной выборки. По сути, сглаживанием мы и называем процесс удаления нежелательных дискретных артефактов. Проблема алгоритмов и технологий сглаживания всегда требовала и требует высокой пропускной способности и большой скорости заполнения. Это заставило сглаживание долго оставаться в области CAD и на рынке high-end компьютерных графических решений. Однако, сейчас продукты потребительского рынка подбираются к моменту, когда возможно более-менее качественное сглаживание в режиме реального времени (real-time). В следующей секции мы опишем несколько методов сглаживания.

Анимация


Рисунок 2: Иллюстрация исчезновения полигонов
  • (а) : хорошо детализированное изображение слева, грубая версия с отсутствующими полигонами и деталями справа
  • (b) : Анимационный кадр следующий за (a), видны различающиеся полигоны, создающие эффект мерцания (flickering).

Практическая реализация сглаживания

Несмотря на то, что несколько аппаратных и программных реализаций сглаживания уже были разработаны, они не добились успеха на основном потребительском рынке. Слишком высокое потребление ресурсов CPU, высокие нагрузки на память и шину, высокие затраты памяти — всё это сделало их использование на потребительском рынке непрактичным. Даже менее требовательное краевое (edge) сглаживание, которое только пытается исправить лестничный эффект на краю полигонов, но не улучшает ситуации с артефактами их исчезновения и мерцания, не стало популярным по причине его относительно низкого качества и отрицательного влияния на производительность. Сглаживание еще недавно оставалось эксклюзивной технологией CAD/CAM и реалистичной графики не-реального времени. С последними поколениями CPU и графических процессоров стало возможным использовать сглаживание и на потребительских системах, которые теперь имеют достаточную вычислительную мощность, пропускную способность, объем памяти для практической реализации сглаживания. Эта статья рассматривает основные типы сглаживания, основанного на избыточной выборке, и исследует две его специфические реализации.

Методы избыточной выборки

Как было объяснено раньше, дискретные артефакты — результат выборки, или, если точнее, недостаток низкого суммарного количества обработанных отсчетов. Избыточная выборка, как видно из названия, решает эту проблему, используя некоторое количество отсчетов на точку, что больше, чем в обычном случае, усредняя их для получения окончательного результата. В этом случае у нас есть возможность более точно смоделировать визуальное представление бесконечно детализированного естественного мира. Итак, первый важный элемент — избыточная выборка — использование дополнительных отсчетов для увеличения плотности данных в изображении. Таким образом, вместо одного центрального отсчета на пиксель, метод избыточной выборки использует несколько. Два типа сглаживания (далее AA, т.е. anti-aliasing) с использованием избыточной выборки определяются положением этих отсчетов внутри пикселя. Ordered Grid выборка — первый и основной тип избыточной выборки (далее SS, т.е. super-sampling). Само название "Ordered Grid" (упорядоченная решётка) наглядно показывает позицию отсчетов относительно данного пикселя. Выбираемые избыточные отсчеты располагаются в форме упорядоченной решётки, как показано на рис. 3а.


Рисунок 3: Иллюстрация различных типов решёток выборки
  • (a) Ordered Grid, используемая в методе OGSS.
  • (b) Rotated Grid, используемая в методе RGSS.

Второй тип SS AA известен как избыточная выборка с искаженной решеткой (Jittered Grid Super-Sampling, JGSS). JGSS аналогичен OGSS в том, что избыточные отсчеты хранятся попиксельно, но отличие между ними — в расположении отсчетов. В случае с OGSS решётка выборки параллельна и выровнена по горизонтальной и вертикальной осям. А в случае с JGSS решётка повернута относительно осей или искажена каким-либо другим образом. Пример решетки, используемой с JGSS, показана на рис. 3b. Существует несколько различных путей искажения решетки, мы сейчас рассмотрим два основных решения.

Первая реализация — полностью случайная выборка (известна как стохастическая выборка, Stochastic Sampling). По сути, это означает, что внутри результирующего пикселя отсчеты располагаются случайным образом. Ключевой момент в том, что решетка случайна для каждого пикселя на экране. Случайное расположение отсчетов вносит в результирующее изображение белый шум, но человеческий глаз менее восприимчив к случайному шуму, чем к регулярным узорам. Наличие небольшого случайного шума компенсируется исчезновением в результате выборки по многим отсчетам, делает восприятие узоров (в нашем случае — дискретных искажений) гораздо более затруднительным. Качество этого метода потрясающее, но его реализация требует очень больших затрат. Примерно 16 (или более) случайно расположенных отсчетов должны обеспечивать приемлемый уровень зашумления и практически устранить дискретные артефакты. Можно использовать и меньшее количество отсчетов, но это повышает и уровень шума, и заметность артефактов. Причем, аппаратно трудно добиться полностью случайного расположения отсчетов. Желательно избежание отсчетов, слишком близких друг к другу. Примером является использование распределения Пуассона (Poisson Distribution) [5], но подобные методы чрезвычайно сложны и на данный момент недоступны для массового потребительского уровня аппаратной поддержки. Вторая реализация выборки в JGSS — упрощенная форма первой. Вместо использования полностью случайных решеток используется заранее определённая решетка, которая аппроксимирует эффект полностью случайной выборки, повторяя его для каждого результирующего пикселя.

Итак, у нас снова есть решётка, но положения отсчетов более случайны и менее однообразны. Решетка, предложенная документацией на OpenGL, представляет собою трансформированную регулярную сетку (shear) [2]. Упорядоченная решетка смещена в сторону, смещение устраняет некоторую упорядоченность, закономерность, свойственную OGSS. Однако это смещение устраняет только вертикальную упорядоченность. Горизонтальная упорядоченность сохраняется. В итоге, вертикальная регулярность структуры OGSS разрушается, а горизонтальная остаётся. Также существует и часто используется метод сглаживания с повернутой опорной решеткой (Rotated Grid Super-Sampling, далее RGSS). В RGSS расположение отсчетов идентично расположению, применяемому в OGSS, но вся решетка повернута на некоторый угол (рисунок 3b). Заметьте, что таким образом мы избавились как от горизонтальной, так и от вертикальной упорядоченности, и уже нет ярко выраженных рядов и колонок. Подкованные теоретическими знаниями и определениями OGSS и RGSS, мы можем теперь сосредоточиться на их практической реализации в современном оборудовании. Мы рассмотрим одно и то же аппаратное решение для каждого метода SS, но будем иметь ввиду, что описано значительное количество других реализаций SS AA.

Осуществление OGSS

OGSS — это метод, который может быть внедрён почти на всех современных 3D-акселераторах, поддерживающих рендеринг во "внекадровом" (не отображаемом) буфере. Внекадровый буфер имеет место для хранения цветов пикселей, а также значения Z-буфера и буфера шаблонов (Stencil). Однако, он отличается от обычного переднего (front) или заднего (back) буфера тем, что его содержимое никогда не выводится на экран напрямую. Как было ранее объяснено, метод OGSS использует упорядоченную решетку отсчетов для каждого пикселя. Ниже мы более детально поясняем, как можно реализовать OGSS AA на современном 3D "железе".

1. Движок создаёт 3D-окружение, используя 3D API типа Direct3D или OpenGL. Оба API используют треугольники как основную строительную единицу для создания 3D-объектов. Каждый треугольник имеет свои координаты в 3D-пространстве. Эти координаты передаются, трансформируются и освещаются через API, используя спец-драйвер 3D-карты. В нашем простом примере допустим, что наше изображение имеет разрешение 10x10 пикселей и что у нас есть треугольник с вершинами в координатах (5,5), (10,10) и (10,0), создающими его в правой части изображения.

2. Координаты, доставленные API, соответствуют специфическому разрешению изображения. Когда вершины трансформируются и освещаются, они обеспечиваются видовыми координатами (а не мировыми координатами, используемыми в 3D-приложениях). Таким образом, эти координаты привязаны к финальному разрешению изображения. Для достижения нашей цели (AA) нам нужно увеличить эти координаты хотя бы в два раза в обоих направлениях — и в горизонтальном, и в вертикальном — для создания необходимого для эффективного AA количества отсчетов (так называемый Up-sampling). Это простое умножение всех координат в два раза с соответствующим увеличением разрешения. Итак, разрешение, в котором изображение будет рассчитываться, увеличивается до 20x20 (10, умноженное на 2). Координаты наших вершин также будут увеличены до (10,10), (20,20) и (20,0). Заметьте, что, несмотря на все эти изменения, относительное местоположение в пространстве вершин и треугольников сохранилось.

3. Результатом предыдущих действий является то, что вся геометрия увеличивается вдвое в двух направлениях, вертикальном и горизонтальном. Проще говоря, теперь всё стало вдвое больше. И, таким образом, выводится в четыре раза больше пикселей, по сравнению с обычным изображением. Наше исходное изображение имеет размер 10x10, а полученное — 20x20 пикселей.

4. Мы рендерим всю геометрию так же, как и обычно, но во внекадровый (невидимый) буфер. Увеличенная геометрия используется для получения AA-изображения размером 10x10 пикселей. Заметьте, что наш пример использует только один треугольник, а реальные приложения, разумеется, используют гораздо больше.

5. Когда сцена кадра построена, мы получили изображение нашего 3D-мира высокого разрешения. Теперь нужно это изображение превратить в сглаженное АА-изображение более низкого разрешения. Т.е., нам нужно перейти от SS 20x20 (двойное разрешение) изображению к AA 10x10 изображению. Этот преобразование (down-sampling) производится усреднением цветов соседних пикселей.

По существу, мы берём цветовые значения четырёх соседних пикселей (квадрат), добавляем их друг к другу и потом делим на четыре. Это означает, что мы получаем однородную смесь цветов пикселей высокого разрешения внекадрового буфера по сравнению с результирующим (демонстрируемым) изображением. На самом деле, эти четыре пикселя на внекадровом изображении высокого разрешения являются будущими отсчетами для пикселей результирующей AA-картинки. Усредненные, эти отсчеты формируют конечный сглаженный пиксель для результирующего изображения. С помощью расчета изображения в высоком разрешении, последующей его фильтрацией с уменьшением разрешения (filtering down) и с использованием усредняющего фильтра значительно уменьшаются дискретные эффекты. Для простого примера предположим, что наше изображение имеет тёмные полосы (0%) на светлом фоне (100%), расположенные вертикально, создающие эффект "полосатости" и имеющие высоту, равную одному разбиению решетки. Выборка будет содержать два тёмных и два светлых отсчета. Усредненный результат — наполовину тёмный и наполовину светлый пиксель.

6. Конечным результатом этого процесса снова будет изображение 10x10, но изображение, сглаженное OGSS методом. Мы обсудим другой важный аспект этого процесса чуть позже, в этой же статье. Схематическое представление метода OGSS можно увидеть на рис. 4 (справа). Практическая реализация реализует OGSS за счёт увеличения внекадровой сцены в два раза, по вертикали и горизонтали. Ничто не мешает использовать другие множители, например, 4 или более. Так, термины 2X OGSS и 4X OGSS часто используются для описания размера сторон регулярной решетки, используемой в OGSS. Иногда размерность заменяется термином "tap" (одна точка, отсчет), приводя, таким образом, к появлению таких терминов, как 4-tap или 16-tap OGSS. Итак, используя 16-tap OGSS, мы имеет решетку 4x4. Следует заметить также, что термины Full-Scene AA и Full-Screen AA (т.е. полноэкранное сглаживание) часто используются неуместно.

Обычно эти термины используются для обозначения OGSS, но, на самом деле, они просто обозначают то, что всё изображение (целиком) подвергается сглаживанию, будь то OGSS, или RGSS, или что-либо иное. Тем не менее, это важно, что мы упоминаем о том, какой именно тип сглаживания реализован в "железе", потому что его качество невысоко, как выяснится совсем скоро. В итоге, следует заметить, что этот метод реализации OGSS, используя существующие 3D-буферы, страдает от потенциальной несовместимости с приложениями, использующими доступ к буферу кадра. Доступ к буферу кадра производят приложения, которые для какой-либо цели заполняют буфер значениями напрямую (значения цвета и/или Z/Stencil). Проблема в том, что внутренний рендеринг происходит в повышенном разрешении, а приложение вообще об этом не знает, и, в итоге, обращение к буферу кадра происходит некорректно. Это можно увидеть на простом примере. Допустим, игра захотела использовать буфер кадра для наложения кабины на изображение. Накладываемое изображение имеет разрешение конечного изображения, а не разрешение внутреннего внекадрового буфера. В результате, накладываемое изображение с размерами экранного буфера записывается во внекадровый буфер, что, естественно, приводит к некорректному результату. Накладываемый слой заполнит лишь 1/4 нужного размера в финальном. С приложениями, использующими прямой доступ к буферу кадра, нужно работать с особой осторожностью. Проблема может быть решена на уровне драйвера, т.к. не существует аппаратного решения этой проблемы. Излишне говорить, что это приводит к серьёзному падению производительности, но без решения этой проблемы некоторые приложения покажут некорректный конечный результат.

[ Далее: Реализация RGSS ]

Опубликовано с разрешения 3dfx Interactive, Inc.


www.ixbt.com

Как повысить FPS в играх - гайд по настройкам графики, как поднять низкий ФПС

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

Разрешение экрана

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

Изображение, которое вы видите на экране, состоит из пикселей. Разрешение — это количество пикселей в строке, где первое число — их количество по горизонтали, второе — по вертикали. В Full HD эти числа — 1920 и 1080 соответственно. Чем выше разрешение, тем из большего количества пикселей состоит изображение, а значит, тем оно четче и детализированнее.

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

Очень большое.Увеличение разрешения существенно снижает производительность. Именно поэтому, например, даже топовая RTX 2080 TI неспособна выдать 60 кадров в 4K в некоторых играх, хотя в том же Full HD счетчик с запасом переваливает за 100. Снижение разрешения — один из главных способов поднять FPS. Правда, и картинка станет ощутимо хуже.

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

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

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

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

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

Впрочем, есть у Vsync и недостатки. Главная — очень заметный «инпут-лаг», задержка между вашими командами (например, движениями мыши) и их отображением в игре.

Поэтому играть со включенной вертикальной синхронизацией в мультипеере противопоказано. Кроме того, если ваш компьютер «тянет» игру при частоте ниже, чем заветные 60 FPS, Vsync может автоматически «лочиться» уже на 30 FPS, что приведет к неслабым таким лагам.

Лучший способ бороться с разрывами изображения на сегодняшний день — купить монитор с поддержкой G-Sync или FreeSync и соответствующую видеокарту Nvidia или AMD. Ни разрывов, ни инпут-лага.

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

В общем и целом — никакого.

Сглаживание(Anti-aliasing)

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

Здесь и далее — слева изображение с отключенной графической опцией (или установленной на низком значении), справа — с включенной (или установленной на максимальном значении).

Технологий сглаживания несколько, вот основные:

  • Суперсэмплинг (SSAA) — самое эффективное сглаживание, но вместе с тем — жутко требовательное к ресурсам. Работает оно просто: ваша видеокарта рендерит картинку в гораздо более высоком разрешении, чем задано в настройках, а потом «ужимает» его обратно. Чем выше это значение, тем лучше сглаживание и тем выше нагрузка на компьютер. Грубо говоря, при значении SSAA 4X ваш ПК будет вынужден за одно и то же время обсчитать одну и ту же сцену четыре раза, а не один.
  • MSAA — мультисемплинг. По эффективности схож с SSAA, но работает совершенно по-другому (объяснить его простыми словами довольно сложно, но это, пожалуй, и не нужно), а потому менее требователен к ресурсам. Если компьютер позволяет, именно это сглаживание стоит пробовать включать в первую очередь. Картинка лишь едва-едва потеряет в четкости, зато лесенки почти исчезнут.
  • FXAA (Быстрое сглаживание) — более простой способ сглаживания. На всю картинку попросту накидывается размытие. Вообще не влияет на производительность, но добавляет в изображение очень много «мыла». В большинстве случаев уж лучше терпеть «лесенки», но тут кому как.
  • TXAA («Временное сглаживание») / MLAA («Морфологическое сглаживание») — то же самое, что MSAA, но еще эффективнее. Первый тип поддерживается видеокартами Nvidia, второй — AMD. Если в игре есть один из этих вариантов, лучше всего использовать именно его. Почти идеальный баланс между эффективностью и производительностью.
Влияние на производительность

От ничтожного (FXAA) до колоссального (SSAA). В среднем — умеренное.

Качество текстур

Один из самых важных параметров в настройках игры. Поверхности всех предметов во всех современных трехмерных играх покрыты текстурами, а потому чем выше их качество и разрешение — тем четче, реалистичнее картинка. Даже самая красивая игра с ультра-низкими текстурами превратится в фестиваль мыловарения.

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

Если в видеокарте достаточно видеопамяти, то практически никакого. Если же ее не хватает, вы получите ощутимые фризы и тормоза. 4 гигабайт VRAM хватает для подавляющего числа современных игр, но лучше бы в вашей следующей видеокарте памяти было 8 или хотя бы 6 гигабайт.

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

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

Чем выше степень фильтрации, чем четче будут поверхности в отдалении.

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

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

Ничтожное.

Тесселяция

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

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

Зависит от игры, от того, как именно движок применяет ее к объектам. Чаще всего — среднее.

Качество теней

Все просто: чем выше этот параметр, тем четче и подробнее тени, отбрасываемые объектами. Добавить тут нечего. Иногда в играх также встречается параметр «Дальность прорисовки теней» (а иногда он «вшит» в общие настройки). Тут все тоже понятно: выше дальность — больше теней вдалеке.

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

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

Глобальное затенение (Ambient Occlusion)

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

Существует два основных вида глобального затенения:

  • SSAO (Screen space ambient occlusion). Впервые появилось в Crysis — потому тот и выглядел для своего времени совершенно фантастически. Затеняются пиксели, заблокированные от источников света.

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

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

Очень высокое.

Глубина резкости (Depth of Field)

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

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

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

Целиком и полностью зависит от игры. От ничтожного до довольно сильного (как, например, в Destiny 2).

Bloom (Свечение)

Этот параметр отвечает за интенсивность источников света в игре. Например, с включенным Bloom, свет, пробивающийся из окна в помещение, будет выглядеть куда ярче. А солнце создавать натуральные «засветы». Правда, некоторые игры выглядят куда реалистичнее без свечения — тут нужно проверять самому.

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

Чаще всего — низкое.

Motion Blur (Размытие в движении)

Motion Blur помогает передать динамику при перемещениях объекта. Работает он просто: когда вы быстро двигаете камерой, изображение начинает «плыть». При этом главный объект (например, руки персонажа с оружием) остается четким.

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

Ничтожное.

_Скриншоты: _Gamespot

kanobu.ru

Сглаживание — Википедия. Что такое Сглаживание

Пример сглаживания — изображение слева не сглажено, к изображению справа применено сглаживание 4x

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

Основной принцип сглаживания

Буква а с ClearType-сглаживанием (слева) и без сглаживания (справа) на TFT-мониторе

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

Применяется два варианта сглаживания:

  • Общее сглаживание отрисовкой излишне крупного несглаженного изображения с последующим уменьшением разрешения.
  • Специализированные алгоритмы сглаживания, работающие на изображениях определённого типа (например, Алгоритм Ву для отрисовки отрезков).

Следует заметить, что сглаживание зависит от гаммы монитора. В частности, среднее между 0,2 и 0,8 — это не обязательно 0,5, а (0,2γ+0,8γ2)1/γ{\displaystyle \left({\frac {0{,}2^{\gamma }+0{,}8^{\gamma }}{2}}\right)^{1/\gamma }}. Особенно это заметно на тонких узорах и тексте. Поэтому сглаживание наилучшего качества получается только тогда, когда γ{\displaystyle \gamma } известна.

Полноэкранное сглаживание

SSAA

Избыточная выборка сглаживания (англ. Supersample anti-aliasing, SSAA)[1], также называемое полносценным или полноэкранным сглаживанием (FSAA)[2], используется для исправления алиасинга (или «зубцов») на полноэкранных изображениях[3]. SSAA было доступно на ранних видеокартах, вплоть до DirectX 7. Начиная с DirectX 8 из-за огромной вычислительной сложности было заменено всеми производителями графических процессоров на множественную выборку сглаживания (англ. Multisample anti-aliasing; MSAA), который также был заменён другими методами, такими как CSAA + TrAA/AAA. MSAA даёт несколько худшее качество графики, но и обеспечивает огромную экономию вычислительной мощности. Поскольку SSAA даёт более высокое качество изображения, он не был полностью исключён и до сих пор реализуется аппаратно в продуктах AMD и NVIDIA. В модельный ряд AMD HD6xxx он включён в качестве особенности (только для игр на DirectX 9), также он был включён в драйвера NVIDIA Fermi, для всех игр, начиная с игр на DirectX 9, и заканчивая играми на DirectX 11 с использованием любых видеокарт NVIDIA с поддержкой DirectX 10 и выше.

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

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

Качество сглаживания ограничено пропускной способностью видеопамяти, поэтому GPU с быстрой памятью сможет просчитать полноэкранное сглаживание с меньшим ущербом для производительности, чем GPU более низкого класса. Сглаживание можно включать в различных режимах. Например, сглаживание 4x даст более качественное изображение, чем сглаживание 2x, но значительно снизит производительность. Сглаживание 2xSSAA удваивает разрешение, тогда как 4xSSAA его учетверяет[4].

FXAA

FXAA (Fast approXimate Anti-Aliasing) — метод сглаживания от Nvidia[5], представляющий собой однопроходный пиксельный шейдер, который обсчитывает результирующий кадр на этапе постобработки. Является более производительным решением, по сравнению с традиционным MSAA (Multi-Sampling Anti-Aliasing), что, однако, сказывается на точности работы и качестве изображения.

MFAA

MFAA (Multiframe Sampled Anti-Aliasing) — метод сглаживания от Nvidia. Целью MFAA является достижение равноценного сглаживания при более высокой частоте кадров. В идеале MFAA 4х по производительности должен соответствовать MSAA 2х, но обеспечить качество, как у MSAA 4x, или выше.[6]

См. также

Примечания

Литература

Ссылки

wiki.bio

Современные технологии сглаживания изображений / Видеокарты


Автор: Евгений Пугач

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

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

Любой человек, хоть раз запускавший 3D-приложение, знаком с таким явлением, как "лестничный эффект" - ступенчатость наклонных линий. В английском компьютерном жаргоне это явление называют "jaggies", а сухим языком науки - aliasing. Для того, чтобы устранить этот эффект и улучшить качество картинки, используется методика, получившая незамысловатое общее название antialiasing. На литературный русский язык это слово переводится как "сглаживание". Итак, прежде чем перейти к самому рассмотрению проблемы и методов ее решения, введем несколько понятий.

  • Aliasing=jaggies="лестничный эффект" - эффект ступенчатости изображения на границе двух трехмерных объектов. В дальнейшем будем использовать "родной" термин aliasing.
  • Antialiasing - совокупное название методов сглаживания изображения, устраняющих "лестничный эффект".
  • Пиксель - точка изображения на экране.
  • Тексель - точка трехмерного объекта с наложенной на нее текстурой.
  • Текстура - изображение фиксированного формата, используемое для придания пикселю цвета и рисунка. Накладывается ядром видеокарты на "голый" трехмерный объект перед выводом на экран.
  • Сэмпл - конкретно выбранный участок картинки, содержащий 1, 4, 16 и т.д. пикселей, используемый для обработки объекта и сглаживания.

Любое псевдотрехмерное изображение проще всего изобразить с помощью треугольников (полигонов). Это простая геометрическая фигура, что делает ее идеалом для экономии ресурсов графического процессора. Совместив большое количество полигонов, мы получаем трехмерный объект. Чем больше полигонов, тем меньше отрезки границ между ними, соответственно, меньше неровностей. Казалось бы, как можно сделать округлый предмет из треугольников? Представьте себе куб. Конечно, если его с большой силой не толкать, катиться он не будет. Теперь увеличьте количество углов вдвое. Теперь у нас нечто наподобие угловатого шара. Тоже вряд ли сам куда-то укатится, но и три дюжих мужика для того, чтоб откатить его куда-то, не понадобятся. Увеличив количество углов еще в пару раз, мы получим хоть и не шарообразный объект, но что-то очень близкое к нему.

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

Для наших же нужд такие методы не годятся. Поэтому разработчики трехмерных приложений (движков игр, тестовых приложений и т.п.) стремятся к тому, чтобы при наименьшем количестве полигонов и текстур получить наилучшее изображение. Явление aliasing объясняется довольно просто. Видеоядро может без искажений вывести на экран горизонтальные и вертикальные линии. А вот с наклонными дело обстоит намного хуже. Фактически, видеоадаптер создает лестницу, которая внешне напоминает наклонную прямую, но таковой не является. Чем выше разрешение, в котором просчитывается и выводится картинка, тем больше точек-пикселей приходится на один и тот же отрезок прямой, и в какой-то момент человеческий глаз перестает замечать "ступеньки". Однако для этого разрешение должно быть действительно большим, что не так уж удобно для повседневной работы, да и не каждая видеокарта сможет его обеспечить. Вот для борьбы с этим явлением и создан antialiasing.

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

Суперсэмплинг - это способ "грубой силы". Чтобы продемонстрировать, как он работает, возьмем какой-нибудь растровый графический редактор, например, Adobe Photoshop. Создадим в нем картинку в разрешении 800х600, состоящую из одной-единственной наклонной линии, расположенной под углом 45°. Зальем одну половину синим цветом. Сохраним и посмотрим результат. Как видим, ступеньки налицо. Теперь ту же линию создадим при разрешении 1024х768. Результат - ступенек больше, но они меньше, субъективно эта линия "более прямая", чем предыдущая. Повторяя этот эксперимент с все более высоким разрешением, мы В итоге, получим картинку, на которой невооруженным глазом (читай, без приближения) невозможно заметить неровности.


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

Копнем чуть глубже. Если в разрешении 640х480 на экране находятся 307200 пикселей, то в 1280х960 - уже 1228800. Т.е. вместо одного пикселя адаптер каждый раз просчитывает 4, а значение цвета усредняет. При этом сглаживаются не только "ступеньки", улучшается и цвет всех текстур, переходы становятся более плавными.

Впрочем, идеалов в мире не бывает. За суперсэмплинг мы платим чудовищным падением производительности: минимум в 4 раза. Значит, нужно использовать более интеллектуальную методику, а не поигрывать "мышцами" видеопроцессора, которых не так уж и много. Этой методикой стал мультисэмплинг. Впервые эту технологию предложила небезызвестная компания 3DFx в 2000 году. Смысл мультисэмплинга состоит в том, что не нужно обрабатывать все до единого пиксели на экране, ведь подавляющее большинство из них находится внутри полигона, а не на границе между двумя. Конечно, отказ от сглаживания всей картинки ухудшает качество вывода текстур, но с этой проблемой призвана бороться билинейная, трилинейная и анизотропная фильтрация. Как говорится, каждый должен заниматься своей работой.

Технически мультисэмплинг происходит так. Видеопроцессор находит пиксели, расположенные на границе полигонов. Эти пиксели мы будем называть сэмплами. В зависимости от уровня мультисэмплинга процессор делит пиксель на 2, 4, 8 и т.д. субпикселей, и усредняет цвета каждого из них. В итоге, мы получаем не такое сильное падение производительности, как при грубом суперсэмплинге, по двум причинам:
  • во-первых, процессор сэмплирует только те участки картинки, где есть грани между полигонами;
  • во-вторых, он использует не новую текстуру для каждого субпикселя, а одну и ту же.

Особенность реализации мультисэмплинга у каждого из производителей видеокарт состоит в том, как именно процессор разбивает пиксели на субпиксели. Пойдем по порядку.

Поскольку основными игроками на рынке видеоадаптеров являются NVidia и ATi, их методики мы и опишем.

Начнем с NVidia. Компания использует прямую решетку для выбора субпикселей. Это значит, что пиксель делится на субпиксели по линиям, расположенным вертикально и горизонтально.



Пиксели на картинке, расположенные рядами и столбцами в сетке



Один пиксель



Четыре пикселя, между которыми под углом 45 градусов проходит граница полигонов. Как видим, получаются ступеньки

Мультисэмлинг 2х

При мультисэмплинге 2х каждый пиксель делится на 2, при этом центром субпикселя становится вертикальный центр поделенной на 2 области (см. иллюстрацию)



Два субпикселя, образованные из одного пикселя при мультисэмплинге 2x


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


Мультисэмплинг 4х

При мультисэмплинге 4х пиксель делится на 4 равные части.



Четыре субпикселя, образованных из одного пикселя при мультисэмплинге 4х


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


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


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


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


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

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

С появлением на рынке видеоадаптеров GeForce 3, а следом и GeForce 4, компания NVidia представила специфическую методику сглаживания. Она вошла в состав комплекса улучшения качества изображения Accuview. В этот комплекс входит и методика фильтрации текстур, но нас сейчас интересуют режимы сглаживания 4xs и Quincunx. Для GeForce 4 она доступна из настроек драйверов, а в GeForce 3 скрыта, но ее можно активировать, например, с помощью RivaTuner. Также подчеркнем, что под GeForce 4 тут понимаются модели GF Ti 4200/4400/4600, а не MX440, поскольку последняя - это доработанный GeForce 2 MX, а не принципиально новое ядро.

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



Один пиксель, мультисэмплинг 2х и режим Quincunx

Технология Accuview предусматривает смещение субпикселов на равное расстояние.


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

Режим 4XS отличается еще большей изощренностью при просчете картинки. Для этого пиксель делится сначала на 2 части по средней горизонтальной оси , и вычисляется цвет этих половин. Параллельно по вертикали он делится еще на 2 части, которые также сравниваются. В результате, мы получаем все тот же мультисэмплинг по 4 точкам, но один и тот же сэмпл используется не 4 раза, а 2. В итоге, мы получаем более качественное сглаживание и, что приятно - никакого падения производительности. Для простоты можно считать, что 4XS - это "2x, а потом еще раз 2x". Сегодня также доступен режим 8XS, фактически - двойной 4x. Вот какую иллюстрацию дает NVidia для демонстрации 4XS:


Компания ATi пошла другим путем. Вместо того, чтобы бороться с некачественным сглаживанием путем наращивания количества сэмплов, она решила исказить решетку, по которой размещаются субпиксели. Исходно это решение использовала как раз 3dfx, назвав его Rotated Grid Super Sampling (RGSA).

Усиленно описывать его не станем. Достаточно сказать, что принципы, по которым проводится сравнение цветов сэмплов, одинаковы. Однако сэмплы берутся из других мест, благодаря повернутой решетке:



Выбор сэмплов при режиме 2х и 4х

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

Компания ATi применяет сглаживание в режиме 2х таким же способом, как и предложила 3dfx. А вот в режимах 4х и выше, канадцы пошли намного дальше, предложив псевдослучайный отбор местоположения сэмпла. Технология получила название SmoothVision.

Ядро для каждого пикселя может выбрать любую комбинацию из заложенных 8 положений субпикселей:


В результате, в режиме 4х мы можем получить такие комбинации:


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

Режим 6х, доступный видеокартам ATi, аналогичен режиму 4х, однако оцениваются 6 сэмплов, расположенных, как и раньше, псевдослучайно, например:


На сегодняшний день видеокарты, представленные на рынке, имеют режимы:

  • NVidia: 2x, 4x, 4XS, 6x, 8x, 8XS
  • ATi: 2x, 4x, 6x

С представлением технологий параллельной обработки видеоданных NVidia SLI и ATi Crossfire мы увидели новые режимы сглаживания. Впрочем, при более пристальном рассмотрении оказывается, что ничего нового в них нет. В режимах, предусматривающих разделение экрана пополам и обработку каждой половины отдельной видеокартой, ядро все так же традиционным образом применяет сглаживание для своей половины картинки. При этом ядра используют разные расположения субпикселей. А вот потом, при выводе на экран, у нас получается, что у нас есть две половины картинки, пиксели на каждой из которых сглажены по n сэмплов (2, 4, 6, 8XS). Маркетологи компаний, недолго думая, взяли, да и назвали эти режимы по принципу 2n Antialiasing. Например, в Crossfire мы можем понаблюдать 4x, 8x и 12x AA.


Но с пришествием в мир технологий SLI и Crossfire к нам вернулся и старый знакомый - суперсэмплинг. Теперь у обоих производителей доступны режимы, в которых традиционный сегодня мультисэмплинг комбинирован с простым суперсэмплингом 2х, который позволяет улучшить качество текстур и сгладить изображения не только на гранях полигонов, но и внутри них (например, текстуру с надписью наподобие тех же вывесок в любых играх). Эти режимы объединены в понятие SLI AA и Crossfire Super AA.

Для простоты понимания приведем сводную таблицу режимов сглаживания в картах ATi с поддержкой Crossfire:


Вывод. Перспективы развития

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

На данный момент никаких радикальных изменений в технологиях сглаживания не происходит, и вряд ли произойдет. Поскольку главное улучшение - переход к искаженной решетке - уже сделано, производителям остается лишь увеличивать количество сэмплов. Именно поэтому уже сейчас у нас есть режимы 6x и 8x.

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

Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.

3dnews.ru

Алгоритмы антиалиасинга в реальном времени / Habr


Алиасинг (aliasing) — это, возможно, наиболее фундаментальный и самый широко обсуждаемый артефакт 3D-рендеринга всех времён. Однако в игровом сообществе его часто недопонимают. В этой статье я подробно расскажу о теме сглаживания (антиалиасинга, anti-aliasing, AA) в реальном времени, особенно о том, что касается игр, и в то же время буду излагать всё достаточно простым языком.

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

Эту программу можно скачать здесь.

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


«Если ты знаешь себя и знаешь врага, то не подвергнешься опасности и в сотне битв»

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

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

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

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

При идеальном сглаживании для каждого пикселя определяется, какая часть его площади закрыта треугольником. Если пиксель закрыт на 50%, то он должен быть заполнен цветом на 50% между белым и чёрным (средним серым). Если он закрыт меньше, то должен быть пропорционально темнее, если больше — то пропорционально светлее. Полностью закрытый пиксель является белым, полностью незакрытый — чёрным. Результат этого процесса показан на четвёртом рисунке. Однако выполнение этого вычисления в реальном времени в общем случае является невыполнимой задачей.

Рисунок 1. Простейший алиасинг.


1-1. Сетка 8x8 с помеченными центрами
1-2. Сетка 8x8 с треугольником
1-3. Сетка 8x8 с растеризированным треугольником
1-4. Сетка 8x8 с идеально сглаженными выходными даннымиТо же самое в виде GIF

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

Поэтому чтобы в полной мере обсудить относительные сильные и слабые стороны техник сглаживания, мы сгруппировали артефакты алиасинга, возникающие при 3D-рендеринге, в пять отдельных категорий. Это группирование зависит от точных условий генерирования артефактов. На Рисунке 2 показаны эти типы алиасинга на реальном примере, отрендеренном с помощью OpenGL.


Рисунок 2: Различные типы алиасинга. Слева направо, сверху вниз:
• Единственный выровненный относительно экрана прямоугольник с частично прозрачной текстурой.
• «Мельница», состоящая из выровненных относительно экрана переменных белых и чёрных треугольников.
• Несколько чёрных линий различной ширины, начиная с 1 пикселя сверху до 0,4 пикселя снизу, и белая линия толщиной 0,5, отображающая синусоиду.
• Куб, состоящий из шести плоских закрашенных прямоугольников
• Наклонная плоскость, текстурированная высокочастотной текстурой травы.
• Выровненный относительно экрана прямоугольник с пиксельным шейдером, определяющим цвет каждого пикселя на основе функции синуса.

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

Алиасинг прозрачности возникает в текстурированных примитивах с частичной прозрачностью. Верхнее левое изображение на Рисунке 2 отрендерено с использованием одного прямоугольника, заполненного частично прозрачной текстурой сетчатого забора. Поскольку сама текстура — это просто фиксированная сетка пикселей, её нужно сэмплировать в точках, на которые накладывается каждый пиксель отрендеренного изображения, и для каждой такой точки должно приниматься решение, нужна ли в нём прозрачность. В результате возникает та же проблема сэмплирования, которую мы уже встречали на сплошной геометрии.

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

Рисунок 3. Иллюстрация подпиксельного алиасинга.


3-1. Сетка 8x8 с отмеченными центрами
3-2. Сетка 8x8 с двумя отрезками прямых
3-3. Сетка 8x8 с растеризированными отрезками, без AA
3-4. Сетка 8x8 с идеально сглаженным треугольникомТо же самое в виде GIF
На Рисунке 3 показан подпиксельный алиасинг в простой сцене, состоящей из двух отрезков прямых. Верхний имеет ширину в один пиксель, и хотя при растеризации он демонстрирует знакомый артефакт-«лесенку» геометрического алиасинга, результат всё равно в целом соответствует по форме входным данным. Нижний отрезок имеет ширину полпикселя. При растеризации часть пересекаемых им столбцов пикселей не имеет одного центра пикселя в пределах отрезка. В результате он разделяется на несколько несвязанных фрагментов. То же самое можно заметить на прямых линиях и кривой синусоиды на Рисунке 2.

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

Рисунок 4: Анимированная высокочастотная текстура с артефактами мерцания
Текстурный алиасинг обычно можно предотвратить использованием mip-текстурирования и фильтрацией высококачественных текстур, но он всё равно иногда остаётся проблемой, особенно с некоторыми версиями драйверов популярных видеопроцессоров, субдискретизирующих высокоанизотропные текстуры. На него также влияют различные методы антиалиасинга, поэтому он тоже включён в демонстрационную программу.

И, наконец, шейдерный алиасинг возникает, когда программа пиксельного шейдера, выполняемая для каждого пикселя и определяющая его цвет, генерирует результат с алиасингом. Такое часто случается в играх с шейдерами, создающими контрастное освещение, например, зеркальные засветы на основании карты нормалей, или с техниками контрастного освещения типа cel shading или задней подсветкой. В демонстрационной программе это аппроксимируется одним шейдером, вычисляющим функцию синуса для координат текстуры и закрашивающего все отрицательные результаты чёрным, а все положительные — белым.


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

Давайте снова рассмотрим наш первый пример с треугольником в сетке 8×8 пикселей. Проблема со стандартным рендерингом заключается в том, что мы сэмплируем только центр каждого пикселя, что приводит к генерированию уродливой «лесенки» на рёбрах, которые не являются полностью горизонтальными или вертикальными. С другой стороны, вычисление покрытия каждого пикселя невозможно в реальном времени.

Интуитивным решением будет простое увеличение количества сэмплов, взятых на пиксель. Эта концепция показана на Рисунке 5.


Рисунок 5: треугольник, растеризированный с четырьмя упорядоченными сэмплами на пиксель

Центры пикселей снова помечены красными точками. Однако в каждом пикселе сэмплируется на самом деле четыре отдельных места (они помечены бирюзовыми точками). Если треугольник не закрывает ни один из этих сэмплов, то пиксель считается чёрным, а если закрывает их всех, то белым. Здесь интересна ситуация, когда закрыта только часть пикселей: если закрыт один из четырёх, то пиксель будет на 25% белым и на 75% чёрным. В случае двух из четырёх соотношение 50/50, а при трёх закрытых сэмплах результатом будет более светлый оттенок в 75% белого.

Эта простая идея является фундаментом всех методов антиалиасинга на основе сэмплирования. В этом контексте также стоит заметить, что когда количество сэмплов на пиксель стремится к бесконечности, то результат этого процесса будет стремиться к «идеальному» сглаженному примеру, показанному ранее. Очевидно, что качество результата сильно зависит от количества использованных сэмплов — но и производительность тоже. Обычно в играх используется 2 или 4 сэмплов на пиксель, а 8 и более обычно применяются только в мощных PC.

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

Расположение сэмплов


Расположение сэмплов внутри пикселя сильно влияет на конечный результат, особенно в случае небольшого количества сэмплов (2 или 4), которое чаще всего используется в графике реального времени. В предыдущем примере сэмплы располагаются так, как будто они являются центрами отрендеренного изображения в четыре раза больше исходного (16×16 пикселей). Это интуитивно понятно и легко достигается простым рендерингом изображения бОльших размеров. Этот метод известен как антиалиасинг на упорядоченной сетке (ordered grid anti-aliasing, OGAA), также его иногда называют субдискретизацией (downsampling). В частности, его реализуют принудительным увеличением разрешения рендеринга по сравнению с разрешением монитора.

Однако упорядоченная сетка часто неоптимальна, особенно для почти вертикальных и почти горизонтальных линий, в которых как раз наиболее очевидны артефакты алиасинга. На Рисунке 6 показано, почему так происходит, и как повёрнутая или разреженная сетка сэмплирования обеспечивает гораздо лучшие результаты:


6-1. Сцена с почти вертикальной линией
6-2. Идеально сглаженная растеризация
6-3. Растеризация с четырьмя упорядоченными сэмплами
6-4. Сглаживание с четырьмя разреженными сэмплами

В этом почти вертикальном случае идеальный результат с четырьмя сэмплами должен иметь пять различных оттенков серого: черный при полностью незакрытых сэмплах, 25% белого при одном закрытом сэмпле, 50% при двух и так далее. Однако растеризация с упорядоченной сеткой даёт нам всего три оттенка: чёрный, белый и 50/50. Так происходит, потому что упорядоченные сэмплы расположены в два столбца, а потому, когда один из них закрывается почти вертикальным примитивом, другой тоже скорее всего будет закрыт.

Как показано на изображении с разреженным сэмплингом, эту проблему можно обойти, изменив положение сэмплов внутри каждого пикселя. Идеальным расположением сэмплов для сглаживания является разреженное. Это означает, что при N сэмплов никакие два сэмпла не имеют одного общего столбца, строки или диагонали в сетке NxN. Такие паттерны соответствуют решениям задачи об N ферзях. Методы антиалиасинга, в которых используются такие сетки, называют выполняющими антиалиасинг на разреженных сетках (sparse grid anti-aliasing, SGAA).

Типы сэмплов


Самый простой подход к антиалиасингу изображения на основе сэмплирования заключается в том, что все вычисления выполняются для «реального» пикселя каждого сэмпла. Хотя этот подход высокоэффективен для удаления всех типов артефактов алиасинга, он также является очень вычислительно затратным, потому что при N сэмплах увеличивает в N раз затраты на затенение, растеризацию, занимаемую полосу пропускания и память. Техники, при которых все вычисления выполняются для каждого отдельного сэмпла, называются сглаживанием суперсэмплингом (super-sampling anti-aliasing, SSAA).

Примерно в начале этого века в графическое оборудование была встроена поддержка антиалиасинга мультисэмплингом (multi-sample anti-aliasing, MSAA), являющегося оптимизацией суперсэмплинга. В отличие от случая SSAA, в MSAA каждый пиксель затеняется только один раз. Однако для каждого сэмпла вычисляются значения глубины и стенсила, что обеспечивает то же качество сглаживания на рёбрах геометрии, что и в SSAA, при значительно меньшем снижении производительности. Кроме того, возможны дальнейшие улучшения производительности, особенно занятой полосы пропускания, если поддерживается сжатие Z-буфера и буфера цвета. Они поддерживаются во всех современных архитектурах видеопроцессоров. Из-за способа оптимизации сэмплирования MSAA, с алиасингом прозрачности, текстур и шейдеров таким образом напрямую справляться невозможно.

Третий тип сэмплирования был представлен компанией NVIDIA в 2006 году в технологии антиалиасинг покрытия сэмплирования (coverage sampling anti-aliasing, CSAA). MSAA отделяет затенение от попиксельного вычисления глубины и стенсила, а CSAA добавляет сэмплы покрытия, которые не содержат значений цвета, глубины или стенсила — в них хранится только двоичное значение покрытия. Такие двоичные сэмплы используются для помощи в смешивании готовых сэмплов MSAA. То есть режимы CSAA добавляют сэмплы покрытия к режимам MSAA, но не имеет смысла выполнять сэмплирование покрытия без создания множества сэмплов MSAA. В современном оборудовании NVIDIA используется три режима CSAA: 8xCSAA (4xMSAA / 8 сэмплов покрытия), 16xCSAA (4x/16), 16xQCSAA (8x/16) и 32xCSAA (8x/32). У AMD есть похожая реализация с 4x EQAA (2x/4), 8xEQAA (4x/8) и 16xEQAA (8x/16). Дополнительные сэмплы покрытия обычно только незначительно влияют на производительность.

Группировка сэмплов


Последним ингредиентом методов AA на основе сэмплирования является способ группировки сэмплов, то есть то, как отдельные сэмплы, сгенерированные при рендеринге, собираются в конечный цвет каждого пикселя. Как показано на Рисунке 7, для этой цели используются различные фильтры группировки. На рисунке показаны пиксели 3×3 — бирюзовые точки обозначают позиции сэмплов, а жёлтый оттенок обозначает фильтр группировки сэмплов.
7-1. Фильтр Box
7-2. Фильтр Quincunx
7-3. Фильтр Tent

Очевидный и самый распространённый метод группировки просто накапливает каждый сэмпл в квадратной области, представляющей пиксель с равными весами. Это называется фильтром «box», и используется во всех обычных режимах MSAA.

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

Более гибкий подход был представлен в 2007 году компанией AMD в серии видеопроцессоров HD 2900. В них используется программируемая группировка сэмплов, что позволяет реализовать режимы группировки «narrow tent» и «wide tent». Как показано выше, каждый сэмпл не имеет одинаковый вес. Вместо этого используется функция взвешивания, зависящая от расстояния до центра пикселя. Узкий (narrow) и широкий (wide) варианты используют разный размер ядра фильтра. Эти способы группировки можно сочетать с различным количеством сэмплов, и некоторые из полученных результатов показаны на общем сравнении. Что касается quincunx AA, то эти методы представляют собой компромисс между резкостью изображения и снижением алиасинга.

Сравнение AA сэмплирования


На Рисунке 8 показано сравнение всех рассмотренных нами методов AA на основе сэмплирования с различным количеством сэмплов. На изображении «ground truth» показано ближайшее к «реальному», идеальное представление сцены. Оно создано сочетанием 8xSGSSAA и 4×4 OGSSAA.

Стоит заметить аналогичное качество SGMSAA и SGSSAA с одинаковым количеством сэмплов при геометрическом алиасинге, и нехватку антиалиасинга прозрачности, текстур и шейдеров в случае MSAA. Недостатки упорядоченных паттернов сэмплинга, особенно для почти горизонтальных и почти вертикальных линий сразу заметны при сравнении 4x SGSSAA и 2×2 OGSSAA. При всего двух сэмплах на пиксель OGSSAA ограничен только горизонтальным (2×1) или только вертикальным (1×2) AA, а разреженный паттерн в какой-то мере может покрывать оба типа рёбер.

Методы AA с фильтрами группировки сэмплов, отличающиеся от обычного фильтра box, обычно обеспечивают более качественное снижение алиасинга на сэмпл, но страдают от эффекта размытия всего изображения.

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

Рисунок 8: Обработка различных типов алиасинга различными методами AA на основе сэмплирования.


«Истинное» изображение
Без AA
2x MSAA
2x SGSSAA
4x MSAA
4x SGSSAA
8x MSAA
8x SGSSAA
8x MSAA + alpha-to-coverage
2x1 OGSSAA
1x2 OGSSAA
2x2 OGSSAA
4x Narrow Tent
6x Narrow Tent
6x Wide Tent
8x Wide TentТо же самое в виде GIF

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

Краткое введение и знакомство


Хотя идея сглаживания сгенерированных компьютером изображений популяризирована благодаря статье Решетова 2009 года о морфологическом антиалиасинге (который часто называют MLAA) [1], она ни в коем случае не является новой. Жуль Блументаль привёл сжатое описание этой техники в своей статье 1983 года для SIGGRAPH «Edge Inference with Applications to Antialiasing», которая активно применяется в современных методах [2]:
«Ребро, сэмплируемое по точкам для отображения на растровом устройстве, и непараллельное оси дисплея, выглядит как лесенка. Этот артефакт алиасинга часто возникает в компьютерных изображениях, сгенерированных двухмерными и трёхмерными алгоритмами. Точная информация о ребре часто больше недоступна, но из множества вертикальных и горизонтальных сегментов, формирующих эту лесенку, можно извлечь аппроксимацию исходного ребра с точностью, превосходящей точность растра. Таким образом можно обеспечить сглаживание ребра лесенки.

Такие извлечённые рёбра можно использовать для повторного затенения пикселей, которые они пересекают, таким образом сглаживая извлечённые рёбра. Сглаженные извлечённые рёбра оказываются более привлекательной аппроксимацией реальных рёбер, чем из аналоги с алиасингом».


В 1999 году Ишики и Куниэда представили первый вариант этой техники, предназначенной для использования в реальном времени, которая выполнялась сканированием пар строк и столбцов изображения, и могла быть реализована аппаратно [3].

В общем случае, все чисто аналитические методы антиалиасинга выполняются в три этапа:

  1. Распознавание разрывов в изображении.
  2. Воссоздание геометрических рёбер из паттерна разрывов.
  3. Сглаживание пикселей, пересекающих эти рёбра, смешиванием цветов каждой их стороны.

Отдельные реализации аналитического антиалиасинга различаются тем, как реализованы эти шаги.

Распознавание разрывов


Простейший и самый распространённый вариант распознавания разрывов — это простое изучение конечного отрендеренного цветового буфера. Если разность цветов двух соседних пикселей (их расстояние) больше какого-то порогового значения, то присутствует разрыв, в противном случае его нет. Эти показатели расстояний часто вычисляются в цветовом пространстве, которое лучше моделирует человеческое зрение, чем RGB, например, в HSL.

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


Рисунок 9: Распознавание разрывов в цветовом буфере. Слева: изображение без AA. В центре: горизонтальные разрывы. Справа: вертикальные разрывы.

Чтобы ускорить процесс распознавания разрывов или снизить количество ложноположительных распознаваний (например, в текстуре, или вокруг текста на Рисунке 9), можно использовать другие буферы, генерируемые в процессе рендеринга. Обычно для прямого и обратного рендерера доступен Z-буфер (буфер глубин). В нём хранится значение глубины для каждого пикселя, и его можно использовать для распознавания рёбер. Однако это только работает для распознавания рёбер-силуэтов, то есть внешних рёбер 3D-объекта. Чтобы рассматривать и рёбра внутри объекта, то нужно использовать ещё один буфер вместо или в дополнение к Z-буферу. Для отложенных рендереров часто генерируется буфер, хранящий направление поверхностей нормалей каждого пикселя. В таком случае для распознавания рёбер подходящей метрикой будет угол между соседними нормалями.

Воссоздание рёбер и смешивание


Способ воссоздания геометрических рёбер из разрывов немного различается в разных методах аналитического AA, но все они выполняют похожие действия по сопоставлению паттернов на горизонтальных и вертикальных разрывах для распознавания типичного паттерна «лесенки» артефактов алиасинга. На Рисунке 10 показаны паттерны, используемые по описанию Решетова в MLAA и способ воссоздания из них рёбер.

Рисунок 10: Паттерны MLAA и их воссозданные рёбра


Распознанные паттерны
Паттерны разрывов, использованные в MLAA

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

Достоинства и недостатки аналитического сглаживания


По сравнению с методами антиалиасинга на основе сэмплирования, аналитические решения имеют несколько важных преимуществ. При правильной работе (на правильно распрознанных геометрических рёбрах) они могут обеспечить качество, равное качеству методов на основе сэмплирования с очень высоким количеством сэмплов, при этом тратя меньше вычислительных ресурсов. Более того, они легко применимы во множестве случаев, в которых AA на основе сэмплирования реализуется сложнее, например, в случае отложенного затенения.

Однако аналитический AA — это не панацея. Неотъемлемой проблемой чисто аналитических методов на основании единственного сэмпла является то, что они не могут справляться с подпиксельным алиасингом.

Если передать аналитическому алгоритму сглаживания структуру пикселей, показанную в правом верхнем углу Рисунка 2, то он никак не сможет понять, что разделённые группы пикселей на самом деле составляют линию. На этом этапе есть два равно неприятных способа решения этой проблемы: или размытие пикселей, снижающее видимый алиасинг, но и уничтожающее детали, или консервативная обработка только чётко определённых артефактов-«лесенок», которые совершенно точно вызваны алиасингом; при этом подпиксельный алиасинг сохранится и будет искажён.

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

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

На Рисунке 11 показаны некоторые из успешных и неудачных результатов использования аналитических методов AA на примере стандартных алгоритмов FXAA и SMAA1x. Последний обычно считается лучшим чисто аналитическим однопиксельным алгоритмом, который можно использовать в реальном времени.

Рисунок 11: Аналитические методы AA


Без AA
FXAA
1x SMAA

Сравнение аналитических методов антиалиасинга


На Рисунке 12 показано сравнение между результатами работы FXAA, SMAA1x и «идеальным» изображением, и изображениями без AA, с 4xMSAA и 4xSGSAAA из предыдущего сравнения.

Рисунок 12: Обработка различных видов алиасинга разными аналитическими и сэмплирующими методами AA


«Идеальное» изображение
Без AA
4x MSAA
4x SGSSAA
FXAA
SMAAТо же самое в виде GIF
Заметьте, что в отличие от MSAA, эти аналические методы не интересует, были ли причинами артефактов алиасинга геометрия, прозрачность или даже вычисление шейдеров. Все рёбра обрабатываются одинаково. К сожалению, то же самое относится и к рёбрам экранного текста, хотя искажение при SMAA1x и меньше, чем при FXAA.

Оба метода не справляются с антиалиасингом в случае подпиксельного алиасинга, однако они обрабатывают эту неудачу по-разному: SMAA1x просто решает вообще не влиять на отдельные белые пиксели синусоиды, а FXAA смешивает их с их окружением. Более желательная обработка зависит от контекста и личных предпочтений.

Более объективно можно сказать, что SMAA1x обрабатывает некоторые углы линий в тесте 2D-геометрии и кривые в примере с шейдерным алиасингом точно лучше, чем FXAA, обеспечивая более гладкий результат, который приятнее эстетически и ближе к «идеальному» изображению. Так получилось благодаря более сложному этапу воссоздания рёбер и смешивания, подробности которого объяснены в статье об SMAA 2012 года Хименеса et alia [4].


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

Ну, будущее уже частично здесь: комбинированные методы на основе сэмплирования и аналитического антиалиасинга. Эти алгоритмы создают несколько сэмплов сцены — посредством традиционного мульти- или суперсэмплирования или с помощью временного накопления между кадрами — и сочетают их с анализом, генерируя конечное изображение с антиалиасингом. Это позволяет им снизить проблемы подпиксельного алиасинга и временной нестабильности односэмпловых чисто аналитических методов, однако всё равно даёт гораздо лучшие результаты на геометрических рёбрах, чем чистые методы сэмплирования со схожими характеристиками производительности. Очень простую комбинацию дополнительного сэмплирования и аналитического AA можно получить сочетанием односэмпловой аналитической техники наподобие FXAA с субдискретизацией из буфера с более высоким разрешением. Более сложными примерами таких методов являются SMAA T2x, SMAA S2x и SMAA 4x, а также TXAA. Методы SMAA подробно объясняются и сравниваются в этой статье, в то время как NVIDIA реализовала собственный подход к TXAA здесь. Высока вероятность, что такие комбинированные методы будут более широко использоваться в будущем.

Ещё одним вариантом, пока не получившим широкого распространения, но имеющим большой потенциал на будущее, является кодирование в процессе рендеринга дополнительной геометрической информации, которая позже будет использоваться на этапе аналитического антиалиасинга. Примеры такого подхода — это антиалиасинг с геометрической постобработкой (Geometric Post-process Anti-Aliasing, GPAA) и антиалиасинг с использованием буфера геометрии (Geometry Buffer Anti-Aliasing, GBAA), демо которых выложены здесь.

Наконец, общий пул памяти ЦП и видеопроцессора новых консольных платформ и будущих архитектур PC могут позволить использовать техники, предназначенные для эксплуатации таких общих ресурсов. В недавней статье «Asynchronous Adaptive Anti-aliasing Using Shared Memory» Бэрринджер и Мёллер описывают технику, выполняющую традиционный односэмпловый рендеринг, в то же время распознавая важные пиксели (например, находящиеся на ребре) и растеризируя для них в ЦП дополнительные разреженные сэмплы [5]. Хотя это требует серьёзной реструктуризации процесса выполнения рендеринга, результаты выглядят многообещающе.

Справочные материалы


[1] A. Reshetov, «Morphological antialiasing», в Proceedings of the Conference on High Performance Graphics 2009 HPG ’09, New York, NY, USA, 2009, pp. 109–116.

[2] J. Bloomenthal, ‘Edge Inference with Applications to Antialiasing’, ACM SIGGRAPH Comput. Graph., vol. 17, no. 3, pp. 157–162, Jul. 1983.

[3] T. Isshiki and H. Kunieda, ‘Efficient anti-aliasing algorithm for computer generated images’, в Proceedings of the 1999 IEEE International Symposium on Circuits and Systems ISCAS ’99, Orlando, FL, 1999, vol. 4, pp. 532–535.

[4] J. Jimenez, J. I. Echevarria, T. Sousa, and D. Gutierrez, ‘SMAA: Enhanced Subpixel Morphological Antialiasing’, Comput. Graph. Forum, vol. 31, no. 2pt1, pp. 355–364, May 2012.

[5] R. Barringer and T. Akenine-Möller, ‘A 4: asynchronous adaptive anti-aliasing using shared memory’, ACM Trans. Graph., vol. 32, no. 4, pp. 100:1–100:10, Jul. 2013.

habr.com

Сглаживание — Википедия

Материал из Википедии — свободной энциклопедии

Пример сглаживания — изображение слева не сглажено, к изображению справа применено сглаживание 4x

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

Основной принцип сглаживания

Буква а с ClearType-сглаживанием (слева) и без сглаживания (справа) на TFT-мониторе

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

Применяется два варианта сглаживания:

  • Общее сглаживание отрисовкой излишне крупного несглаженного изображения с последующим уменьшением разрешения.
  • Специализированные алгоритмы сглаживания, работающие на изображениях определённого типа (например, Алгоритм Ву для отрисовки отрезков).

Следует заметить, что сглаживание зависит от гаммы монитора. В частности, среднее между 0,2 и 0,8 — это не обязательно 0,5, а (0,2γ+0,8γ2)1/γ{\displaystyle \left({\frac {0{,}2^{\gamma }+0{,}8^{\gamma }}{2}}\right)^{1/\gamma }}. Особенно это заметно на тонких узорах и тексте. Поэтому сглаживание наилучшего качества получается только тогда, когда γ{\displaystyle \gamma } известна.

Полноэкранное сглаживание

SSAA

Избыточная выборка сглаживания (англ. Supersample anti-aliasing, SSAA)[1], также называемое полносценным или полноэкранным сглаживанием (FSAA)[2], используется для исправления алиасинга (или «зубцов») на полноэкранных изображениях[3]. SSAA было доступно на ранних видеокартах, вплоть до DirectX 7. Начиная с DirectX 8 из-за огромной вычислительной сложности было заменено всеми производителями графических процессоров на множественную выборку сглаживания, который также был заменён другими методами, такими как CSAA + TrAA/AAA. MSAA даёт несколько худшее качество графики, но и обеспечивает огромную экономию вычислительной мощности. Поскольку SSAA даёт более высокое качество изображения, он не был полностью исключён и до сих пор реализуется аппаратно в продуктах AMD и NVIDIA. В модельный ряд AMD HD6xxx он включён в качестве особенности (только для игр на DirectX 9), также он был включён в драйвера NVIDIA Fermi, для всех игр, начиная с игр на DirectX 9, и заканчивая играми на DirectX 11 с использованием любых видеокарт NVIDIA с поддержкой DirectX 10 и выше.

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

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

Качество сглаживания ограничено пропускной способностью видеопамяти, поэтому GPU с быстрой памятью сможет просчитать полноэкранное сглаживание с меньшим ущербом для производительности, чем GPU более низкого класса. Сглаживание можно включать в различных режимах. Например, сглаживание 4x даст более качественное изображение, чем сглаживание 2x, но значительно снизит производительность. Сглаживание 2xSSAA удваивает разрешение, тогда как 4xSSAA его учетверяет[4].

FXAA

FXAA (Fast approXimate Anti-Aliasing) — метод сглаживания от Nvidia[5], представляющий собой однопроходный пиксельный шейдер, который обсчитывает результирующий кадр на этапе постобработки. Является более производительным решением, по сравнению с традиционным MSAA (Multi-Sampling Anti-Aliasing), что, однако, сказывается на точности работы и качестве изображения.

MFAA

MFAA (Multiframe Sampled Anti-Aliasing) — метод сглаживания от Nvidia. Целью MFAA является достижение равноценного сглаживания при более высокой частоте кадров. В идеале MFAA 4х по производительности должен соответствовать MSAA 2х, но обеспечить качество, как у MSAA 4x, или выше.[6]

См. также

Примечания

Литература

Ссылки

wikipedia.bio

Настройки графики в играх: на что они влияют?

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

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

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

трилинейнаяанизотропная

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

Учитывая объем обрабатываемых данных (а в сцене может быть множество 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.

AA offAA on

Учитывая, что за последние несколько лет быстродействие видеокарт заметно увеличилось, как 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 кадров/с.

itc.ua

Что такое Nvidia DLSS и почему технология значительно повышает частоту в играх

Вчера Nvidia опубликовала собственные тесты новой линейки видеокарт, отметив, что RTX 2080 с активной технологией DLSS по производительности в два раза обходит GTX 1080. В случае, если технология DLSS не используется, то прирост производительности составляет полтора раза.

Что же это за технология такая и каким образом она позволяет повышать производительность RTX 2080 на дополнительные 50%? Давайте разберемся вместе.

Что такое Nvidia DLSS?

Это сокращение от Deep Learning Super Sampling или в переводе "Супер-сэмплинг при помощи глубокого обучения". Что это значит доступным языком? На самом деле все просто — это метод для сглаживания краев на объектах, чтобы избежать "лесенок" и прочих неприятных артефактов. Данная технология сопоставима с привычным антиалиасингом, только вместо использования мощности самого GPU, DLSS полагается на ядра Tensor. Это отдельный блок в чипе RTX, который оптимизирован для работы с ИИ, нейросетями и глубоким обучением.

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

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

Что такое "глубокое обучение"?

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

В рамках видеокарт Nvidia RTX 20 серии осуществляют процесс глубокого обучения ядра Tensor, которые специализируются на осуществлении вычислений с нейро-сетями.

Каким образом нейросеть помогает сглаживать картинку?

Nvidia пока не описала данный процесс, однако учитывая свойства глубокого обучения можно предположить следующее. Nvidia тренирует нейросеть на основе двух наборов изображений — одни со сглаживанием, другие без. На основе этого нейросеть создает модель того, как работает сглаживание и может применять алгоритм самостоятельно. То есть, DLSS обучена добавлять и/или менять пиксели на изображении так, чтобы они создавали качественную картинку. И никакого антиалиасинга не требуется.

Какие игры будут поддерживать технологию DLSS?

Уже заявлена поддержка в следующих играх:

  • Ark: Survival Evolved
  • Atomic Heart
  • Dauntless
  • Final Fantasy XV
  • Fractured Lands
  • Hitman 2
  • Islands of Nyne
  • Justice
  • JX3
  • Mechwarrior 5: Mercenaries
  • PlayerUnknown’s Battlegrounds
  • Remnant: From the Ashes
  • Serious Sam 4: Planet Badass
  • Shadow of the Tomb Raider
  • The Forge Arena
  • We Happy Few

Другими словами, запуская эти игры на RTX 20 серии, игроки смогут без опасений выставлять 4K разрешение и наслаждаться высокой частотой кадров. На GTX 1080 в 4K разрешении и с включенным сглаживанием о 60 fps можно было бы даже не думать.

Вот каковы частоты кадров с разрешением 4K:

shazoo.ru

Temporal anti-aliasing — Википедия

Материал из Википедии — свободной энциклопедии

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

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

Для выполнения сглаживания в области компьютерной графики, система сглаживания требует ключевую информацию: какие объекты перекрывают конкретные пиксели в любой момент времени в анимации.

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

В этом методе доступно два метода вычисления функции интенсивности по времени.

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

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

ru.wikipedia.org


Смотрите также



© 2010- GutenBlog.ru Карта сайта, XML.