Алиасинг - результат сэмплинга, то есть преобразования непрерывного изобра-
жение в дискретное. Алиасинг ухудшает качество изображения, вызывая разнооб-
разные артефакты: лестничный эффект, муар и шум. Антиалиасинг (anti-
aliasing) призван нейтрализовать подобные артефакты и улучшить качество изо-
бражения. По предназначению антиалиасинг делится на краевой и полный.
Краевой антиалиасинг - механизм борьбы с лестничным эффектом. Краевой анти-
алиасинг сглаживает края полигонов и диагональные линии. Краевой антиалиа-
синг применяется в 3D-ускорителях Voodoo Graphics, Voodoo 2, Verite V2000.
Для реализации краевого антиалиасинга чаще всего используют технику усредне-
ния по площади (area averaging). Цвет пиксела определяется на основании то-
го, насколько каждый полигон перекрывает данный пиксел.
Hапример, пиксел перекрывают два полигона: A и B. Метод усреднения по площа-
ди определяет видимые области, занимаемые полигонами, которые "прикасаются"
к пикселу, и вычисляет результирующий цвет на основании видимых площадей пе-
рекрытия (то есть принадлежащих и пикселу, и полигону). Пусть полигон A за-
нимает 40% площади пиксела, а полигон B - 60%. Результирующий цвет в этом
случае определяется цветами A и B c весовыми коэффициентами 40% и 60% соот-
ветственно (то есть проводится операция альфа-смешения). Для линий и точек
метод тот же самый, в данном случае считается, что линии и точки имеют нену-
левую площадь.
К сожалению, альфа-смешение в краевом антиалиасинге приводит к появлению ар-
тефакта под названием bleeding (дословно "кровоточение"). Bleeding - окраши-
вание внутренних ребер в цвет фона, это связано с тем, что между гранями об-
разуется тонкий просвет. Поэтому программа сама должна знать, какие ребра и
линии нужно сглаживать. Из-за этого краевой антиалиасинг сложно программиро-
вать.
Полный антиалиасинг, в отличие от краевого, направлен на полную нейтрализа-
цию алиасинга. Единственным представителем полного антиалиасинга является
субпиксельный антиалиасинг. Субпиксельный антиалиасинг применяется в
3D-ускорителях PVNG, Intel740, WARP 5, а также во всех профессиональных
OpenGL-ускорителях.
Субпиксельный антиалиасинг в PVNG и WARP 5 базируется на технике суперсэмп-
линга. Суперсэмплинг означает, что вся сцена рендерится каком-то большом
виртуальном разрешении, а затем сжимается до фактического разрешения. В
общем случае виртуальное и фактическое разрешения могут быть некратными.
Техника суперсэмплинга возможна из-за того, что эти ускорители используют
tile-based архитектуру. Ускорителю традиционной архитектуры потребовался бы
большой объем памяти (для виртуального разрешения 1600x1200 - более 8 MB).
Дело в том, что ускоритель tile-based архитектуры не работает с целым фрейм-
буфером, а с отдельными фрагментами (tiles). И все данные о субпикселах он
хранит только для фрагмента, который рендерится в данный момент.
В 3D-ускорителях серии Glint используется другой метод, основанный на хране-
нии маски. Рассмотрим случай, когда 1 пиксел разбивается на 16 (4x4) субпик-
селов (эта техника называется мультисэмплингом), а полигоны рендерятся
front-to-back (картинка снизу). Когда рендерится полигон не переднем плане
(П), субпикселы 2,3,4,7,8,12 окрашиваются в цвет переднего полигона. Причем
запоминается, какие субпикселы попали в передний полигон, то есть маска. Эта
маска проверяется когда рендерится задний полигон (З). Субпикселы 1,5,6,9
окрашиваются в цвет заднего полигона. Субпикселы 2,3, принадлежащие обоим
полигонам, не изменяют цвет и таким образом остаются с цветом переднего по-
лигона. В результате - никакого bleedingа.
_______________________
|13 |14 |15 |16 |
|_____|_____|_____|_____|
|9 З |10 |11 |12 П |
|_____|_____|_____|_____|
|5 З |6 З |7 П |8 П |
|_____|_____|_____|_____|
|1 З |2 ПЗ|3 ПЗ|4 П |
|_____|_____|_____|_____|
Обратная сторона такого антиалиасинга - это необходимость хранения маски для
каждого пиксела и требование сортировки полигонов front-to-back. Второе тре-
бование можно обойти, сохраняя z-координату для каждого субпиксела. Однако
хранить z-координаты для всех субпикселей на экране невозможно, так как это
требует гигантского объема видеопамяти. Поддержку субпиксельного антиалиа-
синга с z-буферизацией реализует техника аккумулятора. Суть его сводится к
тому, что обработка ведется последовательно для каждого пиксела и при этом
используется одна и та же память. Hедостаток: из-за требования последова-
тельной обработки невозможность аппаратного распараллеливания и как след-
ствие уменьшение производительности в число раз, равравное числу субпикселов
в пикселе. Hапример, субпиксельный антиалиасинг 4x4 снижает производитель-
ность в 16 раз, или другими словами увеличивает Fillrate в 16 раз.
|