4. Видеоподсистема компьютера        

4.1. Программные интерфейсы

4.2.  Принципиальное устройство графического ускорителя.      

     4..3. Современные видеоадаптеры.

Видеоподсистема компьютера.

Программные интерфейсы.

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

Direct3D — библиотека является частью программного интерфейса Microsoft DirectX и поддерживается практически всеми ускорителя­ми. Начиная с версии 6 технология Direct3D является по своим воз­можностям достойным конкурентом OpenGL.

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

В связи с этим новый набор функций легализуется только с появле­нием очередной версии DirectX (где функции Direct3D стоят в одной очереди за «сертификатом» на стандартизацию с Directsound и дру­гими библиотеками программ). Например, вершинные и пиксельные шейдеры были легализованы только в DirectX версии 8. Очевидно, что производителям железа и программ нет никакого смысла включать в программы и аппаратуру новейшие функции: а вдруг Microsoft не утвердит их в следующей версии DirectX? Вместе с тем жесткая стандартиза­ция уже имеющихся функций позволяет использовать их с наиболь­шей пользой и создавать эффективный код.

В последние годы популярность Direct3D значительно выросла бла­годаря двухуровневой системе взаимодействия с приложениями: Direct3D Immediate Mode (непосредственный режим) и Direct3D Retained Mode (дистанционный режим). В непосредственном режиме приложение полностью опирается на функции Direct3D и не исполь­зует никаких других расширений. В дистанционном режиме прило­жение оперирует только частью базовых инструкций, в основном вво­да-вывода, а в остальном опирается на собственный графический движок. Такой подход позволяет реализовать в играх новые эффек­ты, не дожидаясь выхода версии DirectX с их поддержкой.

 

                         Основные возможности DirectX 8.1

Вершинные шейдеры версия 1.1

Пиксельные шейдеры до версии 1.4 вкл.

Процедурная геометрия

Попиксельное освещение

Смешивание вершин

Полноценное затенение по Фонгу

Скиннинг и морфинг

Анизотропное освещение

Генерация текстур

Специальные виды рендеринга

Интерполяция по ключевым кадрам

Попиксельное отражение по Фреснелю

Рендеринг систем частиц

Объемные эффекты

Модификация перспективного вида

Новые карты рельефа

Новые модели освещения

Процедурные текстуры

Простые карты смещения

 

                        

                                    Новые возможности DirectX 9

 

                - Вершинные шейдеры Vertex Shader 2.0

                - Пиксельные шейдеры Pixel Shader 2.0                 

                   - Адаптивная тесселяция Adaptive Tesselation

                - Минимум 10 бит на каждый канал цветности   

                     - Поддержка карт смещения  Displacement Map

 

 

OpenGL — библиотека пришла на платформу PC из сферы рабочих станций фирмы Silicon Graphics во многом благодаря игре Quake, ис­пользовавшей ее несколько упрощенный вариант. Наличие поддержки этой библиотеки у видеоадаптера очень желательно, так как мно­гие программы оптимизированы под OpenGL.

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

В самом полном виде расширенные функции поддерживаются с по­мощью инсталлируемого драйвера клиента (OpenGL Installable Client Driver), однако разработка такого драйвера связана с большой трудо­емкостью. Быстрее и проще разработать драйвер с усеченными воз­можностями — мини-клиент (OpenGL Mini Client Driver), который поддерживает не все функции и не всегда оптимизирован по коду. Часто в качестве альтернативы применяют драйвер-минипорт (OpenGL Miniport Driver), созданный для поддержки какой-либо кон­кретной игры. Наконец, иногда можно встретить так называемый раппер (OpenGL Ripper) — драйвер-минипорт, транслирующий инструк­ции OpenGL в код другого API.

В настоящее время ожидается выход OpenGL 2.0 с поддержкой но­вых функций обработки графики.

 

 

 

 

                                        Развитие API OpenGL

OpenGL 1.3

OpenGL 2.0

Трансформации

Объекты

Масштабирование

Процессор упаковки/распаковки донных

Наложение текстур

Управление памятью

Мультитекстурирование

Процессор обработки вершин

Туман

Процессор фрагментов

Массивы вершин

Вершинные шейдеры

Операции с буфером кадра

Буфер внешних данных

Управление синхронизацией

Управляемый буфер кадра

Освещение

Буфер отрисовки

Обрезка по кадру

Пиксельные шейдеры

Конвейер фиксированных операций

 

 

 

Glide — собственная библиотека фирмы 3DFx, временно завоевавшая популярность благодаря бурному распространению ускорителей Voodoo Graphics. Она слабо поддерживается другими ускорителями и, видимо, в ближайшее время окончательно сойдет со сцены.

