Что такое 3д акселератор в видеокарте

Обновлено: 07.07.2024

Основные требования к графическому адаптеру Анатомия трехмерного мультимедиа-акселератора Управление шиной (bus mastering) Наложение текстур с коррекцией перспективы (perspective-correct texture mapping) Освещение (lighting) и затенение (shading) Прозрачность текстур (texture transparency) Аппаратный

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

Основные требования к графическому адаптеру

Если вы захотите купить новый графический адаптер и посетите компьютерный магазин, то с удивлением обнаружите, что с той поры, когда магических слов "SVGA 512 Кбайт" или "SVGA 1 Мбайт" было достаточно для принятия решения, многое изменилось. И первое, что вам бросится в глаза на красочных коробках новых графических плат, - это неизменное упоминание о трехмерной графике и символы "3D". Попробуем разобраться, для чего нужны трехмерные акселераторы, оправдана ли их цена и какой в конце концов выбрать.

Первое и самое главное, что необходимо определить, - это назначение нового графического акселератора. Профессиональные системы для создания трехмерной анимации и графики мы обсудим по итогам выставки "Аниграф'97", а сегодня поговорим о домашних мультимедиа-системах. Здесь необходимо учесть следующие критерии:

1. Достаточна ли скорость акселератора и насколько хорошо он работает в DOS и Windows 95?

2. Какие разрешения он поддерживает, какова его цветовая палитра и частота регенерации изображения?

3. Если речь идет о работе в среде DOS, то имеется ли поддержка стандарта VESA, а лучше VESA 2.0?

4. Если речь идет о работе в среде Windows 95, то имеются ли драйверы, поддерживающие стандарт DirectX, с качественным ускорением воспроизведения AVI- и MPEG-видео?

5. Имеются ли аппаратные функции ускорения трехмерной анимации? Каковы качество и скорость прорисовки текстур и трехмерных объектов?

Относительно поддерживаемых разрешений надо иметь в виду следующее. Практически все современные акселераторы работают в графических режимах до 1600x1200 (хотя столь высокие разрешения не нужны для домашних мультимедиа-систем и требуются в основном для работы с профессиональной графикой). Что касается цветовой палитры (разрядность цвета) и частоты регенерации изображения (развертка), то они зависят в первую очередь от объема памяти, а также от разрешения и возможностей RAMDAC. Минимум для современных условий - 2-Мбайт ОЗУ, но если вы хотите реально использовать функции трехмерного ускорения, то лучше сразу ориентироваться на 4 Мбайт, благо микросхемы памяти сейчас сильно упали в цене.

Другое простое, но важное правило заключается в том, что графическая плата должна соответствовать вашему монитору. Необходимо учитывать спецификации на поддерживаемое максимальное разрешение и частоту развертки. Не покупайте графический адаптер профессионального уровня, если ваш монитор не обеспечивает разрешение хотя бы 1280x1024 при частоте регенерации 75 Гц. В наши дни задача несколько упростилась, так как введены новые спецификации DDC (VESA Display Data Channel), позволяющие совместимым устройствам (монитору и графическому адаптеру) автоматически подстраиваться друг к другу и работать при наилучших комбинациях разрешения и частоты развертки. Но подбор оптимальной пары "монитор-адаптер" все равно остается за вами.

Современные мониторы могут работать при разрешении 1600x1200 с частотой регенерации до 85 Гц. Для большинства пользователей 15-дюймовых мониторов достаточно, чтобы система поддерживала режимы 800x600 и 1024x768 при 24-разрядной глубине цвета (16 млн. цветов) с частотой регенерации в 75-85 Гц. Это даст некоторую гарантию, что вы не испортите зрение, проводя долгие часы перед компьютером. Безусловно, современный монитор просто обязан иметь цифровые настройки. И позаботьтесь о том, чтобы дисплей соответствовал стандарту MPR-II, а еще лучше рекомендациям TCO-95.

Что касается поддержки графическим адаптером стандарта VESA, то здесь бывает несколько вариантов. Обычно VESA реализуется аппаратно в BIOS графической платы, хотя, к сожалению, большинство производителей до сих пор используют VESA-спецификации версии 1.2, несмотря на то, что уже давно вышла версия 2.0, работающая быстрее и поддерживающая больший выбор SVGA-режимов. Правда, всегда остается возможность загрузить соответствующий программный драйвер (UniVBE), но это может привести к несовместимости с некоторыми программами, пытающимися работать напрямую с графическим процессором. Поэтому, выбирая графический акселератор, особенно если в нем используется какой-нибудь новый тип графических процессоров, обязательно убедитесь, что он полностью аппаратно совместим со спецификациями VESA. Простейший тест для проверки совместимости - запустить игру Quake в среде DOS и посмотреть в разделе Video Modes, какие SVGA-режимы там задействуются. Если ваш компьютер имеет процессор Pentium, то проверьте, есть ли в игре режимы 800x600, 1024x768 и 1280x1024. Их наличие во многом зависит от производительности графического адаптера.

