Технологии повышения реалистичности трехмерного изображения
Для повышения реалистичности отображения наложенных на полигоны текстур используются различные технологии:
· сглаживания (Anti-aliasing);
· MIP – mapping;
· текстурной фильтрации.
Технология сглаживания (Anti-aliasing)
Anti-aliasing – это технология, использующаяся в обработке изображений с целью устранения эффекта «ступенчатых» краев (Aliasing) объектов. При растровом методе формирования изображения оно состоит из пикселей. Из-за того, что пиксели имеют конечный размер, на краях трехмерных объектов можно различить так называемую лестницу или ступенчатые края. Чтобы минимизировать эффект лестницы проще всего увеличить разрешение экрана, уменьшив тем самым размер пикселей. Но этот путь не всегда возможен. Если избавиться от ступенчатого эффекта за счет повышения разрешения монитора нельзя, можно использовать технологию Anti-aliasing, которая позволяет визуально сгладить эффект лестницы. Наиболее часто используемая для этого техника – это создание плавного перехода от цвета линии или края к цвету фона. Цвет точки, лежащей на границе объектов, определяется как среднее значение цветов двух граничных точек.
Существует несколько базовых технологий Anti-aliasing. Наиболее качественный результат впервые дала технология полноэкранного сглаживания FSAA (Full Screen Anti-Aliasing). В некоторых литературных источниках эта технология носит название SSAA. Суть данной технологии заключается в том, что процессор рассчитывает кадр изображения в гораздо большем разрешении, чем разрешение экрана, а затем при выводе на экран усредняет значения группы пикселей до одного; количество усредненных пикселей соответствует разрешению экрана монитора. Например, если кадр с разрешением 800х600 сглаживается с помощью FSAA, изображение будет рассчитываться в разрешении 1600х1200. При переходе к разрешению монитора цвета четырех рассчитанных точек, соответствующих одному пикселю монитора, усредняются. В результате у всех линий появляются плавные цветовые границы переходов, что визуально устраняет эффект лестницы.
FSAA делает много лишней работы, загружая графический процессор, сглаживая не границы, а изображение целиком, что является его главным недостатком. Для устранения данного недостатка был разработан более экономная технология - MSSA.
Суть технологии MSSA аналогична технологии FSAA, но над пикселями, находящимися внутри полигонов, никаких расчетов не проводится. Для пикселей на границах объектов в зависимости от уровня сглаживания рассчитывается 4 и более дополнительных точек, по которым и определяется итоговый цвет пикселя. Эта технология наиболее распространена в настоящее время.
Известны индивидуальные разработки производителей видеоадаптеров. Например, NVIDIA разработала технологию Coverage Sampling (CSAA), которая поддерживается только видеоадаптерами GeForce, начиная с 8-ой серии (8600 – 8800, 9600 – 9800). Компания ATI ввела в графический процессор R520 и все последующие адаптивное сглаживание ААА (Adaptive Anti-Aliasing).
Технология MIP mapping
Технология используется для улучшения качества текстурирования трехмерных объектов. Для придания реалистичности трехмерному изображению необходимо учитывать глубину сцены. По мере удаления от точки наблюдения накладываемая текстура должна выглядеть всё более размыто. Поэтому при текстурировании даже однородной поверхности чаще всего используется не одна, а несколько текстур, что позволяет корректно учитывать перспективные искажения трехмерного объекта.
Например, необходимо изобразить брусчатую мостовую, уходящую вглубь сцены. Если попытаться использовать всего одну текстуру по всей длине, то по мере удаления от точки наблюдения может появиться рябь или просто один сплошной цвет. Дело в том, что в этой ситуации сразу несколько пикселей текстуры (текселов) попадает в один пиксель на мониторе. Возникает вопрос: в пользу какого одного тексела сделать выбор при отображении пикселя?
Эта задача и решается с помощью технологии MIP mapping, которая подразумевает возможность применения набора текстур с различной степенью детализации. На базе каждой текстуры создается набор текстур с меньшим уровнем детализации. Текстуры такого набора называются MIP – картами (MIP map).
В простейшем случае наложения текстуры для каждого пикселя изображения определяется соответствующая ему MIP – карта согласно таблицы детализации LOD(Level of Detail). Далее из MIP – карты выбирается только один тексел, цвет которого присваивается пикселю.
Технологии фильтрации
Как правило, технология MIP mapping используется в сочетании с технологиями фильтрации, призванными исправить артефакты MIP –текстурирования. Например, при удалении объекта всё дальше от точки наблюдения происходит переход от низкого MIP map-уровня к более высокому MIP map-уровню. В момент нахождения объекта в переходном состоянии от одного MIP map-уровня к другому появляется особый тип ошибок визуализации: явно различимые границы перехода от одного MIP map-уровня к другому.
Идея фильтрации состоит в том, что цвет пикселей объекта рассчитывается по соседним точкам текстуры (текселам).
Первым способом фильтрации текстур был так называемый point sampling, который в современной 3D-графике не используется. Следующей была разработана билинейная фильтрация. При билинейной фильтрации для отображения точки поверхности берется взвешенное среднее значение четырех смежных текстурных пикселей. При такой фильтрации качество медленно вращающихся или медленно двигающихся объектов с гранями (типа куба) низкое (размытые грани).
Более высокое качество дает трилинейнаяфильтрация, при которой для определения цвета пикселя берётся среднее значение цвета восьми текселов, по четыре из двух соседних структур, и в результате семи операций смешивания определяется цвет пикселя.
С ростом производительности графических процессоров была разработана анизотропная фильтрация, которая успешно применяется до сих пор. При определении цвета точки она использует большое количество текселей и учитывает положение полигонов. Уровень анизотропной фильтрации определяется числом текселей, которые обрабатываются при вычислении цвета пикселя: 2х (16 текселей), 4х (32 текселя), 8х (64 текселя), 16х (128 текселей). Данная фильтрация обеспечивает высокое качество выводимого движущегося изображения.
Все эти алгоритмы реализует графический процессор видеокарты.
Интерфейс прикладного программирования (API)
Для ускорения выполнения этапов 3D-конвейера ускоритель трехмерной графики должен обладать определенным набором функций, т.е. аппаратно, без участия центрального процессора, производить операции, необходимые для построения 3D-изображения. Набор этих функций является важнейшей характеристикой 3D-акселератора.
Поскольку 3D-акселератор имеет собственную систему команд, его эффективное применение возможно лишь в том случае, когда прикладная программа использует эти команды. Но, поскольку различных моделей 3D-акселераторов много, так же как и различных прикладных программ, формирующих объемные изображения, возникает проблема совместимости: невозможно написать такую программу, которая бы одинаково хорошо использовала низкоуровневые команды различных акселераторов. Очевидно, что и разработчики прикладного программного обеспечения и производители 3D-акселераторов нуждаются в специальном пакете служебных программ, который выполняет следующие функции:
эффективное преобразование запросов прикладной программы в оптимизированную последовательность низкоуровневых команд 3D-акселератора с учетом особенностей его аппаратного построения;
программную эмуляцию запрошенных функций, если в используемом акселераторе отсутствует их аппаратная поддержка.
Специальный пакет служебных программ для выполнения этих функций называется интерфейсом прикладного программирования (ApplicationProgram Interface = API).
API занимает промежуточное положение между высокоуровневыми прикладными программами и низкоуровневыми командами акселератора, которые генерируются его драйвером. Использование API избавляет разработчика прикладной программы от необходимости работать с низкоуровневыми командами акселератора, облегчая процесс создания программ.
В настоящее время в 3D существует несколько API, области применения которых довольно четко разграничены:
DirectX, разработанный фирмой Microsoft, используемый в игровых приложениях, работающих под управлением операционных систем Windows 9X и более поздних версий;
OpenGL, используемый в основном в профессиональных приложениях (системы автоматизированного проектирования, системы трехмерного моделирования, тренажеры-симуляторы и т.п.), работающих под управлением операционной системы Windows NT;
Фирменные (native – родные) API, создаваемые производителями 3D-акселераторов исключительно для своих Chipset с целью наиболее эффективного использования их возможностей.
DirectX является жестко регламентированным, закрытым стандартом, который не допускает изменений до выхода в свет своей очередной, новой версии. Это, с одной стороны, ограничивает возможности разработчиков программ и особенно производителей акселераторов, однако значительно облегчает пользователю настройку программного и аппаратного обеспечения для 3D.
В отличие от DirectX, API OpenGL построен на концепции открытого стандарта, имеющего небольшой базовый набор функций и множество расширений, реализующих более сложные функции. Производитель Chipset 3D-акселератора обязан создать BIOS и драйверы, выполняющие базовые функции Open GL, но не обязан обеспечивать поддержку всех расширений. Это порождает ряд проблем, связанных с написанием производителями драйверов для своих изделий, которые поставляются как в полном, так и в усеченном виде.
Полная версия OpenGL-совместимого драйвера носит название ICD (Installable Client Driver – драйвер приложения – клиента). Он обеспечивает максимальное быстродействие, т.к. содержит низкоуровневые коды, обеспечивающие поддержку не только базового набора функций, но и его расширений. Естественно, что с учетом концепции OpenGL создание подобного драйвера исключительно сложный и трудоемкий процесс. Это одна из причин более высокой стоимости профессиональных 3D-акселераторов по сравнению с игровыми.
Усеченная версия OpenGL-совместимого драйвера называется MCD (Mini Client Driver). Он содержит оптимизированный код лишь для некоторых этапов 3D-конвейера, поэтому акселератор под управлением работает медленнее. Как правило, драйверы типа MCD поставляются с первыми версиями новых ускорителей, а полноценные ICD появляются позже.
Интерфейсы видеосистемы