Fahrenheit — с 1997 года компании Silicon Graphics, Microsoft, Intel и Hewlett-Packard ведут разработку нового графического API, получив­шего название Fahrenheit, призванного вытеснить OpenGL и заменить Direct3D, став единым стандартом для разработчиков программ и ви­деокарт. Эффективность нового API обеспечивается разделением функций между тремя частями разного уровня. На первом уровне (Fahrenheit Low Level) поддерживаются первичные функции ввода-вывода, затенения и прочие, воздействующие непосредственно на полигоны и отдельные пикселы, что похоже на нынешние инструк­ции Direct3D и OpenGL. На уровне композиции сцены (Fahrenheit Scene Graph) функции API управляют камерами, источниками света и другими объектами, которые не относятся к отдельным полигонам. Для управления моделями предназначены функции верхнего уровня (Fahrenheit Large Model). Принятый в Fahrenheit способ построения и расчета сцен позволяет формировать гибкие алгоритмы взаимодействия приложений, API и железа на видеокартах. Очевидно, что и пользователю не надо будет ломать голову над проблемой совместимости видеокарт с приложениями, драйверами и разными API.

Принципиальное устройство графического ускорителя.

Современный видеоадаптер (графический чипсет) включает следующие основные компоненты:

-  BIOS;

-   2 D -ускоритель;

-    блок обработки (ускоритель) ЗD-графики;

-    блок обработки видеосигналов;

-    контроллер памяти;

-    видеопамять;

-   интерфейс шины AGP;

-   интерфейс внешнего порта ввода-вывода;

-    цифроаналоговый преобразователь RAMDAC.

В качестве дополнительных компонентов на видеокарте могут при­сутствовать формирователь телевизионного сигнала с выходным разъемом (TV-Out), блок обработки (ускоритель) сигналов телевиде­ния высокой четкости (HDTV), блок обработки DVD, цифровой выход для ЖК-мониторов (DVI), телевизионный тюнер.

 

Обработка 2D-графики

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

Аппаратная структура RAMDAC практически описана в его назва­нии, где RAM — это Random Access Memory (память с произвольной выборкой), а DАС — это Digital to Analog Converter (цифро-аналого­вый преобразователь). Память в модулях RAMDAC построена на ста­тических элементах, поэтому по быстродействию примерно соответ­ствует кэш-памяти процессоров.

Один из первых RAMDAC был разработан фирмой IBM в 1985 г. и обеспечивал вывод изображения с разрешением 320x200 точек при цветовом охвате 8 бит. В дальнейшем схемотехника RAMDAC быстро развивалась, и сегодня стандартным считается RAMDAC, обеспечи­вающий разрешение 1600x1200 точек при 32-битном цвете на частоте 75~85 Гц. В режиме Direct Color обеспечивается прямой доступ к эле­ментам DAC. Это позволяет создавать независимые таблицы для каждого цвета и, тем самым, компенсировать цветовые искажения. Такой эффект «правки» цвета получил название гамма-коррекции.

Качество получаемого изображения в решающей степени зависит от таких характеристик RAMDAC, как его частота, разрядность, время переключения с черного сигнала на белый и обратно, варианта исполнения (внешний или внутренний). Частота RAMDAC говорит о том какое максимальное разрешение при какой частоте кадровой развертки сможет поддерживать видеоадаптер. Например, при разрешении 1024x768 точек и частоте кадровой развертки 70 Гц необходимо вы­водить единичный пиксел примерно за 13 нс (с учетом времени на об­ратный ход луча по горизонтали и вертикали). Следовательно, в этом режиме RAMDAC должен поддерживать собственную частоту около 75 МГц. Современными можно считать RAMDAC с частотой не ниже 200 МГц.

Разрядность RAMDAC говорит о том, сколько цветов теоретически способен воспроизводить видеоадаптер. Большинство микросхем под­держивает представление 8 бит на каждый канал цвета, что обеспе­чивает отображение около 16,7 миллионов цветов. За счет гамма-кор­рекции исходное цветовое пространство расширяется еще больше. В последнее время появились RAMDAC с разрядностью 10 бит по каж­дому каналу, охватывающие более миллиарда цветов.

Обычно не афишируемым параметром является Slew Rate. Это вре­мя, в течение которого электронный луч пушки кинескопа включает­ся, достигает максимальной яркости на заданном пикселе и выклю­чается (переключение сигнала на белый — белый пиксел на черном фоне) и наоборот (черный пиксел на белом фоне). Случается, что не успевший полностью погаснуть луч уже переводится на следующий пиксел или не достигший требуемой яркости луч перескакивает даль­ше. В результате соседний пиксел уже задействован, а предыдущий еще не «остыл», поэтому его цвет как бы размазывается на соседние элементы. Такой эффект с чьей-то легкой руки получил название «за-мыливание» и встречается, к сожалению, частенько. При этом у RAMDAC с меньшей частотой параметр Slew Rate может быть луч­ше, чем у высокочастотных собратьев.