Вряд ли кто-то сомневается в том, что Windows 95 становится основной платформой для мультимедиа и игр. Поэтому любой современный графический акселератор должен быть оптимизирован для работы с Windows 95, т. е. не просто иметь в комплекте соответствующие драйверы, а гарантировать их высокую производительность при выполнении таких функций, как воспроизведение AVI- и MPEG-видео, прорисовка двухмерной и трехмерной анимации и графики, рендеринг трехмерных объектов и наложение на них текстур, совместимость со стандартом DirectX и ускорение его работы. Следует иметь в виду, что большинство производителей из стран Юго-Восточной Азии используют со своими платами базовые драйверы, разработанные производителем графического процессора, на котором построен акселератор. Неудивительно, что в итоге графические платы, одинаковые по набору используемых компонентов, значительно разнятся по производительности и стабильности работы драйверов (сравните, к примеру, рядовой графический акселератор, произведенный где-нибудь на Тайване и плату Crystal 3D компании miro, использующие один и тот же графический процессор - S3-Virge). К тому же через год вам могут понадобиться драйверы для новой версии ОС Windows 95 или Windows NT, и нет никакой гарантии, что вы к тому времени найдете производителя или хотя бы его узел в Internet.

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

Анатомия трехмерного мультимедиа-акселератора

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

Управление шиной (bus mastering)

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

Наложение текстур с коррекцией перспективы (perspective-correct texture mapping)

Трехмерные объекты строятся на основе полигонов, и, чтобы придать им реалистичность, необходимо накладывать на них текстуры - двухмерные графические фрагменты, имитирующие сложную структуру поверхности. Благодаря этой технологии можно создать не только каменные лабиринты замка, мраморные покои дворца или фактуру висящих на стенах гобеленов, но даже "оживить" полигональную модель человека (как это сделано в игре Virtual Fighter). В реальном мире при перемещении человека его точка зрения по отношению к конкретным объектам постоянно меняется. Чтобы успешно имитировать этот процесс в трехмерном мире, необходимо все время корректировать расположение текстур на поверхности объектов в зависимости от изменения точки зрения. В противном случае текстуры будут постоянно "сползать" или прорисовываться под неправильным углом, нарушая целостность изображения.

Освещение (lighting) и затенение (shading)

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

Прозрачность текстур (texture transparency)

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

Аппаратный Z-буфер

Использование Z-буфера (выделенного буфера в ОЗУ графической платы для хранения данных о трехмерных объектах) необходимо, когда два объекта в трехмерном мире пересекаются относительно вашей точки зрения. Эта функция позволяет определить, какая часть одного объекта заслонена другим, и соответственно как именно необходимо прорисовывать изображение. Для Z-буфера требуется определенный объем памяти в кадровом буфере, поэтому его применение даже при базовых разрешениях (320Ё240, 640Ё480) возможно только при наличии как минимум 4-Мбайт ОЗУ. Однако расходы на дополнительную память оправдывают себя, так как все больше игр используют Z-буфер (например, Quake, US Navy Fighters`97) и без него производительность существенно снижается (в отсутствие Z-буфера обсчет изображений осуществляется программно, через центральный процессор).

Оптимизированные текстуры (Palletized textures)

Многоуровневые текстуры (MIP mapping)

При нанесении текстур на полигоны их часто приходится растягивать или, наоборот, сжимать в зависимости от того, приближается объект или удаляется. Чтобы улучшить детализацию и качество изображения подобных масштабируемых объектов, используется метод создания многоуровневых текстур - MIP mapping. В этом случае каждая текстура состоит из трех фрагментов (или MIP-уровней) разного размера. MIP-уровень текстуры определяется размером полигона. Эта функция может быть программная или аппаратная, причем второй вариант реализутся с помощью разных алгоритмов и требует очень высокой производительности графической подсистемы, что в конечном счете сказывается на цене.

Использование "тумана" (Fogging)

Стараясь по возможности не загружать процессор, разработчики часто идут на некоторые уловки с целью снизить объем данных, необходимых для рендеринга определенных сцен. Один из наиболее распространенных приемов - это "напустить туману", т. е. "спрятать" часть изображения за пеленой (и, естественно, не прорисовывать ее). Этот эффект создается за счет смешения цветовых значений текстур с белым цветом. Такой трюк чаще всего используется при построении ландшафтов в авиасимуляторах. Аппаратная реализация этой функции может сэкономить до 10-15% ресурсов системы.

Смешивание текстур (Blending)

Смешивание - это визуальный эффект, который позволяет разработчику "комбинировать" текстуры перед нанесением их на объект, благодаря чему можно добиться очень интересных результатов и спецэффектов. Проще всего реализовывать эту функцию, задав степень прозрачности верхней текстуры и прорисовав только часть пикселов, составляющих ее изображение. Такой метод обычно используется в недорогих графических акселераторах. В профессиональных системах применяется процесс альфа-смешение (alpha blending), при котором считываются и обсчитываются с учетом перспективы значения обеих исходных текстур, что требует от графической подсистемы очень высокой производительности.

Итоги

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

Акселераторы можно разделить на две группы: использующие собственные оригинальные технологии ускорения трехмерной графики и оптимизированные для стандартных программных интерфейсов (API). Такая ситуация сложилась из-за отсутствия единого стандарта, и если в Windows 95 доминирующее положение теперь занимает Microsoft Direct3D, то в DOS эта проблема до сих пор не решена. Каждый производитель пишет собственные программные интерфейсы для реализации возможностей своего акселератора. Это значит, что если игра не написана специально для данного графического процессора, то она не сможет использовать встроенные в него специальные функции. Наибольшую поддержку со стороны создателей программного обеспечения получили следующие графические процессоры: 3Dfx Voodoo (компании 3Dfx Interactive), 3D Rage II (ATI Technologies), MGA-1064SG (Matrox), Verite (Rendition) и семейство Virge (S3). Имеется примерно два десятка игр для среды DOS, которые используют возможности данных акселераторов (специальные версии Mech Warrior II, Descent II, Quake, Destruction Derby II, Tomb Rider и др.). Но скорее всего, поддержка трехмерной акселерации в DOS так и не получит широкого распространения, потому что большинству разработчиков проще делать программы для Windows, ориентируясь на утвердившийся стандарт Direct3D и совместимое с ним оборудование. В таком случае акселераторы, использующие нестандартные трехмерные функции (такие как Nvidia NV1 и NV3, NEC PowerVR), вряд ли смогут реализовать их в Direct3D-играх. Наибольшего внимания заслуживают следующие платы.

Matrox Mystique. Прекрасно сбалансированный акселератор. Одинаково быстро работает и в Windows, и в DOS. Сделан на основе технологии своего знаменитого предшественника - MGA Millennium, поддерживает практически все перечисленные трехмерные функции, оптимизирован для DirectX. Отличные драйверы. Использует быструю SGRAM-память (2-4 Мбайт). Один из лучших продуктов по соотношению цена - качество.

miro Crystal 3D (Media 3D) и miro Crystal VR4000. Crystal 3D сделан на основе S3-Virge, поставляется с 2-Мбайт ОЗУ и является одним из самых недорогих трехмерных акселераторов. Crystal VR4000 использует более мощный процессор S3-Virge/VX и 4-Мбайт EDO VRAM. Функционально практически во всем совпадает с Diamond Stealth 3D 3000 и STB Velocity 3D, но, кроме того, подобно ATI 3D Pro Turbo PC2TV имеет встроенный преобразователь VGA-сигнала в телевизионный. При этом графические платы серии Crystal демонстрируют достаточно высокую производительность и стабильную работу драйверов.

Diamond Monster 3D. Использует графический процессор 3Dfx Voodoo Graphics, 4-Мбайт ОЗУ. Интересен в первую очередь тем, что не является самостоятельным графическим акселератором, а устанавливается вместе с любым SVGA-адаптером. Оптимизирован для трехмерных игр, поэтому по некоторым показателям существенно опережает своих "универсальных" коллег. В первую очередь это заслуга технологии 3Dfx Voodoo, которая является одной из наиболее перспективных и широко поддерживается производителями игр.


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

Изображения трехмерных объектов на экране монитора

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

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

Главной функцией программ создания трехмерной графики является преобразование графических абстрактных объектов в изображения на экране монитора компьютера. Обычно абстракт­ные объекты включают три составляющих:

Вершины. Задают местоположение объекта в трехмерном пространстве; само их по­ложение задается координатами X, Y и Z.

Примитивы. Это простые геометрические объекты, с помощью которых конструируют­ся более сложные объекты. Их положение задается расположением определяющих точек (обычно вершин). Для конструирования изображений трехмерных объектов при по­строении примитивов учитывается также эффект перспективы.

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

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

геометризация – это определение размеров, ориентации и расположения примитивов в пространстве и расчет влияния источников света.

растеризация - преобразование примитивов в пиксели на экране с нанесением нужных затенений и текстур.

Функции 3D-акселератора

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

Последовательность этапов создания трехмерных изображений

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

Преобразование и отображение. Программа преобразует трехмерные координаты в про­странстве (3D-координаты) в координаты на плоскости (2D-координаты) и использует тек­стуры. Работа в основном выполняется аппаратурой.

Описание этапов создания трехмерных изображений

Вычисление координат вершин. Процессор вычисляет позицию каждой вершины для каж­дого объекта в мировой системе координат.

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

Отбрасывание скрытых поверхностей. Изображать невидимые поверхности излишне. Процессор должен распознавать видимые поверхности и отбрасывать невидимые.

Вычисление координат проекций. Дисплей работает всего лишь как двумерное устройст­во, наподобие куска стекла, через которое вы смотрите на трехмерную сцену. Чтобы про­моделировать это в компьютере, нам нужно пересчитать координаты проекций вершин ка­ждого многоугольника из системы координат в пространстве в систему координат на плос­кости (поверхности экрана).

Закрашивание поверхностей. Как только мы получаем набор двумерных многоугольников, мы можем красить поверхность каждого из них теневой картой текстуры.

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

Большинство современных наборов микросхем 3D-акселераторов обеспечивают выполнение следующих функций растеризации:

Растровое преобразование. Определение того, какие пиксели экрана покрываются каждым из примитивов.

Обработка полутонов. Цветовое наполнение пикселей с плавными цветовыми пере­ходами между объектами.

Образование текстуры. Наложение на примитивы двухмерных изображений и по­верхностей.

Определение видимости поверхностей. Определение пикселей, покрываемых бли­жайшими к зрителю объектами.

Анимация. Быстрое и четкое переключение между последовательными кадрами дви­жущегося изображения.

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

Технологии трехмерной графики

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

Мипмэппинг

В некоторых приложениях, используется другой процесс, называемый отображением МIР(MIP- мипмэппинг – текстура нарисованная с несколькими уровнями детализации), при котором применяются различные версии одной и той же текстуры, содержащие разное количество деталей в зави­симости от расстояния до объекта в трехмерном пространстве. При отображении уда­ляющихся объектов уменьшается насыщенность, яркость цветов текстуры, степень ее детализации и увеличивается скорость ее обработки.

Затуманивание

Затуманивание – это имитация газа или тумана в играх.

Затенение Гуро

Затенение Гуро - интерполяция цветов для сглаживания неровностей окружностей и сфер.

Альфа-смешивание

Альфа-смешивание (alfa-blending – техника создания эффекта полупрозрачности) – это одна из первых технологий трехмерной графики, используемая для создания реалистичных объектов, например "прозрачного" дыма, воды и стекла. Многие другие функции, в которых нужно объединять пикселы, такие как прозрачные текстуры, мультитекстурирование, антиалиасинг, также используют альфа-смешение.

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

Антиалиасинг (аntialiasing) – метод борьбы с лестничным эффектом за счет сглаживания краев линий, полигонов и точек. Антиалиасинг делится на полный и краевой. Использование краевого антиалиасинга подразумевает, что игровые программы написаны соответствующим образом, и имеют возможность включения краевого антиалиасинга. Полный антиалиасинг может быть включен в любой игровой программе независимо от того поддерживает она антиалиасинг или нет.

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

Буфер шаблонов

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

Z-буферизация

Z-буферизация - изначально эта технология применялась в системах автоматизирован­ного проектирования. В двумерном мире объекты не могут располагаться впереди или позади друг друга, поэтому нет проблем с перекрытием. Но в трехмерном мире один объект может находиться впереди другого. Обычно световые лучи не проникают через непрозрачные объекты, поэтому мы видим все, что находится впереди, и не видим того, что позади.

Когда два объекта перекрываются, нужно выяснить, какой из них находится впереди, чтобы знать, какие пиксели объекта нужно показать на дисплее. Область, в которой пересекаются две фигуры, можно описать, указав для каждого пиксела фигур величину расстояния от него до условного заднего плана. Если дополнить обычную видеопамять картой этих расстояний для каждого пикселя, то будет всегда известно, нужно ли закрашивать конкретный пиксель: если значение расстояния (или значение Z) у пикселя меньше, значит, он позади и его не нужно закрашивать.

Эту идею можно реализовать аппаратно. Решение, состоит в создании параллельно с памятью дисплея другого массива памяти, называемого Z-буфером. Каждый раз при записи пикселя вычисляется его значение Z. При этом записываются только пиксели с большими значениями Z и обновляются расстояния в Z-буфере. Все остальные пикселы игнорируются. Таким образом, в каждой ячейке Z-буфера хранится расстояние по оси Z (вглубь экрана) для рисуемого пиксела, поэтому легко проверить, затенен ли новый записываемый пиксель или нет. К сожалению, Z-буфер требует дополнительной памяти, и, чем большая точность нужна для значений Z, тем больше памяти нужно для запоминания значений Z. Если используется разрешающая способность 640х400 и значения Z в виде 16-разрядных (двухбайтовых) чисел, то нужно иметь 0,5 мегабайта памяти только для Z-буфера. С помощью Z-буфера можно легко решить, какие объекты расположены на переднем плане, но при этом понадобится вдвое больший объем видеопамяти. Почти все современные 3D-ускорители имеют 24-х или 32-битную

Z-буферизацию, что в значительной мере повышает разрешающую способность и, как следствие, качество рендеринга.

Есть и другие решения проблемы со скрытыми поверхностями, но все они решаются путем компромисса между использованием памяти дисплея и дополнительной нагрузкой на процессор. Главный метод, применяемый для peшения проблем, заключается в том, чтобы упорядочить (отсортировать) вершины многоугольников по их координатам Z. Тогда сначала закрашиваются наиболее отдаленные объекты на экране, а наиболее близкие объекты накладываются на дальние. При этом возникают проблемы с поверхностями, наклонными к оси Z, так как расстояние пикселя от заднего плана может изменяться по мере его удаления от вершины. Решение такой проблемы требует еще более сложных вычислений.

Можно сократить работу процессора, проявив небольшую хитрость при упорядочении объектов по их координатам Z. Если какая-то поверхность полностью скрыта другими или повёрнута от наблюдателя, то ее совсем не нужно рисовать первой. А если мы исключили операцию рисования, то многоугольник не надо заполнять картой текстуры, в связи с этим уменьшается количество работы для процессора.

Улучшенные технологии наложения текстур

Для визуализации трехмерных изображений с высокой степенью детализации необходимо применять специальные методы наложе­ния текстур, которые устраняют нежелательные эффекты и делают сцены более реали­стичными.

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

Программное обеспечение для усиления эффекта трехмерности, изменяет вид текстур в зави­симости от положения примитива (т.е. расстояния до примитива и его наклона). Этот процесс называется перспективной коррекцией.

В реальном мире источник света обычно точечный, поэтому освещенность поверхности неравномерна, она увеличивается в направлении источника. Поверхности также имеют различную отражающую способность, что сказывается на используемых текстурах. Блестящая металлическая искривленная поверхность отразит точечный источник света в точке (точка, называется зеркальным отражением точки, в которой находится точечный источник света), местоположение которой определяется законами геометрической оптики. Математический аппарат для выполнения этой работы хорошо известен, но процессоры и графические видеоплаты должны иметь для выполнения этих функций достаточную производительность. Для экранных форматов с более высокой разрешающей способностью вычислений требуется еще больше (для разрешающей способности 640х400 требуется вчетверо больше вычислений, чем для 320х200). Подобные форматы не могли поддерживаться устаревшими моделями процессоров, поэтому они появились только с приходом быстродействующих процессоров типа Pentium. Для обновления экрана при быстром перемеще­нии каркасов и карт текстуры по экрану при высокой частоте кадров требуется не только большая скорость вычислений, но и высокая пропускная способность канала видеоплаты. Вот почему при рисовании трехмерных объектов необходима шина PCI или AGP (главное преимущество интерфейса AGP перед PCI в использовании режима DIME – Direct Memori Execution или, как говорят, AGP-текстурировании) на материнской плате и соответствующая видеопла­та с хорошей производительностью.

Рельефное текстурирование или наложение рельефа

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

Билинейная фильтрация

Билинейная фильтрация(bi-linear filtering - метод текстурирования, при котором выполняется интерполяция текстуры). Улучшение качества изображения небольших текстур, помещенных на большие многоугольники (достигается так называемая “размазанность текстур”). Эта технология устраняет эффект "блочности" текстур.

Трилинейная фильтрация

Трилинейная фильтрация(frii-linear filtering – более сложный метод текстурирования, при котором кроме интерполяции текстуры выполняется интерполяция между уровнями детализации текстуры). Комбинация билинейной фильтрации и так называемого наложения mip mapping (текстуры, имеющие разную степень детализации в зави­симости от расстояния до точки наблюдения). Использование трилинейной фильтрации значительно замедляет работу 3D-ускорителей, но формирует более качественное изображение, чем обычная билинейная с мипмэппингом.

Важной операцией в визуализации трехмерных объектов является рисование мно­гоугольника, так обычно представляются движущиеся объекты. Текстуры на многоугольниках придают объекту более реалистичный вид, сохраняя преимущества быстрого рисования трехмер­ных изображений. Рисование многоугольника напоминает процесс наложения текстурных карт на каркасные структуры, хотя и требует большей производительности. Сетка, покрывающая поверх­ность в трехмерном пространстве, в большинстве случаев составлена из треугольников, что сни­жает сложность программного (или аппаратного) обеспечения для вывода объекта на экран. Изме­няя размер треугольников, можно управлять степенью детализации объектов.

Поскольку в трехмерной графике наиболее важными операциями являются отображение (нанесение) текстуры и рисование многоугольников, то производительность программ и аппарату­ры для трехмерной графики измеряется, как правило, количеством пикселей текстуры и закрашен­ных многоугольников в секунду. Наиболее хорошо настроенным программным обеспечением трехмерной графики обладают некоторые

ЗD-игры, как правило, они показывают отличные ре­зультаты в тестах на трехмерную визуализацию.

Анизотропная фильтрация

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

Однопроходная или мультипроходная визуализация

В различных видеоадаптерах применяются разные технологии визуализации -однопроходная или мультипроходная визуализация.. В настоящее время практически во всех видеоадаптерах фильтрация и основная визуализация выполняются за один про­ход, что позволяет увеличить частоту кадров.

Аппаратное или программное ускорение

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

Программная оптимизация

Для применения всех свойств видеоадаптеров необходимо использовать специальное программное обеспечение, которое может активизировать эти функции. Несмотря на то, что в настоящее время существует несколько программных стандартов трехмерной графики (OpenGL, Glide и Direct 3D), производители видеоадап­теров создают видеодрайверы, которые поддерживают указанные стандарты.

Дизеринг

Дизеринг(dithering) – метод получения изображений в Hi-Color-режимах.

Рендеринг

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

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

Подавляющее большинство тех, кто хотел бы приобрести компьютер или хотя бы его модернизировать, делают это не из-за острой нужды в таких офисных программах, как Microsoft Word или Excel. В основном upgrade производится, чтобы вкусить все прелести современных технологий, используемых в новейших играх. Ведь именно они являются «пожирателями» всех ресурсов компьютера, и это нормально, поскольку разработчики ориентируются на самые новые комплектующие, позволяющие создавать феноменальные эффекты. По сути, весь этот процесс является бесконечной «гонкой», в которой производители «железяк» постоянно убегают от разработчиков игровых новинок. На чем же еще, как не на играх, можно протестировать свою персоналку? Если ее конфигурация соответствует (или еще лучше — немного опережает) системные требования современных игр, то можно быть на 100% уверенным, что любые офисные или графические приложения не загонят ваш компьютер в тупик.

Зачем нужен 3D-акселератор

На сегодняшний день функции современных видеоадаптеров довольно просты: они должны быстро выполнять работу с программами, моделирующими трехмерные сцены, а дело это вовсе не шуточное, поскольку при подобных действиях графический процессор должен обсчитать каждый кадр со скоростью несколько миллиардов элементарных операций в секунду. Для большей реалистичности смена игровых сцен, положения персонажей и их действий должна проходить при довольно высоких скоростях, что достигается быстрой быстрой сменой кадров — от 25 FPS (frame per second, кадр/с). А реалистичность трехмерного мира достигается путем использования 32-битных текстур с большим разрешением, которые накладываются на все присутствующие в сцене предметы.

Выбор акселератора — это выбор API

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

В чем же состоит проблема со стандартами? Наиважнейшим составляющим компонентом 3D-акселератора является набор графических микросхем (графического чипсета-процессора и микросхем окружения), на основе которого и создается некая модель платы-ускорителя. Взаимодействие «ускоряемой» программы с тем или иным набором микросхем осуществляется с помощью драйверов и специальных графических API-библиотек (Application Programming Interface). Подобные API-библиотеки позволяют реализовать в играх трехмерные эффекты и осуществлять взаимодействие программного обеспечения определенным набором микросхем. Совместимость драйверов 3D-акселератора с такими библиотеками на сегодняшний день во многом определяет целесообразность приобретения той или иной модели.

В результате определенные игры могут «ускоряться» только при взаимодействии с конкретными моделями акселераторов. Это обусловлено несовместимостью драйверов некоторых плат с графическими библиотеками, которые использовались при создании отдельных игр. Согласитесь, что, купив модель 3D-ускорителя, драйверы которой не будут работать с библиотекой, используемой в вашей любимой игре, вы просто-напросто выбросите деньги на ветер!

Из наиболее популярных на сегодняшний день графических библиотек можно назвать Direct3D, OpenGL и небезызвестную в недавнем прошлом Glide API. Их достоинства и недостатки следует рассмотреть подробнее.

Direct3D

Драйверы Direct3D, которые входят в состав библиотеки Microsoft DirectX, в настоящее время можно запросто назвать «стандартом всех стандартов» в игровой индустрии. Как и любая другая графическая библиотека такого класса, Direct3D представляет собой своего рода связующее звено между видеоакселератором и приложением. Набор DirectX входит в стандартный комплект поставки Windows 9х и Windows 2000, а также поставляется многими производителями программного и аппаратного обеспечения вместе с видеоадаптерами и дистрибутивами приложений.

На сегодняшний день в большом количестве игр используется Direct3D, так что графический ускоритель, драйверы которого несовместимы с этой библиотекой, практически не имеет шансов завоевать внимание значительного числа пользователей. Однако, по мнению многих экспертов, эта библиотека крайне неудобна и не предоставляет таких богатых возможностей, как альтернативное решение — OpenGL. Вместе с тем Microsoft постоянно совершенствует DirectX, добавляя в Direct3D новые функции и оптимизируя эту библиотеку для достижения максимальной производительности. И все-таки скорость генерации трехмерных изображений c помощью Direct3D, как и легкость программирования, уступает одному из ведущих стандартов 3D-библиотек — OpenGL (разработка Silicon Graphics).

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

OpenGL

Графическая библиотека OpenGL была разработана компанией SGI, знаменитой своими высокопроизводительными графическими станциями. Приложения, работающие на платформе SGI, используют для генерации трехмерных сцен графическую библиотеку с незатейливым названием GL (Graphics Library). Несколько лет назад SGI открыла этот стандарт для свободного лицензирования, соответствующим образом изменив его название на OpenGL. OpenGL переводится как открытая графическая библиотека (Open Graphics Library). Программы, написанные с помощью OpenGL, можно с одинаковым успехом переносить практически на любые платформы — будь то графическая станция или суперкомпьютер. Если устройство поддерживает какую-то функцию, то она выполняется аппаратно, а если нет, то библиотека выполняет ее программно.

OpenGL — это очень мощная, легкая в использовании, хорошо отлаженная и проверенная графическая библиотека. Большое количество приложений (в основном графические пакеты для создания трехмерной графики) написано с использованием OpenGL. Еще один козырь этой библиотеки в том, что она поддерживается большим количеством платформ — начиная с обыкновенных IBM-совместимых персоналок и заканчивая RISC-машинами самого высокого класса. Благодаря этому приложения, использующие OpenGL, можно без особых усилий перенести практически на любую платформу.

Реально же Direct3D и OpenGL — библиотеки, предназначенные для одних и тех же целей. В настоящий момент существует достаточное количество игр, способных работать с OpenGL.

Glide API

Кроме OpenGL и Direct3D, существует (пока еще) Glide API, разработанная компанией 3Dfx, которая некогда являла собой образец рыночного успеха, а графический API Glide, продвигаемый этой компанией, был самым лучшим и самым распространенным. За акселераторами на базе решений 3dfx было не угнаться никому из конкурентов, и 50 fps в 800Ѕ600 при 16-битном цвете в Unreal казались мечтой и стоили бешеных денег. Это было давно. Очень давно. Сейчас же мы смотрим на этот своеобразный «культ вуду» лишь как на очередной эпизод компьютерной истории. Glide API предназначена для использования именно в игровых программах: некоторые функции, встроенные в эту библиотеку, поддерживаются только в нестандартных расширениях OpenGL. Поскольку Glide API была специально создана для наборов микросхем 3Dfx, она на 100% использовала все заложенные в них возможности и позволяет создавать необычайно реалистичные эффекты при достаточно высоком быстродействии. Glide API не является общепринятым стандартом — она не поддерживалась никакими другими компаниями, кроме самой 3Dfx. Проблемы с настройкой, присущие приложениям, использующим OpenGL, не обошли и Glide API — 3Dfx не удалось обеспечить полной совместимости старого набора микросхем. В данный момент среди библиотек трехмерной графики существует два реальных конкурента: Direct3D, созданная и продвигаемая корпорацией Microsoft, и OpenGL, разработанная компанией SGI. Microsoft, хотя и поддерживает OpenGL, всячески проталкивает свою Direct3D, предлагая ее в качестве идеального решения для разработки мультимедийных приложений. Разработчики игр относятся к API довольно противоречиво. Некоторые утверждают, что Open GL прекратит свое существование в недалеком будущем и на ее месте будет почивать на лаврах знаменитая Direct3D от Microsoft. Остальные разработчики утверждают, что Direct3D ну очень уж громоздкая, и пророчат ей скорую гибель. Но с выходом новой версии Direct3D 8.0 стандарту OpenGL придется весьма туго. Хочется верить, что OpenGL все-таки выживет, а место на кладбище игровых стандартов, где похоронен Glide от 3dfx, еще долго останется вакантным.

3D Pipeline (3D конвейер) – последовательный процесс обработки 3D графики, условно разделяемый на три стадии – тесселяцию (tessellation), то есть, создание структурированной модели объекта, геометрическую стадию, и процесс рендеринга.

На стадии тесселяции создаётся описание модели объекта, которое затем конвертируется в определённый набор полигонов (polygons, то есть, многоугольников). Геометрическая стадия подразумевает многочисленные настройки, условия преобразования, освещения и пр. На стадии рендеринга – наиболее важного и критичного относительно качества финального результата, 3D изображение, сформированное из полигонов на геометрической стадии, преобразуется в двухмерное изображение для вывода экран дисплея.

AGP - Accelerated Graphics Port, ускоренный графический порт - специальная 32-битная шина, разработанная для подключения видеокарт. Современные видеокарты чаще всего выпускаются под слот PCI-Express, однако AGP-карты до сих пор широко распространены в силу огромного количества ранее выпущенных платформ под этот тип интерфейса. В своё время шина AGP заменила собой шину PCI, поскольку скорость обмена данными с центральным процессором по шине AGP (66 МГц) вдвое превышает PCI (33 МГц).

На практике версия шины AGP 1x быстро уступила место AGP 2x ввиду недостаточной пропускной способности; затем дебютировани версии AGP 4x и AGP 8x - с пропускной способностью до 2 Гб/с.В процессе совершенствования шины AGP 4x был изменён уровень напряжения питания - вместо 3,3 В начали появляться 1,5 В карты AGP 4x, а в последствии и AGP 8x.

Accelerator (Акселератор) - в общем случае карта или плата, расширяющая возможности компьютера, не обязательно графическая - бывают, например, акселлераторы криптообработки, звуковые, декодирующие. Обычно акселератор является аппаратным решением, самостоятельно обрабатывающим какую-либо информацию, что позволяет более оперативно обработать данные и разгрузить ресурсы центрального процессора. Наиболее популярными нынче можно считать 2D/3D видеоакселераторы, поэтому употребление термина "акселератор" в большинстве случаев по умолчанию подразумевает что речь идёт о видеокарте, если не оговорено что-то другое.

Algorithmic Procedure Texturing (Алгоритмическое процедурное текстурирование) - способ рендеринга изображений с виртуально бесконечной детализацией. Слово "процедурное" означает последовательность действий; текстурирование - это в общем смысле создание изображения с многочисленными свойствами.

Alpha-Blending (Альфа-смешение) - технология создания прозрачных или полупрозрачных объектов или слоёв изображения, что на практике оздачает придание изображению или отдельному пикселю специального атрибута, определяющего его финальный вид: сплошной (не пропускающий свет), невидимый (прозрачный) или полупрозрачный. Текстура, наносимая на объект, может содержать помимо информации о цвете (Red,Green,Blue), информацию о прозрачности (Alpha). В зависимости от величины коэффициента Alpha разные части объекта приобретают различную степень прозрачности, что на практике означает различную степень смешения цвета переднего плана с цветом фона. Добавление информации альфа-смешения в характеристики подготовленных к рендерингу полигонов позволяет создавать такие интересные эффекты и поверхности как стекло, вода и другие виртуально прозрачные элементы. Как правило смешивание цветов перекрываемого объекта и полупрозрачного объекта (с альфа прозрачностью) происходит по формуле (alpha) * (значение цвета объекта с прозрачностью) + (alpha-1) * (значение цвета покрываемого объекта) при 0

Читайте также: