И мир стал трехмерным часть 2
 

Графический ускоритель

Проследить развитие рынка графических подсистем начиная с момента изобретения мультимедиа не так уж тяжело. Первым появился стандарт VGA, разработанный в 1987 году корпорацией IBM. Он дал возможность производителям графических плат предложить потребителям более высокие разрешения (до 640 х 480 пикселов) и увеличить число показываемых на экране цветов. Рост популярности операционной системы Windows породил сильный спрос на аппаратное ускорение двумерной графики, чтобы разгрузить от выполнения графических расчетов центральный процессор компьютера (CPU), а также повысить общее быстродействие графического пользовательского интерфейса (GUI).

Операционная система Windows и написанные для нее приложения нуждались в как можно большем времени работы процессора, а это замедляло графику. Производители были вынуждены добавить в свои карты функции 2D-графики, чтобы помочь окнам прорисовываться на экране быстрее, обеспечить за счет аппаратной реализации курсора более ровное и быстрое перемещение указателя, с гораздо более высокой частотой заполнять заданным цветом области на экране. Так появились чипы Accelerated VGA (AVGA), известные также как ускорители для Windows, или GUI-ускорители. Спустя немного времени Windows-ускорители стали основным графическим продуктом на рынке массовых компьютерных систем.

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

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

Разработка графических подсистем выполняется по сравнительно простому шаблону - принимаются в расчет, во-первых, геометрические характеристики компьютерных экранов, во-вторых, особенности графического интерфейса GUI и, в-третьих, дизайн графических чипов. Ранний стандарт VGA с разрешением 640 х 480 пикселов соответствовал 14-дюймовым мониторам, наиболее распространенным в компьютерах того времени. По мере того как дисплеи становились больше, увеличивалось и разрешение. Сегодня перспективными считаются 17-дюймовые мониторы, для эффективного заполнения экрана в которых оптимальным является изображение размером 1,024 х 768 пикселов.

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

Игровые энжины

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

Хотя на сегодняшнем рынке существует множество трехмерных интерфейсов прикладного программирования (3D API) и все больше разработчиков обращается к предложенному Microsoft для Windows 95 интерфейсу Direct3D, некоторые компании все еще продолжают создавать свои собственные игровые 3D API-интерфейсы, или "энжины". Оригинальные и специализированные игровые энжины - один из путей, помогающих разработчикам добиться действительно впечатляющих результатов в графическом программировании, выжать как можно больше из своей разработки.

Больше всего разработчиков игровых программ устроил бы прямой доступ к аппаратным компонентам компьютера. Этим путем обычно идут крупнейшие компании - разработчики игровых программ, создавшие собственные энжины, оптимально работающие совместно с аппаратными ускорителями 3D-графики. Компания Sega выпустила игру Virtua Fighter, Papyrus создала NASCAR Racer, а Interplay завоевала массу поклонников игрой Descent II - это примеры настоящей удачи в области 3D-графики, основанной, конечно, на богатом опыте. Каждая из упомянутых игр обладает собственным уникальным энжином, который обеспечивает максимально эффективную поддержку наиболее распространенных плат графических 3D-ускорителей. И этот список можно продолжить...

Бескомпромиссная графика

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

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

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

Функции 3D-графики

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

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

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

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

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

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

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

Процесс, называемый MIP-текстурированием (от Multiple In Picture), требует хранения в памяти нескольких вариантов одной и той же текстуры, но разного размера. За счет того, что имеется несколько разрешений для одной текстурной карты, 3D-энжин способен быстро определить, какую текстуру из набора нужно применить для окрашивания объекта в зависимости от того, насколько далеко он от вас расположен в данный момент. Вместо того чтобы каждый раз пересчитывать растянутые или сжатые изображения текстуры и натягивать их на поверхность объекта по мере того, как он приближается или удаляется в кадре, выбирается заранее просчитанная и готовая к немедленному использованию текстура, на что уходит значительно меньше времени и вычислительных ресурсов.

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

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

Функция сглаживания (anti-aliasing) удаляет из изображения ступенчатость. Посмотрите на рисунок 5. Как видите, связанные со сглаживанием вычисления выполняются на уровне отдельных пикселов. Если данная функция отсутствует у аппаратного графического ускорителя, это может остаться незамеченным, но когда она реализована, не заметить улучшения качества картинки просто невозможно. Повышенное качество сглаженных изображений позволяет пользователям преодолеть недоверие к картинке на экране монитора и полностью погрузиться в игру.

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

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

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

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

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

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

Каждый кадр требует времени, чтобы среагировать на вводимые пользователем команды, обсчитать и выдать на экран 2D- и 3D-графику, проиграть звук и отработать логику программы. Чем реалистичнее игра, чем ближе к реальному времени она работает, тем выше должна быть частота кадров. Более высокая частота кадров для пользователя выражается в лучшей чувствительности программы к его действиям и более реалистичном изображении на экране.

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

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

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

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

Выводы

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

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

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

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

Рис. 3. 3D-энжин игры DescentII.

Рис. 4. Пример перспективной визуализации
трехмерной сцены.

Рис. 5. Ступенчатая и сглаженная линии
(anti-aliasing).

 
Автор: Роман Соболенко
 
Оригинал статьи: http://woweb.ru/publ/46-1-0-564