On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru








 

Антиалиасинг

Алиасинг - результат сэмплинга,  то есть преобразования непрерывного изобра-
жение в дискретное. Алиасинг ухудшает качество изображения, вызывая разнооб-
разные  артефакты:  лестничный  эффект,  муар  и  шум.  Антиалиасинг  (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 раз.
Назад       Содержание       Вперёд