Что такое 3д акселератор в видеокарте
В этом году ведущие производители графических чипсетов выбросили на рынок и анонсировали столько новых продуктов, что немудрено запутаться в магии цифр, которую обрушивают на наши бедные головы, и очень трудно понять, чего же нам ожидать, по крайней мере, с точки зрения производительности.
Я попытался оценить, каких максимальных значений производительности можно ожидать от сегодняшних ускорителей 3D-графики и какие процессоры нам для этого понадобятся.
Последовательность этапов создания трехмерных изображений.
1. Геометрическая обработка. Программа хранит местоположение объектов в мировых координатах, упрощая связи между различными объектами. Большинство вычислений происходит в процессоре.
2. Преобразование и отображение. Программа преобразует трехмерные координаты в пространстве (3D-координаты) в координаты на плоскости (2 D -координаты) и использует текстуры. Работа в основном выполняется аппаратурой.
Сколько fps мы можем ожидать?
- fillrate — скорость текстурирования трехмерной сцены, измеряемая в миллионах пикселей в сек.
- polygon throughput — скорость построения трехмерной сцены, измеряемая в миллионах полигонов в сек.
- режим 640x480x16 — 100000000/(640*480*2) = 163fps
- режим 800x600x16 — 100000000/(800*600*2) = 104fps
- режим 1024x768x16 — 100000000/(1024*768*2) = 63fps
С другой стороны, максимальная производительность может лимитироваться и величиной polygon throughput этой видеокарты. Т. е. если, например, этот показатель равен 1.5 million poly/sec, а в некоторой игре в кадре в среднем присутствует 20000 полигонов, то максимально достижимыми становятся: 1500000/25000 = 75fps. Несмотря на то, что наш гипотетический ускоритель способен раскрасить (текстурировать) 160 кадров в сек., построить он успевает лишь 75 кадров.
Исходя из приведенных выше теоретических рассуждений, я составил таблицу, характеризующую максимальные возможности большинства сегодняшних 3D-ускорителей.
Теоретические пределы графических чипсетов
- 1 — из расчета 20000 полигонов в кадре
- 2 — некоторые видеокарты работают на частотах 92-95МГц и обладают большей производительностью
- 3 — в разных источниках указываются рабочие частоты 100-125МГц и, соответственно, разная скорость текстурирования
- 4 — первые экземпляры видеокарт на Riva TNT работают с частотой 90-100МГц и имеют меньшую производительность
- 5 — первые продаваемые видеокарты Hercules Terminator Beast работали на частоте 110МГц и имели меньшую производительность
Как видно, "потолок" большинства чипов определяется fillrate, но, в случае возрастания сложности картинки и увеличения числа полигонов, из которых она состоит, уже throughput начинает играть важную роль. Также должен заметить, что в таблице приведены пиковые значения throughput (именно их фирмы-производители так любят указывать в рекламных материалах), а в реальных игровых ситуациях эти цифры существенно ниже. Так, среднее реальное значение для Riva128 составляет 1.5 млн. полигонов/сек., для Rendition V2200 — 550 тыс. полигонов/сек.
В случае, когда достаточно мощности и CPU и генератора треугольников видеокарты, все зависит от fillrate и с увеличением разрешения частота кадров будет постоянно понижаться, вот так:
Таким образом, достижение "потолка" видеокартой можно определить и по тому, каким образом снижается частота кадров при увеличении разрешения.
Также видно, что переход от 640х480 к 1600х1200 вызовет более, чем шестикратное снижение частоты кадров, но пока для большинства это имеет чисто абстрактный интерес.
Описание этапов создания трехмерных изображений.
• Вычисление координат вершин. Процессор вычисляет позицию каждой вершины для каждого объекта в мировой системе координат.
• Отсечение краев. Изображаемые объекты могут не вписываться в пределы видимой области. Выступающие части должны быть удалены, поэтому процессор отсекает края объекта по границам рисуемой области - по одному многоугольнику за один раз.
• Отбрасывание скрытых поверхностей. Изображать невидимые поверхности излишне. Процессор должен распознавать видимые поверхности и отбрасывать невидимые.
• Вычисление координат проекций. Дисплей работает всего лишь как двумерное устройство, наподобие куска стекла, через которое вы смотрите на трехмерную сцену. Чтобы промоделировать это в компьютере, нам нужно пересчитать координаты проекций вершин каждого многоугольника из системы координат в пространстве в систему координат на плоскости (поверхности экрана).
• Закрашивание поверхностей. Как только мы получаем набор двумерных многоугольников, мы можем красить поверхность каждого из них теневой картой текстуры.
В современных видеоадаптерах, в которых графический процессор может выполнять функции ускорения трехмерной графики, встраиваются специальные электронные схемы, которые выполняют растеризацию гораздо быстрее, чем программное обеспечение.
Большинство современных наборов микросхем 3 D -акселераторов обеспечивают выполнение следующих функций растеризации:
• Растровое преобразование. Определение того, какие пиксели экрана покрываются каждым из примитивов.
• Обработка полутонов. Цветовое наполнение пикселей с плавными цветовыми переходами между объектами.
• Образование текстуры. Наложение на примитивы двухмерных изображений и поверхностей.
• Определение видимости поверхностей. Определение пикселей, покрываемых ближайшими к зрителю объектами.
• Анимация. Быстрое и четкое переключение между последовательными кадрами движущегося изображения.
В наиболее совершенных 3 D -акселераторах могут быть использованы геометрические процессоры, которые ускоряют всю стадию геометрической обработки, в том числе трансформацию (если 3 D -акселератор поддерживает операции с матрицами) и освещение.
Создание трехмерных изображений требует большой работы. Простые акселераторы должны только рисовать многоугольники и планировать текстуры. Более сложные акселераторы могут частично выполнять функции предшествующих этапов, например, позволяя блоку вычисления вершин передавать на следующий этап координаты в виде десятичных чисел, что уменьшает загрузку процессора.
Последовательность этапов создания трехмерных изображений
Геометрическая обработка. Программа хранит местоположение объектов в мировых координатах, упрощая связи между различными объектами. Большинство вычислений происходит в процессоре.
Преобразование и отображение. Программа преобразует трехмерные координаты в пространстве (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 видеоадаптера пользователем с помощью специальной программы из комплекта видеоадаптера.
Давно стали привычными термины 3D-графика, 3D-акселератор, но терминология, используемая при описании технических характеристик оборудования современных видеосистем, у многих специалистов вызывает затруднения, так как не все знакомы с принципами построения трехмерных высококачественных цветных изображений на плоском экране современного монитора. В данной статье рассматриваются особенности 3D-акселераторов и современные технологии трехмерной графики.
Удачность реализации AGP в 3D-аксскелераторах.
На сегодняшний день еще очень мало приложений, которые бы реально использовали шину AGP, но, очевидно, что с каждым месяцем их число будет нарастать. 2 — 4 МБ текстурной памяти, имеющихся "на борту" самых популярных на сегодня ускорителей семейства Voodoo, явно не хватает для создания действительно реалистичной картинки. В конце концов, хочется увидеть в играх настоящую траву, а не набор размазанных по плоскости желто-зеленых точек! И тут уже без AGP не обойтись. К сожалению, степень реализации функций AGP сильно колеблется от чипсета к чипсету. Для иллюстрации приведу еще одну таблицу, показывающую скорость Quake II на тесте mon2.dm2. Этот тест был специально разработан S3 для показа возможностей Savage3D по текстурной компрессии, и использует очень большой объем текстур — до 30МБ. Результаты получились любопытные.
CPU Pentium II 400МГц Quake2 mon2.dm2
Чипсет | Quake II mon.dm2, fps | ||
---|---|---|---|
640x480 | 800x600 | 1024x768 | |
3Dfx Voodoo 2 12MB | 27 | 25 | - |
3Dfx Voodoo 2 12MB SLI | 28 | 27 | 26 |
3Dfx Banshee 16MB | 20 | 18 | 16 |
S3 Savage3D 8MB | 65 | 58 | 43 |
Matrox G200 16MB | 49 | 35 | 23 |
nVidia RIVA TNT 16MB | 74 | 64 | 46 |
nVidia RIVA TNT вышла победителем, несмотря на сжатие текстур и домашнее приготовление теста специально для S3! Правда, к чести Savage надо сказать, что на менее мощных процессорах (266МГц) именно он был в лидерах. В любом случае, реализация AGP фирмой nVidia заслуживает самых лестных слов. Тоже самое можно сказать и о Matrox G200. А вот 3Dfx Banshee является AGP-видеокартой лишь по своему названию, и ее скорость почти не отличается от чисто PCI-вариантов Voodoo2, т. е. она даже ниже ввиду отсутствия мультитектурирования. И это может привести к серьезным разочарованиям в будущем году.
А нужны ли нам 400fps?
В общем-то, не нужны. В подавляющем большинстве игр достаточно 30-60fps для полной играбельности. И именно их мы получим, когда будем играть в 1280x1024 или 1600x1200 при 32bit цвете, но будет это не раньше, чем через год, при сохранении сегодняшнего темпа в микропроцессорной индустрии. Главный же факт состоит в том, что новейшие 3D-акселераторы обладают прекрасным запасом мощности, с любым из них можно встречать 2000 год. Но тут уже вступают силу чисто рыночные факторы. В следующем году опять будет "быстрее, выше, сильнее". Уже объявленный Glaze 3D должен вдвое превосходить RivaTNT. Кроме того, как показывает опыт, примерно через 2-3 года фирмы-производители утрачивают интерес к своим детищам и прекращают выпуск новых драйверов для них. Тем, кто не имеет тугого кошелька, выбирать видеокарту сегодня следует прежде всего из соображений стоимости и наличия программной поддержки для ваших любимых приложений, ситуация же с производительностью в 3D сегодня уже почти такая же, как и с 2D — она хорошая или очень хорошая для всех новых чипсетов.
Так обстоит дело сегодня, так будет через пару месяцев, но вот в перспективе на лето следующего года уже есть некоторые подводные камни. Поэтому следует сказать и о том, какие факторы еще нужно принимать во внимание, глядя на приведенную выше таблицу "Частота CPU, требуемая для достижения максимальной производительности 3D-аксселератора"
Рейтинг производительности 3D чипсетов.
Чтобы обобщить все вышесказанное: и таблицу "Частота CPU, требуемая для достижения максимальной производительности 3D-аксселератора (прогноз)", и последующие замечания, — я составил рейтинг, оценивающий чипсеты по 4 категориям с точки зрения производительности.
Чистая производительность (fillrate & throughput) — максимум того, что может этот чип в теории. Это реально достижимо лишь при хорошей оптимизации программы именно под этот чипсет.
Реализация AGP — это просто разъем или он работает?
Производительность: "Игры-98" — скорость на играх сегодняшнего дня. Относительно маленькие текстуры, умеренное использование мультитекстурирования, широкая оптимизация под Glide.
Производительность: "Игры-99" — скорость на играх следующего года. Размер текстур растет, использование мультитекстурирования и сжатия текстур увеличивается, доля API Glide снижается в пользу Direct3D и OpenGL.
Таблица 3:
Карта | Final Reality Demo | |||
2D Processing | 3D Processing | Bus | Overall | |
A-Trend Helios 3D | 2,19 | 2,89 | 1,68 | 2,5 |
Diamond Viper 330 | 2,17 | 3,06 | 1,15 | 2,51 |
Matrox Millenium II | 2,18 | 1,53 | 2,31 | 1,84 |
Matrox Mystique | 2,18 | 1,57 | 2,41 | 1,88 |
ATIMach 3D Xpression | 2,2 | 1,53 | 3,44 | 2,02 |
ATIMach Xpert@Work | 2,18 | 2,55 | 1,92 | 2,35 |
Software emulation | 2,17 | 0,37 | 1,96 | 1,15 |
По полученным данным можно сделать вывод, что достигнут некоторый равновесный уровень производительности 2D графики. При работе же с 3D графикой есть свои лидеры и свои проигравшие. Также можно заметить, что центральный процессор абсолютно не справляется с задачей обработки 3D.
Для тестирования производительности при работе с OpenGL использовались игры Quake II и GLQuake. Результатом тестирования является скорость вывода изображения на экран (число кадров в секунду). Из всех протестированных видеокарт аппаратная поддержка OpenGL есть только у 3D акселератора Helios3D и Diamond Viper 330. Для сравнения, все тесты были дополнительно выполнены без использования аппаратной 3D акселерации.
Изображения трехмерных объектов на экране монитора
Системы виртуальной реальности и трехмерной визуализации переносят зрителя в вымышленный мир, позволяющий перемещаться в очень высоко детализированной обстановке. Такие миры реализуются посредством каркасных структур, например, стен, полов и потолков и др., на которые наносятся текстуры, представляющие собой цветные шаблоны.
На плоском экране монитора высококачественные изображения трехмерных объектов могут состоять из огромного количества элементов. В программах создания трехмерной графики используется технология хранения в памяти и обработки не самих изображений, а набора абстрактных графических элементов, составляющих эти изображения. До недавнего времени для преобразования этих абстрактных элементов в "живые" образы, помимо программ создания трехмерной графики, требовались специальные приложения. Они сильно загружали процессор, память, системный интерфейс , и, как следствие, замедлялась работа всех остальных приложений. Однако новое поколение микросхем графических акселераторов, установленных на большинстве современных видеоадаптеров, успешно решает эту проблему, беря на себя всю работу по расшифровке и формированию на экране изображений трехмерных объектов. Процессор теперь менее загружен, и общая производительность системы повысилась.
Главной функцией программ создания трехмерной графики является преобразование графических абстрактных объектов в изображения на экране монитора компьютера. Обычно абстрактные объекты включают три составляющих:
Вершины. Задают местоположение объекта в трехмерном пространстве; само их положение задается координатами X, Y и Z.
Примитивы. Это простые геометрические объекты, с помощью которых конструируются более сложные объекты. Их положение задается расположением определяющих точек (обычно вершин). Для конструирования изображений трехмерных объектов при построении примитивов учитывается также эффект перспективы.
Текстуры. Это двухмерные изображения, или поверхности, налагаемые на примитивы. Точки текстуры называются текселами.
Эти абстрактные математические описания должны быть визуализированы, т.е. преобразованы в видимую форму. Процедура визуализации основывается на жестко стандартизированных функциях, предназначенных для составления выводимого на экран целостного изображения из отдельных абстракций. Ниже представлены две стандартные функции:
геометризация – это определение размеров, ориентации и расположения примитивов в пространстве и расчет влияния источников света.
растеризация - преобразование примитивов в пиксели на экране с нанесением нужных затенений и текстур.
Технологии трехмерной графики
Практически во всех ускорителях трехмерной графики применяются описанные ниже специфические технологии для создания высококачественных, близких к реальным изображений.
Мипмэппинг
В некоторых приложениях, используется другой процесс, называемый отображением МIР(MIP- мипмэппинг – текстура нарисованная с несколькими уровнями детализации), при котором применяются различные версии одной и той же текстуры, содержащие разное количество деталей в зависимости от расстояния до объекта в трехмерном пространстве. При отображении удаляющихся объектов уменьшается насыщенность, яркость цветов текстуры, степень ее детализации и увеличивается скорость ее обработки.
Затуманивание
Затуманивание – это имитация газа или тумана в играх.
Затенение Гуро
Затенение Гуро - интерполяция цветов для сглаживания неровностей окружностей и сфер.
Альфа-смешивание
Альфа-смешивание (alfa-blending – техника создания эффекта полупрозрачности) – это одна из первых технологий трехмерной графики, используемая для создания реалистичных объектов, например "прозрачного" дыма, воды и стекла. Многие другие функции, в которых нужно объединять пикселы, такие как прозрачные текстуры, мультитекстурирование, антиалиасинг, также используют альфа-смешение.
Антиалиасинг
Антиалиасинг (аntialiasing) – метод борьбы с лестничным эффектом за счет сглаживания краев линий, полигонов и точек. Антиалиасинг делится на полный и краевой. Использование краевого антиалиасинга подразумевает, что игровые программы написаны соответствующим образом, и имеют возможность включения краевого антиалиасинга. Полный антиалиасинг может быть включен в любой игровой программе независимо от того поддерживает она антиалиасинг или нет.
Наиболее часто, используются в современных ускорителях трехмерной графики технологии, использующие следующие методы и средства:
Буфер шаблонов
Буфер шаблонов – это технология, активно используемая в играх (особенно в жанре авиасимуляторов) при моделировании ландшафта, самолетов и других объектов вне стеклянной кабины летчика.
Z-буферизация
Z-буферизация - изначально эта технология применялась в системах автоматизированного проектирования. В двумерном мире объекты не могут располагаться впереди или позади друг друга, поэтому нет проблем с перекрытием. Но в трехмерном мире один объект может находиться впереди другого. Обычно световые лучи не проникают через непрозрачные объекты, поэтому мы видим все, что находится впереди, и не видим того, что позади.
Когда два объекта перекрываются, нужно выяснить, какой из них находится впереди, чтобы знать, какие пиксели объекта нужно показать на дисплее. Область, в которой пересекаются две фигуры, можно описать, указав для каждого пиксела фигур величину расстояния от него до условного заднего плана. Если дополнить обычную видеопамять картой этих расстояний для каждого пикселя, то будет всегда известно, нужно ли закрашивать конкретный пиксель: если значение расстояния (или значение Z) у пикселя меньше, значит, он позади и его не нужно закрашивать.
Эту идею можно реализовать аппаратно. Решение, состоит в создании параллельно с памятью дисплея другого массива памяти, называемого Z-буфером. Каждый раз при записи пикселя вычисляется его значение Z. При этом записываются только пиксели с большими значениями Z и обновляются расстояния в Z-буфере. Все остальные пикселы игнорируются. Таким образом, в каждой ячейке Z-буфера хранится расстояние по оси Z (вглубь экрана) для рисуемого пиксела, поэтому легко проверить, затенен ли новый записываемый пиксель или нет. К сожалению, Z-буфер требует дополнительной памяти, и, чем большая точность нужна для значений Z, тем больше памяти нужно для запоминания значений Z. Если используется разрешающая способность 640х400 и значения Z в виде 16-разрядных (двухбайтовых) чисел, то нужно иметь 0,5 мегабайта памяти только для Z-буфера. С помощью Z-буфера можно легко решить, какие объекты расположены на переднем плане, но при этом понадобится вдвое больший объем видеопамяти. Почти все современные 3D-ускорители имеют 24-х или 32-битную
Z-буферизацию, что в значительной мере повышает разрешающую способность и, как следствие, качество рендеринга.
Есть и другие решения проблемы со скрытыми поверхностями, но все они решаются путем компромисса между использованием памяти дисплея и дополнительной нагрузкой на процессор. Главный метод, применяемый для peшения проблем, заключается в том, чтобы упорядочить (отсортировать) вершины многоугольников по их координатам Z. Тогда сначала закрашиваются наиболее отдаленные объекты на экране, а наиболее близкие объекты накладываются на дальние. При этом возникают проблемы с поверхностями, наклонными к оси Z, так как расстояние пикселя от заднего плана может изменяться по мере его удаления от вершины. Решение такой проблемы требует еще более сложных вычислений.
Можно сократить работу процессора, проявив небольшую хитрость при упорядочении объектов по их координатам Z. Если какая-то поверхность полностью скрыта другими или повёрнута от наблюдателя, то ее совсем не нужно рисовать первой. А если мы исключили операцию рисования, то многоугольник не надо заполнять картой текстуры, в связи с этим уменьшается количество работы для процессора.
Улучшенные технологии наложения текстур
Для визуализации трехмерных изображений с высокой степенью детализации необходимо применять специальные методы наложения текстур, которые устраняют нежелательные эффекты и делают сцены более реалистичными.
Отображение текстуры более сложно, чем простое копирование растра шаблона на экран, потому что требует работы с эффектами перспективы в каркасном представлении. Прямоугольный растр шаблона должен быть преобразован для получения изображения в перспективе. Это видно, скажем, на примере стен, неперпендикулярных линии, вдоль которой смотрит зритель. Такие поверхности удаляются вдоль линий перспективы к точке схода, причем текстура уменьшается по мере того, как ваш взгляд перемещается вдаль. Процесс трехмерной визуализации отображает стены и другие поверхности с учетом перспективы и накладывает текстуры для создания реалистического изображения.
Программное обеспечение для усиления эффекта трехмерности, изменяет вид текстур в зависимости от положения примитива (т.е. расстояния до примитива и его наклона). Этот процесс называется перспективной коррекцией.
В реальном мире источник света обычно точечный, поэтому освещенность поверхности неравномерна, она увеличивается в направлении источника. Поверхности также имеют различную отражающую способность, что сказывается на используемых текстурах. Блестящая металлическая искривленная поверхность отразит точечный источник света в точке (точка, называется зеркальным отражением точки, в которой находится точечный источник света), местоположение которой определяется законами геометрической оптики. Математический аппарат для выполнения этой работы хорошо известен, но процессоры и графические видеоплаты должны иметь для выполнения этих функций достаточную производительность. Для экранных форматов с более высокой разрешающей способностью вычислений требуется еще больше (для разрешающей способности 640х400 требуется вчетверо больше вычислений, чем для 320х200). Подобные форматы не могли поддерживаться устаревшими моделями процессоров, поэтому они появились только с приходом быстродействующих процессоров типа Pentium. Для обновления экрана при быстром перемещении каркасов и карт текстуры по экрану при высокой частоте кадров требуется не только большая скорость вычислений, но и высокая пропускная способность канала видеоплаты. Вот почему при рисовании трехмерных объектов необходима шина PCI или AGP (главное преимущество интерфейса AGP перед PCI в использовании режима DIME – Direct Memori Execution или, как говорят, AGP-текстурировании) на материнской плате и соответствующая видеоплата с хорошей производительностью.
Рельефное текстурирование или наложение рельефа
Рельефное текстурирование или наложение рельефа (bump-mapping – методика наложения рельефных поверхностей). Эта технология предназначена для воспроизведения специальных световых эффектов, таких как водная рябь, камни и другие сложные поверхности. Это придает большую реалистичность игровым сценам и ландшафтам. Для того, чтобы подчеркнуть бугорки и впадины с помощью светотени, надо затемнять или осветлять стенки этих бугорков и впадин. Другой метод заключается в симуляции рельефности глянцевой или зеркальной поверхности отражением окружающей среды.
Билинейная фильтрация
Билинейная фильтрация(bi-linear filtering - метод текстурирования, при котором выполняется интерполяция текстуры). Улучшение качества изображения небольших текстур, помещенных на большие многоугольники (достигается так называемая “размазанность текстур”). Эта технология устраняет эффект "блочности" текстур.
Трилинейная фильтрация
Трилинейная фильтрация(frii-linear filtering – более сложный метод текстурирования, при котором кроме интерполяции текстуры выполняется интерполяция между уровнями детализации текстуры). Комбинация билинейной фильтрации и так называемого наложения mip mapping (текстуры, имеющие разную степень детализации в зависимости от расстояния до точки наблюдения). Использование трилинейной фильтрации значительно замедляет работу 3D-ускорителей, но формирует более качественное изображение, чем обычная билинейная с мипмэппингом.
Важной операцией в визуализации трехмерных объектов является рисование многоугольника, так обычно представляются движущиеся объекты. Текстуры на многоугольниках придают объекту более реалистичный вид, сохраняя преимущества быстрого рисования трехмерных изображений. Рисование многоугольника напоминает процесс наложения текстурных карт на каркасные структуры, хотя и требует большей производительности. Сетка, покрывающая поверхность в трехмерном пространстве, в большинстве случаев составлена из треугольников, что снижает сложность программного (или аппаратного) обеспечения для вывода объекта на экран. Изменяя размер треугольников, можно управлять степенью детализации объектов.
Поскольку в трехмерной графике наиболее важными операциями являются отображение (нанесение) текстуры и рисование многоугольников, то производительность программ и аппаратуры для трехмерной графики измеряется, как правило, количеством пикселей текстуры и закрашенных многоугольников в секунду. Наиболее хорошо настроенным программным обеспечением трехмерной графики обладают некоторые
ЗD-игры, как правило, они показывают отличные результаты в тестах на трехмерную визуализацию.
Анизотропная фильтрация
Анизотропная фильтрация, используемая в некоторых видеоадаптерах, позволяет сделать сцену еще более реалистичной. Однако эта технология пока не получила должного распространения из-за высоких требований к аппаратной части видеоадаптера.
Однопроходная или мультипроходная визуализация
В различных видеоадаптерах применяются разные технологии визуализации -однопроходная или мультипроходная визуализация.. В настоящее время практически во всех видеоадаптерах фильтрация и основная визуализация выполняются за один проход, что позволяет увеличить частоту кадров.
Аппаратное или программное ускорение
Аппаратное или программное ускорение используется при аппаратно выполняемой визуализации. Позволяет достичь гораздо лучшего качества изображений и скорости анимации, чем при программной обработке. Используя специальные драйверы, новые видеоадаптеры выполняют все нужные вычисления с очень высокой скоростью. Для работы с приложениями трехмерной графики или современных игр это технологическое решение просто неоценимо.
Программная оптимизация
Для применения всех свойств видеоадаптеров необходимо использовать специальное программное обеспечение, которое может активизировать эти функции. Несмотря на то, что в настоящее время существует несколько программных стандартов трехмерной графики (OpenGL, Glide и Direct 3D), производители видеоадаптеров создают видеодрайверы, которые поддерживают указанные стандарты.
Дизеринг
Дизеринг(dithering) – метод получения изображений в Hi-Color-режимах.
Рендеринг
Рендеринг (конвейер рендеринга). Рендеринг выполняется по многоступенчатому процессу, называемому конвейером рендеринга, который состоит из трех этапов обработки: тесселяции, геометрической обработки, растеризации. При аппаратном рендеринге 3D-акселератор берет на себя наиболее вычислительно-емкие функции по растеризации треугольников.
В последнее время все большее и большее количество игр требуют наличия аппаратных ускорителей 3D графики. В играх создаются настолько сложные виртуальные миры, что центральный процессор просто не справляется с задачей их построения. Поэтому, в настоящее время, большинство видеоадаптеров имеют встроенные 3D акселераторы, которые специально предназначены для обработки трехмерной графики. Эти акселераторы различаются как по скорости работы, так и по качеству создаваемого изображения и реализованных в них функциях. С терминологией 3D графики можно ознакомиться статье Терминология 3D графики
Разница в качестве изображения, созданного акселератором и рассчитанного процессором настолько велика, что поиграв в игру на компьютере с видеоадаптером, использующим аппаратную акселерацию трехмерной графики, без нее уже играть просто не хочется :-).
В тестовой лаборатории компании "Свега+" были проэкзаминованы несколько видеоадаптеров с поддержкой 3D. Среди протестированных акселераторов 5 являются полноценными видеокартами, а Helios 3D — это чисто 3D акселератор, который включается последовательно с видеокартой (passthrough). Он использовался в связке с Matrox Mystique 220.
- MB: ASUS TX97 i430TX
- RAM: 64Mb SDRAM (2xDIMM)
- CPU: Intel P225MMX (3x75MHz)
- HDD: Quantum Fireball ST 4.3Gb
- OS: Win’95 OSR2 PE
В таблице 1 представлены технические характеристики тестируемых видеокарт:
Карта | Chip | Memory | RAMDAC | OpenGL | Direct3D |
A-Trend Helios Voodoo Edition 3D | 3DFX Voodoo | 4Mb EDO | есть | Есть | |
Diamond Viper 330 | Nvidia Riva128 | 4Mb SGRAM | 230MHz | есть | Есть |
Matrox Millenium II | MGA 2164WA-B | 4Mb WRAM | 250MHz | нет | Есть |
Matrox Mystique | MGA 1164SG-A | 4Mb SGRAM | 220MHz | нет | Есть |
ATIMach 3D Xpression | ATI 3Drage II | 4Mb SGRAM | 170MHz | нет | Есть |
ATIMach Xpert@Work | ATI 3Drage PRO | 4Mb SGRAM | 220MHz | нет | Есть |
Для тестирования производительности видеокарт при работе с Direct3D использовались следующие тесты:
Ziff-Davis Labs: 3D WinBench 98
При выполнении WinMark тестов определяется скорость вывода изображения на экран (число кадров в секунду — fps). Показатель WinMark98 является суммой всех этих значений. Если тест не может пройти из-за того, что необходимая функция не поддерживается акселератором, то к результату добавляется 0. Чем больше это значение, тем лучше. Полученные результаты представлены в таблице 2 и на рисунках 1 и 2.
VNU Labs: Final Reality Demo
- 25 pixel test — в этом тесте подсчитывается количество многоугольников, отображаемых на экран за секунду. Размер каждого многоугольника — 25 пикселей.
- Robots — этот тест показывает производительность акселератора при работе с реальным приложением (некоторой игрой). Результатом является количество отображаемых за секунду кадров. На сегодняшний день приемлемым считается число кадров большее 20.
- Fill Rate — этот тест показывает скорость вывода точек в памяти 3D акселератора. Измеряется в миллионах точек в секунду.
- City Scene — здесь измеряется скорость обработки сложной трехмерной сцены. Сцена включает в себя большое количество текстур, атмосферных эффектов, прозрачности и теней. В ней задействовано до 10000 многоугольников одновременно. Результатом теста является число отображаемых кадров в секунду.
Результаты тестирования представлены в таблице 3 и на рисунке 3.
Карта | 3D WinBench 98 | |
3D Processing | 3D WinMark | |
A-Trend Helios 3D | 8,03 | 268 |
Diamond Viper 330 | 7,11 | 310 |
Matrox Millenium II | 6,46 | 65,7 |
Matrox Mystique | 6,21 | 61,9 |
ATIMach 3D Xpression | 5,31 | 41,4 |
ATIMach Xpert@Work | 6,16 | 208 |
Сколько fps мы можем ожидать?
- fillrate — скорость текстурирования трехмерной сцены, измеряемая в миллионах пикселей в сек.
- polygon throughput — скорость построения трехмерной сцены, измеряемая в миллионах полигонов в сек.
- режим 640x480x16 — 100000000/(640*480*2) = 163fps
- режим 800x600x16 — 100000000/(800*600*2) = 104fps
- режим 1024x768x16 — 100000000/(1024*768*2) = 63fps
С другой стороны, максимальная производительность может лимитироваться и величиной polygon throughput этой видеокарты. Т. е. если, например, этот показатель равен 1.5 million poly/sec, а в некоторой игре в кадре в среднем присутствует 20000 полигонов, то максимально достижимыми становятся: 1500000/25000 = 75fps. Несмотря на то, что наш гипотетический ускоритель способен раскрасить (текстурировать) 160 кадров в сек., построить он успевает лишь 75 кадров.
Исходя из приведенных выше теоретических рассуждений, я составил таблицу, характеризующую максимальные возможности большинства сегодняшних 3D-ускорителей.
Теоретические пределы графических чипсетов
- 1 — из расчета 20000 полигонов в кадре
- 2 — некоторые видеокарты работают на частотах 92-95МГц и обладают большей производительностью
- 3 — в разных источниках указываются рабочие частоты 100-125МГц и, соответственно, разная скорость текстурирования
- 4 — первые экземпляры видеокарт на Riva TNT работают с частотой 90-100МГц и имеют меньшую производительность
- 5 — первые продаваемые видеокарты Hercules Terminator Beast работали на частоте 110МГц и имели меньшую производительность
Как видно, "потолок" большинства чипов определяется fillrate, но, в случае возрастания сложности картинки и увеличения числа полигонов, из которых она состоит, уже throughput начинает играть важную роль. Также должен заметить, что в таблице приведены пиковые значения throughput (именно их фирмы-производители так любят указывать в рекламных материалах), а в реальных игровых ситуациях эти цифры существенно ниже. Так, среднее реальное значение для Riva128 составляет 1.5 млн. полигонов/сек., для Rendition V2200 — 550 тыс. полигонов/сек.
В случае, когда достаточно мощности и CPU и генератора треугольников видеокарты, все зависит от fillrate и с увеличением разрешения частота кадров будет постоянно понижаться, вот так:
Таким образом, достижение "потолка" видеокартой можно определить и по тому, каким образом снижается частота кадров при увеличении разрешения.
Также видно, что переход от 640х480 к 1600х1200 вызовет более, чем шестикратное снижение частоты кадров, но пока для большинства это имеет чисто абстрактный интерес.
Влияние мультитекстурирования на производительность.
Некоторые из представленных чипсетов (nVidia RIVA TNT, 3Dfx Voodoo 2) поддерживают мультитекстурирование, т. е. способны налагать несколько текстур за один проход. Это повышает их скорость на играх, использующих эту особенность чипсета (Quake II, Unreal, SiN). Это хорошо видно при сравнении показателей 3Dfx Voodoo 2 и Banshee : в Forsaken'е, не использующем мультитекстурирование, Banshee вырывается вперед за счет большей частоты чипа, но в Quake II ситуация обратная — здесь Voodoo 2 показывает лучший результат. В будущих играх функция мультитекстурирования, наверное, получит еще более широкое применение.
Какие процессоры нам для этого понадобятся?
Чтобы реализовать максимальные значения fps в приведенной выше таблице мощности, сегодняшних процессоров просто недостаточно. Кроме того, картина существенно изменяется от того, в каком именно приложении (игре!) мы хотим достичь этого максимума.
К счастью, на сегодня есть уже, по крайней мере, одна игра - Forsaken, которая близка к максимально возможным значениям на сегодняшних CPU, по крайней мере, с некоторыми 3D-чипсетами. Я проанализировал результаты, показываемые Forsaken, и попробовал экстраполировать их. Также я сравнивал результаты, показываемые в аналогичных условиях Quake II (который, как мне представляется, далек от своего максимума на любом современном чипсете), чтобы попытаться спрогнозировать, какой процессор понадобиться для достижения "потолка" этой игры.
Должен сразу сказать, что, ввиду полной невозможности (финансовой :-) ) провести развернутое тестирование разных 3D-ускорителей на широком спектре CPU собственными силами, я пользовался результатами, публикуемыми в Сети. При этом я старался охватить несколько источников и выбрать наиболее типичные из них. Результаты можно увидеть ниже.
Чипсет | Forsaken, fps | Quake II massive1.dm2, fps | ||||
---|---|---|---|---|---|---|
640x480 | 800x600 | 1024x768 | 640x480 | 800x600 | 1024x768 | |
3Dfx Voodoo 2 12MB | 155 | 98 | - | 65 | 49 | - |
3Dfx Voodoo 2 12MB SLI | 246 | 192 | 118 | 69 | 68 | 58 |
3Dfx Banshee 16MB | 198 | 139 | 86 | 55 | 40 | 26 |
S3 Savage3D 8MB | 198 | 146 | 94 | 60 | 47 | 33 |
Matrox G200 16MB | 146 | 88 | 62 | 34 | 26 | 18 |
nVidia RIVA TNT 16MB | 207 | 144 | 87 | 60 | 54 | 39 |
Как видно, в Forsaken лишь Voodoo 2 достигает предела своих возможностей. Конфигурация Voodoo 2 SLI еще имеет некоторый запас, особенно в малых разрешениях, но в разрешении 1024x768 процессор подает данные ровно в том темпе, в каком графический чипсет успевает обрабатывать. Matrox близок к своему максимуму, но, наверное, еще будет масштабироваться до 450-500МГц. Banshee и Savage3D демонстрируют в высоких разрешениях даже немного лучшие результаты, чем можно было бы ожидать: наверное, я чересчур осторожничал, и цифры в таблице "Теоретические пределы графических чипсетов" можно увеличить на 10-15%. Quake II еще очень далек от результатов Forsaken, и, очевидно, ему требуются куда более мощные процессоры, чем Pentium II — 400, чтобы раскрыть весь потенциал сегодняшнего графического "железа". Таким образом, если Forsaken требуется около 4 тактов на обработку одного пикселя, то другим (Quake II, Unreal, SiN) — порядка 8 тактов, что является расплатой за более совершенный графический engine (или может быть за менее удачное программирование :-)).
Нужно также учитывать то, что менее мощные процессоры вынуждены тратить больше времени на неграфические операции, такие как обработка звука, физика игры, интеллект противника, и, значит, на более быстрых CPU на один пиксель в одной и той же игре уже может хватить и 3 такта там, где раньше требовалось 4-е. Проиллюстрировать это можно так:
Интересным является и тот факт, что на сегодня лишь Voodoo 2 достигает максимальных значений, а другие чипсеты с близкими характеристиками (Matrox, Riva128) демонстрируют куда меньшие результаты на тех же процессорах. Объяснений этому может быть два. Во-первых, архитектура Voodoo более оптимальна с точки зрения интерфейса между процессором и графическим чипсетом и, следовательно, задержки с поступлением данных в чипсет минимальны. Во-вторых, большинство современных игр оптимизировано именно под Voodoo, и при работе с другим ускорителем "накладные расходы" на обслуживание графики куда больше. А утешительным для всех владельцев Riva128 (в том числе и меня) является то, что их видеокарты будут работать еще быстрее c Pentium II мегагерц эдак на 800.
Итак, хочу представить вашему вниманию еще одну таблицу, в которой я рассчитал частоту CPU, которая понадобится для достижения пределов 3D-ускорителей. Минимальное значение применимо для игр с относительно простым движком (a-la Forsaken), а максимальное — для сложных (Unreal, Sin). Цифры брались из расчета 3-6 тактов CPU на один пиксель fillrate для чипсетов 3DFX и 5-8 тактов на пиксель для остальных; менее мощным CPU выделялось больше тактов, чем более мощным.
Частота CPU, требуемая для достижения максимальной производительности 3D-акселератора (прогноз).
- 1 — я имел довольно большой собственный опыт "общения" с PERMEDIA2, и могу сказать, что масштабируется он еще медленнее, чем Riva128, поэтому я выделил ему так много тактов.
Приведенные цифры могут сильно колебаться в зависимости от самих программ — очевидно, сложность компьютерных игр будет возрастать, еще больше ресурсов процессора понадобиться для расчета физических законов виртуального мира, графике опять достанется меньше ресурсов, а, значит, Unreal 2 (когда он будет) может понадобиться вдвое более мощный процессор, чтобы достичь тех же скоростей, что первому Unreal на том же самом ускорителе.
Вместо заключения
Имея не очень богатый практический материал, я вынужден был делать субъективные оценки во многих рассматриваемых вопросах. Я мог ошибиться как в большую, так и в меньшую сторону. Но, надеюсь, мне удалось показать, какой сложной является задача оценки производительности 3D-ускорителей с учетом перспективы, и от сколь многих факторов она зависит.
На плоском экране монитора высококачественные изображения трехмерных объектов могут состоять из огромного количества элементов. В программах создания трехмерной графики используется технология хранения в памяти и обработки не самих изображений, а набора абстрактных графических элементов, составляющих эти изображения. До недавнего времени для преобразования этих абстрактных элементов в "живые" образы, помимо программ создания трехмерной графики, требовались специальные приложения. Они сильно загружали процессор, память, системный интерфейс , и, как следствие, замедлялась работа всех остальных приложений. Однако новое поколение микросхем графических акселераторов, установленных на большинстве современных видеоадаптеров, успешно решает эту проблему, беря на себя всю работу по расшифровке и формированию на экране изображений трехмерных объектов. Процессор теперь менее загружен, и общая производительность системы повысилась.
Акселераторы трехмерной графики постоянно совершенствовались, догоняя запросы современных мультимедийных систем и профессиональных графических станций. Кроме того, игровые программы рядовых пользователей и графические приложения массового использования, требовали разработки высокопроизводительных и доступных по цене 3 D -акселераторов. Создание трехмерных изображений требует большой работы. Простые акселераторы должны только рисовать многоугольники и планировать текстуры. Более сложные акселераторы могут частично выполнять функции предшествующих этапов, например, позволяя блоку вычисления вершин передавать на следующий этап координаты в виде десятичных чисел, что уменьшает загрузку процессора.
Функции 3D-акселератора
Создание трехмерных изображений требует большой работы. Простые акселераторы должны только рисовать многоугольники и планировать текстуры. Более сложные акселераторы могут частично выполнять функции предшествующих этапов, например, позволяя блоку вычисления вершин передавать на следующий этап координаты в виде десятичных чисел, что уменьшает загрузку процессора.
Последовательность этапов создания трехмерных изображений
Геометрическая обработка. Программа хранит местоположение объектов в мировых координатах, упрощая связи между различными объектами. Большинство вычислений происходит в процессоре.
Преобразование и отображение. Программа преобразует трехмерные координаты в пространстве (3D-координаты) в координаты на плоскости (2D-координаты) и использует текстуры. Работа в основном выполняется аппаратурой.
Описание этапов создания трехмерных изображений
Вычисление координат вершин. Процессор вычисляет позицию каждой вершины для каждого объекта в мировой системе координат.
Отсечение краев. Изображаемые объекты могут не вписываться в пределы видимой области. Выступающие части должны быть удалены, поэтому процессор отсекает края объекта по границам рисуемой области - по одному многоугольнику за один раз.
Отбрасывание скрытых поверхностей. Изображать невидимые поверхности излишне. Процессор должен распознавать видимые поверхности и отбрасывать невидимые.
Вычисление координат проекций. Дисплей работает всего лишь как двумерное устройство, наподобие куска стекла, через которое вы смотрите на трехмерную сцену. Чтобы промоделировать это в компьютере, нам нужно пересчитать координаты проекций вершин каждого многоугольника из системы координат в пространстве в систему координат на плоскости (поверхности экрана).
Закрашивание поверхностей. Как только мы получаем набор двумерных многоугольников, мы можем красить поверхность каждого из них теневой картой текстуры.
В современных видеоадаптерах, в которых графический процессор может выполнять функции ускорения трехмерной графики, встраиваются специальные электронные схемы, которые выполняют растеризацию гораздо быстрее, чем программное обеспечение.
Большинство современных наборов микросхем 3D-акселераторов обеспечивают выполнение следующих функций растеризации:
Растровое преобразование. Определение того, какие пиксели экрана покрываются каждым из примитивов.
Обработка полутонов. Цветовое наполнение пикселей с плавными цветовыми переходами между объектами.
Образование текстуры. Наложение на примитивы двухмерных изображений и поверхностей.
Определение видимости поверхностей. Определение пикселей, покрываемых ближайшими к зрителю объектами.
Анимация. Быстрое и четкое переключение между последовательными кадрами движущегося изображения.
В наиболее совершенных 3D-акселераторах могут быть использованы геометрические процессоры (например, FGX-1), которые ускоряют всю стадию геометрической обработки, в том числе трансформацию (если 3D-акселератор поддерживает операции с матрицами) и освещение.
Читайте также: