Видеоадаптеры
Вторым после монитора основным компонентом видеосистемы PC является видеоадаптер. Иногда его называют видеокартой, но мы будем употреблять первый, более строгий, по нашему мнению, термин. Основная функция видеоадаптера — преобразование цифрового сигнала, циркулирующего внутри PC, в аналоговые электрические сигналы, подаваемые на монитор. Другими словами, видеоадаптер выполняет роль интерфейса между компьютером и устройством отображения информации (монитором).
Интерфейс между компьютером и устройством отображения — было единственным назначением первых видеоадаптеров (MDA, CGA, HGC, EGA, VGA). Однако по мере развития PC на видеоадаптер стали возлагаться дополнительные обязанности: аппаратное ускорение 2D- и ЗD -графики, обработка видеосигналов, прием телевизионных сигналов и многое другое. Для решения этих задач в состав видеоадаптера начали включать дополнительные элементы, в результате чего современный видеоадаптер, часто именуемый Super VGA или SVGA, превратился в мощное универсальное графическое устройство. Однако по сложившейся традиции такие интегрированные изделия по-прежнему называются видеоадаптерами.
Видеоадаптер является исключительно важным элементом видеосистемы, поскольку определяет следующие ее характеристики:
□ максимальное разрешение и частоты разверток (совместно с монитором);
□ максимальное количество отображаемых оттенков цветов;
□ скорость обработки и передачи видеоинформации, определяющую производительность видеосистемы и PC в целом.
В самом общем случае видеоадаптер включает в себя следующие основные элементы:
□ видеопамять, предназначенную для хранения цифрового изображения;
□ набор микросхем {Chipset), реализующий все необходимые функции обработки цифрового изображения и преобразования его в видеосигнал, подаваемый на монитор;
□ схемы интерфейса с шиной ввода/вывода PC;
□ ROM Video BIOS, в котором хранится расширение BIOS, предназначенное для управления видеосистемой PC (для видеоадаптеров EGA, VGA, SVGA);
□ цифро-аналоговый преобразователь, выполняющий преобразование цифровых данных, хранящихся в видеопамяти, в аналоговый видеосигнал (для видеоадаптеров VGA и SVGA);
□ тактовые генераторы.
Помимо видеосигнала, видеоадаптер формирует сигналы горизонтальной и вертикальной синхронизации, используемые при формировании растра на экране монитора, — сигналы H-Sync и V-Sync. Параметры этих сигналов должны соответствовать возможностям монитора, используемого совместно с видеоадаптером.
Кратко логику работы видеоадаптера можно изложить следующим образом.
CPU формирует цифровое изображение в виде матрицы NxM п-разрядных чисел и записывает его в видеопамять. Участок видеопамяти, отведенный для хранения цифрового образа текущего изображения (кадра), называется кадровым буфером, или фрейм-буфером (от англ. frame buffer— кадровый буфер). Видеоадаптер последовательно считывает (сканирует) содержимое ячеек кадрового буфера и формирует на выходе видеосигнал, уровень которого в каждый момент времени пропорционален значению, хранящемуся в отдельной ячейке. Сканирование видеопамяти осуществляется синхронно с перемещением электронного луча по экрану ЭЛТ. В результате яркость каждого пиксела на экране монитора оказывается пропорциональной содержимому соответствующей ячейки памяти видеоадаптера. По окончании просмотра ячеек, соответствующих одной строке растра, видеоадаптер формирует импульсы строчной синхронизации H-Sync, инициирующие обратный ход луча по горизонтали, а по окончании сканирования кадрового буфера — сигнал V-Sync, вызывающий движение луча снизу вверх. Таким образом, частоты строчной и кадровой развертки монитора определяются скоростью сканирования содержимого видеопамяти, т. е. видеоадаптером. Очевидно', что блок разверток монитора должен поддерживать эти частоты. В противном случае изображение на экране монитора будет нестабильным или вовсе отсутствовать.
В зависимости от режима работы видеоадаптера видеосистема PC может обеспечивать различные разрешение и палитру. Совокупность всех параметров, характеризующих режим работы видеоадаптера (разрешение, палитра, частоты строчной и кадровой развертки, способ адресации участков экрана и др.), называется видеорежимом.
Примечание
Если указаны только некоторые параметры, например разрешение, то будем говорить просто о режиме работы, не уточняя значение опущенных параметров. При таком подходе под термином "режим" может подразумеваться несколько различных видеорежимов, имеющих один общий параметр.
Все видеорежимы делятся на графические и текстовые. Различие в режимах существенно только для видеоадаптера, поскольку в каждом из них используются разные механизмы формирования видеосигнала. Что же касается монитора, то в обоих режимах он работает одинаково.
В графическом режиме содержимое каждой ячейки кадрового буфера (матрицы NxM n-разрядных чисел) является кодом цвета соответствующего пиксела экрана. Разрешение экрана при этом также равно NxM. Адресуемым элементом экрана является минимальный элемент изображения — пиксел. По этой причине графический режим называют также режимом АРА (All Point Addressable — Все точки адресуемы). Иногда число п называют глубиной цвета. При этом количество одновременно отображаемых цветов равно 2n, а размер кадрового буфера, необходимый для хранения цветного изображения с разрешением NxM я глубиной цвета п, составит NxMxn бит.
Графический режим является основным режимом работы видеосистемы современного PC, поскольку в этом режиме на экран монитора можно вывести текст, рисунок, фотографию, анимацию или видеосюжет. В частности, в таком режиме работает видеосистема PC под управлением Windows. Однако для эффективной работы в графическом режиме требуется значительный объем видеопамяти и высокопроизводительный компьютер, поэтому данный режим стал основным только с появлением PC на базе CPU Intel 80386 и 80486.
В текстовом (символьном) режиме, как и в графическом, изображение на экране монитора представляет собой множество пикселов и характеризуется разрешением NxM. Однако все пикселы разбиты на группы, называемые знакоместами, или символьными позициями (Character positions, или Character boxes, — Символьные ячейки) размером pxq. В каждом из знакомест может быть отображен один из 256-и символов. Таким образом, на экране умещается M/q = М/ символьных строк по N/p = Nt символов в каждой. Типичным текстовым режимом является режим 80x25 символов.
Изображение символа в пределах каждого знакоместа задается точечной матрицей (dot matrix). Размер матрицы зависит от типа видеоадаптера и текущего видеорежима. Чем больше точек используется для отображения символа, тем выше качество изображения и лучше читается текст. Точки матрицы, формирующие изображение символа, называют передним планом (foreground), остальные — задним планом, или фоном (background). В качестве примера на рис. 15.1 показана символьная матрица 9x16 пикселов.
Если считать, что темной клетке соответствует логическая единица, а светлой — логический ноль, то каждую строку символьной матрицы можно представить в виде двоичного числа. Следовательно, графическое изображение символа можно хранить в виде набора двоичных чисел. Для этой цели используется специальное ПЗУ, размещенное на плате видеоадаптера. Такое ПЗУ называют аппаратным знакогенератором {Hardware character generator). Совокупность изображений 256 символов называется шрифтом. Аппаратный знакогенератор хранит шрифт, который автоматически используется видеоадаптером сразу же после включения компьютера (обычно это буквы английского алфавита и набор специальных символов). Адресом ячейки знакогенератора является порядковый номер символа.
Рис. 15.1. Схема представления символа "А" в текстовом режиме в матрице 9x16 и ячейка знакогенератора
Для кодирования изображения символа на экране используется два байта: один — для задания номера символа, второй — для указания атрибутов символа (цвета символа и фона, подчеркивания, мигания, отображения курсора). Если на экране имеется Nt x Mt знакомест, то объем видеопамяти, необходимый для хранения изображения, составит NtxMtx2 байт. Эту область видеопамяти называют видеостраницей {video page). Видеостраница является аналогом кадрового буфера в графическом режиме, но имеет значительно меньший объем. В наиболее распространенном текстовом режиме (80x25 символов) размер видеостраницы составляет 4000 байт, в режиме 40x25 — 2000 байт. На практике для удобства адресации под видеостраницу отводят 4 Кбайт = 4096 байт и 2 Кбайт = 2048 байт соответственно, при этом "лишние" байты (96 и 48) не используются.
Главная особенность текстового режима заключается в том, что адресуемым элементом экрана является не пиксел, а знакоместо. Иными словами, в текстовом режиме нельзя сформировать произвольное изображение в любом месте экрана — можно лишь отобразить символы из заданного набора, причем только в отведенных символьных позициях. Другим существенным ограничением текстово т» режима является узкая цветовая палитра — в данном режиме может быть t гображено не более 16-и цветов.
Как следует из сказанного выше, в текстовом режиме предоставляется гораздо меньше возможностей для отображения информации, нежели в графическом. Тем не менее, он имеет одно важное преимущество — незначительные затра-ты ресурсов PC на его реализацию. Благодаря этому обеспечивается приемлемая скорость работы в текстовом режиме даже на самых медленных PC. Именно по этой причине видеосистема первого персонального компьютера IBM PC работала только в текстовом режиме. Легендарная программная оболочка Norton Commander для MS DOS также работает в текстовом режиме, поэтому затраты ресурсов PC на ее функционирование минимальны.
Качество изображения, формируемого на экране монитора, зависит не только от характеристик последнего, но и от характеристик видеоадаптера.
К важнейшим характеристикам видеоадаптера относятся следующие:
□ Перечень и характеристики поддерживаемых видеорежимов
□ Объем видеопамяти, а также ее тип, разрядность и быстродействие
□ Разрядность и быстродействие Chipset видеоадаптера
□ Набор аппаратно ускоряемых графических функций
□ Быстродействие цифро-аналогового преобразователя
□ Тип интерфейса с шиной ввода/вывода
□ Драйверы
Коротко рассмотрим эти характеристик (заметим, что четыре последних параметра применимы только к современным видеоадаптерам типа SVGA).
Приведение в документации перечня поддерживаемых видеорежимов и их характеристик было важно только для первых видеоадаптеров, поскольку каждый из них поддерживал только несколько видеорежимов. С появлением видеоадаптеров VGA и SVGA это утратило актуальность, т. к. любой видеоадаптер VGA поддерживает стандартный набор видеорежимов, включая режимы, в которых работали их предшественники. Кроме того, современный видеоадаптер SVGA дополнительно обеспечивает работу в видеорежимах высокого разрешения, определяемых спецификацией VESA.
Объем видеопамяти
Объем видеопамяти является основной характеристикой видеоадаптера, определяющей его возможности с точки зрения разрешения и цветности формируемого изображения. Чем больше объем видеопамяти, тем выше разрешение и шире цветовая палитра изображения. Если нужно получить изображение с разрешением NxM и количеством оттенков цветов, равным 2", то необходимый объем видеопамяти составит NxMxn бит, или (NxMxn)/% байт. Увеличение объема видеопамяти — основная тенденция развития видеоадаптеров, начиная с первых моделей и до настоящего времени.
Заметим, что данный параметр был особенно актуален для первых видеоадаптеров SVGA, поскольку наличие режимов с повышенными разрешением и глубиной цвета было их главным отличием от стандартного видеоадаптера VGA (табл. 15.1). Например, чтобы максимально использовать возможности монитора с экраном 15—17 дюймов по диагонали, видеоадаптер должен был иметь не менее 2—4 Мбайт видеопамяти. В современных видеоадаптерах, предназначенных для работы с трехмерной графикой, объем видеопамяти определяется в первую очередь потребностями ЗD-приложений и должен быть не менее 8—16 Мбайт. Заметим также, что объем видеопамяти косвенно влияет на скорость работы видеоадаптера: чем больше видеопамяти, тем быстрее работа (эта зависимость в значительной степени проявляется при работе с трехмерной графикой).
Таблица 15.1. Зависимость объема видеопамяти от разрешения и количества цветов
При работе с высоким разрешением (свыше 1024x768) и большой глубиной цвета (от 16 до 32 бит на пиксел) заметное влияние на быстродействие видеосистемы и PC в целом оказывает пропускная способность видеопамяти, определяемая как произведение разрядности шины видеопамяти на ее тактовую частоту. Кроме того, быстродействие памяти зависит от ее типа.
Разрядность и быстродействие Chipset видеоадаптера
Разрядность и быстродействие Chipset видеоадаптера стали важными характеристиками только современных видеоадаптеров типа SVGA (особенно при работе с трехмерной графикой), поскольку все предыдущие видеоадаптеры для PC были 8-разрядными и выполнялись на стандартных микросхемах.
Набор аппаратно-ускоряемых графических функций
Набор аппаратно-ускоряемых графических функций также является характеристикой только видеоадаптеров SVGA. Различают функции ускорения двумерной и трехмерной графики.
Быстродействие цифро-аналогового преобразователя
Быстродействие цифро-аналогового преобразователя (ЦАП) характеризуется его тактовой частотой. Данный параметр определяет ширину спектра видеосигнала. Его значение должно быть не меньше ширины полосы пропускания видеотракта монитора (приблизительно оно может быть определено в герцах как произведение NmaxxMmaxxFкадр, где NmaxxMmax — максимальное разрешение, a Fкадр — максимальная частота кадров, которые может обеспечить видеоадаптер).
Как правило, тактовая частота ЦАП превышает полосу пропускания монитора, поэтому можно не обращать внимания на значение данного параметра. Однако для профессиональной работы в системах автоматизированного проектирования и графических редакторах, требующих максимально четкого изображения, следует выбирать видеоадаптеры с высокой частотой ЦАП. Для современных видеоадаптеров типичная частота ЦАП составляет 250—300 МГц.
Тип интерфейса с шиной ввода/вывода
Интерфейс с шиной ввода/вывода определяет скорость обновления кадрового буфера, поэтому оказывает существенное влияние на быстродействие видеосистемы и PC в целом. Наиболее медленными являются видеоадаптеры с интерфейсом ISA, которые на сегодняшний день безнадежно устарели и годятся разве что для работы в текстовом режиме. Для эффективной работы с двумерной графикой вполне достаточно видеоадаптера с интерфейсом PCI, а для трехмерной графики требуется наличие специального интерфейса AGP (см. главу 5). Все современные видеоадаптеры выпускаются с интерфейсом AGP.
Одним из основных "ускорителей" видеоадаптера является драйвер, способный радикально изменить свойства как самого адаптера, так и всей системы. Видеоадаптер с помощью драйверов может поддерживать различное разрешение монитора.
При установке видеоадаптера в PC операционная система Windows предложит установить драйвер из его базы данных. В случаях, когда необходимый драйвер отсутствует, можно установить драйвер, поставляемый вместе с видеокартой. Отметим, что драйверы производителя видеокарты, как правило, обладают более широкими возможностями (рис. 15.2).
Рис. 15.2. Окно диалога драйвера видеоадаптера Matrox MGA G200
Внимание!
При покупке видеокарты следует обращать внимание на наличие компакт-диска с драйверами и прежде всего на то, чтобы соответствующий драйвер был предназначен для используемых вами программ. Как правило, в комплект стандартной поставки входят драйверы для DOS и Windows.
С момента появления и до наших дней сменилось несколько типов видеосистем для PC. Рассмотрим основные из них, поскольку именно они оказали наибольшее влияние на облик видеосистемы современного мультимедийного PC.
MDA
Первые модели IBM PC были оснащены монохромным дисплеем с люминофором зеленого свечения. Для связи этого дисплея с компьютером использовался видеоадаптер типа MDA (Monochrome Display Adapter — Адаптер монохромного дисплея). Он работал только в текстовом режиме 80x25 символов. Символьная матрица (знакоместо) была размером 9x14 пикселов, поэтому разрешение, поддерживаемое монитором MDA, составляло 720x350 пикселов, а размер самого символа — 7x9 пикселов. Емкость видеопамяти видеоадаптера MDA была минимальной, достаточной для размещения только одной видеостраницы размером 4 Кбайт. Основу видеоадаптера MDA составляла микросхема МС6845 фирмы Motorola.
Видеосистема MDA обеспечивала довольно хорошую читаемость символов на экране монитора и вполне соответствовала требованиям приложений, связанных с обработкой текстовой информации, однако имела и два серьезных недостатка.
□ Видеосистема формировала только монохромное изображение.
□ Многие приложения требовали вывода на экран не только текстовой, но и графической информации, т. е. работа с этими приложениями должна была осуществляться в графическом режиме, который видеосистема MDA не поддерживала.
С целью устранения недостатков видеосистемы MDA буквально через несколько месяцев после выпуска IBM PC фирма IBM предложила новую видеосистему CGA, обладающую более широкими возможностями, но уже в составе улучшенной модели компьютера — IBM PC XT(eXtended Technology).
CGA
Видеосистема CGA включала в себя цветной TTL-монитор и видеоадаптер CGA (Color Graphics Adapter— Цветной графический адаптер). Главные отличия этой видеосистемы от MDA отражены в ее названии, т. е. она обеспечивала:
□ Цветное изображение (от 4 до 16 цветов)
□ Несколько графических режимов работы видеоадаптера
Максимальное разрешение монитора CGA составляло 640x200. Такое разрешение использовалось либо в текстовом 80x25 (при размере знакоместа 8x8), либо в монохромном графическом режиме. В последнем случае для хранения цифрового образа экрана требовался кадровый буфер размером 640x480x1 = 128 000 бит = 15,625 Кбайт. Поэтому объем видеопамяти видеоадаптера CGA составлял 16 Кбайт. При работе в графическом режиме с более низким разрешением (например 320x200) для кодирования цвета каждого пиксела использовалось 2 бита, благодаря чему обеспечивалось одновременное отображение 4-х цветов, а при разрешении 200x160 — 16-и цветов. В текстовом режиме были доступны все 16 цветов. Видеоадаптер CGA также выполнен на основе микросхемы МС6845.
Меньшая детальность прорисовки символа и малое межсимвольное расстояние, использованные в CGA, настолько ухудшили различимость текста по сравнению с MDA, что длительная работа в текстовом режиме стала крайне утомительна для глаз. Для совмещения главных достоинств CGA (графического режима и цветного изображения) с возможностью продуктивно работать в текстовых режимах, в PC могли быть установлены обе видеосистемы одновременно. Чтобы исключить конфликты, были разнесены адреса видеопамяти и управляющих регистров на видеоадаптерах CGA и MDA.
Интересная особенность видеоадаптера CGA — он может использовать обычный телевизор в качестве устройства отображения. Для этого видеоадаптер CGA был оснащен специальным кодирующим устройством, которое из четырех двоичных сигналов 7, R, G, В и сигналов синхронизации формирует композитный (совмещенный) полный цветной телевизионный сигнал (ПЦТС).
Как уже отмечалось, для реализации графического режима необходимо, чтобы все подсистемы компьютера имели довольно высокое быстродействие. В то же время IBM PC XT} в составе которого впервые появилась видеосистема CGA, высоким быстродействием не отличался. Центральный процессор не успевал за период кадровой развертки полностью обновить кадровый буфер, поэтому некоторые ячейки видеопамяти содержали случайные значения. В результате на изображении появлялась характерная рябь, напоминавшая снег. Эти искажения назвали снегом CGA (CGA snow).
Стандарт HGC (Hercules Graphics Card), разработанный фирмой Hercules в 1982 г., явился логичным решением, позволившим объединить в одном изделии возможности MDA, обеспечивающие высококачественное отображение текста, с поддержкой графического режима CGA. Часто видеоадаптеры этого стандарта называют картами Hercules (рис. 15.3). Поскольку в качестве устройства отображения для данного видеоадаптера использовался стандартный монохромный монитор видеосистемы MDA, видеоадаптеры HGC быстро завоевали популярность и де-факто стали единственным стандартом в области видеосистем для PC, разработанных за пределами фирмы IBM.
По своему разрешению (720x348) видеоадаптер HGC подобен карте MDA. Соответственно, одинаковы у них и размеры символьной матрицы для текстового режима — 9x14 пикселов. В качестве видеоконтроллера в HGC используется уже известная микросхема МС6845.
Длина первых карт Hercules равнялась примерно 30 см; на их платах размещалось около 100 отдельных корпусов микросхем. Карты, производимые позднее, объединяли все элементы в одном чипе, таком как, например, микросхема контроллера TD3088. Обычно на такой карте находится еще и параллельный порт для подключения принтера.
Рис. 15.3. Внешний вид карты Hercules BT830
Однако, несмотря на все перечисленные выше достоинства, видеоадаптеры данного типа имели существенный недостаток — монохромность изображения. По этой причине их широкое использование практически прекратилось с появлением новых видеоадаптеров фирмы IBM — EGA и VGA.
EGA
Новый видеоадаптер EGA (Enhanced Graphics Adapter — Улучшенный графический адаптер) обеспечивал более высокое разрешение по вертикали, большее количество отображаемых цветов и обладал более высоким быстродействием. Максимальное разрешение, обеспечиваемое видеосистемой EGA, составило 640x350, что позволило значительно повысить качество изображения в текстовом и графическом режимах работы по сравнению с CGA. Благодаря увеличению размера знакоместа до 8x14 (размер символа составил 7x9) значительно повысилась четкость отображения текста.
По сравнению с CGA в видеоадаптере EGA была усовершенствована схема кодирования цвета пиксела: вместо четырех двоичных сигналов использовалось шесть, что увеличило размер палитры до 64 оттенков. Однако количество одновременно отображаемых цветов по-прежнему было ограничено шестнадцатью.
Применение 16-цветной палитры при разрешении 640x350 потребовало резко увеличить объем видеопамяти: в первых моделях видеоадаптера EGA было установлено 64 Кбайт видеопамяти, в дальнейшем размер видеопамяти был увеличен до 128 Кбайт.
Видеоадаптер EGA (рис. 15.4) имел еще одну важную особенность, существенную для неанглоязычных пользователей PC: наряду с аппаратным знакогенератором он позволял использовать и программный, т. е. загружаемые шрифты. Это значительно облегчило поддержку национальных языков.
Рис. 15.4. Видеоадаптер EGA
Для видеоадаптера EGA характерно наличие DIP-переключателей на задней панели блока, при помощи которых производится настройка видеоадаптера на конкретный режим работы: выбор цветного или монохромного режима, количества текстовых столбцов (40 или 80), выбор разрешения по вертикали, а также ряд других настроек. Необходимость такой настройки диктовалась возможностью использования различных мониторов совместно с видеоадаптером EGA. Поскольку выходной 9-штырьковый разъем видеоадаптера EGA по конструкции и назначению контактов аналогичен разъемам CGA и MDA, вместе с EGA могли использоваться три типа мониторов:
□ Монохромный монитор MDA
□ Цветной монитор CGA
□ Цветной монитор EGA — (Enhanced Color Display, ECD)
При подключении к видеоадаптеру EGA улучшенного цветного дисплея использовались более высокие частоты строчной и кадровой развертки, снижающие мерцание экрана монитора.
Многие модели видеоадаптеров EGA унаследовали от CGA возможность вывода композитного видеосигнала на обычный телевизор или композитный монитор. Такие модели имеют на задней панели разъем типа RCA.
Хотя видеосистема EGA была намного лучше, чем CGA, качество формируемого ею изображения по-прежнему нельзя было считать удовлетворительным по причине ограниченного количества одновременно отображаемых цветов (16). Поэтому судьба видеосистемы EGA была предрешена. Ее не спасло даже появление расширения стандарта EGA — видеосистемы EGA-плюс, которая обеспечивала более высокое разрешение 800x600 и отображение 16-и цветов. Эта новинка просто не успела получить широкого распространения, т. к. вскоре появилась принципиально новая видеосистема VGA, позволившая радикально улучшить качество изображения на экране монитора PC.
Размер цветовой палитры в видеосистемах CGA и EGA ограничивался не столько видеоадаптером (объемом видеопамяти), сколько цифровыми мониторами, не позволявшими использовать более шести двоичных сигналов для кодирования цвета. Понимая это, специалисты фирмы IBM приняли гениальное и простое решение — вернуться к аналоговому . видеосигналу, используемому в обычном телевизоре. В итоге вместо многоразрядного цифрового сигнала видеоадаптер стал формировать трехкомпонентный аналоговый RGB-сигнал, который после усиления подавался на модуляторы электронных пушек ЭЛТ. Так появилась видеосистема VGA, включающая новый аналоговый цветной монитор и встроенный в материнскую плату видеоадаптер VGA. Впервые она была использована в компьютере IBM PS/2 (Personal System). В дальнейшем видеоадаптеры VGA стали выпускать в виде отдельных плат, устанавливаемых в 16-разрядный слот шины ISA (рис. 15.5).
Рис. 15.5. Видеоадаптер VGA
Существует несколько вариантов расшифровки аббревиатуры VGA. Первоначально она обозначала название сверхбольшой интегральной схемы (СБИС), в которой были реализованы основные узлы видеоадаптера (Video Gate Array — Вентильная матрица для формирования видеосигнала). Однако потом нюансы внутреннего устройства таких адаптеров отошли на второй план, а расшифровка этих аббревиатур стала отражать их функциональные особенности. Была также учтена созвучность данных аббревиатур с названиями предыдущих видеоадаптеров (CGA, EGA), в которых сочетание GA {Graphics Adapter) означало графический адаптер. В итоге, VGA стали расшифровывать как Video Graphics Adapter — графический адаптер, формирующий видеосигнал (т. е. аналоговый сигнал).
Основным конструктивным отличием видеоадаптера VGA от своего предшественника (EGA) стало наличие специальной микросхемы — RAMDAC {Random Access Memory Digital-to-Analog Converter — Цифро-аналоговый преобразователь данных, хранимых в ОЗУ). RAMDAC представлял собой быстродействующий трехканальный ЦАП, оснащенный 256-ю регистрами цвета, образующими его собственное маленькое ОЗУ — RAM (этим и объясняется название данного элемента — RAMDAC, а не просто DAC). RAMDAC предназначен для преобразования двоичных чисел, содержащихся в ячейках видеопамяти, в три непрерывных RGB-сигнала, уровень которых пропорционален яркости каждого из трех основных цветов.
Видеоадаптер VGA имел 256 Кбайт видеопамяти. Это обеспечило поддержку графических режимов 640x480 при 16-и цветах (640x480/16) и 320x200/256. В последнем случае используется 8-битная кодировка цвета пиксела, благодаря чему размер текущей палитры равен 256 цветовым оттенкам (именно столько регистров цвета имеет RAMDAC). Благодаря использованию видеорежима 320x200/256 впервые стало возможно получить изображение, хоть и немного размытое, но весьма реалистичное по цветовой гамме.
В соответствии с традициями IBM видеоадаптер VGA обеспечивал совместимость со всеми видеорежимами предыдущих видеоадаптеров. Дополнительно он поддерживал три новых видеорежима:
□ высококачественный текстовый режим 80x25 символов при 16 цветах, разрешение экрана 720x400, размер знакоместа 9x16, частота кадров 70 Гц;
□ графический режим 640x480/16;
□ графический режим 3200x200/256.
Благодаря высоким характеристикам и совместимости с программным обеспечением для более старых видеоадаптеров VGA быстро стал господствующим стандартом. Был разработан список стандартных видеорежимов (табл. 15.2), причем списки видеорежимов видеоадаптеров предыдущих типов являлись подмножествами основного списка. Таким образом, сложилась единая нумерация всех стандартных видеорежимов, что обеспечило хорошую совместимость различных моделей видеоадаптера VGA с программным обеспечением.
Увеличение разрешения и частоты кадров привело к значительному расширению спектра видеосигнала на выходе видеоадаптера VGA. Для того чтобы обеспечить неискаженную передачу широкополосного видеосигнала от видеоадаптера к монитору, разработчики использовали новый 15-штырьковый D-образный разъем и высокочастотный соединительный кабель (рис. 15.6, см! табл. 14.3). Для передачи RGB-сигнала в этом кабеле использовались три изолированные друг от друга витые пары, отличающиеся малым затуханием высокочастотных сигналов. Высокопотенциальный провод пары назван по имени одного из трех основных цветов (например, Red), а низкопотенциальный (нулевой) — точно так же, но с добавлением слова Return(возврат), например Red Return. При использовании независимых нулевых проводов для передачи видеосигнала каждого из трех цветов значительно уменьшается их взаимное влияние на высоких частотах.
Рис. 15.6. 15-контактный D-образный VGA-разъем
Как следует из табл. 14.3, в новом разъеме появилось 3 контакта, которые не задействованы для передачи видеосигнала и сигналов синхронизации. Эти контакты, названные битами идентификации, первоначально использовались для того, чтобы адаптер мог автоматически определить тип подключенного к нему монитора. В дальнейшем они стали применяться для реализации протокола Plug&Play для мониторов. Благодаря этому отпала необходимость ручной настройки видеоадаптера при помощи DIP-переключателей, как это делалось в видеоадаптере EGA.
Таким образом, стандарт VGA явился качественным скачком в развитии видеосистемы PC и определил базовые принципы ее функционирования, которые не изменились до сегодняшнего дня. Вместе с тем, вскоре стали очевидны ограниченные возможности видеоадаптера VGA: например, системы автоматизированного проектирования требовали более высокого разрешения, чем 640x480, а для программ обработки изображения не хватало 256-и цветов. Результатом совершенствования VGA стало появление многочисленных расширений данного стандарта, которые постепенно оформились в обобщенный стандарт Super VGA.
Первоначально совершенствование видеоадаптера VGA шло в основном за счет увеличения объема его видеопамяти: сначала до 512 Кбайт, а затем и до 1 Мбайт. Появились видеоадаптеры, поддерживающие режимы 800x600, 1024x768 при одновременном отображении 256-и оттенков цветов. Для работы с такими видеоадаптерами использовались модернизированные мониторы, имеющие уменьшенное зерно люминофора экрана, повышенные частоты синхронизации и более широкую полосу пропускания видеотракта. Возникло понятие видеосистемы Super VGA, под которым поначалу понималось любое расширение возможностей стандарта VGA. Первой фирмой, изготовившей видеоадаптер, поддерживающий режим 800x600/256, была фирма NEC, а пионером среди видеоадаптеров, поддерживающих разрешение 1024x768, стал видеоадаптер 8514/А фирмы IBM.
IBM 8514
Видеосистема 8514 была разработана фирмой IBM для своих высокопроизводительных компьютеров типа PS/2. В ее состав входил аналоговый цветной монитор IBM 8514 с повышенным разрешением и видеоадаптер 8514/А. Помимо стандартных видеорежимов VGA, монитор IBM 8514 дополнительно обеспечивал разрешение 800x600 и 1024x768, причем в последнем случае использовалась чересстрочная развертка. Для работы с этим монитором применялся видеоадаптер, имевший 512 Кбайт видеопамяти. Другое отличие 8514/А от стандартного видеоадаптера VGA— дополнительные аппаратные средства, ускорявшие реализацию графических функций, благодаря чему работа 8514/А значительно ускорилась.
IBMXGA
Видеоадаптеры XGA (eXtended Graphic Array), также предназначенные для мощных серверов типа IBM PS/2 на основе процессоров Intel 80486, явились качественно новыми изделиями, поскольку имели ряд важных отличий от своих предшественников.
Во-первых, эти видеоадаптеры оснащены собственным графическим 32-разрядным процессором, который не только ускоряет выполнение графических функций, но и позволяет видеоадаптеру наравне с CPU управлять передачей данных по шине ввода/вывода (эта функция называется Bus Mastering). Реализация Bus Mastering позволяет значительно ускорить обновление кадрового буфера.
Во-вторых, данный видеоадаптер поддерживает 16-битное кодирование цвета пиксела, что позволяет одновременно отобразить 65 536 оттенков цвета. За счет использования встроенного графического процессора и высокоскоростной двухпортовой видеопамяти видеоадаптер XGA обеспечивал рекордно высокую скорость работы при разрешениях 800x600 и 1024x768. Использовался совместно с монитором IBM 8514.
Примечание
Видеоадаптеры 8514/А и XGA, обладая высокими характеристиками, не получили широкого распространения по одной причине: они были рассчитаны на шину МСА, лицензию на производство которой фирма IBM так никому и не продала. Поэтому данные видеоадаптеры используются только в компьютерах типа IBM PS/2, построенных на основе шины МСА.
VESA Super VGA
Появление многочисленных моделей видеоадаптеров SVGA, изготовленных разными фирмами, породило проблему их совместимости с программным обеспечением. Причина ее возникновения заключалась в том, что расширенные режимы работы видеоадаптера не поддерживали стандартные способы инициализации: каждая из фирм-производителей использовала свои номера видеорежимов, расширенных относительно VGA, и свои команды инициализации. Например, режим 800x600/256 у видеоадаптеров фирмы Trident Microsystems имеет номер 5Eh, у видеоадаптеров фирмы Realtek — 27h, а у видеоадаптеров фирмы "Iseng Labs — 30h. Следовательно, для установки режима 800x600/256 центральный процессор должен послать каждому из этих видеоадаптеров различные команды, что затрудняет создание универсальной программы.
Долгое время нельзя было говорить о Super VGA как о стандарте еще и потому, что не был четко определен смысл самого термина SVGA. Часто обычный видеоадаптер VGA преподносился продавцами как SVGA только на том основании, что поддерживал видеорежим 800x600/16. Однако для реализации такого режима необходимо менее 256 Кбайт видеопамяти, поэтому практически любой видеоадаптер VGA, имеющий стандартный объем памяти (256 Кбайт), может поддерживать данный режим.
Стремясь исправить это ненормальное положение, Ассоциация стандартов по видеоэлектронике (Video Electronics Standard Association, VESA) предложила свой стандарт на нумерацию и способ инициализации видеорежимов, расширенных относительно VGA (табл. 15.3). Было предложено считать SVGA-режимами только такие, которые требуют для своей реализации не менее 512 Кбайт видеопамяти. Это позволило создавать универсальные программы, предназначенные для работы в режимах с повышенным разрешением, а также решать вопрос принадлежности видеоадаптера к семейству SVGA. He случайно в течение длительного времени объем видеопамяти был главным критерием качества видеоадаптера SVGA.
Таблица 15.3. Стандартные SVGA-режимы согласно спецификации
VESA версии 1.0
Стандарт VESA имел несколько версий, появление которых отражало эволюцию возможностей видеосистемы. Данные, приведенные в табл. 15.3, соответствует версии 1.0. В настоящее время используется стандарт версии 2.0, в который включены режимы с разрешением до 1600x1200. Кроме того, в адаптерах SVGA начали использоваться 24-разрядные RAMDAC и прямая кодировка цвета пиксела, благодаря чему появились такие режимы, как High Color (16 бит на пиксел, или 65 536 цветов) и True Color (24 бит на пиксел, или 16 777 216 цветов).
Программы, дополняющие Video BIOS видеоадаптера SVGA для обеспечения поддержки спецификации VESA, получили название VBE (VESA BIOS Extension). Первоначально они использовались в виде драйверов и резидентных программ, загружаемых в память по мере необходимости. В настоящее время все современные видеоадаптеры содержат VBE в ROM Video BIOS, благодаря чему совместимость со спецификацией VESA обеспечивается автоматически.
С переходом к более высокому разрешению и большей глубине цвета резко увеличилась загрузка центрального процессора PC и шины ввода/вывода. Чтобы разгрузить центральный процессор, решение ряда задач построения изображения (заполнения кадрового буфера) решили возложить на специализированный набор микросхем {Chipset) видеоадаптера, получивший название графического ускорителя {акселератора). Акселератор на аппаратном уровне должен некоторые действия, относящиеся к построению изображения, которые до него CPU был вынужден выполнять программным путем (а это намного ^медленнее). В результате скорость работы видеосистемы и PC в целом значительно повысилась. Если акселератор допускал гибкое программирование своих функций, его называли графическим, сопроцессором. Примерами таких систем стали видеоадаптеры TIGA (Texas Instruments Graphics Architecture) фирмы Texas Instruments на основе специализированных графических сопроцессоров TMS34010 и TMS34020 производства этой же фирмы.
Другим способом повышения производительности видеосистемы и PC в целом стало применение видеоадаптеров с более быстрым интерфейсом, чем ISA. Первоначально для нужд видеосистемы использовалась 32-разрядная локальная шина VLB (VESA Local Bus), которая в дальнейшем была вытеснена более быстрой и совершенной шиной PCI (Peripheral Component Interconnect — Соединение периферийных устройств). В настоящее время большинство видеоадаптеров, оснащенных функциями ускорения 2D- и 3D-rpaфики, имеют интерфейс AGP (см. главу 5).
Устройство и особенности работы видеоадаптера VGA
Несмотря на то, что облик современного видеоадаптера сильно изменился, он сохранил принцип действия и основные узлы, присущие видеоадаптеру VGA. По этой причине краткое знакомство с VGA полезно не только с точки зрения истории видеоадаптеров — оно поможет лучше понять особенности и современных устройств.
Видеоадаптер VGA содержит следующие элементы (рис. 15.7):
□ Видеопамять
□ ROM Video BIOS
□ Контроллер ЭЛТ, или CRTC {Cathode Ray Tube Controller)
□ Графический контроллер
□ Контроллер атрибутов
□ Секвенсор (sequencer)
□ RAMDAC {Random Access Memory Digital-to-Analog Converter)
□ Синхронизатор
□ Тактовые генераторы
□ Интерфейс с шиной ввода/вывода
□ 15-контактный D-образный разъем для подключения монитора
Большинство перечисленных выше элементов видеоадаптера содержат специальные 8-разрядные регистры, доступные центральному процессору для чтения/записи данных. Модифицируя содержимое этих регистров, CPU управляет работой видеоадаптера.
Помимо регистров, входящих в состав указанных элементов, видеоадаптер VGA имеет несколько общих регистров, указанных ниже.
□ Многоцелевой выходной регистр (предназначен для задания адресов портов ввода/вывода элементов видеоадаптера, начального адреса кадрового буфера и выбора тактового генератора).
□ Регистр состояния (доступен только для чтения, используется для синхронизации процесса обновления кадрового буфера с обратным ходом кадровой развертки).
Конструктивно основные элементы видеоадаптера VGA, за исключением видеопамяти, ROM Video BIOS, тактовых генераторов и схемы интерфейса с шиной ввода/вывода, реализованы в одной микросхеме.
Видеопамять — это специализированное ОЗУ, размещенное на плате видеоадаптера. Оно предназначено для хранения цифрового образа формируемого изображения. Синонимом данного понятия является термин видеобуфер. Современные видеоадаптеры с интерфейсом AGP могут использовать для работы не только свою собственную, но и оперативную память PC, поэтому видеопамять таких адаптеров часто называют локальной, подчеркивая тем самым место ее физического размещения. В дальнейшем будем использовать термин видеопамять. Объем видеопамяти определяет максимальное разрешение и количество цветовых оттенков формируемого изображения.
Часть видеопамяти, используемая для хранения цифрового изображения, называется кадровым буфером (frame buffer). Как правило, размер кадрового буфера меньше, чем объем видеопамяти. Например, в видеорежиме 640x480/16 кадровый буфер занимает 150 из доступных 256 Кбайт. Помимо кадрового буфера, в видеопамяти хранятся другие данные, например загружаемые национальные шрифты.
Важной характеристикой видеопамяти является ее пропускная способность, определяемая как произведение разрядности шины видеопамяти на тактовую частоту шины. Пропускная способность видеопамяти измеряется количеством мегабайт информации, которую можно передать через шину видеопамяти за 1 с. Иногда вместо этого термина употребляется выражение "полоса пропускания видеопамяти", что совершенно неверно. В видеоадаптере VGA применялась 8-разрядная внутренняя шина, а в видеоадаптерах SVGA— сначала 16-, затем и 32-разрядная шина. В современных видео-адаптерах используется 64- или 128-разрядная внутренняя шина и тактовые частоты от 100 до 200 МГц, а наиболее совершенные модели видеоадаптеров имеют 256-разрядную шину данных. По этой причине пропускная способность шины видеопамяти таких видеоадаптеров многократно превышает аналогичный параметр любой шины ввода/вывода, включая AGP. и стимулирует производителей наращивать объем видеопамяти.
Video BIOS
Реализация любой графической операции (смена видеорежима, обмен данными с кадровым буфером, управление курсором и т. п.) требует от центрального процессора выполнения весьма длинной последовательности низкоуровневых команд (чтения/записи, перемещения данных в регистрах и др.)- Для того чтобы избавить программиста ют необходимости составлять детальную низкоуровневую программу, а также для обеспечения совместимости аппаратного и программного обеспечения все наборы команд (подпрограммы) CPU, реализующие графические функции, помещаются в специальное ПЗУ, расположенное на плате видеоадаптера VGA. Эти подпрограммы образуют так называемое расширение базовой системы ввода/вывода (BIOS extension) для решения задач вывода изображения на экран монитора и называются Video BIOS. Кроме того, Video BIOS содержит множество данных (констант), необходимых для работы в различных видеорежимах, а также сведения о производителе, модели и возможностях видеоадаптера.
Фактически Video BIOS — это набор подпрограмм, написанных в кодах команд центрального процессора и предназначенных для реализации основных функций видеосистемы. Набор этих функций принято называть видеосервисом.
Video BIOS хранится в специальном ПЗУ (ROM), размещенном на плате видеоадаптера VGA. Его емкость составляет 32 Кбайт. Память ROM Video BIOS видеоадаптера VGA является 8-разрядной.
Использование видеосервиса BIOS — простой и надежный способ вывода информации на экран, однако применение этого способа приводит к низкой скорости работы видеоадаптера. С целью повышения быстродействия видеосистемы используют альтернативный метод — непосредственное изменение состояния регистров видеоадаптера прикладной программой. Такой метод потенциально является более быстрым и эффективным, однако требует от программиста детального знания аппаратных особенностей используемого видеоадаптера (адресов портов ввода/вывода, назначения и структуры данных в управляющих регистрах и т. п.).
Контроллер ЭЛТ формирует сигналы горизонтальной и вертикальной синхронизации, сигналы инкремента (увеличения) счетчика адреса ячеек видеопамяти, в которых хранится цифровой образ изображения, а также стробирующие сигналы чтения/записи видеопамяти. Эти сигналы формируются таким образом, что движение луча по экрану ЭЛТ осуществляется синхронно с процессом сканирования ячеек видеопамяти, причем цвет пиксела на экране соответствует значению, содержащемуся в соответствующей ячейке кадрового буфера.
Работа контроллера ЭЛТ синхронизируется сигналами одного из двух тактовых генераторов (Dot Clock или Pixel Clock), установленных на плате видеоадаптера. Их частоты равны 28,322 МГц и 25,175 МГц соответственно. Выбор синхросигнала производится программно.
Контроллер ЭЛТ имеет 26 регистров, доступных CPU для чтения и записи. Данные, хранящиеся в регистрах контроллера ЭЛТ, полностью определяют параметры растра на экране монитора: разрешение, частоту кадров, размеры знакоместа и др. Смена видеорежима реализуется путем записи в эти регистры новых значений, соответствующих выбранному режиму (решение этой задачи обеспечивает функция 00h прерывания 10h).
Графический контроллер
Графический контроллер предназначен для управления обменом данными между центральным процессором и видеопамятью и выполнения элементарных преобразований этих данных. В частности, графический контроллер помогает центральному процессору выполнять следующие элементарные операции:
□ запись пиксела (группы пикселов) по заданному адресу;
□ считывание значение пиксела (группы пикселов) по заданному адресу;
□ модификация цвета пиксела (группы пикселов) путем выполнения таких элементарных логических операций, как "И", "ИЛИ", "Исключающее ИЛИ", циклический сдвиг бит в пределах байта и т. п.;
□ считывание из кадрового буфера кода пиксела (считывание со сравнением цвета; фактически реализуется поиск пиксела с заданным цветом).
Кроме того, графический контроллер видеоадаптера VGA содержит четыре 8-разрядных регистра-защелки (lathees), которые используются для доступа к цветовым плоскостям (напомним, что в 16-цветных графических режимах кадровый буфер видеоадаптера разделен на четыре области, называемые цветовыми "(или битовыми) плоскостями).
Графический контроллер видеоадаптера VGA можно считать простейшим прообразом графических акселераторов, используемых в современных видеоадаптерах SVGA.
Секвенсер, или указатель последовательности, предназначен для генерации сигналов, необходимых при сканировании видеопамяти. Другими словами, секвенсер обеспечивает последовательную адресацию и считывание содержимого ячеек видеопамяти (отсюда и происходит его название) и передачу их содержимого в контроллер атрибутов и далее — в RAMDAC. Работа секвенсера синхронизируется стробирующими сигналами, формируемыми контроллером ЭЛТ.
Контроллер атрибутов видеоадаптера VGA предназначен для управления цветом изображения, выводимого на экран монитора. В текстовом режиме работы видеоадаптера он задает цвет пикселов в пределах символьной матрицы на основании содержимого байта атрибутов выводимого символа (отсюда и его название). Кроме того, в этом режиме контроллер атрибутов позволяет создавать такие эффекты, как мигание, инверсия цвета или повышенная яркость символа. В графическом 16-цветном режиме контроллер атрибутов преобразует условный 4-разрядный номер цвета пиксела, хранящийся в видеопамяти, в 8-разрядный номер регистра RAMDAC, содержащего 18-разрядный код отображаемого цвета. С выхода контроллера атрибутов данные поступают на RAMDAC видеоадаптера.
Основная задача RAMDAC (цифро-аналогового преобразователя данных, хранящихся в его регистрах) — преобразование кода цвета пиксела в аналоговый сигнал. RAMDAC (рис. 15.8) включает:
□ трехканальный 6-разрядный ЦАП;
□ 256 18-разрядных регистров цвета (именно эти регистры и образуют оперативную память, аббревиатура которой (RAM) входит в название данного устройства);
□ выходной 18-разрядный регистр цвета, выходы которого соединены с соответствующими входами ЦАП;
□ схему адресации.
Работа ЦАП синхронизируется сигналом Dot Clock тактового генератора видеоадаптера. Именно этой частотой определяется верхняя граничная частота спектра видеосигнала. Разрядность" ЦАП определяет количество оттенков цвета, которые потенциально может сформировать видеоадаптер VGA, т. е. размер его палитры. Несложно подсчитать, что палитра составляет (26)3 = =218 = 262 144 оттенков. Оттенок цвета текущего пиксела определяется ходом, записанным в выходной регистр цвета. Однако на практике количество оттенков цвета, которые видеосистема VGA в состоянии отобразить одновременно, значительно меньше размера его палитры и равно количеству регистров цвета, т. е. 256. Видеоадаптер VGA не позволяет загрузить в выходной регистр цвета произвольное значение — туда заносятся данные только из регистров цвета, которых в видеоадаптере VGA насчитывается только 256.
Рис. 15.8. RAMDAC
Содержимое регистров цвета ЦАП можно изменять программно, т. е. CPU как считывает данные регистров, так и записывает в них. Благодаря этому прикладная программа изменяет текущую палитру, частично компенсируя ее ограниченность.
Заметим, что в видеоадаптерах SVGA, в отличие от VGA, может использоваться прямое кодирование оттенка цвета пиксела, при котором его код в формате RGB хранится в видеопамяти и загружается непосредственно в выходной регистр цвета RAMDAC. Это позволяет кодировать цветовой оттенок пиксела с использованием 15, 16 или 24 бит, т. е. реализовать режимы High Color (216 = 65 536 цветовых оттенков одновременно) и True Color (224 = = 16,7 млн цветовых оттенков). Для обеспечения второго режима разрядность ЦАП в каждом из трех каналов должна быть равна 8.
Синхронизатор управляет доступом CPU к кадровому буферу и разрешает его обновление только во время действия сигналов гашения. В результате устраняются помехи, которые могут возникать при обращении к кадровому буферу в течение прямого хода луча (такие искажения в виде ряби на экране были характерны для видеоадаптера CGA и назывались снег CGA (CGA snow).
Для синхронизации обращения CPU к кадровому буферу используется также регистр состояния. Бит 3 этого регистра устанавливается в состояние логической 1, если сигнал V-Sync активен, а бит 0, — если активен сигнал разрешения отображения (Display Enable). Прикладная программа, считывая биты регистра состояния, обращается к кадровому буферу только тогда, когда вывод информации на экран не производится.
Работа всех устройств видеоадаптера VGA синхронизируется сигналом Dot Clock или производными от него тактовыми сигналами. Частота сигнала Dot Clock равна верхней граничной частоте выходного видеосигнала. Кроме того, при заданном разрешении этой же частотой определяются значения частот строчной и кадровой синхронизации.
Синхронизация устройств стандартного видеоадаптера VGA в зависимости от выбранного видеорежима осуществляется тактовым сигналом, формируемым одним из двух встроенных генераторов сигналов фиксированных частот: 25,175 и 28,322 МГц. Кроме того, предусмотрена возможность использования внешнего тактового генератора (в первых видеоадаптерах VGA, интегрированных на материнскую плату). Выбор тактового генератора осуществляется программно.
Интерфейс с шиной ввода/вывода
Видеоадаптер VGA вставляется в 16-битный слот шины ввода/вывода ISA, поэтому он снабжен специальным интерфейсом, выполняющим следующие функции:
□ согласование разрядности внутренней 8-разрядной шины видеоадаптера VGA и 16-разрядной шины ISA компьютера;
□ согласование частот тактовых сигналов видеоадаптера (Dot Clock) и шины ISA.
Современные видеоадаптеры подключаются к высокоскоростным шинам (PCI, AGP).
Основные направления совершенствования видеоадаптера VGA
Несмотря на то, что видеоадаптер VGA был признан стандартом, его возможности очень скоро перестали удовлетворять требованиям многих современных приложений. Укажем наиболее серьезные недостатки стандартного видеоадаптера VGA:
□ небольшое количество цветов и недостаточное для многих приложений разрешение экрана;
□ низкое быстродействие видеосистемы;
□ недопустимо высокая загрузка центрального процессора задачами формирования
изображения, отвлекающая его от решения других задач.
Проблема разрешения и цветнорти была довольно быстро решена с появлением первых адаптеров SVGA\ у которых объем видеопамяти составил 512 Кбайт и 1 Мбайт. Однако быстродействие этих адаптеров, особенно при высоком разрешении и большой глубине цвета, оставляло желать лучшего. Можно назвать следующие причины низкого быстродействия видеоадаптера VGA и первых видеоадаптеров SVGA:
□ пассивность видеоадаптера VGA при формировании и модификации кадрового буфера, приводящая к необходимости привлечения центрального процессора для реализации всех графических функций;
□ недостаточная пропускная способность внутренней шины данных видеоадаптера, обусловленная ее малой разрядностью (8 бит) и низким быстродействием видеопамяти;
□ низкая пропускная способность шины ISA, по которой осуществляется пересылка данных из ОЗУ в видеопамять;
□ отсутствие аппаратной поддержки дополнительных функций, используемых в мультимедийных приложениях (воспроизведение видеоданных, прием телевизионных сигналов и т. п.).
На устранение этих недостатков были направлены основные усилия разработчиков, в результате чего появились современные видеоадаптеры SVGA.
Наиболее простым и очевидным решением совершенствования видеоадаптера VGA стало увеличение объема видеопамяти. Пионером в реализации такого технического решения условно считается японская фирма NEC, выпустившая видеоадаптер, оборудованный видеопамятью объемом 512 Кбайт, который мог работать в видеорежимах 640x480/256 и 800x600/256. Важным шагом на пути улучшения цветности изображения стал выпуск фирмой Sierra Semiconductors нового 24-разрядного RAMDAC, позволяющего загружать в выходной регистр ЦАП данные непосредственно из видеопамяти, минуя регистры цвета ЦАП. Это позволило реализовать новые видеорежимы High Color (32 768 и 65 536 оттенков цвета) и режим True Color (16 777 216 оттенков цвета).
На базе такого RAMDAC стали выпускаться видеоадаптеры (рис. 15.9), оборудованные видеопамятью объемом 1 Мбайт и больше (дело в том, что 512 Кбайт видеопамяти не достаточно для реализации режима High Color даже при минимальном разрешении 640x480).
Рис. 15.9. Видеоадаптер VGA с видеопамятью объемом 1 Мбайт
Однако радикальным улучшением архитектуры видеоадаптера, позволившим значительно повысить его быстродействие, стало включение в его состав специальных устройств, реализующих многие графические функции на аппаратном уровне, т. е. без участия CPU.
Аппаратное ускорение графических функций
При выводе данных на экран в графическом режиме видеоадаптером VGA центральный процессор вынужден выполнять огромное количество элементарных (низкоуровневых) команд для модификации кадрового буфера и регистров видеоадаптера. В результате этого большая часть ресурсов системы задействуются в целях создания графического интерфейса (окон диалога курсора мыши и т. п.), а на решение прикладных задач, ради которых и приобретается компьютер, ресурсов уже не хватает.
Между тем, операции по созданию графического интерфейса в большинстве своем достаточно просты и рутинны, просто их необходимо выполнять очень часто. Например, для создания стандартного графического интерфейса пользователя в среде Windows (Graphic User Interface, GUI) необходимо много-кратно проделывать в основном простейшие операции построения графических примитивов (таких, как линии, прямоугольники, окружности), их закраски, переноса фрагментов растра (окна) из одной области экрана в другую и т. п. Выполнение этих операций можно значительно ускорить, если поручить их не центральному процессору, а специализированному устройству, специально приспособленному для построения графических примитивов. Такому устройству можно выдать одну команду высокого уровня вместо множества низкоуровневых, например, команду "Построить окружность". При этом достаточно указать параметры объекта: радиус, цвет, координаты центра. Все промежуточные операции по модификации каждого пиксела, находящегося на окружности, это устройство выполнит самостоятельно, не прибегая к помощи центрального процессора. Устройство, работающее по такому принципу, называют графическим ускорителем {акселератором).
Повышение быстродействия видеосистемы и PC в целом при использовании графического ускорителя достигается за счет:
□ аппаратной реализации заданного набора графических функций, выполнение которых осуществляется всего лишь за несколько тактов работы акселератора;
□ использования акселератором системы команд высокого уровня, что разгружает шину ввода/вывода — поток данных значительно уменьшается;
□ освобождения центрального процессора от необходимости выполнения множества элементарных операций с содержимым кадрового буфера.
Использование графического ускорителя является отступлением от классической архитектуры PC, когда всей работой управляет центральный процессор, и является шагом на пути создания распределенной вычислительной структуры. Взамен пассивного устройства — графического контроллера — видеоадаптер получил специализированный вычислитель — графический акселератор, который самостоятельно манипулирует содержимым видеопамяти точно так же, как центральный процессор — содержимым оперативной памяти PC.
Говоря об акселерации графических функций видеоадаптера, необходимо обратить внимание на следующие два обстоятельства.
□ Акселерация необходима только в графическом режиме работы видеоадаптера.
□ Одно из главных отличий графического акселератора от графического контроллера видеоадаптера VGA заключается в том, что он оперирует не пикселами, а объектами более высокого иерархического уровня — графическими примитивами. Примеры графических примитивов — отрезок прямой, треугольник, прямоугольник, прямоугольник с закругленными краями, многоугольник, дуга, эллипс и т. п. Используя графические примитивы, можно конструировать достаточно сложные изображения значительно быстрее и проще, чем при модификации отдельных пикселов. Поэтому команды для работы с графическими примитивами, которые центральный процессор посылает акселератору, часто называют высокоуровневыми.
Коротко рассмотрим основные графические функции видеоадаптера, требующие аппаратного ускорения.
Основные графические функции видеоадаптера
1. Прорисовка графических примитивов
Прорисовка графических примитивов активно используется при создании элементов графического интерфейса прикладных программ и операционной системы Windows. В командах прорисовки (Drawing Commands) параметры этих примитивов задаются в компактном, векторном виде, т. е. в виде координат, или векторов узловых точек, по которым легко построить всю фигуру (например, координаты вершин треугольника). При использовании команд прорисовки центральный процессор освобождается от выполнения математических расчетов, необходимых для построения упомянутых фигур (например, от решения трансцендентного уравнения при построении эллипса или дуги).
2. Перенос блоков изображения
Перенос блоков изображения выполняется при перетаскивании окон, ярлыков и других элементов графического интерфейса операционной системы и прикладных программ, при выполнении прокрутки {Scrolling) экрана, при редактировании изображений в графических редакторах. Данная функция сводится к перемещению блока битов из одной области видеопамяти в другую, поэтому часто ее обозначают BitBlt {Bit Block Transferring).
3. Аппаратная поддержка окон
Суть аппаратной поддержки окон {Hardware Windowing) состоит в следующем. При наличии на экране нескольких раскрытых (особенно перекрывающихся) окон и использовании обычного видеоадаптера VGA каждая прикладная программа тратит много времени на то, чтобы постоянно отслеживать координаты ячеек кадрового буфера, соответствующих области "своего" окна. Естественно, это значительно замедляет работу программы. Если же используется акселератор с аппаратной поддержкой функции Hardware Windowing, то для окна каждой программы в видеопамяти выделяется отдельная область: вместо одного кадрового буфера, размеры которого определяются разрешением экрана, акселератор использует несколько "кадровых буферов", размеры которых соответствуют размерам окон соответствующих программ. Акселератор также запоминает порядок, в котором окна накладываются друг на друга. В процессе вывода изображения на экран акселератор сканирует ячейки кадрового буфера не последовательно (как это имеет место в обычном видеоадаптере), а в соответствии с порядком расположения окон, переключаясь при этом с одной области видеопамяти на другую.
Примечание
Выигрыш от использования данной графической функции тем значительнее, чем больше объем видеопамяти, установленной на плате видеоадаптера.
4. Аппаратный курсор
Центральный процессор считывает через СОМ-порт, к которому подключена мышь, координаты курсора и посылает их значения в акселератор. Тот, в свою очередь, формирует изображение курсора мыши в указанном месте экрана. При выполнении манипуляций с мышью акселератор самостоятельно переносит изображение курсора в нужное место экрана и ликвидирует "следы" его пребывания на первоначальном месте, внося в кадровый буфер необходимые изменения. Таким образом, центральный процессор освобождается от необходимости корректировать содержимое кадрового буфера видеоадаптера при перемещении указателя мыши — ему достаточно послать акселератору только новые координаты курсора.
5. Масштабирование растровых изображений
Масштабирование растровых изображений — очень часто выполняемая процедура, причем весьма трудоемкая для центрального процессора, т. к. требуется интенсивный обмен данными между CPU и видеопамятью. Такая задача возникает при изменении размеров окна программы, работе с растровыми изображениями в графических редакторах, просмотре на PC видеофильмов в полноэкранном режиме и в ряде других случаев.
Различают два вида масштабирования: дублирование (репликация) и интерполяция (фильтрация, сглаживание). Дублирование сводится к простому увеличению размера пиксела в необходимое количество раз. Оно сопровождается появлением характерных дефектов — пикселизации и алиасинга (зазубренности наклонных линий). Для сведения этих искажений к минимуму используется интерполяция. Ее суть заключается в том, что значение каждого пиксела нового, масштабированного изображения определяется как средневзвешенное значений нескольких соседних пикселов. Чем большее количество пикселов обрабатывается при интерполяции, тем лучше результат.
6. Панорамирование
Если объем видеопамяти превышает размер кадрового буфера, необходимый при данном разрешении и выбранной палитре, то прикладная программа может синтезировать изображение, размер которого (в пикселах) будет превышать размер видимой области экрана. Такая ситуация возникает, например, при использовании плоскопанельных ЖК-мониторов, рассчитанных на работу с фиксированным разрешением. В этом случае для просмотра невидимой в данный момент области экрана используется функция панорамирования (Panning),похожая на упомянутую выше прокрутку экрана. Однако панорамирование не требует выполнения операций типа BitBlt, а сводится лишь к изменению начального адреса той области видеопамяти, в которой записана видимая в данный момент часть изображения.
7. Преобразование цветового пространства
Преобразование цветового пространства используется главным образом в мультимедийных приложениях, связанных с обработкой видеоинформации.
Как известно, видеоадаптер SVGA в режимах High Color (16 бит на пиксел) и True Color (24 бита на пиксел) хранит изображение р кадровом буфере и передает его в RAMDAC в формате RGB. Однако для хранения изображения в формате RGB требуется память большого объема. Поэтому во многих приложениях, связанных с обработкой и хранением динамических изображений, использование данного формата нецелесообразно. В частности, в телевидении, цифровом видео и других областях широко используются более экономичные формы представления, основанные на замене трех сигналов основных цветов сигналами яркости и цветности. В настоящее время наиболее широко распространен формат YUV (см. главу 16).
Для воспроизведения цифрового изображения в формате YUV на экране монитора PC необходимо преобразовать это изображение в формат RGB. В частности, такая задача возникает при воспроизведении видео, сжатого по методу MPEG. Если преобразование цветового пространства будет выполнять центральный процессор, то решение им других задач (например, декомпрессию кадров) будет отложено, в результате чего скорость воспроизведения (частота кадров) будет недостаточной для создания у пользователя иллюзии непрерывности движения. Высококачественный графический ускоритель самостоятельно выполняет это преобразование, причем делает это в реальном масштабе времени.
8. Декомпрессия сжатых видеоданных
Цифровые видеофильмы хранятся в упакованном, сжатом формате. Обычно используется метод сжатия MPEG. При воспроизведении необходимо распаковать каждый кадр изображения перед его записью в кадровый буфер видеоадаптера. Эта распаковка, или декомпрессия, может выполняться либо программно (центральным процессором), либо аппаратно (графическим ускорителем). Первый вариант возможен только на PC с процессором Pentium 100 и выше. При наличии аппаратной декомпрессии цифровое видео можно воспроизводить даже на компьютере с процессором 386.
Построение трехмерных изображений
Перечень функций, используемых для построения трехмерных изображений, весьма обширен. Эти функции реализуются специальным устройством — 3D-акселератором, или ускорителем трехмерной графики. ЗD-акселератор может быть не только интегрированным в видеоадаптер, но и выполнен как отдельная плата.
Типовой современный графический ускоритель, предназначенный для обработки двумерных графических данных (2D), обычно реализует аппаратное ускорение первых семи функций. С одной стороны, это обеспечивает хорошую производительность в традиционных офисных приложениях типа Microsoft Word, Microsoft Excel и т. п. С другой стороны, аппаратная поддержка масштабирования и преобразования цветового пространства позволяет эффективно воспроизводить видеоданные программным путем на PC средней производительности.
2D-акселераторы
Первоначально видеоадаптеры с аппаратным ускорением графических
функций делились на две группы:
□ Видеоадаптеры с графическим ускорителем (акселератором)
□ Видеоадаптеры с графическим сопроцессором
Критерием разделения был способ реализации аппаратного ускорения и
степень "интеллектуальности" видеоадаптера.
Графический акселератор является по сути основательно усовершенствованным вариантом графического контроллера видеоадаптера VGA. Освобождая центральный процессор от выполнения многих операций, он не изменяет общего характера взаимодействия между CPU и видеоадаптером. Акселератор обладает определенной самостоятельностью только в пределах видеоадаптера (при работе с видеопамятью), но не в рамках общей архитектуры PC. В частности, акселератор не может самостоятельно через шину ввода/вывода обращаться к системной оперативной памяти так, как это делает центральный процессор.
Графический акселератор представляет собой устройство комбинационного типа, выполняющее заданные логические или арифметические операции по жесткому алгоритму, который не может быть изменен. По этой причине видеоадаптеры с графическим акселератором ориентированы, как правило, на вполне конкретные приложения (например, на поддержку графического оконного интерфейса Windows).
Графический сопроцессор является более универсальным устройством и работает параллельно с CPU (отсюда и его название). В принципе, графический сопроцессор решает те же задачи, что и акселератор, но делает это по-иному. Отличия проявляются как в структуре этих устройств, так и в способе их взаимодействия с центральным процессором.
Во-первых, графический сопроцессор — это интеллектуальное устройство, основу которого составляет арифметико-логическое устройство (АЛУ). АЛУ фактически представляет собой специализированный микропроцессор, работающий по программам, содержащимся в собственном ОЗУ. Таким образом, основное отличие графического сопроцессора от графического акселератора заключается в том, что сопроцессор можно запрограммировать на выполнение различных задач, тогда как ускоритель ориентирован только на конкретные приложения.
Во-вторых, графический сопроцессор, в отличие от графического акселератора, является активным устройством. В процессе выполнения своих функций он может наравне с центральным процессором обращаться к системной оперативной памяти и управлять шиной ввода/вывода.
В современных видеоадаптерах объем и сложность графических функций, выполняемых графическим сопроцессором, возросли до такой степени (особенно в области 3D), что они стали сопоставимы с объемом задач, решаемых центральным процессором PC. По этой причине приставка "со" утратила свой первоначальный смысл, и Chipset, составляющий основу современного видеоадаптера с аппаратной поддержкой практически всех упомянутых графических функций, стали называть графическим процессором, подчеркивая тем самым его самостоятельность в решении задачи формирования изображения на экране монитора.
Chipset для видеоадаптеров SVGA
Наиболее известными производителями наборов микросхем с аппаратным ускорением двумерной графики являются S3, ATI Technologies, Matrox, Tseng Labs, Cirrus Logic, Trident, 3Dfx и др. Приведем краткие характеристики некоторых наборов, выпускаемых этими компаниями.
S3 868
Это один из первых мультимедиа-акселераторов. Микросхема Vision 868 фирмы S3 представляет собой 64-разрядный графический контроллер. Помимо ускорения обычных графических операций (перенос блока данных BitBit, закраска прямоугольников, поддержка аппаратного курсора) данный процессор позволяет, в частности, преобразовывать поток данных в формате YUV в соответствующий поток в формате RGB с представлением 24 разряда на один пиксел. Данный акселератор позволяет воспроизводить видеоинформацию под Windows, используя популярные форматы кодеков типа Indeo, Cinepak и программный MPEG. Частота смены изображения достигает 30 кадров в секунду. Максимальный объем видеопамяти составляет 2 Мбайт.
S3 968
Дальнейшим развитием мультимедиа-акселераторов является сегодня уже несколько устаревший набор процессоров Vision 968 фирмы S3. В свое время он являлся одними из самых быстрых акселераторов. Максимальный объем поддерживаемой двухпортовой видеопамяти VRAM составляет 4 Мбайт. Это позволяет достигать разрешающей способности 1600x1200 точек при одновременном отображении 65 536 цветов. Акселераторы с этим контроллером при установке дочерней карты Motion Video Player (MVP), на которой установлен MPEG-декодер, отвечающий стандарту ISO 11172, позволяют работать с файлами в формате Video CD, CD-I, Karaoke CD. Кроме этого, этот мультистандартный декодер может преобразовывать аналоговый видеосигнал в цифровой (YUV).
S3 Trio64V+
Превосходит S3 968 по низкоуровневому быстродействию, но уступает по показателям аппаратного ускорения графики. Получил широкое распространение, и поэтому совместим с большинством существующих программ. Использует память типа FPM и EDO RAM. По своей производительности стал стандартом для современных PC.
S3 Trio64 V2/DX
Является модификацией предыдущего набора и отличается лучшей производительностью, особенно в режимах High Color и True Color.
S3 ViRGE (86C325)
Данный набор микросхем одним из первых обеспечил аппаратное ускорение отдельных функций по построению трехмерной графики, хотя для полноценной работы в 3D он все же не пригоден. Он не отличается высоким низкоуровневым быстродействием, но оснащен мощным ускорителем двухмерной графики, что позволяет ему конкурировать с более дорогими наборами. Предусматривает применение памяти типа EDO и FPM RAM.
При разработке S3 ViRGE за основу был взят очень популярный у производителей компьютеров графический процессор S3 Trio64V+. В результате созданный кристалл S3 ViRGE оказалася способным выполнять функции S3 Trio64V+ no аппаратной поддержке ускорения прорисовки двухмерных примитивов и ускорения работы графического интерфейса Wndows с новыми функциями (например, поддержкой "живого" видео). По этой причине данные видеоадаптеры целесообразно использовать при воспроизведении на компьютере Video-CD.
S3ViRGE/VX
Дальнейшее развитие S3 ViRGE реализовалось в графическом контроллере S3 ViRGE/VX, рассчитанном на работу с двухпортовой памятью типа VRAM. Поэтому видеоадаптеры на его базе обычно работают быстрее и лучше приспособлены для режимов с высокими разрешениями.
S3 ViRGE GX/DX (86C375)
Этот набор — улучшенная версия Chipset 86O325 (в частности, в новом Chipset частота RAMDAC увеличена с 135 до 170 МГц). Chipset S3 ViRGE GX/DX обладает хорошей производительностью в 2D-приложениях, но не обеспечивает значительного ускорения при обработке трехмерной графики, несмотря на первоначальные попытки фирмы S3 объявить свое изделие как совмещенный 2D/ЗD-ускоритель и видеоадаптер. Это стало особенно очевидно после появления акселератора Voodoo Graphics фирмы 3Dfx. Сегодня S3 ViRGE GX/DX является недорогим, но весьма эффективным решением для работы в офисных приложениях.
ATI MACH 64
Мощный аппаратный ускоритель двухмерной графики, но довольно медлителен при выполнении низкоуровневых операций. В нем не слишком удачно реализовано масштабирование изображения, поэтому он мало пригоден для воспроизведения цифрового видео.
ATI 3D RAGE II
Как и S3 ViRGE, представляет собой не слишком удачную попытку создать совмещенный 2D/ЗD-ускоритель. При работе в 2D он по всем параметрам превосходит ATI MACH 64 и обладает одним из лучших соотношений цена/производительность, однако для работы с трехмерной графикой малопригоден. Рассчитан на работу с памятью типа SGRAM.
ATI 3D Rage PRO
Являясь развитием ATI 3D RAGE II, Chipset ATI 3D Rage PRO унаследовал от него высокую производительность в 2D и крайне слабую реализацию функций трехмерной графики.
Matrox MGA-2064W
Этот уже устаревший, но еще достаточно конкурентоспособный высокопроизводительный графический акселератор работает с двухпортовой памятью типа WRAM. Имеет средства ЗВ-ускорения, однако фирма-изготовитель не планирует его как основу для использования в ЗD-акселераторах и видеоадаптерах с ускорением трехмерных функций.
Matrox MGA-1064SG
От MGA-2064W отличается меньшей ценой, использованием памяти типа SGRAM и более развитыми трехмерными возможностями.
Matrox MGAG100
Первая и неудачная попытка фирмы Matrox сделать графический акселератор с 2D- и ЗD-функциями — это Chipset Matrox Productiva G100. Хотя и имеет прекрасные показатели при работе с двумерной графикой и непривычно дешево стоит для изделий Matrox, Chipset не обеспечивает приемлемого качества обработки ЗD-изображений, поэтому не может использоваться в области трехмерной графики.
Tseng Labs ET6000
Является 128-разрядным графическим акселератором, в отличие от ранее рассмотренных 64-разрядных. Имеет хорошее низкоуровневое быстродействие, что позволяет его рекомендовать любителям "думоподобных" игр. Идеально подходит при работе с офисными приложениями. Однако в режимах High Color и True Color несколько уступает контроллерам ATI 3D RAGE II, S3ViRGE/VX, Matrox MGA 1064SG и Matrox MGA 2064W. Работает с одно-портовой памятью типа MDRAM (Multibank Dynamic Random Access Memory — Многобанковая память с произвольным доступом) и не имеет средств ускорения трехмерной графики.
Cirrus Logic CL-GD5446
Очень дешевый и достаточно быстрый акселератор. По быстродействию несколько превосходит S3 Trio64V+. Использует память EDO. Как правило хорошо подходит для компьютерных игр и для проигрывания файлов формата AVI.
Видеопамять для видеоадаптеров
Видеопамять адаптера VGA используется двумя устройствами: центральным процессором, записывающим в нее информацию, и видеоконтроллером, который считывает содержимое кадрового буфера и передает его в RAMDAC. Следовательно, быстродействие видеоадаптера зависит от скорости выполнения операций чтения/записи данных из видеопамяти.
В видеоадаптерах используются однопортовые и двухпортовые элементы динамической памяти.
Однопортовая память — это разновидность динамической памяти, имеющей только один порт, через который осуществляется чтение/запись данных. Таким образом, одновременное выполнение операций чтения и записи невозможно. Это сильно ограничивает быстродействие видеоадаптера, т. к. процессор может начать обновление кадрового буфера лишь после того, как видеоконтроллер завершит чтение данных из буфера. Память типа FPM DRAM, EDO DRAM, BEDO DRAM, SDRAM и SCRAM была рассмотрена в главе 7. Здесь же мы уделим внимание только специализированной памяти, предназначенной для использования исключительно в видеоадаптерах.
SGRAM
Память типа SGRAM (Synchronous Graphics RAM — Синхронная графическая память) имеет много общего с рассмотренной выше памятью типа SDRAM. Память SGRAM может работать на частотах 66 МГц и выше. По сравнению с DRAM, быстродействие SGRAM возросло более чем в четыре раза. Память SDRAM предназначена для хранения изображений, т. е. для использования в видеоадаптерах.
MDRAM
MDRAM (Multibank RAM — Мультибанковая динамическая память), разработанная фирмой MoSys Inc. и предназначенная специально для использования в системах обработки графики и видеоизображений. Главной особенностью памяти MDRAM является ее необычная организация. MDRAM представляет собой набор независимых банков обычной динамической памяти, емкость каждого из которых составляет 32 Кбайт.
Банком памяти называется совокупность микросхем памяти, суммарная разрядность которых равна разрядности шины данных. Например, для организации памяти из 8-разрядных микросхем при 32-разрядной шине данных каждый банк должен содержать 4 микросхемы памяти одинаковой емкости. Обычно используется два банка памяти, чтобы реализовать режим чередования адресов и циклов регенерации.
В результате использования одно- или двухбанковой архитектуры память видеоадаптера может иметь только конкретный объем: 1, 2, 4, 8 или 16 Мбайт. В этом случае видеопамять используется неэффективно. Например, в режиме 1024x768 и 16,7 млн цветов кадровый буфер должен быть объемом 2,25 Мбайт; установить же придется 4 Мбайт видеопамяти; 1,75 Мбайт использоваться не будут.
Благодаря независимости банков памяти MDRAM стало возможно создавать микросхемы памяти различного номинала и, как следствие, исключить избыточность объема, свойственную памяти других традиционных типов. В частности, фирмой MoSys выпускаются модули памяти емкостью 0,5, 0,75, 1, 1,125 и 1,25 Мбайт. Кроме того, MDRAM можно организовать таким образом, что обращение к каждому банку будет независимым. А это путь к несомненному повышению производительности видеоадаптера в целом по сравнению с моделями, использующими VRAM или WRAM. Память MDRAM применяется пока только в видеоадаптерах фирмы Tseng Labs (ЕТ6000, ЕТ6100).
В отличие от однопортовой видеопамяти, ограничивающей быстродействие видеоадаптера, использование двухпортовой видеопамяти позволяет осуществлять одновременное выполнение операций чтения и записи данных, т. е. к ней одновременно могут обращаться два устройства (например, графический процессор и RAMDAC). Двухпортовая видеопамять, хотя и стоит дороже однопортовой, но обеспечивает значительное ускорение работы видеоадаптера, особенно в режимах с высокими разрешением и глубиной цвета. В настоящее время существуют две разновидности двухпортовой памяти — VRAM и WRAM.
VRAM
VRAM (Video RAM) — это динамическая память с двумя портами, через которые могут одновременно выполняться операции чтения и записи. Для работы с такой памятью на плате видеоадаптера устанавливается специальный контроллер. Как следует из ее названия, VRAM была разработана исключительно для видеосистемы PC. Преимущества VRAM особенно заметны при работе в режимах с высоким разрешением (1280x1024 и выше) и 24-битным представлением цвета. Поэтому элементы памяти этого типа используются в основном в профессиональных графических системах, где важны их характеристики, отвечающие самым высоким требованиям, а стоимость уже не является серьезным ограничением.
WRAM
Архитектура WRAM (Window RAM) очень похожа на архитектуру VRAM, но стоимость изготовления WRAM ниже. WRAM может работать на частоте до 50 МГц, благодаря чему быстродействие повышается на 50% по сравнению с VRAM.
Технология изготовления и схемотехника памяти типа WRAM (рис. 15.10) ориентированы на конкретное применение в видеоадаптерах. В этой памяти имеется режим быстрой записи двухцветных блоков для ускорения пересылки текста и закраски областей пикселными шаблонами {Dual-Color Block Write), а также реализована технология двойной буферизации FastBit. В соответствии с технологией FastBit для двух смежных кадров предусмотрены два кадровых буфера. Пока первый кадр отображается (считывается в RAMDAC), CPU формирует следующий. В итоге обеспечивается быстрая смена кадров, что особенно важно при обработке видео и работе с трехмерной графикой.
Рис. 15.10. Микросхема памяти WRAM
Все перечисленные типы видеопамяти считаются традиционными, поскольку широко применяются на практике. Однако в настоящее время появилась память новых типов, которая пока не нашла широкого применения, но за такой памятью будущее.
Перспективные типы видеопамяти Direct RDRAM
Direct RDRAM (Direct Rambus DRAM) — динамическая память с прямым доступом производства американской фирмы Rambus. Эта память считается сегодня одной из самых быстродействующих. В настоящее время память этого типа выпускают несколько компаний, в том числе NEC, Fujitsu и Toshiba.
В микросхемах Direct RDRAM сохранились старые принципы чтения/записи данных. Изменения относятся лишь к организации доступа к ячейкам памяти. Технология Rambus предусматривает наличие 16-разрядной высокоскоростной шины Rambus Channel, тактовая частота работы которой составляет 400 МГц, а скорость передачи данных — 1,6 Гбайт/с.
3D RAM
3D RAM — память для ускорителей трехмерной графики. Разработана фирмой Mitsubishi для совместного использования со своим Chipset 3Dpro. Этот Chipset предназначен для работы с трехмерной графикой и основан на использовании передовой технологии REALImage фирмы Evans&Sutherland. Память 3D RAM является двухпортовой. Она имеет разветвленную архитектуру, позволяющую осуществлять конвейерную (параллельную) обработку данных. Кроме того, предусмотрено наличие встроенного процессора и скоростных видеобуферов.
CDRAM
CDRAM (Cashed DRAM) — кэшированная динамическая память. Является также разработкой фирмы Mitsubishi. Представляет собой комбинацию динамической памяти и небольшого скоростного буфера (с временем доступа 10—15 не), выполненного на элементах статической памяти, традиционно используемой в качестве кэш-памяти. В частности, имеются модули памяти CDRAM, содержащие 4 или 16 Мбит динамической и 16 Кбит статической памяти. Подобно 3D RAM, элементы CDRAM предназначены для использования в ЗО-ускорителях (память для текстур). Кроме того, CDRAM используется в качестве кэш-памяти в скоростных винчестерах с интерфейсом Fibre Channel. CDRAM имеет 128-разрядную внутреннюю шину данных и 16-разрядную внешнюю, благодаря чему данные считываются из памяти со скоростью около 800 Мбайт/с.
DDR SDRAM
DDR SDRAM (Double Data Rate SDRAM) — память SDRAM с удвоенной скоростью передачи данных. Другое название памяти этого типа — SDRAM П. Разработка компании Samsung. Основное отличие этой памяти от SDRAM заключается в том, что чтение данных осуществляется как по фронту, так и по спаду тактового сигнала, за счет чего выполняется два обращения к памяти за время одного обращения к SDRAM.
ESDRAM
ESDRAM (Enhanced SDRAM) — улучшенная память SDRAM. Разработка фирмы Enhanced Memory Systems. Более высокого быстродействия элементов памяти ESDRAM по сравнению с SDRAM (и даже DDR SDRAM) удалось добиться благодаря использованию более совершенной архитектуры и встроенной статической (SRAM) кэш-памяти (подобно тому, как это реализовано в элементах памяти CDRAM). Кроме того, за счет реализации алгоритма "упреждающего чтения" из ячеек SDRAM в более быстрых регистров SRAM, по аналогии с технологией кэширования жестких дисков, значительно повышена скорость считывания информации.
В табл. 15.4 приведены основные характеристики наиболее распространенных типов видеопамяти. Пропускная способность указана для 64-разрядной шины данных.
Таблица 15.4. Основные характеристики видеопамяти различных типов
ЗD-акселераторы
Устройства, рассмотренные в главе 14, обеспечивают отображение стереоскопических изображений, однако такие изображения предварительно необходимо синтезировать. В простейшем случае можно использовать две фотографии одного и того же объекта, отснятые под разными ракурсами (так поступают, например, при съемке стереокино). Однако это возможно только тогда, когда отображаемый объект существует реально. Если же объект является виртуальным (например, в играх), то необходимо сконструировать (смоделировать) его объемное изображение, причем задачу синтеза элементов стереопары вместо фотоаппарата должен выполнять PC. Иными словами, необходимо задать математическую модель объекта (каждую точку его поверхности) в трехмерной системе координат, аналитически рассчитать всевозможные зрительные эффекты (угол падения света, тени и т. п.), а затем корректно спроецировать трехмерный объект на плоский экран.
Совокупность приложений и задач, в рамках которых реализуется эта схема построения трехмерного изображения на экране монитора PC, называется трехмерной графикой, или 3D (З-Dimentional — Трехмерный). Наиболее яркими примерами трехмерной графики служат многочисленные компьютерные игры, поражающие реалистичностью создаваемых образов (Quake II, Final Realty, Tomb Rider и многие другие). Другой пример 3D-моделирования — отображение на компьютере внешнего вида доисторических животных, позволяющее настолько правдоподобно их "оживить", что создается полная иллюзия, что вы видите результат реальной видеосъемки, а не компьютерной анимации (например, документальный фильм "Прогулки с динозаврами").
Объем вычислений, необходимый для моделирования трехмерного объекта, очень велик. Если эти вычисления возложить на CPU, то производительность системы упадет настолько, что о работе в реальном времени и говорить не придется. Чтобы обеспечить возможность видеть на экране проекцию динамического трехмерного объекта, в состав PC включают устройство,
самостоятельно выполняющее основную часть расчетов трехмерной сцены.
Такое устройство принято называть ускорителем трехмерной графики или
ЗВ-акселератором.
Подчеркнем еще раз, что ЗЭ-акселератор необходим только в том случае,
когда объемное изображение синтезируется компьютером, т. е. создается
программно.
Примечание
Не следует путать ЗD-акселераторы с рассмотренными в главе 14 устройствами формирования трехмерных изображений (VR-шлемами, ЗD-очками и т. п.) — это совершенно разные устройства как по назначению, так и по принципу действия: первые обеспечивают синтез видеосигнала трехмерного изображения, а вторые — его отображение с учетом эффекта бинокулярного зрения. Конечно, в идеале они должны использоваться совместно, дополняя друг друга. Однако, поскольку стереоскопические устройства отображения не получили пока в нашей стране широкого распространения (в основном, из-за высокой цены), в подавляющем большинстве случаев пользователю приходится наблюдать результат работы ЗD-ускорителя в двумерном виде, т. е. на плоском экране монитора.
Первоначально ЗD-акселераторы размещались на платах (отдельно от видеоадаптера), устанавливаемых в слот шины ввода/вывода и соединяемых с видеоадаптером специальным кабелем типа Pass-Through. Отсюда и возник термин "ЗD-акселератор" — самостоятельное устройство, используемое только для работы с трехмерной графикой. При работе в обычном режиме 3D-акселератор выступал в роли пассивного элемента, включенного между видеоадаптером и монитором. Таким, в частности, был ЗD-акселератор Voodoo производства фирмы 3Dfx, момент появления которого и считается началом эры 3D. Однако по мере увеличения степени интеграции микросхем ЗD-акселераторы стали размещать непосредственно на карте видеоадаптера. Это позволило не только снизить стоимость видеосистемы, но и устранить необходимость в сквозном кабеле, использование которого порождало массу проблем.
Все современные видеоадаптеры содержат один мощный графический процессор, в состав которого, помимо ускорителя традиционной 20-графики, входит ЗD-акселератор. Поэтому в настоящее время термин "ЗD-акселератор" практически утратил свой первоначальный смысл: сегодня он означает не специализированную плату, а универсальный видеоадаптер, в состав которого входит ускоритель как двумерной, так и трехмерной графики.
Примечание
Мы будем употреблять термин "ЗD-акселератор" в обоих смыслах, заостряя внимание на его конструкции лишь там, где это необходимо.
Практически все ЗD-акселераторы для PC, имеющиеся на рынке, в основном ориентированы на ускорение трехмерной графики в игровых приложениях, поэтому их условно называют игровыми ЗD-акселераторами. Кроме них существуют профессиональные графические ускорители, предназначенные для систем автоматизированного проектирования, моделирования и т. п.
Синтез трехмерного изображения. ЗD-конвейер
Основная цель синтеза ЗD-изображения — аналитический расчет визуальных эффектов, создающих ощущение объемности изображения и, соответственно, иллюзию его реальности. Эти эффекты относятся к группе вторичных факторов, определяющих способность человека к объемному восприятию (первичным фактором является стереозрение). В основе вторичных факторов лежит способность человека подсознательно анализировать такие особенности изображения, которые обусловлены пространственным положением наблюдаемых объектов и их частей. К этим факторам относятся:
□ оценка расстояния до предмета на основе информации о его размерах (чем меньше объект — тем он дальше);
□ оценка порядка наложения предметов друг на друга (кто выше — тот ближе);
□ определение глубины пространства за счет использования эффекта перспективы — визуального сближения параллельных линий, уходящих вдаль;
□ анализ световых эффектов на предмете (теней, бликов и т. п.).
Принципиально важным является тот факт, что все эти особенности доступны не только при бинокулярном, но и при монокулярном зрении, что позволяет задействовать их при использовании традиционных, двумерных устройств отображения (например, монитора).
Чтобы корректно рассчитать все эти эффекты, процесс синтеза трехмерного изображения объекта (точнее, его двумерной проекции) строится по определенной схеме, называемой ЗD-конвейером. В самом общем виде можно выделить основные этапы ЗD-конвейера:
1. Построение геометрической модели поверхности объекта путем задания трехмерных координат опорных (ключевых) точек, а также уравнений соединяющих их линий. В результате этого возникает так называемая каркасная модель объекта (wireframe). На рис. 15.11 изображена каркасная модель тора, заданного координатами центра О (х, у, z), внутренним радиусом R1 и радиусом сечения R2.
2. Разбиение поверхности полученного объекта на элементарные -плоские элементы — прямоугольники или треугольники. Этот этап называется также тесселяцией (Tesselation) или триангуляцией. В результате поверхность объекта, обычно имеющая искривленную (овальную) форму, становится "граненой", т. е. представляет собой совокупность плоских многоугольников (треугольников или четырехугольников). Чем больше таких граней и чем меньше они по размеру, тем точнее воспроизводится поверхность объекта (рис. 15.12).
Рис. 15.11. Каркасная модель объекта
Рис. 15.12. Тесселяция объекта при помощи 420 (слева) и 2668 (справа) треугольников
3. Трансформация {Transformation). На этом этапе моделируется движение объекта: его перемещение, вращение и изменение размеров (формы). Она сводится к стандартному преобразованию координат вершин граней (вертексов) и реализуется путем выполнения множества различных операций матричной (линейной) алгебры и тригонометрических функций (рис. 15.13).
4. Расчет освещенности {Lighting) и затенения {Shading) объекта. На данном этапе рассчитывается освещенность каждого элементарного треугольника, принимая во внимание его удаленность от источника света и угол падения светового луча (вот для чего элемент поверхности объекта должен быть плоским). Это позволяет имитировать реальную освещенность объекта, подчеркивающую его объемность. Однако, если освещенность всех точек каждого треугольника одинакова, то поверхность объекта будет выглядеть состоящей из множества маленьких плоских граней (рис. 15.14). Чтобы устранить этот дефект, используют различные методы интерполяции значений освещенности, позволяющие плавно изменять освещенность каждой грани и скрыть резкие переходы между гранями. Эти приемы принято называть методами затенения. Наиболее распространенными из них являются метод Typo (Gouraud Shading) и метод Фонга {Phong Shading).
Рис. 15.13. Трансформация формы объекта путем изгиба и скручивания
Рис. 15.14. Расчет освещенности без использования алгоритмов интерполяции
5. Проецирование полученного трехмерного объекта на плоскость экрана. На данном этапе происходит первое, предварительное преобразование трехмерного объекта в совокупность двумерных, однако информация о расстоянии каждой из вершин элементарного треугольника до плоскости проектирования сохраняется. Это позволяет на последующих этапах корректно определить, какие части объекта окажутся видимыми, а какие — нет. Совокупность данных о глубине каждой из вершин, или значения ее третьей координаты Z называют z-буфером. Использование z-буфера — одно из главных отличий работы с трехмерной графикой от работы с двумерной.
6. Обработка {настройка) данных о вершинах элементарных треугольников, полученных на предыдущих этапах (Triangle Setup). На этом этапе выполняется преобразование формы представления координат вершин: из чисел с плавающей точкой (вещественных чисел) формируются целые числа. Кроме того, производится сортировка вершин, отбрасывание задних граней (culling) и ряд других действий.
7. Удаление скрытых поверхностей — исключение из проецирования тех элементов поверхности объекта, которые оказываются невидимыми с точки наблюдения. Этот этап называется также HSR (Hidden Surface Removal). Строго говоря, процесс удаления скрытых поверхностей выполняется последовательно на нескольких этапах: на предыдущем (Triangle Setup), когда обрабатываются векторные изображения, а также на последующих, на которых с помощью алгоритмов z-буферизации или z-сортировки обрабатываются растровые изображения.
8. Закраска элементарных треугольников, или текстурирование, выполняется путем наложения текстур (Texture mapping) с учетом данных, полученных на предыдущих этапах (рис. 15.15). Текстура (Texture) — это элемент обшивки объекта, т. е. изображение участка его поверхности. Оно хранится в виде квадратной растровой картинки, состоящей из текселов (Texel — TEXture ELement — Элемент текстуры). После наложения текстур (рис. 15.15, слева) каркасная модель (см. рис. 15.12) как бы "обрастает кожей" и становится похожа на реальный объект.
Рис. 15.15. Текстура (слева) и результат ее наложения на каркасную модель (справа)
Наложение текстур — это первый этап конвейера, выполняемый с растровой графикой. В результате каждый треугольник, задававшийся только координатами вершин, заменяется частью текстуры. При этом значение каждого пиксела двумерного изображения вычисляется по значению соответствующего тексела текстуры (одному или нескольким). Соответствие между пикселами и текселами обеспечивается благодаря результатам 5-й стадии 3D-конвейера, т. е. проецированию. Текстурирование — довольно трудоемкий процесс, поскольку обработке подвергается растровая графика. При модификации растрового изображения возникают многочисленные дефекты, поэтому на данном этапе используются разнообразные приемы коррекции изображения: применение текстур с различным разрешением (МIP-mapping), коррекция перспективы, фильтрация и другие действия.
9. Моделирование эффектов прозрачности и полупрозрачности. Здесь на основе информации о взаимной прозрачности объектов и среды выполняется коррекция цвета пикселов — так называемое альфа-смешение {alpha-blending) и затуманивание (fogging).
10. Коррекция дефектов картинки, вызванных зазубренностью линий на границах объектов, — так называемый антиалиасинг {anti-aliasing).
11. Интерполяция недостающих цветов — дизеринг (dithering) — используется в том случае, когда в текущем видеорежиме ЗD-акселератора для кодирования цвета пиксела используется менее 24 бит (например, в режим High Color при 16-битном цвете). Это приводит к незначительному ухудшению разрешения (резкости), но позволяет эффективно имитировать цвета, отсутствующие в палитре.
12. Окончательное формирование кадрового буфера (frame buffer) — области памяти ЗD-акселератора, в которую помещается спроецированное двумерное изображение. Кадровый буфер используется для формирования выходного, аналогового видеосигнала ЗD-ускорителя точно так же, как это делается в обычном видеоадаптере VGA (в совмещенных 2D/3D-KapTax под кадровый буфер отводится часть видеопамяти). Для ускорения процесса создания изображения используется механизм двойной буферизации, при котором выделяется память одновременно для двух смежных кадров: построение следующего кадра начинается еще до того, как закончится отображение (передача в RAMDAC) предыдущего. В результате удается избежать ненужного "простоя" акселератора и обеспечить более плавную смену кадров.
13. Пост-обработка (Post-processing). Используется в том случае, когда требуется реализовать какие-либо двумерные эффекты над подготовленным кадром как единым целым.
Этапы 1—6 образуют так называемую геометрическую стадию ЗD-конвейера. На этой стадии выполняются интенсивные тригонометрические вычисления (в большинстве случаев центральным процессором PC, т. к. он содержит математический сопроцессор с аппаратной поддержкой необходимых функций: вычисление значений тригонометрических функций, обработка чисел с плавающей точкой и др.). Однако в Chipset новейших моделей игровых 3D-акселераторов (например, nVidia GeForce 256, ATI Radeon 256, S3 Savage 2000) уже входит процессор, обеспечивающий аппаратное ускорение выполнения операций геометрической стадии ЗО-конвейера. По всей видимости, в ближайшее время его наличие станет стандартом, поскольку уже наметилась тенденция сближения характеристик игровых и профессиональных ускорителей.
Этапы 7—13 образуют стадию прорисовки объекта, или стадию рендеринга {Rendering — Изображение, рисование, визуализация). На этой стадии все действия выполняются уже с растровыми объектами, состоящими из отдельных, дискретных элементов — пикселов и текселов.
Примечание
Иногда термин "рендеринг" употребляют для обозначения всего ЗD-конвейера, а этапы 7—13 называют "растеризацией", подчеркивая тем самым отличие данной стадии конвейера от предыдущей, на которой все операции выполнялись с векторной графикой. Мы будем придерживаться термина "рендеринг", понимая под этим только этапы 7—13.
Стадия рендеринга является наиболее сложной, многоэтапной и трудоемкой. Выполняемые операции не характерны для центрального процессора (как на геометрической стадии), поэтому именно на этом этапе конвейера необходимо аппаратное ускорение. Большинство современных 3D-ускорителей как раз и предназначены для рендеринга на аппаратном уровне и различаются лишь количеством реализуемых функций.
Функции ЗD-акселераторов
Для ускорения выполнения этапов ЗD-конвейера ускоритель трехмерной графики должен обладать определенным набором функций, т. е. аппаратно, без участия центрального процессора, производить операции, необходимые для построения ЗD-изображения. Набор этих функций является важнейшей характеристикой ЗD-акселератора, которую нужно учитывать при его выборе. Кратко рассмотрим основные ЗD-функции игровых ускорителей трехмерной графики.
Затенение
Для создания ощущения объемности объекта необходимо корректно рассчитать освещенность его поверхности. Эта задача решается в процессе затенения. Расчет освещенности "точек каждой грани выполняется на основании закона освещенности, согласно которому освещенность точки поверхности прямо пропорциональна силе света и косинусу угла а между направлением падения света и нормалью к поверхности, но обратно пропорциональна квадрату расстояния до источника света.
Освещенность объекта легко рассчитать в том случае, когда он состоит из плоских граней: нормаль к грани имеет постоянную ориентацию, и освещенность всех точек грани будет одинакова. Такое затенение называют простым или плоским (Flat Shading). Это самый простой и быстрый метод, однако при его использовании подчеркивается дискретность разбиения (тесселяции), т. е. объект выглядит угловатым (рис. 15.16, слева). Для устранения этого недостатка используется метод Гуро, с помощью которого можно придать поверхности объекта гладкую, овальную форму (рис. 15.16, справа).
Рис. 15.16. Плоское затенение (слева) и затенение Гуро (справа)
При использовании метода Гуро освещенность каждой точки (пиксела) внутри грани вычисляется путем линейной интерполяции по значениям цвета или яркости на его краях. Поскольку изменение освещенности происходит линейно, можно составлять простые и эффективные алгоритмы затенения по методу Гуро, не требующие больших вычислительных затрат. Интерполяции может подвергаться не только освещенность объекта, но и его цвет.
В игровых 3D-ускорителях затенение Гуро является наиболее распространенным приемом, позволяющим быстро и легко убрать дефекты тесселяции. Однако по этому методу нельзя корректно рассчитать освещенность грани при близком расположении источника света, а по методу Фонга — можно. Данный метод учитывает изменение угла падения света для различных точек грани (в идеале — для всех точек, как минимум — для вершин грани). Строгая реализация затенения Фонга требует расчета угла падения света для каждой точки грани, что не позволяет его реализовать в реальном масштабе времени. Для ускорения расчетов затенение Фонга применяется с использованием так называемых карт затенения, подготовленных заранее.
Выделение глубины
Простым, но эффективным способом создания иллюзии объемности объекта путем изменения освещенности является прием, называемый выделение глубины (Depth Cueing). Его суть очень проста: по мере увеличения значения координаты z освещенность пиксела убывает (рис. 15.17).
Рис. 15.17. Выделение глубины объекта
Удаление скрытых поверхностей
При реализации проецирования трехмерного объекта на двумерную плоскость экрана необходимо корректно определить, какие части, объекта будут видимыми, а какие — нет. Это, во-первых, позволит избежать ошибок при построении изображения и, во-вторых, значительно уменьшить количество граней, которые необходимо текстурировать. Этот процесс называется HSR {Hidden Surface Removal — Удаление скрытых поверхностей). Он носит комплексный характер и решается последовательно, на различных этапах 3D-конвейера. В частности, можно выделить несколько этапов в процессе HSR.
1. Отсечение частей изображения, не попадающих в объем отсечения {clip volume). Объем отсечения представляет собой параллелепипед, задающий границы трехмерной сцены.
2. Отбрасывание задних, невидимых граней {culling).
3. z-сортировка.
4. z-буферизация.
Два первых этапа выполняются на геометрической стадии ЗD-конвейера, а два последних — на стадии рендеринга.
Суть первого этапа очевидна — все, что оказывается за пределами объема отсечения, исключается из дальнейшей обработки. Эта процедура реализуется всегда.
Отбрасывание задних граней выполняется после проведения тесселяции. Поскольку треугольники ориентированы в пространстве, можно легко определить ориентацию нормали к каждой грани. Если нормаль направлена на наблюдателя, то грань видима, в противном случае она исключается из дальнейшей обработки. За счет отбрасывания задних граней уменьшается общий объем операций по рендерингу примерно в два раза.
Однако может возникнуть ситуация, когда две грани ориентированы на наблюдателя, но при проецировании они перекрываются. Какую же из них следует текстурировать?
Для ответа на этот вопрос анализируется третья координата (z) каждого элемента поверхности объекта, описывающая его удаление "вглубь" экрана.
Область памяти, отводимая для хранения этих данных для всех точек поверхности, называется z-буфером. Разрядность z-буфера — важный параметр 3D-акселератора, определяющий число возможных градаций глубины трехмерной сцены. Современные модели ЗD-акселераторов имеют 24- и 32-разрядный z-буфер.
Для удаления невидимых участков могут использоваться 2 метода: z-сортировка и z-буферизация.
Z-сортировка (z-sorting) — наиболее простой метод, при котором целенаправленное удаление скрытых поверхностей как таковое специально не производится. Программа выполняет рендеринг всех элементов трехмерной сцены, но в порядке убывания координаты z. При этом происходит их наложение, причем более близкий к зрителю элемент сцены прорисовывается поверх более удаленного. Естественно, что видимым оказывается последний из элементов, т. е. ближний. При z-сортировке не требуется хранить (запоминать) координаты z, (z-буфер не используется), однако нерационально загружается CPU: прорисовывать приходится весь объект, независимо от видимости его элементов. Кроме того, при прорисовке близко расположенных или пересекающихся объектов данный метод часто дает ошибочный результат (рис. 15.18, слева)
Под z-буферизацией подразумевается проведение анализа всех z-координат в процессе рендеринга. Для этого, собственно, и нужен z-буфер. Из всех точек объекта с одинаковыми координатами (х, у) проецироваться будет только одна, координата z которой имеет минимальное значение. В результате этого будут корректно изображены объекты, образованные пересекающимися поверхностями (рис. 15.18, справа).
Рис. 15.18. Удаление скрытых поверхностей методом z-сортировки (слева) и методом z-буферизации (справа)
Оптимизация наложения текстур
Наложение текстур — наиболее трудоемкая и сложная стадия ЗD-конвейера, которая сопровождается появлением многочисленных дефектов изображения. Именно на этом этапе реализуется большая часть разнообразного арсенала аппаратных средств ЗD-акселератора, используемого для коррекции изображения.
Для создания реалистичной картины при рендеринге близко расположенных и удаленных частей сцены необходимо использовать различное разрешение. Большинство поклонников первых трехмерных игр хорошо помнят характерный недостаток Wolf 3D и DOOM — гладкая на расстоянии стена или дверь при приближении быстро искажается за счет эффекта пикселизации, превращаясь в набор цветных квадратов. Причина проста: в этих играх для рендеринга удаленных и близких поверхностей используются текстуры с одинаковым (низким) разрешением.
Увеличение размеров объекта при приближении к нему сопровождается масштабированием растровой картинки текстуры. В результате проявляется хорошо известный всем эффект — пикселизация (лестничный эффект). Можно было бы использовать текстуры с высоким разрешением, однако это требует значительного объема памяти для их хранения, и совершенно не нужно при текстурировании удаленных объектов. Для решения этой проблемы предназначена следующая функция.
MIP –текстурирование
MIP-текстурирование, или мипмэппинг (MIP-mapping), применяется для устранения пикселизации при приближении к ЗD-объекту. Суть М1Р-текстури-рования состоит в том, что в памяти акселератора хранятся несколько копий одной и той же текстуры, но с различным разрешением LOD (Level Of Detali-zation — Уровень детализации). Каждая последующая копия текстуры содержит в 4 раза больше пискелов, чем предыдущая. Совокупность всех копий одной и той же текстуры называют MIP-каскадом (рис. 15.19).
Рис. 15.19. MIP-каскад
При рендеринге ближних к наблюдателю поверхностей используются более крупные текстуры, а при прорисовке дальних — более мелкие. Это значительно ослабляет эффект пикселизации. Название этой технологии образовано аббревиатурой MIP {Multum In Parvo — Много в одном), что отражает основную идею описанных выше действий. Очевидный недостаток данного метода — резкое увеличение памяти акселератора, необходимой для хранения текстур. Для того чтобы хранить текстуры не в локальной памяти 3D-акселератора, а в RAM PC и при необходимости быстро их подгружать, используется локальная шина AGP с высокой пропускной способностью.
Однако применение технологии MIP-mapping само по себе не решает всех проблем, т. к. разрешение текстур меняется дискретно, вызывая искажения. В частности, возникает целый ряд специфических дефектов:
□ появление бэндинга (полос) MIP-текстурирования {Banding Of MIP-mapping) — хорошо различимых границ между текстурами с разным разрешением;
□ возникновение "шума текстуры" — при движении объекта на его поверхности образуется изменяющийся рисунок;
□ размывание мелких деталей та удаленных текстурах и муара (инородного рисунка) на изображении текстуры;
□ нарушение перспективы на рисунке текстуры;
□ нестыковка текстур на краях;
□ "рваные", угловатые края объектов, особенно заметные на наклонных линиях (этот дефект обычно называется алиасингом — aliasing);
□ неправильное отображение глубины отдельных элементов рисунка, называемое z-алиасингом (z-aliasing).
Для устранения этих дефектов используется фильтрация, которая заключается в интерполяции значения тексела по значениям соседних.
Фильтрация
Главная идея фильтрации — линейная интерполяция значения тексела в зависимости от значения соседних текселов в одной или двух текстурах ближайшего уровня детализации. Различают следующие виды фильтрации.
□ Линейную (Linear filtering, LF) — для интерполяции тексела используется значение тексела в текстуре ближайшего уровня (LOD).
□ Билинейную (Bi-linear filtering, BLF) — каждый тексел вычисляется как взвешенная сумма четырех соседних пикселов (слева и справа, а также сверху и снизу). Это наиболее распространенный метод, однако он не устраняет полос MIP-текстурирования и приводит к небольшой "размытости" изображения (рис. 15.20).
□ Трилинейную (Tri-linearfiltering, TLF) — каждый тексел текстуры вычисляется как усредненный результат билинейной фильтрации по двум соседним уровням детализации (используются две текстуры). Это наиболее аккуратный из используемых методов, при котором полосы MIP-текстурирования не образуются.
Рис. 15.20. Пример использования билинейной фильтрации: а — билинейная фильтрация выключена; б — билинейная фильтрация включена
□ Анизотропную — используется при прорисовке сильно наклоненных к наблюдателю граней, когда текселы перестают быть квадратными (рис. 15.21). В соответствии с этим методом тексел описывается эллипсом и интерполяция выполняется по большему количеству текселов (до 32). Анизотропная фильтрация значительно сложнее трилинейной и используется в основном в высококачественных игровых и профессиональных ЗО-акселераторах.
Рис. 15.21. Пример реализации трилинейной (слева) и анизотропной (справа) фильтрации
Примечание
Для реализации трилинейной фильтрации ЗD-акселератор должен иметь два блока обработки текстур с соответствующими буферами памяти. При наличии одного блока возможна лишь программная реализация (эмуляция) функции, но при этом значительно снижается производительность видеосистемы.
Мультитекстурирование
Важным преимуществом ЗD-акселератора является его способность ускорения процесса наложения текстур. Данной цели можно достичь путем использования технологии мулыпитекстурирования. Как правило, итоговое значение каждого пиксела кадрового буфера становится известным только после наложения на него нескольких текстур (за счет пересечения и наложения объектов). Для этого текстурирование необходимо выполнять несколько раз (в несколько этапов). Чтобы решить все задачи за один этап, в архитектуре ЗD-акселератора используется не один, а два блока обработки текстур, работающих параллельно. Наложив на грань одну текстуру, первый блок передает результат работы второму блоку, который накладывает на нее другую текстуру. Первый же блок в это время уже занят обработкой следующей грани и т. д. Другими словами, тектурирование выполняется конвейерным методом (рис. 15.22). ,
Рис. 15.22. Механизм мультитекстурирования
Как и в случае трилинейной фильтрации, аппаратная поддержка мультитекстурирования требует наличия в архитектуре ЗD-акселератора двух параллельно работающих блоков обработки текстур.
Текстурирование с коррекцией перспективы
Еще одной важной задачей при наложении текстур является коррекция перспективы. Так как различные грани, образующие поверхность объекта, наклонены под разными углами к линии зрения, наложение текстуры требует выполнения поворота и скоса растра исходной квадратной текстуры. При этом возникают характерные искажения, нарушающие ориентацию рисунка текстура на поверхности объекта и приводящие к искажению зрительной перспективы (рис. 15.23). Для коррекции этих искажений акселератор должен аппаратно выполнять операцию Perspective Corrected Texture Mapping (наложение текстуры с коррекцией перспективы).
Рис. 15.23. Пример текстурирования с коррекцией перспективы (слева) и без, нее (справа)
Моделирование рельефа при наложении текстур
Строго говоря, рельеф объекта формируется на первых этапах геометрической стадии. Однако это грубый рельеф, который передает сравнительно крупные детали поверхности. Предусмотреть на геометрической стадии задание тонкой структуры рельефа не представляется возможным, т. к. это значительно усложнит геометрическую модель и сведет на нет выгоду от использования векторной графики. Между тем реалистичность отображения объекта во многом зависит именно от тонкого рельефа, передающего мелкую структуру поверхности и позволяющего создать ощущение шершавости или, напротив, гладкости, зеркальности поверхности.
Оказывается, эту задачу можно решить на этапе наложения текстур, изменяя соответствующим образом их рисунок. Эта технология получила название рельефное текстурирование {bump-mapping). Согласно определению автора данной технологии, Джима Блинна, рельефное текстурирование — это метод получения визуальных выпуклостей и вогнутостей на поверхности объекта, находящегося в трехмерном пространстве, без изменения геометрической формы самого объекта.
Основная идея рельефного текстурирования очевидна — наличие неровностей на поверхности объекта приводит к образованию участков с разной освещенностью. Вопрос только в том, каким образом задать правило, по которому будет изменяться освещенность различных участков текстуры. Существует несколько разновидностей рельефного текстурирования:
□ текстурирование методом вдавливания (чеканки) — Embossing Bump Mapping;
□ текстурирование с использованием карт окружающей среды — Environment Map Bump Mapping;
□ текстурирование с применением программно-изменяемых рельефных карт — Procedural Texturing.
В результате технология рельефного текстурирования напоминает рассмотренные выше методы затенения.
Наиболее простым является первый метод, который реализован в подавляющем большинстве игровых ЗD-акселераторов.
Управление прозрачностью (цветовой насыщенностью) текстур
Важную роль для правильного построения трехмерной сцены играет управление оттенками цветов. Это необходимо при отображении движущихся объектов (например, при удалении) и, особенно, при их наложении. Техника управления оттенками цветов получила название альфа-смешения (Alpha Pixel Blending — Смешение цветов пикселов с учетом коэффициента а). При ее использовании цвет каждого из двух пикселов, участвующих в наложении, определяется не тремя, как обычно, а четырьмя компонентами: R, G, В и а, где а — весовой коэффициент, учитывающий степень прозрачности объекта (Object Transparency). Значению а = 1 соответствует прозрачный пиксел, значению а = 0 — непрозрачный. При таком способе задания цвета появляется возможность корректно управлять процессом смешения цветов при наложении друг на друга полупрозрачных объектов (рис. 15.24).
Рис. 15.24. Пример использования α-смешения полупрозрачных (слева) и непрозрачных (справа) объектов
Плавное уменьшение коэффициента а до нуля по мере удаления объекта позволяет создать эффект, называемый затуманиванием (Fogging). Он имеет место, когда объект удаляется от наблюдателя и очертания объекта становятся размытыми, постепенно сливаясь с фоном (рис. 15.25).
Рис. 15.25. Пример использования затуманивания
В зависимости от вида функции a (z) различают несколько типов затуманивания и правил выбора значения а для конкретного пиксела. Если а линейно уменьшается с увеличением расстояния до объекта (координаты z), то затуманивание называют линейным {Linear Fog). Если же значение а уменьшается по экспоненциальному закону, то говорят об экспоненциальном тумане (Exponential Fog).
Туман бывает также полигонный (Vertex Fog) и табличный (Table Fog). При полигонном тумане рассчитывается одно значение коэффициента а для всей грани (полигона, от англ. polygon — многоугольник), заданной координатами вершин (отсюда и название). При табличном тумане используется специальная таблица, в соответствии с которой для каждого пиксела задается свое значение а. Табличный туман обеспечивает более реалистичную картину, чем полигонный, но для реализации требует больших вычислительных затрат.
Антиалиасинг
Наиболее объемная и важная часть работы по коррекции изображения объединяется понятием антиалиасинг (Anti-aliasing). Основным проявлением алиасинга являются лестничный эффект на наклонных линиях (краях), муар на изображении и т. п.
С учетом особенностей устраняемых дефектов антиалиасинг иногда называют сглаживанием. Различают краевой (Edge Anti-aliasing) и полный (Full-screen Anti-aliasing, FSAA) антиалиасинг. В первых моделях игровых ускорителей использовался только краевой антиалиасинг, для современных 3D-акселераторов обязательным является полный антиалиасинг.
Краевой антиалиасинг
Краевой антиалиасинг заключается в усреднении цвета пикселов на краях (ребрах) грани на основе взвешенного суммирования цветов прилегающих граней. При этом используется техника усреднения по площади (рис. 15.26.). Считается, что каждая точка (линия) на краю грани имеет фиксированную, ненулевую площадь. В зависимости от того, какую часть этой площади перекрывают прилегающие грани, определяются весовые коэффициенты, с которыми суммируются цвета при определении цвета краевого пиксела.
Рис. 15.26. Правило площадей, используемое при краевом антиалиасинге
Пример эффекта, получаемого за счет использования краевого антиалиасинга, прведен на рис. 15.27.
Рис. 15.27, Краевой антиалиасинг выключен (слева) и включен (справа)
Полный антиалиасинг
Для полного устранения всех дефектов алиасинга используется полный антиалиасинг, или субпикселный антиалиасинг. Основная идея данного метода состоит в том, что коррекция дефектов выполняется с так называемым виртуальным разрешением, которое выше исходного. При этом каждый пиксел оказывается состоящим из нескольких виртуальных субпикселов, над которыми и совершаются операции антиалиасинга (рис. 15.28). После выполнения коррекции, когда цвета всех субпикселов определены, исходное разрешение восстанавливается.
Рис. 15.28. Субпикселный антиалиасинг по методу мультисэмплинга с использованием маски
Благодаря реализации субпикселного антиалиасинга можно получать хорошие результаты на достаточно сложных изображениях, содержащих множество резких переходов цвета и яркости (рис. 15.29).
Рис. 15.29. Пример использования полного (субпикселного) антиалиасинга (для сравнения справа приведено изображение, не обработанное по методу антиалиасинга)
Интерполяция недостающих цветов
Если текущий режим работы видеоадаптера не позволяет отобразить требуемое число оттенков цветов (не хватает видеопамяти), применяется дизеринг (Color Dithering) — техника получения недостающих цветов за счет смешения имеющихся. Этот метод широко распространен и используется не только в трехмерной графике, но и во многих программах обработки растровых изображений.
Суть метода подобна идее, положенной в основу работы цветного монитора: для создания цвета пиксела экрана используется триада зерен люминофора основных цветов. При дизеринге цвета соседних пикселов изображения подбираются из доступной палитры так, чтобы в результате их слияния появлялась иллюзия нового цвета, которого нет в исходной палитре. Очевидно, что при этом немного ухудшается разрешение изображения.
Примечание
Иногда в литературе можно встретить перевод термина Color Dithering как "растрирование" или "растеризация". Это неверно, поскольку растрирование и растеризация означают перевод векторных изображений в растровые.
Программное обеспечение для ЗD-акселераторов
Поскольку ЗD-акселератор имеет собственную систему команд, его эффективное применение возможно лишь в том случае, когда прикладная программа использует эти команды. Но, поскольку различных программ и моделей ЗD-акселераторов существует великое множество, возникает проблема совместимости: невозможно написать такую программу, которая бы одинаково хорошо использовала низкоуровневые команды различных акселераторов. Очевидно, что и разработчики прикладного программного обеспечения и производители ЗD-акселераторов нуждаются в некоем "арбитре" или "переводчике", который выполнял бы следующие функции:
□ эффективное преобразование запросов прикладной программы в оптимизированную последовательность низкоуровневых команд ЗD-акселератора с учетом особенностей его аппаратного построения;
□ программную эмуляцию запрошенных функций, если в используемом акселераторе отсутствует их аппаратная поддержка;
□ стимулирование производителей акселераторов унифицировать используемые системы команд с учетом требований производителей программного обеспечения.
Роль подобного "арбитра" возлагается на специальный пакет служебных программ, называемый интерфейсом прикладного программирования (Application
Program Interface, API). API занимает промежуточное положение между высокоуровневыми прикладными программами и низкоуровневыми командами акселератора, которые генерируются его драйвером. Использование API избавляет разработчика прикладной программы от необходимости работать с низкоуровневыми командами акселератора, облегчая процесс создания программ и делая их более универсальными. При этом они по-прежнему в состоянии максимально реализовать потенциал аппаратно ускоряемых функций.
В настоящее время в 3D существует несколько API, области применения которых довольно четко разграничены.
□ DirectX, разработанный фирмой Microsoft, используемый в игровых приложениях, работающих под управлением операционной системы Windows 95/98.
□ OpenGL, используемый в основном в профессиональных приложениях (CAD, системы трехмерного моделирования, симуляторы и т. п.), работающих под управлением операционной системы Windows NT (хотя есть и игры, ориентированные на OpenGL — легендарный Quake).
□ Родные (Native) API, создаваемые производителями ЗБ-акселераторов исключительно для своих Chipset с целью наиболее эффективного использования их возможностей (например, API Glide, разработанный компанией 3Dfx для Chipset семейства Voodoo, API MeTAL, разработанный компанией S3 для Chipset семейства Savage).
DirectX
Подавляющее число игр ориентировано на DirectX, который включает в себя несколько узконаправленных API:
□ DirectDraw — обеспечивает использование аппаратных средств ускорения обычной, двумерной графики;
□ Direct3D — отвечает за работу графической системы в режиме создания трехмерных изображений;
□ Directlnput — обеспечивает аппаратно независимый ввод информации в PC через клавиатуру, мышь и джойстик;
□ DirectPlay — используется при совместной игре на нескольких компьютерах, объединенных в сеть или соединенных непосредственно, через параллельный или последовательный порты;
□ DirectSound — управляет использованием ресурсов звуковой системы PC.
DirectX является жестко регламентированным, закрытым стандартом, который не допускает изменений до выхода в свет своей очередной, новой версии. Это, с одной стороны, ограничивает возможности разработчиков программ и особенно производителей акселераторов, однако значительно облегчает пользователю настройку программного и аппаратного обеспечения для 3D.
Архитектура Direct3D основана на проверке функциональных возможностей установленного аппаратного обеспечения. Согласно этому принципу прикладная программа сначала запрашивает Direct 3D-совместимой драйвер об аппаратно поддерживаемых данным акселератором ЗD-функциях, а затем, в зависимости от ответа, активизирует поддерживаемые функции. Очевидно, что такой вариант является наилучшим, т. к. избавляет от необходимости вникать в детали и производить ручную настройку.
OpenGL
В отличие от DirectX, API OpenGL построен на основе концепции открытого стандарта, имеющего небольшой базовый набор функций и множество расширений, реализующих более сложные функции. Производитель Chipset (карты ЗD-акселератора) обязан создать BIOS и драйверы, выполняющие базовые функции OpenGL, но не обязан обеспечивать поддержку всех расширений. Это порождает ряд проблем, связанных с написанием производителями драйверов для своих изделий, которые поставляются как в полном, так и в усеченном виде.
ICD
Полная версия OpenGL-совместимого драйвера носит название ICD (Installable Client Driver— Драйвер приложения-клиента). Он обеспечивает максимальное быстродействие, т. к. содержит низкоуровневые коды, обеспечивающие поддержку не только базового набора функций, но и его расширений. Естественно, что с учетом концепции OpenGL создание подобного драйвера — исключительно сложный и трудоемкий процесс. Это, кстати, во многом объясняет более высокую стоимость профессиональных ЗD-акселераторов по сравнению с игровыми.
MCD
Усеченная версия OpenGL-совместимого драйвера называется MCD (Mini Client Driver). Он содержит оптимизированный код лишь для некоторых этапов ЗD-конвейера, поэтому акселератор под его управлением работает медленнее. Как правило, драйверы типа MCD поставляются с первыми версиями новых ускорителей, а полноценные ICD появляются позже.
Минипорт
Помимо ICD и MCD, существуют и специализированные OpenGL-совместимые драйверы, специально разработанные для работы с какой-либо одной программой (игрой). Такая ситуация возникает, например, при желании поиграть в QuakeGL или Quake II на PC с Windows 95 и 3D-акселератором, не рассчитанным на использование OpenGL. Такой драйвер принято называть минипорт.
Раппер
Минипорт может работать так же, как ICD, путем использования собственного, Native API для установленного в системе акселератора, или за счет перевода инструкций OpenGL в инструкции Direct3D. В последнем случае минипорт называют раппером (Wrapper— Устройство для оборачивания, завертывания, окутывания). Из драйверов всех типов раппер обеспечивает самую низкую скорость работы.
Game Engine
Существует еще одно родственное минипорту понятие — Game Engine, называемый на компьютерном жаргоне "игровой движок". Фактически это драйвер, разработанный для конкретной ЗD-платы и ориентированный на достижение максимальной производительности за счет непосредственного использования низкоуровневых команд акселератора в обход API.
В целом API OpenGL ориентирован на корректность создаваемых изображений, тогда как для DirectX важны скорость прорисовки и естественность изображения.
Программная настройка ЗD-акселератора
Хотя проблемы API в основном касаются производителей ЗD-акселераторов и разработчиков программного обеспечения, пользователь PC должен также иметь об этом общее представление, чтобы правильно настроить видеосистему и добиться от нее максимальной производительности при работе с трехмерной графикой. В частности, необходимо сделать следующее.
□ При выборе ЗD-платы четко представлять область ее будущего применения — нет смысла приобретать дорогостоящий профессиональный ускоритель, если предполагаете использовать его только в играх.
□ Установить в систему требуемый API (с учетом версии).
□ Проконтролировать настройку параметров драйвера и/или прикладной программы, задействовав необходимые функции ЗD-акселерации. Настройка драйвера монитора производится с помощью опций стандартного диалогового окна (например, команды Параметры, Riva TNT диалогового окна Свойства: Экран). На рис. 15.30 в качестве примера показано диалоговое окно драйвера ЗD-акселератора Riva TNT.
Из рис. 15.30 видно, что с помощью опций этих окон можно управлять большинством рассмотренных функций аппаратного ускорения 3D-графики. Настройки, выполненные в этих окнах, будут использоваться по умолчанию. Кроме этих настроек, существуют настройки самой библиотеки DirectX, которые можно отредактировать при помощи программы DXDIAG.EXE (рис. 15.31).
Рис. 15.30. Диалоговые окна настройки опций ЗD-ускорения API DirectX (слева и OpenGL (справа) для ЗD-акселератора Riva TNT
Рис. 15.31. Диалоговое окно проверки и включения/выключения аппаратного ЗD-ускорения для API DirectX
Примечание
С помощью программы DXDIAG.EXE можно получить исчерпывающую информацию об установленных компонентах DirectX и драйверах различных мультимедийных устройств, а также проверить корректность функционирования программного и аппаратного обеспечения.
Помимо настроек системного программного обеспечения, к которому относятся драйверы и библиотеки API, необходимо настроить опции прикладной программы, использующей функции ЗD-ускорения (в качестве примера на рис. 15.32 приведен список опций ЗD-акселерации, применяемых в игре Microsoft Combat Flight Simulator).
Рис. 15.32. Диалоговое окно настройки опций ЗD-ускорения игры Microsoft Combat Flight Simulator
Используя тесты и субъективно оценивая качество изображения, подберите такой набор функций, при котором скорость работы и качество изображения будут наилучшими. Если включение каких-либо функций значительно повышает производительность, значит они поддерживаются аппаратно. Если же, напротив, их включение приводит к замедлению работы, то акселерация отсутствует.
Конечно, при работе с программами, ориентированными на DirectX, вам, возможно, вообще не придется выполнять ни одну из перечисленных операций — все будет сделано автоматически. Однако никогда не мешает знать, какие функции реализованы в ЗD-акселераторе, установленном на вашем PC, и как они выполняются, поэтому при возникновении любых проблем вы сможете осознанно искать их решение.
Устройство ЗD-акселератора
Несмотря на значительные различия в характеристиках и возможностях, все ЗD-акселераторы имеют несколько обязательных, базовых элементов, обеспечивающих аппаратное ускорение основных этапов ЗD-конвейера (рис. 15.33):
□ Геометрический процессор (Geometry Processor)
□ Механизм прорисовки (Rendering)
□ Видеопамять
□ Цифро-аналоговый преобразователь (RAMDAC)
□ Дополнительные устройства (в зависимости от набора дополнительных функций)
Рис. 15.33. Обобщенная структурная схема 3D-акселератора
Геометрический процессор отвечает за 2—6 этапы ЗD-конвейера. В большинстве недорогих 3D-акселераторов геометрический процессор, предназначенный для аппаратного ускорения этапов 2—6 геометрической стадии конвейера, отсутствует, и его функции выполняет CPU. В лучшем случае такой акселератор имеет только механизм установки (Setup Engine), выполняющий преобразование данных о вершинах граней, сортировку и отбрасывание задних граней (стадия Triangle Setup).
Процесс прорисовки (рендеринга, закраски) является наиболее существенным и может быть разбит на 2 ступени: обработка элементов текстур (Texel Engine) и обработка элементов итогового кадра (Pixel Engine). На каждой из этих ступеней происходит работа со своим участком локальной памяти, называемым буфером. Кроме буферов кадра и текстур, обычно выделяется память для г-буфера, необходимого для корректного удаления скрытых поверхностей, а также для а-буфера, необходимого для эффективного выполнения альфа-смешения.
Этой структуре в общих чертах соответствует архитектура ЗD-акселератора на основе Chipset Voodoo Graphics производства фирмы 3Dfx Interactive. Базовая, минимальная конфигурация данного Chipset включает 2 чипа, называемые PixelFX и TexelFX. Название первого чипа — FBI (Frame Buffer Inter-face— Интерфейс кадрового буфера), а второго— TMU (Texture Mapping Unit — Блок наложения текстур). Каждый чип работает со своим буфером памяти, размер которого может составлять до 4 Мбайт. Максимальная конфигурация платы — один чип FBI и три чипа TMU.
Для повышения производительности ЗD-акселераторы фирмы 3Dfx могут использоваться в паре. В этом случае реализуется режим SLI (Scan Lines Interleave — Чередование обработки строк растра). В данном режиме один 3D-акселератор генерирует четные строки изображения, а второй — нечетные. За счет этого не только увеличивается скорость рендеринга, но и значительно повышается разрешение ЗD-изображения.
Размер кадрового буфера, по аналогии с видеопамятью обычного видеоадаптера VGA, определяет максимально допустимые разрешение изображение и число оттенков цветов. В большинстве акселераторов для ускорения работы используется метод двойной буферизации: кадровый буфер разбивается на передний (Front buffer) и задний (Back buffer) буферы. Пока выполняется отображение (передача в RAMDAC) первого, "переднего" кадра, акселератор приступает к построению следующего кадра в заднем буфере. Благодаря этому обеспечивается более плавная и быстрая смена кадров.
Основные характеристики ЗD-акселераторов
Каковы же основные технические характеристики, определяющие потенциальные возможности ЗD-акселератора и ожидаемый эффект от его использования?
Во-первых, для оценки ЗD-акселераторов используются стандартные характеристики видеоадаптеров, рассмотренные выше: разрядность, объем и пропускная способность видеопамяти, тактовые частоты графического процессора (ядра), видеопамяти и RAMDAC, тип интерфейса с шиной ввода/вывода и т. п. Поскольку основной сферой применения рассматриваемых акселераторов являются трехмерные игры, очень важен и удобен интегральный показатель производительности — обеспечиваемая частота смены кадров (frame per second — fps).
Во-вторых, для описания возможностей ЗD-акселераторов вводится целый ряд специфических показателей:
□ максимальная скорость закраски (Fill Rate), измеряемая числом пикселов в секунду;
□ максимальное число обрабатываемых элементарных многоугольников (треугольников) в секунду (Triangle Throughput);
□ набор аппаратно реализуемых (ускоряемых) ЗD-функций, а также качество (корректность) их реализации;
□ наличие расширенных режимов (например, SLI, MAXX, VSA);
□ перечень поддерживаемых API, а также степень поддержки (например, ICD или MCD для OpenGL).
Параметр Triangle Throughput часто называют пропускной способностью 3D-акселератора. Особенностью данного показателя является то, что при отсутствии в составе ЗD-акселератора геометрического процессора он описывает не только и даже не столько сам акселератор, сколько производительность центрального процессора, т. к. в этом случае геометрическая стадия 3D-конвейера реализуется программно (ее выполняет CPU). Чем выше скорость его работы, тем больше треугольников в секунду он сможет сгенерировать. Поэтому зависимость производительности ЗD-акселератора от быстродействия CPU называют масштабируемостью.
Значимость показателя Triangle Throughput возрастает для тех плат, которые имеют аппаратно реализованный механизм установки (Setup Engine) или полноценный геометрический процессор (nVidia GeForce 2*6, ATI Radeon 256, S3 Savage 2000).
Помимо чисто аппаратных возможностей, имеет значение качество программного обеспечения 3D-акселератора, т. е. корректность написания драйвера. Как уже неоднократно отмечалось, часто этот фактор является решающим для обеспечения устойчивой и эффективной работы 3D-акселератора.
Важная характеристика ускорителя — это и набор поддерживаемых API. В настоящее время обязательным требованием к ЗD-акселератору считается полноценная поддержка ускорителем, как минимум, двух API: DirectX и OpenGL (на уровне ICD).
Особенности ЗD-акселераторов фотореалистичной графики
Совсем недавно на рынке игровых ЗD-акселераторов появились новые мощные устройства, обеспечивающие качественно новый, более высокий, уровень синтеза трехмерной сцены. Эти ЗD-акселераторы в состоянии синтезировать изображение, обладающее следующими характеристиками:
□ высоким разрешением — до 2048x1536;
□ 32-битным цветом;
□ очень высокой степенью детализации, обусловленной использованием сложных геометрических моделей и текстур больших размеров (до 2048x2048);
Изображение с такими характеристиками (рис. 15.34) настолько похоже на естественное, например, полученное при фотографировании, что возникло новое понятие — фотореалистичная графика.
Рис. 15.34. Пример фотореалистичного изображения
Для того чтобы достичь такого, результата, характеристики основных элементов ЗD-акселератора должны быть радикально улучшены. В качестве примера ЗD-акселератора фотореалистичной графики рассмотрим структуру и основные параметры нового изделия канадской фирмы ATI Technologies — видеоадаптера Radeon 256 (рис. 15.35), являющегося, помимо всего прочего, еще и мощным ЗD-акселератором.
Рис. 15.35. Структурная схема видеоадаптера ATI Radeon 256
Структура Radeon 256 имеет множество отличий от базовой структуры 3D-акселератора, наиболее существенными из которых являются следующие:
1. Как и все современные изделия, Radeon 256 представляет собой не специализированный ЗD-акселератор, а мощный многофункциональный видеоадаптер, у которого ускорение ЗD-графики — одна из множества функций, среди которых: аппаратное ускорение 2Б-графики, ввод/вывод видеосигнала, формирование цифрового видеосигнала для управления плоскопанельными ЖК-мониторами, декодирование цифровых видеопотоков, сжатых по технологии MPEG-1/2 и др.
2. Благодаря наличию специального геометрического процессора Charisma Engine обеспечивается аппаратное ускорение функций, выполняемых на геометрической стадии ЗD-конвейера: преобразование координат (при моделировании движения и вращения), расстановка-источников света и расчет освещенности вершин граней (вертексов), Позволяющая использовать до 8 источников света, отсечение невидимых граней, коррекция перспективы, преобразование формата представления данных о вершинах (замена чисел с плавающей точкой числами с фиксированной точкой), модификация граней в местах резкого изгиба поверхности (функция Vertex Skinning), интерполяция промежуточных кадров по ключевым кадрам (KeyFrame Interpolation), позволяющая быстро рассчитать анимационную картинку, основываясь только на начальном и конечном кадрах. Столь внушительный арсенал средств позволяет многократно повысить скорость выполнения геометрической стадии ЗD-конвейера — плата обрабатывает до 30 млн треугольников в секунду (для сравнения ЗD-акселератор Voodoo Graphics — только 500 тыс.).
3. Значительно увеличены объем и скорость работы видеопамяти; на карте видеоадаптера может быть установлено от 8 до 128 Мбайт быстродействующей видеопамяти типа SDRAM/SGRAM или DDR SDRAM, работающей на частоте до 200 МГц.
4. Увеличена разрядность шины памяти до 256.
5. За счет использования новейшей 0,18-микрометровой технологии изготовления микросхем тактовая частота графического 256-разрядного ядра, состоящего из двух 128-разрядных блоков, лежит в пределах от 200 до 400 МГц.
6. Графическое ядро имеет ярко выраженную конвейерную архитектуру: два конвейера рендеринга, каждый из которых содержит по 3 блока (эта технология получила название Pixel Tapestry). Благодаря этому производительность конвейера рендеринга составляет 400 млн пикселов в секунду (у ЗD-акселератора Voodoo Graphics — только 50 млн).
7. Широко используется кэш-память, ускоряющая построение изображения: текстурная, пикселная и кэш-память вершин (вертексов).
8. Аппаратная поддержка наиболее эффективных методов текстурирования: рельефное текстурирование, специальные методы наложения и сжатия текстур и др.
9. Высокоскоростной интерфейс с шиной ввода/вывода (порт AGP, карта поддерживает режимы 4х, DiME, SBA Fast Writes).
Благодаря перечисленным особенностям платы Radeon 256 обеспечивает качественно более высокий, фотореалистический уровень моделирования ЗD-сцены, что позволяет отнести ее к новому поколению ЗD-акселераторов. К этой же группе относятся изделия GeForce 256 (NV10), GeForce 2 GTS (NV15) производства фирмы nVidia, Savage 2000 производства фирмы S3 и ряд других.
Chipset для ЗD-акселераторов
Несмотря на то, что эпоха 3D началась сравнительно недавно, современный рынок ЗВ-акселераторов различного класса испытывает невероятный бум. Появилось несколько лидеров в этой области, а количество производимых ими продуктов настолько возросло, что разобраться во всем многообразии предлагаемых акселераторов стало очень сложно. Если же учесть крайне агрессивную рекламу, которой сопровождается появление каждого нового изделия, то сделать правильный выбор становится еще труднее.
Кроме того, большинство производителей использует одни и те же микросхемы (Chipset). Поэтому рассмотрим только Chipset, на основе которого выполнены акселераторы, т. к. именно им определяются возможности платы. Что же касается готовых плат, то их трудно не только описать, но и просто перечислить — настолько разнообразен их ассортимент.
3Dfx interactive
Как уже отмечалось, фирма 3Dfx Interactive выпустила первый по-настоящему удачный ЗD-акселератор — Chipset Voodoo Graphics. Успех 3Dfx не является случайным — прежде она специализировалась на производстве игровых приставок, профессиональных симуляторов и тренажеров. Главное внимание при разработке своих изделий фирма уделяет производительности, поэтому ее главный лозунг: "60 кадров в секунду — любой ценой!". За последние несколько лет фирмой разработаны Chipset Voodoo2, Voodoo Rush, Voodoo Banshee, Voodoo3, недавно анонсированы новейшие модели: Voodoo4 и Voodoo5.
Voodoo Graphics
Voodoo Graphics является классическим вариантом ЗD-акселератора, выполненного в виде отдельной платы с интерфейсом PCI. Помимо нее, в системе должен быть установлен обычный видеоадаптер. В настоящее время этот пионер 3D безнадежно устарел. Обеспечивая приемлемую скорость работы при разрешении 640x480, он не дает приемлемой частоты кадров при более высоких разрешениях. Поэтому на плате редко бывает больше 4 Мбайт видеопамяти для кадрового буфера. Основные характеристики Chipset Voodoo Graphics:
□ Тактовая частота — до 60 МГц (управляется программно).
□ Максимальная частота RAMDAC — 135 МГц.
□ Тип локальной памяти — EDO (время доступа 30-40 не).
□ Размер кадрового буфера — до 4 Мбайт (обычно 2 Мбайт).
□ Размер буфера текстур — до 8 Мбайт (обычно 2—4 Мбайт).
□ Максимальное разрешение:
• 800x600 с кадровым буфером объемом 4 Мбайт;
• 640x480 с кадровым буфером объемом 2 Мбайт;
• 1024x768 с кадровым буфером объемом 4 Мбайт в режиме SLI (только для платы Obsidian 100SB).
□ Глубина представления цвета — 16 бит (High Color).
□ Максимальное значение Fill Rate — 50 млн пикселов в секунду.
□ Максимальное значение Throughput — 500 тыс. треугольников в секунду.
□ Типичная производительность в игре Quake: 30—35 fps при разрешении 640x480 и CPU Pentium-166MMX.
□ Поддерживаемые API: DirectX, Glide (API разработки 3Dfx), частично -OpenGL.
□ Работает только в полноэкранном режиме.
□ Является специализированной платой, выполняющей только ЗD-функции, поэтому требует наличия обычного видеоадаптера с 2D-ускорителем.
□ Использует для соединения с видеоадаптером специальный кабель типа Pass-Through, ухудшающий качество изображения при высоких разрешениях.
Наиболее известными платами на основе данного Chipset являются: Diamond Monster 3D, 3D Canopus Pure3D, 3D Voodoo Biostar Venus, A-Trend Helios, Cardex Dragon 1000, miroM.EDIA miroHISCORE 3D, RealVision Flash3D, Skywell Magic 3D и др.
Проблемы с упомянутым кабелем типа Pass-Through, а также стремление создать интегрированную 2D/3D-oraTy привели к появлению Chipset Voodoo Rush.
Voodoo Rush
Chipset Voodoo Rush объединяет в себе возможности 2D- и ЗD-акселерации, а также позволяет создавать трехмерное изображение в оконном режиме.
Обладая аналогичными с Voodoo Graphics характеристиками, Voodoo Rush совместим не со всеми играми и является, по общему признанию, далеко не самой удачной разработкой 3Dfx (в частности, архитектура Voodoo Rush не позволяет одновременно выполнять z-буферизацию и а-смешение, что в значительной степеней замедляет работу).
На основе Chipset Voodoo Rush выпускаются ЗО-акселераторы A-Trend Helios Voodoo Rush, Biostar Venus 3D Rush, Hercules Stingray 128/3D, Jazz Adrenaline Rush 3D, RealVision Flash AT3D Rush и др.
Voodoo2
Chipset Voodoo2 явился принципиально новым продуктом, имеющим гораздо лучшие характеристики, чем у его предшественников. Так же, как и Voodoo Graphics, он является специализированным ЗD-акселератором с интерфейсом PCI, построенным на новых чипах: одном Pixelfx2 и двух Texelfx2. Каждый из трех чипов имеет свой модуль памяти: 4 Мбайт для кадрового буфера и 2 или 4 Мбайт — для буфера текстур. В результате возможны две конфигурации памяти: 4+2x2=8 Мбайт или 4+2x4=12 Мбайт.
Наличие второго чипа и буфера памяти для обработки текстур обеспечило данному Chipset аппаратную поддержку мультитекстурирования и трилинейной фильтрации. Новым явилась также аппаратная поддержка рельефного текстурирования и краевого антиалиасинга. Другим важным улучшением архитектуры Voodoo2 стало наличие аппаратно реализованного механизма преобразования данных о вершинах граней (Triangle Setup), благодаря чему значительно ускорилось выполнение операций стадии геометрической обработки, и показатель Triangle Throughput вырос по сравнению с Voodoo Graphics в 5 (!) раз. Как и Voodoo Graphics, Chipset Voodoo2 поддерживает в 3D только 16-битный режим High Color.
В течение довольно длительного времени ЗD-акселераторы на основе Voodoo2 были явными лидерами по производительности.
Основные отличия Voodoo2 от Voodoo Graphics заключаются в следующем:
□ Тактовая частота ядра — до 100 МГц (обычно 92—96 МГц).
□ Максимальное разрешение:
• 800x600 при использовании z-буферизации;
• 1024x768 без z-буферизации;
• 1024x768 с z-буферизацией при наличии второй платы и работе в режиме SLI.
□ Максимальное значение Fill Rate — 90 или 180 млн пикселов в секунду (в зависимости от режима работы).
□ Максимальное значение Throughput — 2,5 млн треугольников в секунду.
□ Типичная производительность в игре Quake — 70 кадров/с при разрешении 640x480 и CPU Pentium-II 300 МГц.
Примерами ЗD-акселераторов на основе Chipset Voodoo2 являются Canopus Pure3D II, A-Trend Helios 3D Voodoo II, BiostarVenus 3D II, Creative 3D Blaster Voodoo2, Diamond Monster 3D II, STB BlackMagic 3D.
Voodoo Banshee
Потерпев неудачу с Voodoo Rush, компания 3Dfx, тем не менее, не отказалась от самой идеи сделать полнофункциональный 2D/ЗD-акселератор на одной плате. Взяв за основу ЗD-ядра элементы Chipset Voodoo2 и разработав с нуля 2D-акселератор, 3Dfx создала весьма удачный Chipset, объединивший в себе все лучшие черты предшественников. Его привлекательность по сравнению с другими изделиями 3Dfx состоит в том, что отпала необходимость в кабеле Pass-Through. К тому же данный Chipset явился более экономичным решением, поскольку в нем реализованы все необходимые функции: 2D- и ЗD-акселерация и обработка видео.
ЗD-ядро этого Chipset аналогично Voodoo2 за исключением того, что вместо двух чипов (TMU) Texelfx в Voodoo Banshee используется только один, что не позволяет аппаратно реализовать мультитекстурирование и трилинейную фильтрацию. Кроме того, Chipset Voodoo Banshee не поддерживает режим SLI.
Voodoo Banshee оснащен более современной и быстрой 128-разрядной памятью типа SGRAM или более дешевой SDRAM, работающей на частоте 100 МГц. Платы на основе Voodoo Banshee выпускаются в двух вариантах: с интерфейсами PCI/33 МГц и AGP/66 МГц (заявлена поддержка режима SBA, хотя при этом отсутствует режим 2х).
Примечание
Поддержка AGP в изделиях 3Dfx носит в основном формальный характер, поскольку производительность платы на основе Voodoo Banshee мало зависит от типа интерфейса (сказывается изначальная ориентированность на более быструю локальную память и шину PCI).
Chipset Voodoo Banshee имеет интегрированный RAMDAC, тактовая частота которого составляет 250 МГц, что значительно выше, чем частота тактового сигнала у RAMDAC предыдущих Chipset данной фирмы.
Voodoo3
Выпустив Chipset Voodoo3, компания 3Dfx окончательно отказалась от выпуска специализированных ЗD-ускорителей и перешла к производству универсальных видеоадаптеров, содержащих 2D- и ЗD-ядро в одном чипе. По этой причине Chipset Voodoo3 во многом напоминает Voodoo Banshee, но превосходит его почти по всем показателям (из-за этого некоторые острословы именуют Chipset Voodoo3 не иначе как "Voodoo Banshee-2").
Чипсет Voodoo3 имеет три модификации: Voodoo3 2000, Voodoo3 3000 и Voodoo3 3500, различающиеся тактовыми частотами RAMDAC и ядра, а также набором дополнительных функций (поддержка TV-out, плоскопанельных мониторов и т. п.). Использование технологии 0,25 мкм позволило получить достаточно высокие тактовые частоты ядра — от 143 до 183 МГц. В качестве локальной используется память типа SDRAM или SGRAM объемом 4—16 Мбайт. Chipset имеет интерфейс AGP с поддержкой режима 2х, однако не позволяет обрабатывать текстуры в оперативной памяти (отсутствует поддержка режима DiME) — фирма 3Dfx вновь отличилась неудачной реализацией интерфейса AGP. Отсутствие AGP-текстурирования в совокупности с небольшим объемом локальной памяти (не более 16 Мбайт) ограничило максимальный размер используемых текстур (не более 256x256).
Производители учли недостатки Voodoo Banshee и добавили в Voodoo3 второй блок текстурирования, благодаря чему у него появилась аппаратная поддержка мультитекстурирования, трилинейной и анизотропной фильтрации. Кроме того, Voodoo3 поддерживает краевой и субпикселный антиалиасинг, затенение Гуро, коррекцию перспективы, оптимизированную обработку смежных граней (triangle strips&fans), табличный туман, до 14 форматов текстур, включая сжатые текстуры. Однако данный Chipset сохранил характерный недостаток изделий производства компании 3Dfx: в ЗD-графике поддерживает только режим High Color, т. е. 16-битное кодирование цвета. Это частично компенсируется очень высоким разрешением, которое может обеспечить данный Chipset— до 2048x1536 при частоте кадров 75 Гц (частота RAMDAC составляет 300 или 350 МГц).
Чипсет Voodoo3 является, безусловно, неплохим изделием, особенно с точки зрения быстродействия, однако безоговорочным лидером, как в свое время Voodoo2, он не стал — Chipset семейства Riva TNT2 имеет аналогичные (и даже лучшие) показатели при значительно более низкой цене. Нельзя также не отметить еще одну характерную слабость Chipset 3Dfx — неэффективная работа под управлением OpenGL. Правда, этот недостаток частично компенсируется хорошей поддержкой команд 3Dnow!, который используется процессорами AMD K6-II и выше.
Intel
Знаменитая фирма, специализирующаяся главным образом на производстве центральных процессоров и Chipset для материнских плат, выпустила недорогой графический процессор i740, обладающий достаточно высоким быстродействием.
i740
Chipset i740 является 64-разрядным совмещенным 2D- и ЗD-акселератором, реализующим несколько дополнительных функций: TV-выход, возможность ввода/вывода видеоданных, DVD-декодер. Он оптимизирован для компьютера на основе Pentium II с шиной AGP, хотя имеются и PCI-версии видеоадаптеров на основе i740.
При средней производительности (на уровне Voodoo Graphics) и рекордно низкой для ЗD-акселераторов цене i740 обеспечивает очень высокое качество изображения, поэтому некоторое время был лидером среди ЗD-изделий для домашнего компьютера (в настоящее время его производительность уже нельзя считать приемлемой).
Поскольку фирма Intel является автором стандарта AGP, то его реализация в i740 не вызывает нареканий: поддерживаются режимы 2х, SBA, и DiME. Chipset поддерживает от 2 до 8 Мбайт памяти типа SDRAM или SGRAM, работающей на частоте 100 МГц.
i740 имеет встроенный RAMDAC, работающий на частоте 205 МГц при использовании 256 цветов и с частотой 220 МГц — в режимах High Color и True Color.
Кроме стандартных ЗD-функций, Chipset поддерживает ряд дополнительных возможностей по обработке видео в формате MPEG-2, т. е. считываемого с DVD-диска, а также по вводу/выводу видеосигналов.
На основе Chipset 1740 выпускаются следующие видеоадаптеры: ReaOD StarFighter SFA3** (AGP) и SFP3*** (PCI), A-Trend Speedy 3DI0740, A-open PA740, Aristo ART4740-G, ASUS 3DexPlorer V2740, Biostar Orion 740, Cardex Cardexpert 1740, Diamond Stealth II G460, ChainTech Desperado, Intel Express 3D, STB Lightspeed 740, Tekram AGP-6000 3D Fire.
NVidia
Компания nVidia получила широкую известность, изготовив Chipset Riva 128, представляющий собой совмещенный 2D- и ЗD-акселератор. В отличие от всех рассмотренных выше 64-разрядных Chipset, Riva 128 и ее модификации имеют 128-битную шину локальной памяти. В настоящее время фирма является признанным лидером на рынке ЗD-акселераторов, поскольку ее продукцию отличают высокое качество, наилучшая производительность и разумная цена.
Наиболее известными продуктами nVidia являются Chipset Riva 128, Riva 128ZX, Riva TNT, Riva TNT2 (включая их многочисленные модификации), а также новейшие ускорители фотореалистичной графики GeForce 256 (NV10) и GeForce2 GTS (NV15), оборудованные геометрическими процессорами.
Riva 128
Плата на основе данного Chipset предоставляет полный набор услуг: 2D- и ЗD-ускоритель, ввод/вывод видео. Выпускается в PCI- и AGP-вариантах. Объем локальной памяти постоянный — 4 Мбайт SGRAM для кадрового и z-буферов. Для плат на основе Riva 128 характерна сильная зависимость их производительности от быстродействия CPU и пропускной способности системной шины. Интегрированный RAMDAC работает на частоте 230 МГц. Обеспечивается 16-битный цвет в 3D- и 32-битный — в 2О-графике. Основная особенность платы на основе Riva 128 — высокая производительность при посредственном качестве изображения. Такие дефекты, как нестыковка текстур, темные полосы и другие, характерные для ускорителей на основе Riva 128, стали классическим примером ошибок в реализации 3D-функций, поэтому в настоящее время данный Chipset не пользуется особым спросом.
Примеры видеоадаптеров на основе Chipset Riva 128: Asus 3DexPlorer 3000, Canopus TotaBD V128, Diamond Viper V330, ELSA Victory Erazor, STB Velocity 128, Tekram AGP 5000.
Riva 128ZX
Выпуская данный Chipset, nVidia фремилась устранить недостатки предыдущей модели. Основным отличием Chipset Riva 128ZX является увеличенный вдвое объем видеопамяти — 8 Мбайт SGRAM, а также более высокое качество ЗО-изображения, хотя полностью проблема решена не была. Максимальное разрешение увеличено до 1280x1024. Тактовая частота RAMDAC повышена до 250 МГц. Улучшено качество обработки видео (в частности, реализована фильтрация телевизионных бликов — TV flicker filtering).
Riva 128 TNT (Riva TNT)
Chipset Riva 128 TNT стал, пожалуй, первым по-настоящему удачным изделием nVidia, позволившим ей отобрать пальму первенства у компании 3Dfx. Не случайно Chipset Riva 128 TNT (в дальнейшем его стали называть просто Riva TNT) отводилась роль "киллера" знаменитого Voodoo2, что отчасти и произошло.
Как следует из его названия, Chipset Riva TNT (TwiN Texel) имеет два процессора для обработки текстур, благодаря чему обеспечивается аппаратное ускорение мультитекстурирования, трилинейной и анизотропной фильтрации. Ядро Chipset выполнено по технологии 0,35 мкм и работает на частоте 90 МГц (рис. 15.36).
Рис. 15.36. Chipset Riva TNT
На плате видеоадаптера размещается видеопамять типа SGRAM или SDRAM объемом 8 или 16 Мбайт, работающая на частоте 125 МГц и 110 МГц соответственно. Встроенный RAMDAC работает на частоте 250 МГц. Chipset Riva TNT допускает использование интерфейсов PCI и AGP. Как обычно, реализация AGP — сильная сторона Chipset nVidia, поэтому обеспечиваются все возможности AGP: режимы 2х, SBA, и DiME.
Наряду со стандартными функциями 3D-акселерации, Chipset предоставляет новые возможности:
□ 32-битный цвет в ЗD-приложениях;
□ максимальное разрешение в ЗD-приложениях при 32-битном цвете и частоте кадров 85 кадр./с — 1600x1200;
□ 24-битный z-буфер, допускающий использование чисел с фиксированной и плавающей точкой (большинство 3D-акселераторов имеют 16-битный z-буфер);
□ аппаратную поддержку анизотропной фильтрации;
□ рельефное текстурирование (Bump mapping);
□ полный антиалиасинг — FSAA (Full Scene Anti-Aliasing).
Важным преимуществом Chipset Riva TNT по сравнению со своими конкурентами явилась его высокая производительность:
□ пиковая пропускная способность до 8 млн треугольников в секунду;
□ максимальная скорость закраски до 250 млн треугольников в секунду и до 125 млн — в режиме мультитекстурирования;
□ производительность в игре Quake II при разрешении 1600x1200 в режиме True Color — 30 кадр./с на PC с процессором Pentium II 400 МГц.
Chipset имеет также дополнительные возможности по обработке видео:
□ аппаратная акселерация воспроизведения видео с использованием кодеков MPEG-1, Indeo и частично для MPEG-2;
□ наличие выхода TV-out в стандартах NTSC и PAL (в зависимости от комплектации платы).
Примеры видеоадаптеров на основе Riva TNT: Diamond Viper V550, STB Velocity 4400.
RivaTNT2
Riva TNT2 — усовершенствованная версия Chipset Riva TNT. Выпуск Riva TNT2 во многом был ответным шагом на выпуск компанией 3Dfx Chipset Voodoo3.
В основном Chipset Riva TNT2 сохранил архитектуру своего предшественника Riva TNT, поэтому главными отличиями новой модели являются:
□ использование новой технологии 0,25 мкм при изготовлении ядра;
□ увеличение объема видеопамяти с 16 до 32 Мбайт;
□ использование более быстрого RAMDAC, работающего с таковой частотой 300 МГц;
□ добавление поддержки режима 4х при AGP-текстурировании.
Все это позволило значительно повысить тактовые частоты ядра (с 90 до 125 МГц) и памяти (со ПО до 150 МГц). Конвейер рендеринга был также усовершенствован, поэтому при одинаковых тактовых частотах производительность Chipset Riva TNT2 примерно на 10—15% выше, чем у Riva TNT. -Увеличение объема видеопамяти позволило использовать более крупные текстуры, не используя при этом шину ввода/вывода, что обеспечило лучшую детализацию ЗD-сцены при сохранении высокой производительности.
Видеоадаптеры на основе Chipset Riva TNT2 образуют достаточно большое семейство, различные представители которого значительно различаются по производительности и стоимости. Главными отличительными признаками являются тип, объем и быстродействие установленной на плате видеопамяти. В настоящее время на рынке, помимо базовой модели, имеются следующие представители семейства TNT2:
□ RivaTNT2-A □ Riva TNpVanta
□ Riva TNT2 Ultra □ Riva TNT2 M64
Chipset Riva TNT2-A является полным аналогом базовой модели за исключением того, что выполнен по технологии 0,22 мкм вместо 0,25 мкм. Это позволило повысить стандартную тактовую частоту ядра до 143 МГц вместо 125 МГц у Riva TNT2. Практика показывает, что при наличии быстродействующей видеопамяти тактовую частоту и ядра, и видеопамяти можно увеличить до 180 МГц.
Chipset Riva TNT2 Ultra является наиболее быстрой (и дорогостоящей) моделью: стандартная тактовая частота ядра составляет 150 МГц, а памяти — 183 МГц. Ядро Chipset выполнено также по технологии 0,22 мкм. Как правило, видеоадаптер на основе Riva TNT2 Ultra имеет 32 Мбайт видеопамяти типа SDRAM или SGRAM со временем доступа не более 7 не. Наиболее характерная модель видеоадаптера на основе данного Chipset — Hercules Dynamite TNT2 Ultra, оборудованная видеопамятью типа SDRAM со временем доступа 5,5 не и объемом 32 Мбайт. Благодаря этому тактовая частота ядра составила 175 МГц, а памяти — до 200 МГц.
Видеоадаптеры на основе Chipset Riva TNT2-A и, особенно, Riva TNT2 Ultra являются дорогостоящими (от ПО до 170 USD) и недоступными широкому кругу пользователей изделиями. Поэтому фирма nVidia, стремясь расширить свое господствующее положение на рынке, выпустила упрощенные и гораздо более дешевые версии Chipset TNT2, имеющие 64-разрядную шину памяти. К ним относятся две модели: TNT2 Vanta и TNT2 М64, каждая из которых поддерживает 8, 16 либо 32 Мбайт видеопамяти типа SDRAM.
Наиболее дешевым вариантом является Chipset Riva TNT2 Vanta (рис. 15.37, слева), у которого частота RAMDAC оставлена на уровне Riva TNT, т. е. 250 МГц. Первоначально Chipset TNT2 Vanta предназначался для портативных компьютеров, у которых видеоадаптер интегрирован на материнскую плату, однако низкая цена этого Chipset стимулировала производителей выпустить на его основе самостоятельную плату. Довольно часто видеоадаптер на основе TNT2 Vanta оборудован всего 8 Мбайт видеопамяти.
Бодее высокая скорость работы памяти и ядра у TNT2 Vanta (100/125 МГц) по сравнению с Riva TNT (90/110 МГц) компенсируется вдвое меньшей разрядностью (64 вместо 128), поэтому новый Chipset не смог опередить по производительности своего предшественника. Более того, при высоких разрешениях в 2D- и при работе с ЗО-графикой, когда пропускная способность шины видеопамяти особенно критична, TNT2 Vanta заметно уступает по скорости Chipset Riva TNT (этим объясняется то странное обстоятельство, что новая модель TNT2 Vanta стоит дешевле, чем Riva TNT). He спасает положения и предусмотренная на многих видеоадаптерах на основе TNT2 Vanta поддержка режима AGP 4х.
Рис. 15.37. Внешний вид графических процессоров Riva TNT2 Vanta (слева) и Riva TNT2 М64 (справа)
Chipset TNT2 М64 (рис. 15.37, справа) представляет собой разогнанный вариант TNT2 Vanta: по умолчанию для ядра и памяти используются тактовые частоты 125/150 МГц, однако при наличии внешнего охлаждения они могут быть увеличены до, 1.40/183 МГц. На видеоадаптерах с данным Chipset используется более быстрая память, чем на TNT2 Vanta. Частота работы RAMDAC также увеличена до 300 МГц. Благодаря этим мерам производительность Chipset превысила производительность Riva TNT, но не достигла скорости Riva TNT2. Как и в случае с Riva TNT2 Vanta, отставание наиболее сильно проявляется при работе в режимах с высоким разрешением.
GeForsce 256
Последним достижением компании nVidia в области 3D стало семейство мощных ЗD-акселераторов с геометрическим процессором, обеспечивающим аппаратное ускорение наиболее трудоемких этапов геометрической стадии ЗD-конвейера: преобразование координат и расчет освещенности, особенно при наличии нескольких источников освещения. Набор ускоряемых функций реализован узлом HW T&L (Hardware Transform and Lighting— Аппаратное преобразование координат и расчет освещенности). Часто используется упрощенное обозначение — T&L. Благодаря его наличию показатель Triangle Throughput у GeForce 256 достигает значения 15 млн треугольников в секунду. Среди других достоинств Chipset этого семейства можно назвать следующие:
□ они выполнены по технологии 0,22 мкм и 0,18 мкм, что обеспечивает дальнейший рост тактовой частоты ядра;
□ разрядность ядра и шины памяти увеличена до 256;
□ используются новые типы памяти, например DDR SDRAM, что наряду с увеличенной разрядностью позволяет радикально повысить пропускную способность видеопамяти;
□ объем видеопамяти может достигать 128 Мбайт;
СЗ значительно повышена мощность модуля рендеринга: он включает 4 конвейера, каждый из которых имеет один или два блока текстурирования.
Все эти особенности позволяют отнести видеоадаптеры на основе GeForce 256 к новому типу ускорителей фотореалистичной графики.
Первой моделью семейства стал GeForce 256, именуемый также NV10 (рис. 15.38, слева). Хотя он выполнен по технологии 0,22 мкм, стандартная тактовая частота ядра невелика — 120 МГц, памяти — до 200 МГц. Интегрированный RAMDAC работает на частоте 350 МГц, что позволяет получить максимальное разрешение 2048x1536 при 75 кадр./с.
Рис. 15.38. Внешний вид новых графических процессоров производства фирмы nVidia:
GeForce 256 (NV10) — слева и GeForce2 GTS (NV15) — справа
Следующими моделями данного семейства стали Chipset GeForce 2 GTS (рис. 15.38, справа), называемый также NV15, и его упрощенная версия — NV11. Аббревиатура GTS происходит от GygaTexel Shading, «то говорит о возможности обработки миллиарда текселов в секунду, т. е. об исключительно мощном конвейере рендеринга.
Chipset NV15 и NV11 произведены по технологии 0,18 мкм, поэтому тактовые частоты ядра и памяти удалось увеличить до 200 МГц. Другое существенное по сравнению с GeForce 256 улучшение — в каждом конвейере рендеринга у NV15 используется не один, а два блока текстурирования. Благодаря этому не происходит снижения скорости прорисовки в режиме мультитекстурирования: у NV15 она составляет 800 млн пикселов в секунду, при этом обрабатывается 1600 млн текселов (отсюда и название GTS). В Chipset NV11 количество конвейеров рендеринга снижено с четырех до двух.
Модели NV15 и NV11 различаются разрядностью шины локальной памяти. В NV11 в целях удешевления использована 128-разрядная шина.
Как и ее предшественник, NV15 обладает широкими дополнительными возможностями обработки сигналов от бытовой видеоаппаратуры (рис. 15.39).
Внешний вид видеоадаптера WinFast GeForce2 GTS фирмы Leadtek, выполненного на основе Chipset GeForce2 GTS, показан на рис. 15.40.
Рис. 15.40. Видеоадаптер WinFast GeForce2 GTS фирмы Leadtek, выполненный на основе Chipset GeForce2 GTS
Matrox
Продукцией фирмы Matrox - традиционно являются высококачественные Chipset и платы для двумерной графики (например, видеоадаптеры Matrox Mystique и Matrox Millennium считаются эталоном качества). В настоящее время фирма активно осваивает рынок ЗD-акселераторов. Первой и неудачной попыткой был 2D/ЗD-акселератор Matrox Productiva G100. Имея прекрасные показатели в 2D-графике и непривычно низкую для изделий Matrox цену, эта карта не обеспечивала приемлемого качества ЗD-изображений. Следующие 2 изделия фирмы — видеоадаптеры Matrox Millennium G200 и Matrox Mystique G200 — выполнены на основе Chipset Matrox MGA G200 и уже имеют встроенный акселератор трехмерной графики. Последней разработкой фирмы является Chipset MGA G400.
Matrox MGA G200
Chipset Matrox MGA G200 является совмещенным 128-разрядным 2D/3D-ускорителем с интерфейсом AGP (режимы 2х, DiME). Обычно оснащен 8 Мбайт видеопамяти типа SGRAM или SDRAM, причем возможно расширение до 16 Мбайт. Отличительной особенностью является высокая разрядность г-буфера — 32 бита. Максимальное разрешение в 3D — 1280x1024 при 32-битном цвете (16 Мбайт локальной памяти). При использовании видеопамяти объемом 8 Мбайт максимальное разрешение в режиме True Color составляет 1024x768. Однако при переходе к 32-битному цвету скорость работы падает на 30—40%, что сильно снижает производительность адаптера.
Chipset MGA G200 реализует традиционный набор аппаратно ускоряемых ЗD-функций, включая фирменную особенность Matrox — рельефное текстурирование с использованием карт окружающей среды (Environment Map Bump-mapping). Однако качество реализации некоторых функций неудовлетворительное, поэтому данный акселератор имеет специфический недостаток — на изображении появляется "желе", т. е. расплывчатость и подвижность элементов поверхности трехмерного объекта при его медленном движении. Плохо реализована аппаратная поддержка антиалиасинга.
Плата имеет интегрированный RAMDAC, работающий на частоте 230 или 250 МГц (в зависимости от модели). Традиционно имеется разъем для подключения дочерней платы, позволяющей реализовать аппаратную поддержку дополнительных функций обработки видеосигнала, хотя некоторые модели плат на основе MGA G200 обеспечивают это за счет встроенных средств.
К недостаткам платы относится отсутствие поддержки API OpenGL, благодаря чему невозможна, например, полноценная игра в Quake II.
Видеоадаптер на основе MGA G200 не имеет столь очевидной зависимости производительности от быстродействия CPU и шины, как, например, платы на основе Voodoo2 или Riva TNT, что говорит о сравнительно медленном конвейере рендеринга. Это значит, что этот Chipset целесообразнее использовать на более медленных машинах. Если же в перспективе вы планируете заменить свой процессор на Pentium II, то для работы с ЗD-приложениями стоит подумать о более быстродействующей плате.
В целом Chipset ориентирован самой фирмой Matrox на работу в составе PC нижнего и среднего уровня. Его преимуществом является очень высокое быстродействие и качество 2О-акселерации. Однако по качеству воспроизведения Зd-изображений и особенно по скорости он заметно уступает своим ближайшим конкурентам — Voodoo2 и Riva TNT.
Matrox MGA G400
Невысокая по сравнению с изделиями nVidia и 3Dfx скорость обработки ЗD-изображений Chipset MGA G200 заставили специалистов Matrox улучшить его ЗD-ядро. В результате появился новый Matrox MGA G400 (рис. 15.41), на основе которого в настоящее время выпускается три типа видеоадаптеров:
□ Matrox Millennium G400 16Mb AGP
□ Matrox Millennium G400 32Mb AGP
□ Matrox Millennium G400 MAX 32Mb AGP
Рис. 15.41. Внешний вид графического процессора Matrox MGA G400
Модели G400 и G400 МАХ различаются тактовыми частотами работы ядра (125 и 150 МГц соответственно), памяти (166 и 200 МГц) и RAMDAC (300 и 360 МГц), а также производительностью конвейера рендеринга (250 и 300 млн пикселов в секунду). Пропускная способность обоих моделей примерно одинакова и составляет около 8 млн треугольников в секунду. Chipset Matrox MGA G400 имеет более высокую производительность, чем Riva TNT(2), но уступает быстрым моделям на основе Riva TNT2 Ultra (модель G400 МАХ практически не отстает от последней).
Стоимость видеоадаптеров на основе Matrox G400 и Riva TNT2 Ultra также находится примерно на одинаковом уровне (первые чуть дороже). Набор аппаратно ускоряемых ЗD-функций является также стандартным для 3D-акселераторов данного уровня, при этом отдельного упоминания заслуживает качественная аппаратная реализация рельефного текстурирования с использованием карт окружающей среды (Environment Map Bump Mapping) — фирменная особенность ЗD-ядра фирмы Matrox. Впрочем, включение данного режима снижает производительность видеосистемы на 30—35%.
Хотя производители отнесли Chipset Matrox G400 к семейству 256-разрядных, это не совсем так: ЗD-ядро очень похоже на ядро MGA G200, т. е. является 128-разрядным, однако в MGA G400 использована двойная 256-разрядная шина между ядром и локальной памятью. Эта шина представляет собой совокупность двух однонаправленных 128-разрядных шин, по которым одновременно и независимо друг от друга передаются данные из видеопамяти в ЗD-ядро и обратно.
Традиционно сильной стороной видеоадаптеров компании Matrox является исключительно высокое качество двумерного изображения. По этому показателю MGA G400 — безусловный лидер среди всех упомянутых выше Chipset. Особенно это заметно при использовании высококачественных мониторов с экраном большого размера (не менее 17").
Наиболее интересным отличием видеоадаптеров на основе Matrox MGA G400 от рассмотренных выше устройств данного класса является наличие у некоторых моделей двух выходных разъёмов (возможность подключения двух мониторов к одному адаптеру называется Dual Head — Двойная голова) для одновременного подключения двух устройств отображения: либо двух мониторов, либо монитора и телевизора (рис. 15.42, 15.43). В последнем случае используется специальный переходник, позволяющий вывести видеосигнал с VGA-разъема на разъем типа S-Video или RCA.
Рис. 15.42. Видеоадаптер Matrox Millennium MGA G400 с функцией Dual Head
Рис. 15.43. Подключение к видеоадаптеру Matrox Millennium MGA G400 двух
Мониторов
При подключении двух мониторов можно наблюдать одинаковое изображение на двух экранах, либо растянуть одно изображение на оба экрана (рис. 15.44).
рис. 15.44. Изображение, распахнутое на два экрана
Такая возможность обеспечивается достаточно редко используемым конструктивным решением — наличием двух независимых контроллеров ЭЛТ. Напомним, что контроллер ЭЛТ является одним из главных элементов видеоадаптера (2D-ядра) и управляет процессами формирования синхросигналов м сканирования видеопамяти. Наличие двух независимых контроллеров ЭЛТ позволяет устанавливать разные разрешение, частоту кадров и глубину представления цвета для каждого монитора.
Традиционным недостатком ЗD-акселераторов производства фирмы Matrox является низкая производительность в приложениях, ориентированных на OpenGL. Этот недостаток присущ и Chipset Matrox MGA G400, хотя в настоящее время фирма усиленно работает над созданием эффективных драйверов уровня ICD.
ATI
Эта канадская фирма хорошо известна на рынке 2D-акселераторов. Как и Matrox, фирма ATI неудачно дебютировала на рынке 3D с Chipset ATI 3D Rage PRO. При достаточно высокой производительности в двумерной графике, он обладал низкой производительностью и некорректно реализованными функциями обработки ЗD-графики.
Первой успешной разработкой фирмы в области 3D явился 128-разрядный Chipset ATI Rage 128, в котором ATI постаралась внедрить много технологических новшеств (например, текстурную и пикселную кэш-память). Ожидалось, что Chipset ATI Rage 128 обеспечит высокую производительность системы, а также отличное качество изображения и станет достойным конкурентом лидерам рынка того периода — Chipset Riva TNT и Voodoo2. Отчасти так и получилось, однако ошибки в реализации отдельных 3D-функций, недостаточно отлаженные драйверы (особенно — ICD для OpenGL) и традиционно более высокая цена изделий ATI по сравнению с Chipset nVidia не способствовали успеху ATI Rage 128. Тем более, к моменту его выхода на рынок появились Chipset следующего поколения — Riva TNT2 Ultra и Voodoo3.
Исправив ошибки и улучшив характеристики Ragel28, фирма ATI выпустила новый Chipset Ragel28 Pro, который приблизился по производительности к Riva TNT2 Ultra. На основе этого Chipset ATI выпускает несколько моделей видеоадаптеров семейства ATI Rage Fury Pro, различающихся набором мультимедийных функций и объемом видеопамяти. Появились также видеоадаптеры ATI Rage Fury Pro MAXX, в которых на одной плате установлено два параллельно работающих Chipset Ragel28 Pro.
Новейшим изделием фирмы ATI является ЗD-акселератор Radeon 256, оснащенный геометрическим процессором Charisma Engine. Он относится к новому поколению ускорителей фотореалистичной графики и составляет конкуренцию Chipset GeForce фирмы nVidia и Savage 2000 фирмы S3.
ATIRage128
Также как и все современные изделия для 3D, Chipset ATI Ragel28 является интегрированным мультимедийным 2D/ЗD-акселератором с интерфейсом AGP (режим 2х). Chipset имеет 128-битную архитектуру, ядро и видеопамять работают на частоте 103 МГц. На плате может быть установлено 16 или 32 Мбайт видеопамяти типа. SGRAM. Встроенный RAMDAC работает на частоте 250 МГц, благодаря чему обеспечивается максимальное разрешение 1920x1200. ЗD-ядро имеет два конвейера рендеринга и аналогичный Chipset Riva TNT набор ускоряемых ЗD-функций, за исключением поддержки анизотропной фильтрации (реализация билинейной фильтрации выполнена также с ошибками). Пропускная способность 4 млн треугольников в секунду, скорость закраски — 200 млн пикселов в секунду. Поддерживаются текстуры больших размеров (1024x1024), 32-битный г-буфер и 32-битный цвет при обработке ЗD-изображений.
Новинкой в традиционной архитектуре ЗD-ядра стало наличие текстурной и пикселной кэш-памяти, ускоряющей процесс рендеринга. Традиционная сильная сторона большинства видеоадаптеров фирмы ATI и Rage 128, в частности, — оптимизированное 128-разрядное 2D-ядро, обеспечивающее высокую скорость работы и отличное качество 2D-изображений. Помимо стандартного набора аппаратно ускоряемых 2D-функций обеспечивается частичное аппаратное декодирование видеопотоков MPEG-2/DVD, позволяющее снизить загрузку CPU на 45%. Помимо этого, возможна установка дополнительных микросхем обеспечивающих качественную реализацию функции TV-out.
ATIRage128Pro
Недостатки ATI Ragel28 и поставляемого программного обеспечения серьезно затруднили его продвижение на рынке, поэтому компания ATI вскоре выпустила новую, усовершенствованную версию данного Chipset, названную Rage 128 Pro. Улучшения коснулись следующих аспектов:
□ Chipset выполнен по более современной 0,25-микрометровой технологии;
□ тактовые частоты ядра и памяти увеличены до 140 и 150 МГц соответственно;
□ тактовая частота RAMDAC увеличена до 300 МГц, что позволило повысить максимальное разрешение до 2048x1536;
□ исправлены ошибки реализации билинейной фильтрации, введена аппаратная поддержка анизотропной фильтрации;
□ усовершенствован механизм Setup Engine, благодаря чему пропускная способность Chipset увеличилась до 8 млн треугольников в секунду;
□ при реализации интерфейса AGP введена поддержка режима 4х.
Благодаря этим изменениям Chipset ATI Rage 128 Pro no производительности вплотную приблизился к Riva TNT2 Ultra, а по отдельным параметрам даже немного его превзошел. В качестве дополнительного стимула для приобретения видеоадаптера на основе данного Chipset фирма ATI аппаратно реализовала в нем некоторые мультимедийные функции; в частности, модель ATI Rage Fury Pro ..VIVO (Video In — Video Out) обеспечивает качественный ввод/вывод аналогового видеосигнала.
ATI Rage Fury MAXX
Дополнительным средством в конкурентной борьбе компании ATI против nVidia, S3 и 3Dfx является применение новой технологии МАХХ, позволяющей использовать на одной плате видеоадаптера несколько Chipset, параллельно работающих в 3D (при работе в обычной двумерной графике этой необходимости нет). Такое решение можно считать ответом на технологию SLI, которая давно и успешно используется в изделиях компании 3Dfx.
В результате был выпущен видеоадаптер ATI Rage Fury MAXX (рис. 15.45), у которого на одной плате размещено два Chipset ATI Rage 128 Pro, каждый из них имеет 32 Мбайт локальной памяти (общий объем видеопамяти типа SDRAM составляет 64 Мбайт).
Рис. 15.45. Видеоадаптер ATI Rage Fury MAXX
Для обычной работы (в 2D) задействуется только один Chipset. Наличие второго Chipset обеспечивает потенциальную работу с двумя мониторами (на плате даже имеется место для второго разъема), однако пока эта функция не поддерживается. При работе с ЗD-приложениями производительность ATI Rage Fury MAXX приближается к производительности nVidia GeForce 256, однако и цена данного изделия ничуть не ниже.
ATI Radeon 256
Принципиально новым продуктом ATI является ЗD-акселератор нового поколения — Radeon 256 (рис. 15.46).
Рис. 15.46. Видеоадаптер ATI Radeon 256
Особенности архитектуры и основные характеристики ATI Radeon 256 как одного из ускорителей фотореалистичной графики были рассмотрены выше. Здесь отметим лишь следующие особенности:
□ 256-разрядное графическое ядро состоит из двух параллельно работающих 128-разрядных блоков;
□ помимо традиционной для современных видеоадаптеров памяти типа SDRAM/SGRAM, ATI Radeon 256 поддерживает перспективную память типа DDR SDRAM (на рис. 15.46 изображен видеоадаптер, оснащенный видеопамятью типа DDR SDRAM объемом 32 Мбайт и рассчитанной на работу с тактовой частотой 183 МГц);
□ кроме графического процессора (2D- и ЗD-ядра), на плате видеоадаптера имеется микросхема Rage Theater, позволяющая выполнять ввод/вывод видеосигнала и его аппаратное сжатие (на рис. 15.46 виден также разъем S-Video);
□ Chipset ATI Radeon 256 позволяет использовать технологию МАХХ, поэтому возможно появление видеоадаптеров, содержащих несколько Chipset.
Заметим, что с выходом данного Chipset, имеющего не менее высокие характеристики, чем GeForce 256, компания ATI впервые составила серьезную конкуренцию фирме nVidia среди продукции High-End на рынке устройств для 3D
.
S3, Inc.
Фирма S3, Inc. зарекомендовала себя как изготовитель недорогих, но имеющих достаточно высокое быстродействие Chipset для видеоадаптеров, благодаря чему ее продукция составляет значительную долю рынка 2D-устройств. Первые попытки S3 завоевать рынок 3D были неудачными. Выпущенный в конце 1995 г. видеоадаптер на основе Chipset S3 Virge GX/DX обладал хорошей производительностью в 2D-приложениях, но не обеспечивал существенного ускорения операций с трехмерной графикой, даже несмотря на попытки S3 анонсировать данное изделие как 2D/ЗD-акселератор, Это стало особенно очевидно после появления акселератора Voodoo Graphics.
Следующая попытка — выпуск Chipset S3 Trio3D, который имел еще меньший успех, поскольку аппаратное ускорение основных ЗD-функций в нем также отсутствовало (в этой связи не могут не вызывать улыбку имеющиеся в продаже AGP-версии видеоадаптеров на основе этих двух Chipset, поскольку наличие у них этого интерфейса совершенно бесполезно).
Изучив свои ошибки и взяв на вооружение последние достижения в области ускорения функций трехмерной графики, фирма S3 создала совершенно новый продукт — Chipset Savage 3D. Как и любое другое первое изделие в области 3D, Chipset получился довольно "сырым": его производительность явно не дотягивала до уровня Riva TNT, зато по сбоям и неустойчивости работы он был в первых рядах.
Однако в очередной версии Chipset — Savage 4 — уже были исправлены многие недостатки Savage 3D. Новый Chipset, благодаря высокой производительности (на уровне Riva TNT), устойчивой работе и сравнительно невысокой цене, получил довольно широкое распространение, хотя к изделиям уровня High-End его отнести все же нельзя.
Последняя разработка фирмы — Savage 2000 — вполне может быть охарактеризована как высококлассный ЗD-акселератор нового поколения, содержащий геометрический процессор.
S3 Savage 3D
S3 Savage 3D имеет 128-разрядное изготовленное по технологии 0,25 мкм 2D/ЗD-ядро (два блока по 64 разряда), а также ставший уже традиционным стандартный набор средств обработки видеоданных. Наиболее существенным отличием этого Chipset от своих конкурентов является использование в нем технологии сжатия текстур S3TC {S3 Textures Compression) — собственная разработка фирмы S3. Эта технология позволяет решить две задачи:
□ значительно (в несколько раз) сократить объем видеопамяти, необходимой для хранения текстур, либо увеличить разрешение текстур, хранящихся в видеопамяти;
□ повысить скорость обмена текстурными данными между акселератором и RAM PC за счет того, что текстуры пересылаются в сжатом виде и скорость информационного потока оказывается значительно ниже.
Благодаря этим достоинствам технологию S3TC лицензировала фирма Microsoft, включив ее поддержку в DirectX 6.O. Однако в настоящее время лишь немногие приложения поддерживают данную технологию (к числу таковых можно отнести игру Unreal).
Сделав ставку на использование сжатых текстур, S3 снабдила Savage 3D видеопамятью небольшого объема (от 2 до 8 Мбайт). Chipset поддерживает работу с видеопамятью двух типов: работающей на частоте 125 МГц SGRAM и более дешевой SDRAM. Как известно, такой подход себя не оправдал: даже при наличии интерфейса AGP (режим 4х) производители стремятся наращивать объем локальной памяти (что в дальнейшем сделала и S3 в новой модели Savage 4).
Будучи ориентированным на шину AGP, Chipset Savage3D поддерживает и интерфейс PCI версии 2.1, включая управление питанием шины.
К аппаратным особенностям Chipset Savage3D можно отнести следующие:
□ 128-разрядное (2x64) ЗD-ядро с тактовой частотой 125 МГц;
□ реализация однопроходного рендеринга при аппаратно поддерживаемой трилинейной фильтрации (при этом используются числа с плавающей точкой, т. е. корректно учитывается дробная часть числа);
□ довольно высокая для 3D-акселераторов данного уровня пропускная способность (5 млн треугольников в секунду), обусловленная наличием модифицированного механизма обработки треугольников Triangle Setup Engine (обеспечивает оптимизированный режим передачи данных о смежных вершинах элементарных треугольников — triangle strip and fans);
□ невысокая скорость закраски — 5 млн пикселов в секунду (при включенной трилинейной фильтрации);
□ краевой антиалиасинг, отсутствие аппаратной поддержки полного анти-
алиасинга;
□ отсутствие аппаратной поддержки анизотропной фильтрации.
В настоящее время видеоадаптер на основе S3 Savage 3D стоит достаточно дешево, однако невысокое по сравнению с Riva TNT быстродействие, а также явные недоработки в аппаратном и программном обеспечении могут создать массу проблем в работе и настройке адаптера.
S3 Savage 4
Спустя 7 месяцев после выпуска Savage 3D фирма S3 изготовила новый Chipset Savage 4, в котором были устранены многие недостатки предыдущего Chipset. Так же, как и Savage 3D, Savage 4 имеет 128-разрядное 2D/3D-ядро, выполненное по технологии 0,25 мкм. Этот Chipset выпускается в трех модификациях ,различающихся тактовыми частотами ядра и видеопамяти, а также объемом и быстродействием видеопамяти:
□ Savage 4 GT — 110/125 МГц, до 16 Мбайт локальной памяти типа SDRAM (рис. 15.47, слева).
□ Savage 4 Pro— 110/125 МГц до 32 Мбайт локальной памяти типа SDRAM, или SGRAM (рис. 15.47, справа).
SGRAM.
□ Savage 4 Pro- 125/143 МГц до 32 Мбайт локальной памяти типа SDRAM или SGRAM
На плате видеоадаптера на основе Chipset семейства Savage 4, как правило, устанавливается только память типа SDRAM со временем доступа 10 не для Chipset Savage 4 GT и 8 не — для Savage 4 Pro. Опыт показывает, что она без проблем разгоняется до частоты 135—150 МГц (в зависимости от времени доступа).
Основные отличия Savage 4 от Savage 3D состоят в следующем:
□ увеличена до 300 МГц тактовая частота RAMDAC;
□ улучшен механизм преобразования информации о вершинах полигонов (Triangle Setup Engine), благодаря чему пропускная способность Chipset возросла с 5 до 8 млн треугольников в секунду;
□ добавлена аппаратная поддержка анизотропной фильтрации;
□ усовершенствован конвейер рендеринга: мультитекстурирование и трилинейная фильтрация выполняются за один такт, скорость заполнения повысилась до 140 млн пикселов в секунду;
□ реализована аппаратная поддержка рельефного текстурирования по методу вдавливания (Embossing);
□ реализована аппаратная поддержка полного антиалиасинга (Full Scene Anti-Aliasing, FSAA);
□ обеспечена поддержка режима 4х интерфейса AGP (Chipset Savage 4 Pro);
□ добавлен 8-битный буфер шаблонов, позволяющий динамически изменять тени от объектов;
П поддерживается пикселный и полигонный туман;
□ реализованы различные алгоритмы преобразования текстур, включая процедурные текстуры;
□ обеспечена поддержка текстур большого размера (до 2048x2048).
Благодаря этим доработкам Chipset Savage 4 практически сравнялся с Chipset Riva TNT по функциональным возможностям и производительности, причем цена видеоадаптеров на основе этого Chipset на 20—30% ниже. Отличительная черта Chipset Savage 4 — прекрасное качество прорисовки трехмерной сцены, недоступное для Chipset других моделей. Однако проблемы с драйверами, появлявшиеся в Savage 3D, частично остались, что особенно заметно в приложениях, ориентированных на OpenGL. Имеет место также плохая совместимость с некоторыми моделями материнских плат.
Тем не менее, главным недостатком Chipset Savage 3D все же являются некачественные драйверы, особенно ICD для OpenGL. Если вы любите играть в Quake или работаете с другими программами, использующими этот API (например, 3D Studio Max), то видеоадаптер на основе Savage 4 вряд ли вам подойдет, т. к. скорость работы будет очень низкой. Правда, для Chipset Savage 3D и Savage 4 фирма S3 разработала "родной" API — Metal3D, при использовании которого они демонстрируют великолепную производительность (даже выше, чем у конкурентов). Однако приложений, поддерживающих данный API, очень мало (наиболее известным из них является игра Unreal).
В целом видеоадаптер на основе Savage 4, оснащенный видеопамятью объемом не менее 16 Мбайт, является недорогим, но достаточно эффективным решением для домашнего компьютера, благодаря чему составляет конкуренцию видеоадаптерам на основе Riva TNT, а модели на основе Savage 4 Рго+ (например, Diamond Stealth III S540) сопоставимы по быстродействию с видеоадаптерами на основе Riva TNT2 М64. Преимущество этих адаптеров над своими конкурентами более заметно при использовании CPU фирмы AMD (не ниже K6-II 350 МГц), видимо графические процессоры фирмы S3 поддерживают набор команд 3Dnow!
S3 Savage 2000
Хотя выпуск Chipset Savage 4 считается успехом фирмы S3, но она не стала лидером и не заняла место в ряду производителей высокопроизводительных ЗD-акселераторов класса High-End. Стремясь исправить это положение и догнать лидера (nVidia), S3 выпустила новый 128-разрядный Chipset, получивший название Savage 2000.
Основное отличие этого Chipset от своих предшественников — наличие геометрического процессора S3TL (S3 Transform and Lighting). Он обеспечивает аппаратное ускорение операций геометрической стадии ЗD-конвейера: преобразование координат и освещенности (до 8 источников света). Наличие данного блока в составе Savage 2000 позволяет поставить его в один ряд с такими моделями, как GeForce и Radeon 256, однако производительность S3TL 'примерно вдвое ниже, чем у этих моделей.
Остальные особенности архитектуры Savage 2000 делают его похожим на 128-разрядные 3D-акселераторы типа Riva TNT2 и Savage 4. Пропускная способность Savage 2000 составляет 10—15 млн треугольников в секунду, скорость прорисовки — 300 млн пикселов в секунду.
Анонсирована модель Savage 2000+, у которой максимальные частоты ядра и памяти увеличены до уровня 200/200 МГц. Для нее скорость прорисовки достигнет 400 млн пикселов в секунду.
По сравнению с Savage 4, в новом Chipset значительно улучшена поддержка API OpenGL, однако не доработаны драйверы для Direct3D. Как и следует ожидать, наилучшую производительность данный Chipset обеспечивает при использовании собственного API фирмы S3 — MetaDD. В целом Savage 2000 превосходит по производительности Chipset Riva TNT2 и Rage 128, однако явно уступает GeForce 256 (в первую очередь, из-за более слабого геометрического процессора и более узкой шины видеопамяти). Единственное его преимущество по сравнению с GeForce 256 — более низкая цена (примерно на 30% ниже).