Создание трехмерных изображений требует большой работы. Простые акселераторы должны только рисовать многоугольники и планировать текстуры. Более сложные акселераторы могут частично выполнять функции предшествующих этапов, например, позволяя блоку вычисления вершин передавать на следующий этап координаты в виде десятичных чисел, что уменьшает загрузку процессора.
Последовательность этапов создания трехмерных изображений
Геометрическая обработка. Программа хранит местоположение объектов в мировых координатах, упрощая связи между различными объектами. Большинство вычислений происходит в процессоре.
Преобразование и отображение. Программа преобразует трехмерные координаты в пространстве (3D-координаты) в координаты на плоскости (2D-координаты) и использует текстуры. Работа в основном выполняется аппаратурой.
Описание этапов создания трехмерных изображений
Вычисление координат вершин. Процессор вычисляет позицию каждой вершины для каждого объекта в мировой системе координат.
Отсечение краев. Изображаемые объекты могут не вписываться в пределы видимой области. Выступающие части должны быть удалены, поэтому процессор отсекает края объекта по границам рисуемой области - по одному многоугольнику за один раз.
Отбрасывание скрытых поверхностей. Изображать невидимые поверхности излишне. Процессор должен распознавать видимые поверхности и отбрасывать невидимые.
Вычисление координат проекций. Дисплей работает всего лишь как двумерное устройство, наподобие куска стекла, через которое вы смотрите на трехмерную сцену. Чтобы промоделировать это в компьютере, нам нужно пересчитать координаты проекций вершин каждого многоугольника из системы координат в пространстве в систему координат на плоскости (поверхности экрана).
Закрашивание поверхностей. Как только мы получаем набор двумерных многоугольников, мы можем красить поверхность каждого из них теневой картой текстуры. В современных видеоадаптерах, в которых графический процессор может выполнять функции ускорения трехмерной графики, встраиваются специальные электронные схемы, которые выполняют растеризацию гораздо быстрее, чем программное обеспечение.
Большинство современных наборов микросхем 3D-акселераторов обеспечивают выполнение следующих функций растеризации:
Растровое преобразование. Определение того, какие пиксели экрана покрываются каждым из примитивов.
Обработка полутонов. Цветовое наполнение пикселей с плавными цветовыми переходами между объектами.
Образование текстуры. Наложение на примитивы двухмерных изображений и поверхностей.
Определение видимости поверхностей. Определение пикселей, покрываемых ближайшими к зрителю объектами.
Анимация. Быстрое и четкое переключение между последовательными кадрами движущегося изображения.
В более совершенных 3D-акселераторах могут быть использованы геометрические процессоры (например, FGX-1), которые ускоряют всю стадию геометрической обработки, в том числе трансформацию (если 3D-акселератор поддерживает операции с матрицами) и освещение.
Акселераторы трехмерной графики постоянно совершенствовались, догоняя запросы современных мультимедийных систем и профессиональных графических станций. Кроме того, игровые программы рядовых пользователей и графические приложения массового использования, требовали разработки высокопроизводительных и доступных по цене 3D-акселераторов. Ниже приведены технические характеристики и описания типовых представителей 3D-акселераторов различных поколений. С учетом выше рассмотренных технологий и терминологии трехмерной графики вы можете познакомиться и оценить технические возможности и, выполняемыми 3D-акселераторами различных поколений, функции.
В 3D-акселераторах основой видеоадаптера является сверхбольшая микросхема видеоконтроллера. От этой сверхбольшой микросхемы зависят быстродействие и возможности видеоадаптера. Он отвечает за вывод изображения из видеопамяти, регенерацию ее содержимого, формирование сигналов развертки для монитора и обработку запросов центрального процессора (ЦП) (см. рис. 1). Для ускорения вывода изображения на экран монитора и снижения частоты конфликтов при обращении к памяти со стороны видеоконтроллера и центрального процессора видеоконтроллер имеет отдельный буфер, который в свободное от обращений ЦП время заполняется данными из видеопамяти. Внутренняя шина данных контроллера обычно шире внешней (32, 64,128, 256). Если конфликта избежать не удается, видеоконтроллеру приходится задерживать обращение ЦП к видеопамяти, что снижает производительность системы. Для исключения подобных конфликтов в ряде карт применяется так называемая двухпортовая память (VRAM, WRAM), допускающая одновременные обращения со стороны двух устройств.
Видеоконтроллеры (см. рис. 1) имеют архитектуру, по сложности мало уступающую центральному процессору компьютера, и зачастую превосходят их по числу транзисторов.
Архитектура современного видеоконтроллера обычно предполагает наличие нескольких блоков обработки информации: блока обработки 2D-графики, состоящего из SVGA-ядра и ядра графического акселератора, SRAM для хранения данных о гамма-коррекции и маски курсора, блока обработки 3D-графики, в свою очередь, обычно разделяющегося на геометрическое ядро (плюс кэш вершин), блок растеризации (плюс кэш текстур) и ядро обработки видеоданных; контроллеры видеопамяти и порта главной шины (например, PCI или AGP), факультативно добавляется контроллер какого-нибудь дополнительного внешнего порта, например VIP, во многие чипы встраивается еще и RAMDAC. На рис. 1 приведена примерная блок-схема платы видеоакселератора.
RAMDAC служит для преобразования результирующего потока данных, формируемого видеоконтроллером, в уровни интенсивности цвета, подаваемые на монитор. Все современные мониторы используют аналоговый видеосигнал, поэтому возможный диапазон цветности изображения определяется только параметрами RAMDAC. Подавляющее большинство RAMDAC имеет четыре основных блока:
три цифро-аналоговых преобразователя (DAC), по одному на каждый цветовой канал (красный, синий, зеленый, RGB).
Большинство DAC имеет разрядность 8 бит - по 256 уровней яркости на каждый цвет, что в сумме дает 16,7 млн. цветов (и за счет гамма-коррекции есть возможность отображать исходные 16,7 млн. цветов в гораздо большее цветовое пространство). Некоторые новые RAMDAC имеют разрядность по каждому каналу 10 бит (1024 уровня яркости), что позволяет сразу отображать более 1 млрд. цветов.
Рис. 1. Плата видеоакселератора
Часто RAMDAC выполнен на одном кристалле с видеоконтроллером. Это делается в основном в недорогих видеоадаптерах, поскольку близкое соседство с интенсивно работающими схемами отрицательно влияет на стабильность работы RAMDAC.
Видеопамять служит для хранения изображения. От ее объема зависит максимально возможное полное разрешение видеоадаптера : а х в х с, где А - количество точек по горизонтали, В - по вертикали и С - количество возможных цветов каждой точки. Например, для разрешения 640х480х16 достаточно 256 Кбайт, для 800х600х256 - 512 Кбайт, для 1024х768х65 536 (другoe обозначение — 1024х768х64К) - 2 Мбайт и т.д.
Поскольку для хранения цветов отводится целое число разрядов, количество цветов всегда является степенью двойки (16 цветов - 4 разряда, 256 - 8 разрядов, 64К -16 и т. д.).
Преобразователь входного видеосигнала производит конвертирование аналогового видеосигнала, поступающего от внешнего источника видеоданных (такого как видеокамера, видеомагнитофон и т.п.), в цифровой поток видеоданных, «понятный» видеоконтроллеру, для последующей обработки и отображения на экране монитора.
Кодировщик видеосигнала, наоборот, производит конвертирование видеосигнала, идущего на монитор от RAMDAC в аналоговый видеосигнал, который можно подавать на вход телевизора или видеомагнитофона.
Разъем расширения видеопамяти предназначен для увеличения до требуемого уровня объема установленной на видеоадаптере видеопамяти.
BIOS (Basic Input/Output System) видеоадаптера располагается в видео-ПЗУ (Video ROM), кроме него там находятся экранные шрифты, служебные таблицы и т.п.
BIOS не используется видеоконтроллером напрямую - к нему обращается только центральный процессор, и в результате выполнения им программ из BIOS происходят обращения к видеоконтроллеру и видеопамяти. На многих современных видеоадаптерах устанавливаются перепрограммируемые посредством электричества видео-ПЗУ (EEPROM, Flash ROM), допускающие обновление BIOS видеоадаптера пользователем с помощью специальной программы из комплекта видеоадаптера.