антиалайзинговый фильтр что это
Поваренная книга разработчика аналоговых схем: аналого-цифровые преобразователи 14
Мануэль Чавес (Texas Instruments)
Перед вами – глава из «Поваренной книги разработчика аналоговой электроники», созданной инженерами компании Texas Instruments (TI). Многим уже знаком аналогичный цикл об операционных усилителях. Но АЦП – не менее важная часть сигнального тракта, а секретов и тонкостей в его применении никак не меньше. Приведены конкретные схемотехнические примеры, пошаговые инструкции с формулами, позволяющими адаптировать схему к конкретному проекту. Результаты расчетов дополнительно проверяются в программе SPICE-моделирования. Для каждой схемы рекомендован как минимум один АЦП производства TI, однако разработчик может использовать и другие изделия компании, широкий выбор которых представлен на страницах каталога КОМПЭЛ. От читателя требуется понимание базовых принципов работы АЦП. Если же знаний недостаточно, следует вначале ознакомиться с учебными курсами TI Precision Labs (TIPL). Авторы обещают обновлять и дополнять статьи цикла.
Мы публикуем главы Поваренной книги на нашем сайте регулярно.
Расчет антиалиасингового фильтра с заданной частой среза для АЦП последовательного приближения
Исходные данные к расчету схемы представлены в таблицах 60 и 61.
Таблица 60. Исходные данные к расчету схемы антиалиасингового фильтра
Вход | Вход АЦП | Цифровой выход ADS8319 |
---|---|---|
VinMin = 0,1 В | Vadc_in = 4,9 В | FAE1H или 6422510 |
VinMax = VREF = 4,9 В | Vadc_in = 0,1 В | 051FH или 131110 |
Таблица 61. Характеристики питания
Источники питания и опорного напряжения | |||||
---|---|---|---|---|---|
Vcc | Vee | Vcm | VREF | AVDD | DVDD |
5,3 В | GND (0 В) | 2,5 В | 5 В | 5 В | 5 В |
Описание схемы
Алиасинг представляет собой наложение высокочастотных и низкочастотных составляющих сигнала при выполнении аналогово-цифровых преобразований. В литературе такие искажения часто называют артефактами преобразования. В статье выполняется расчет антиалиасингового фильтра для АЦП последовательного приближения (с несимметричным входом). Для расчета используется утилита Antialias Filter Designer, входящая в состав калькулятора Analog Engineer’s Calculator. Спроектированный фильтр позволяет ослабить артефакты преобразования до уровня 1/2 LSB выбранного АЦП.
Предлагаемая схема построена на базе АЦП ADS8319 (рисунок 72). Расчет антиалиасингового фильтра для АЦП ведется с учетом фиксированной заданной частоты среза. Данная схема может применяться в системах сбора данных, лабораторных приборах, осциллографах, модулях аналоговых входов и устройствах с батарейным питанием.
Рис. 72. Антиалиасинговый фильтр для АЦП последовательного приближения
Характеристики
Ключевые параметры схемы представлены в таблице 62.
Таблица 62. Ключевые параметры схемы
Фильтры устранения эффекта наложения спектров (Антиалиасинговые фильтры)
При дискретизации низкочастотного сигнала такого как, звуковой сигнал, видеосигнал или цифровой сигнал предполагается, что спектр дискретизируемого сигнала полностью находится в первой зоне Найквиста. Однако это не так. Реальный сигнал не ограничен по спектру и в общем случае спектр любого реального сигнала распространяется до бесконечности.
Если на входе идеального дискретизатора не ограничить спектр сигнала при помощи фильтра, то любая частотная составляющая (помеха или шум), которая находится выше верхней частоты Котельникова, будет отображаться в полосу частот полезного сигнала, находящуюся в диапазоне частот от 0 до fд/2. Поэтому при дискретизации низкочастотного сигнала (baseband sygnal) на входе аналого-цифрового преобразователя или фильтра на переключаемых конденсаторах для подавления мешающих сигналов всегда ставится аналоговый фильтр нижних частот, который позволяет уменьшить вредные последствия эффекта наложения спектра сигналов.
В теореме Котельникова неявно предполагалось, что на входе дискретизатора стоит фильтр с прямоугольной характеристикой, который пропускает частоты от 0 до fд/2 и не пропускает все частоты выше fд/2. Такой фильтр не реализуем на практике. Поэтому очень важно правильно определить требования к характеристикам аналогового фильтра нижних частот, ограничивающего спектр сигнала на входе дискретизатора (фильтра устранения эффекта наложения спектров).
На рисунке 1 показан механизм возникновения помехи, обусловленной эффектом наложения спектра сигналов (алиасингом). В данном примере показано отображение сигнала из второй зоны Найквиста в полосу полезного сигнала. Естественно, что в полосу полезного сигнала попадет и помеха из второй зоны Найквиста, но ее уровень будет намного ниже. ФНЧ в дальней зоне обладает лучшим подавлением по сравнению с частотами близкими к частоте среза фильтра.
Рисунок 1. Влияние частоты дискретизации на требования к характеристикам аналогового фильтра устранения эффекта наложения спектров
На данном рисунке показан исходный спектр входного сигнала. Для простоты он принят равномерным во всем диапазоне частот. После прохождения через фильтр устранения эффекта наложения спектров форма спектра входного сигнала принимает форму АЧХ данного фильтра. После дискретизации данный спектр появляется вокруг частоты дискретизации. Именно эта помеха определяет динамический диапазон цифрового устройства DR.
В приведённом примере составляющие спектра, которые попадают в диапазон частот от fв до fд/2, не представляют интереса, так как они будут в дальнейшем отфильтрованы цифровым фильтром. Поэтому они не ограничивают динамический диапазон разрабатываемой системы. Необходимо отметить, что в ряде источников эффект отображения частот верхних зон Найквиста в первую зону называется эффектом «заворота спектра».
Из рисунка 1 видно, что требования к крутизне амплитудно-частотной характеристики входного аналогового фильтра определяется верхней частотой сигнала fв, началом полосы задерживания и требуемым затуханием в полосе задерживания аналогового фильтра.
Требуемое затухание аналогового фильтра в полосе задерживания определяется динамическим диапазоном полезного сигнала DR. Динамический диапазон цифрового устройства выбирается исходя из заданной точности представления сигнала. При этом нижняя граница динамического диапазона DR будет определяться уровнем всех помех, попадающих в полосу частот полезного сигнала.
При всех прочих равных условиях фильтры становятся более сложными при увеличении крутизны спада АЧХ. Известно, что фильтр Баттерворта обладает крутизной спада АЧХ 6 дБ/октаву.
Рассмотрим в качестве примера фильтр, требующийся для звуковой карты. Зададимся верхней частотой звукового сигнала. Пусть эта частота будет равна 20 кГц. Для обеспечения подавления мешающего сигнала на частоте 40 кГц на 60 дБ, (отстройка по частоте равна 1 октаве) требуется как минимум фильтр 10-го порядка. Подобный фильтр, весьма трудоемок при разработке и дорог в производстве.
Тем не менее, при таких условиях частота дискретизации входного сигнала должна быть не менее 60 кГц и при этом мы сможем обеспечить только 10-разрядную точность представления сигнала в цифровом виде.
Кроме сложности разработки и производства подобных фильтров, фильтры высокого порядка обладают ещё рядом недостатков, таких как нелинейная фазовая характеристика и связанное с ней увеличение групповой задержки полезного сигнала на краю полосы пропускания фильтра.
Увеличение групповой задержки на краю полосы пропускания фильтра может привести к тому, что даже при работе со звуковым сигналом эти искажения будут восприниматься человеческим ухом. Еще большее влияние фазовые искажения оказывают при приеме цифровых сигналов или при обработке сигналов изображения.
Все перечисленные выше факторы приводят к тому, что при преобразовании сигнала из аналоговой формы в цифровую, нежелательно использовать для формирования спектра аналоговые фильтры высокого порядка, так как они вызывают значительные искажения формы исходного аналогового сигнала.
Рисунок 2. АЧХ фильтра Баттерворта 10-го порядка
В качестве примера характеристик аналогового фильтра на рисунке 2 приведена амплитудно-частотная характеристика фильтра Баттерворта 10-го порядка, на рисунке 3 — приведена фазочастотная характеристика этого же фильтра, а на рисунке 4 — зависимость группового времени запаздывания входного сигнала от частоты.
Рисунок 3. ФЧХ фильтра Баттерворта 10-го порядка
По этим характеристикам можно определить, что фазовая характеристика обладает наибольшей крутизной на краю полосы пропускания фильтра, на частоте 11 кГц. Это обусловлено наибольшей задержкой высокочастотных составляющих входного сигнала. Задержка сигнала на частоте 11 кГц достигает значения 12 мс. Такое значение задержки высокочастотных составляющих звукового сигнала уже воспринимается человеческим ухом как искажение исходного сигнала.
Из приведённых рассуждений видно, что на входе аналого-цифрового преобразователя нежелательно использовать аналоговый фильтр высокого порядка. Тогда единственной возможностью увеличения динамического диапазона цифрового устройства остается увеличение разноса частот полезного и мешающего сигналов. Это может быть осуществлено за счет увеличения частоты дискретизации входного сигнала.
Обычно частоту дискретизации увеличивают в целое число раз для того, чтобы в дальнейшем можно было бы ограничить полосу сигнала при помощи цифрового фильтра и затем в соответствующее число раз уменьшить частоту дискретизации сигнала на его выходе, иначе говоря, провести операцию децимации цифрового сигнала.
Подобная ситуация иллюстрируется рисунком 3, где частота дискретизации аналогового сигнала увеличена в k раз, по сравнению со случаем, приведенным на рисунке 1 при неизменных требованиях к частоте среза fв и к динамическому диапазону DR. Более пологий скат делает новый фильтр проще для проектирования, по сравнению со случаем, показанным на рисунке 1.
Рисунок 5. Влияние частоты дискретизации на требования к характеристикам аналогового фильтра
Выбор более высокой скорости дискретизации приводит к необходимости использования более быстрого АЦП и более высокой скорости обработки данных. Тем не менее, ИЗБЫТОЧНАЯ ДИСКРЕТИЗАЦИЯ УМЕНЬШАЕТ ТРЕБОВАНИЯ К КРУТИЗНЕ СПАДА АМПЛИТУДНО-ЧАСТОТНОЙ ХАРАКТЕРИСТИКИ АНАЛОГОВОГО ФИЛЬТРА НИЖНИХ ЧАСТОТ.
Процесс проектирования аналогового фильтра, предназначенного для устранения эффекта наложения спектров, начинается с выбора начальной частоты дискретизации. Она обычно выбирается в диапазоне от 2,5×fв до 4×fв. Затем, исходя из требуемого динамического диапазона, определяются требования к амплитудно-частотной характеристике фильтра, и определяется реализуемость такого фильтра с учетом ограничений по стоимости и габаритам разрабатываемой системы.
Если реализация входного аналогового фильтра окажется невозможной, то следует рассмотреть вариант с более высокой частотой дискретизации. При выборе такого варианта, возможно, потребуется более скоростной аналого-цифровой преобразователь. В ряде случаев разрядность скоростного АЦП можно взять ниже по сравнению с разрядностью низкоскоростного аналого-цифрового преобразователя, так как цифровые фильтры обладают свойством уменьшения шумов дискретизации.
Следует отметить, что Σ-Δ-АЦП изначально являются преобразователями с избыточной дискретизацией, и данное обстоятельство существенно ослабляет требования к аналоговому фильтру, предназначенному для устранения эффекта наложения спектров, что является дополнительным преимуществом при применении данного вида аналого-цифровых преобразователей.
Требования к аналоговому фильтру, предназначенному для устранения эффекта наложения спектров могут быть несколько ослаблены, если вы уверены, что сигналы с частотами, лежащими в полосе задерживания fд – fв, никогда не превысят уровня полезного сигнала.
Во многих системах появление таких сигналов действительно маловероятно. Если известно, что максимальный уровень сигнала в полосе частот fд – fв меньше амплитуды полезного сигнала на N дБ, то требования к затуханию в полосе задерживания входного фильтра может быть уменьшены на ту же самую величину.
Новые требования к затуханию в полосе задерживания fд – fв основано на том факте, что в этом случае требующееся значение подавления мешающего сигнала составляет DR – N дБ. В случае реализации этого варианта будьте внимательны. Убедитесь, что во входном сигнале нет любых составляющих спектра с частотами выше частоты fв с уровнем, равным уровню полезного сигнала. Все эти составляющие спектра будут создавать низкочастотные мешающие образы в полосе частот полезного сигнала.
Обратите внимание, что возможна обратная ситуация, когда уровень высокочастотных составляющих входного сигнала может превышать уровень полезного сигнала. В этом случае требования к входному фильтру низких частот ужесточаются на величину превышения уровня помех над полезным сигналом.
Понравился материал? Поделись с друзьями!
Вместе со статьей «Фильтры устранения эффекта наложения спектров (Антиалиасинговые фильтры)» читают:
Терминология: Фильтр антиалайзинговый
Антиалайзинговый фильтр ( anti-aliasing filter) – это фильтр низкой частоты , применяемый на входе АЦП для повышения качества оцифровки сигнала. Если Fd – частота дискретизации АЦП, то частота среза антиалайзингого ФНЧ примерно равна половине 0,5* Fd. Подавление частот сигнала выше половины частоты дискретизации АЦП исключает эффект наложения на сигнал зеркальных частот преобразования, или, как это обычно называют в классической литературе по ЦОС, исключает эффект наложения спектров. Антиалайзинговый фильтр фактически обеспечивает спектральную верность преобразования АЦП, исключая из сигнала сторонние призвуки – артефакты преобразования (если воспользоваться терминологией звуковых приложений).
АЦП с антиалайзинговым фильтром используют в звуковых приложениях, акустике, виброметрии – в тех областях, где важна спектральная верность преобразования.
В виброметрии, где измеряют фазовые задержки, на весь тракт преобразования АЦП, включая антиалайзинговый фильтр, накладывают дополнительное требование линейности фазочастотной характеристики.
Заметим, что особый стробоскопический режим работы возможен только для АЦП без антиалайзингого фильтра, для которого верхняя частота полосы частот пропускания значительно выше половины частоты дискретизации.
В технической литературе встречается также схожий по физическому смыслу термин антиалиасинг, употребляемый в области обработки изображений, но в измерительной тематике (при обработке сигналов) правильней пользоваться термином атиалайзинговый фильтр, применяемым в ГОСТ Р 8.714-2010 и ГОСТ Р ИСО 13373-2-2009.
По вопросам качества аналогово-цифрового преобразования также читайте статьи:
Термин: Фильтр антиалайзинговый
АЦП с антиалайзинговым фильтром используют в звуковых приложениях, акустике, виброметрии – в тех областях, где важна спектральная верность преобразования и максимальная точность АС-измерений. В случае вышеприведённой АЧХ преобразователя максимальное качество преобразования обеспечивается, если эффективная полоса частот сигнала с небольшим запасом соответствует полосе частот от 0 до 0,5*Fd. В этом случае будет достигнут оптимум по соотношениям «сигнал-шум» и «сигнал-помеха», в том числе потому, что будут подавлены зеркальные частоты преобразования (если обеспечивается подавление частот выше Fd).
В виброметрии, где измеряют фазовые задержки, на весь тракт преобразования АЦП, включая антиалайзинговый фильтр, накладывают дополнительное требование линейности фазочастотной характеристики.
Однако нельзя утверждать, что наличие антиалайзингового фильтра в тракте преобразования АЦП приемлемо для всех физических задач оцифровки сигнала. Например, особый стробоскопический режим работы возможен только для АЦП без антиалайзингового фильтра (например, с АЦП последовательного приближения), для которого верхняя частота полосы частот пропускания значительно выше половины частоты дискретизации. Ещё пример: при оцифровке импульсных сигналов с быстрыми перепадами при ширине спектра сигналов, превышающей ширину полосы частот АЦП с антиалайзинговым фильтром, возможен затяжной колебательный характер реакции фильтра на быстрые перепады сигнала, и не для всех решаемых задач такие реакции будут приемлемы.
Для правильного толкования термина следует учесть:
По вопросам качества аналогово-цифрового преобразования также читайте статьи:
Пример использования термина
Как уже было отмечено выше, термин применяется при описании технических характеристик в руководствах на модули АЦП, например, перечисленных ниже модулей измерительной системы LTR производства ООО «Л Кард».
Разрядность: 16 бит
Частота преобразования до 78 кГц на канал
Каналов: 4 дифференциальных
Диапазоны: ±30 мВ…10 В
Модуль АЦП универсальный
4 канала, 16 бит, 78 кГц
LTR22
Разрядность: 24 бита
Частота преобразования до 117 кГц на канал
Каналов: 4 дифференциальных + 4 для ICP-датчиков или тензорезисторов
Диапазоны: ±2 В…±10 В
Модуль АЦП универсальный
4 канала, 24 бит, 117 кГц
LTR24
Разрядность: 24 бита
Частота преобразования до 78 кГц на канал
Каналов: 8 для ICP-датчиков
Питание датчиков: источник тока 2,86 / 10 мА
Модуль АЦП для ICP датчиков
8 каналов, 24 бит, 78 кГц
Алгоритмы антиалиасинга в реальном времени
Алиасинг (aliasing) — это, возможно, наиболее фундаментальный и самый широко обсуждаемый артефакт 3D-рендеринга всех времён. Однако в игровом сообществе его часто недопонимают. В этой статье я подробно расскажу о теме сглаживания (антиалиасинга, anti-aliasing, AA) в реальном времени, особенно о том, что касается игр, и в то же время буду излагать всё достаточно простым языком.
Различные типы алиасинга и сглаживания, обсуждаемые в статье, будут в основном иллюстрироваться при помощи скриншотов из OpenGL-программы, предназначенной для демонстрации вариаций артефактов алиасинга.
Эту программу можно скачать здесь.
Прежде чем начать, позвольте мне сказать несколько слов о производительности: поскольку она является самым важным аспектом графики реального времени, мы в основном сосредоточимся на том, почему и как сегодня реализуется антиалиасинг. Я упомяну характеристики производительности, но строгая оценка всех представленных в этой статье способов антиалиасинга во разнообразных случаях реального использования будет слишком широкой темой для поста.
Природа алиасинга
«Если ты знаешь себя и знаешь врага, то не подвергнешься опасности и в сотне битв»
Как учит нас Сунь Цзы, чтобы победить врага, нам нужно сначала понять его. Врагом — простите меня за излишнюю драматичность — методов сглаживания являются артефакты алиасинга. Поэтому нам первым делом нужно понять, как и откуда появляется алиасинг.
Термин алиасинг был впервые введён в области обработки сигналов, в которой он изначально описывал эффект, возникающий, когда разные непрерывные сигналы становятся неразличимыми (или начинают искажать друг друга) при дискретизации. В 3D-рендеринге этот термин обычно имеет более конкретное значение: он относится ко множеству нежелательных артефактов, которые могут возникать, когда 3D-сцена рендерится для отображения на экране, состоящем из фиксированной сетки пикселей.
В этом случае 3D-сцена является непрерывным сигналом, а процесс генерирования значений цветов для каждого пикселя дискретизирует этот сигнал для создания выходных данных рендеринга. Цель методов антиалиасинга заключается в том, чтобы выходные данные как можно точнее походили на сцену на заданной сетке пикселей, при этом минимизируя визуально искажающие артефакты.
На Рисунке 1 показан алиасинг в простой сцене, состоящей из единственного белого треугольника на чёрном фоне. На этапе растеризации стандартного рендеринга сэмплируется центральная позиция каждого пикселя: если он находится в треугольнике, то пиксель будет закрашен белым, в противном случае он закрашивается чёрным. В результате получается хорошо заметный эффект «лесенки», один из самых узнаваемых артефактов алиасинга.
При идеальном сглаживании для каждого пикселя определяется, какая часть его площади закрыта треугольником. Если пиксель закрыт на 50%, то он должен быть заполнен цветом на 50% между белым и чёрным (средним серым). Если он закрыт меньше, то должен быть пропорционально темнее, если больше — то пропорционально светлее. Полностью закрытый пиксель является белым, полностью незакрытый — чёрным. Результат этого процесса показан на четвёртом рисунке. Однако выполнение этого вычисления в реальном времени в общем случае является невыполнимой задачей.
Рисунок 1. Простейший алиасинг.
1-1. Сетка 8×8 с помеченными центрами
1-2. Сетка 8×8 с треугольником
1-3. Сетка 8×8 с растеризированным треугольником
1-4. Сетка 8×8 с идеально сглаженными выходными данными
Типы алиасинга
Хотя все артефакты алиасинга можно свести к проблеме дискретизации представления непрерывного сигнала на фиксированной сетке, состоящей из ограниченного количества пикселей, конкретные причины их возникновения очень важны для выбора устраняющего их эффективного способа сглаживания. Как будет видно в дальнейшем, некоторые методы антиалиасинга могут идеально справляться с простым геометрическим алиасингом, показанным на Рисунке 1, но терпеть неудачу при исправлении алиасинга, создаваемого другими процессами рендеринга.
Поэтому чтобы в полной мере обсудить относительные сильные и слабые стороны техник сглаживания, мы сгруппировали артефакты алиасинга, возникающие при 3D-рендеринге, в пять отдельных категорий. Это группирование зависит от точных условий генерирования артефактов. На Рисунке 2 показаны эти типы алиасинга на реальном примере, отрендеренном с помощью OpenGL.
Рисунок 2: Различные типы алиасинга. Слева направо, сверху вниз:
• Единственный выровненный относительно экрана прямоугольник с частично прозрачной текстурой.
• «Мельница», состоящая из выровненных относительно экрана переменных белых и чёрных треугольников.
• Несколько чёрных линий различной ширины, начиная с 1 пикселя сверху до 0,4 пикселя снизу, и белая линия толщиной 0,5, отображающая синусоиду.
• Куб, состоящий из шести плоских закрашенных прямоугольников
• Наклонная плоскость, текстурированная высокочастотной текстурой травы.
• Выровненный относительно экрана прямоугольник с пиксельным шейдером, определяющим цвет каждого пикселя на основе функции синуса.
Самым распространённым типом алиасинга, о котором мы уже говорили, является геометрический алиасинг. Этот артефакт возникает, когда какой-то примитив сцены (обычно треугольник) частично пересекается с пикселем, но это частичное перекрытие не учитывается в процессе рендеринга.
Алиасинг прозрачности возникает в текстурированных примитивах с частичной прозрачностью. Верхнее левое изображение на Рисунке 2 отрендерено с использованием одного прямоугольника, заполненного частично прозрачной текстурой сетчатого забора. Поскольку сама текстура — это просто фиксированная сетка пикселей, её нужно сэмплировать в точках, на которые накладывается каждый пиксель отрендеренного изображения, и для каждой такой точки должно приниматься решение, нужна ли в нём прозрачность. В результате возникает та же проблема сэмплирования, которую мы уже встречали на сплошной геометрии.
Несмотря на то, что фактически он является типом геометрического алиасинга, подпиксельный алиасинг требует особого рассмотрения, так как он ставит уникальные задачи для аналитических методов сглаживания, которые недавно получили большую популярность в рендеринге игр. Мы подробно рассмотрим их в статье. Подпиксельный алиасинг возникает тогда, когда растеризируемая структура накладывается менее чем на один пиксель в сетке буфера кадров. Такое чаще всего происходит в случае узких объектов — шпилей, телефонных или электрических линий, или даже мечей, когда они находятся достаточно далеко от камеры.
Рисунок 3. Иллюстрация подпиксельного алиасинга.
3-1. Сетка 8×8 с отмеченными центрами
3-2. Сетка 8×8 с двумя отрезками прямых
3-3. Сетка 8×8 с растеризированными отрезками, без AA
3-4. Сетка 8×8 с идеально сглаженным треугольником
На Рисунке 3 показан подпиксельный алиасинг в простой сцене, состоящей из двух отрезков прямых. Верхний имеет ширину в один пиксель, и хотя при растеризации он демонстрирует знакомый артефакт-«лесенку» геометрического алиасинга, результат всё равно в целом соответствует по форме входным данным. Нижний отрезок имеет ширину полпикселя. При растеризации часть пересекаемых им столбцов пикселей не имеет одного центра пикселя в пределах отрезка. В результате он разделяется на несколько несвязанных фрагментов. То же самое можно заметить на прямых линиях и кривой синусоиды на Рисунке 2.
Текстурный алиасинг возникает при недостаточном сэмплировании текстуры, особенно в случаях анизотропного сэмплирования (это случаи, когда поврехность сильно наклонена относительно экрана). Обычно артефакты, создаваемые таким типом алиасинга, не очевидны на неподвижных скриншотах, но проявляются в движении как мерцание и неустойчивость пикселей. На Рисунке 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-2. Фильтр Quincunx
Очевидный и самый распространённый метод группировки просто накапливает каждый сэмпл в квадратной области, представляющей пиксель с равными весами. Это называется фильтром «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 на основе сэмплирования.