Следует обратить внимание на то, как именно выполнен модуль RAMDAC на видеокарте — внутренним или внешним. Обычно в мас­совых изделиях он совмещен на одном кристалле с видеоконтролле­ром. Понятно, что соседство с другими интенсивно работающими кон­турами кристалла ему на пользу не идет и влияет на стабильность работы, в том числе и на показатель Slew Rate.

В некоторых версиях видеокарт устанавливают два независимых RAMDAC, обеспечивающих вывод разных изображений на два устройства, например — монитор и телевизор. Частота встроенного RAMDAC на современных видеоадаптерах составляет 350 МГц (в чипсете Radeon 8500 — 400 МГц).                                                        

 

Современные видеоадаптеры.

Можно считать, что сейчас выпускаются видеокарты на базе четвертого поколения графических чипсетов. Это поколение характеризуется полно­стью программируемым графическим процессором. Разработчики программ получают возможность описывать способы обработки гра­фики с помощью команд, все более похожих на операторы языков про­граммирования высокого уровня, например C++. Поддержка програм­мируемых графических процессоров предусмотрена в API DirectX версии 9. Четвертое поколение можно считать поколением Х9 поскольку и архитектура чипсетов, и функции API DirectX9 разраба­тываются в тесном взаимодействии.

Рассмотрим технические данные видеокарты  на примере одного из лидеров на рынке графических чипсетов – компании ATI. Итак видеокарта RADEON 9800 XT (R360).

Приведем характеристики, с которыми RADEON 9800 XT был анонсирован:

-Технология производства: 0.15 микрон;

-Число транзисторов: 115 миллионов;

-Тактовая частота ядра: 412 МГц;

-Шина памяти: 256 бит DDR II ;

-Максимальный объем локальной памяти: 256 Мб;

-Тактовая частота памяти: 375 DDR (730) МГц, пропускная способность около 24 Гб/сек;

-Интерфейсная шина: AGP 8x/4x, пропускная способность 2 Гб/сек;

-Полная поддержка основных возможностей DX9:

-Плавающие 64 и 128 бит форматы данных для текстур (включая объемные и кубические текстуры) и кадрового буфера (векторы из 4 компонент F16 или F32);

-Пиксельные конвейеры с плавающей арифметикой (формат вычислений F24[4] или F24[3+1]);

-Пиксельные шейдеры версии 2.0;

-Четыре независимых вершинных конвейера;

-Вершинные шейдеры версии 2.0;

-Аппаратная тесселяция N-Patches с картами смещения (Displacement Mapping) и, по желанию, адаптивным уровнем детализации;

-Новая технология F-буфера позволяет исполнять пиксельные шейдеры практически неограниченной длины.

-Восемь независимых пиксельных конвейеров

-Восемь текстурных блоков (по одному на пиксельный конвейер), способных производить трилинейную фильтрацию без потери скорости, а также комбинировать анизотропную фильтрацию с трилинейной.

-Четырехканальный (4 канала по 64 бита) контроллер памяти, связанный с ядром ускорителя и AGP коммутатором "каждый-с-каждым";

-Технология экономии пропускной полосы памяти HyperZ III+ (Быстрая очистка и сжатие буфера глубины на основе блоков 8х8, иерархический Z-буфер для быстрого определения видимости);

-Дополнительные оптимизации для скоростной работы двустороннего буфера шаблонов.

-Ранний Z-тест (пиксельный шейдер выполняется только для видимых пикселей);

-Аппаратное ускорение распаковки и сжатия MPEG 1/2, возможность произвольно обрабатывать видеопоток с помощью пиксельных шейдеров (технология VIDEOSHADER);

-Два независимых CRTC;

-Два встроенных 10 бит 400 МГц RAMDAC с аппаратной гаммакоррекцией;

-Встроенный TV-Out;

-Встроенный DVI (TDMS трансмиттер) интерфейс, разрешение до 2043*1536.

-Встроенный цифровой интерфейс общего назначения для подключения внешнего RAMDAC или DVI трансмиттера, а также для сопряжения с TV тюнером.

-FC корпусовка (FlipChip — с перевернутым открытым кристаллом).

 




                                              Графический процессор R360

 


 

 

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

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

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

                                      

 

Hosted by uCoz