Другим способом повышения производительности видеосистемы и PC в целом стало применение видеоадаптеров с более быстрым интерфейсом, чем ISA. Первоначально для нужд видеосистемы использовалась 32-разрядная локальная шина VLB (VESA Local Bus), которая в дальнейшем была вытеснена более быстрой и совершенной шиной PCI (Peripheral Component Interconnect — Соединение периферийных устройств). В настоящее время большинство видеоадаптеров, оснащенных функциями ускорения 2D- и 3D-гpaфики, имеют интерфейс AGP. Последним достижением стал новый графический интерфейс PCI Express.
3. 2D- и 3D-акселераторы
2D-акселератор — графический ускоритель для обработки двухмерных графических данных (2D), реализует аппаратное ускорение таких функций, как прорисовка графических примитивов, перенос блоков изображения, масштабирование, работа с окнами, мышью, преобразование цветового пространства. Первоначально видеоадаптеры с аппаратным ускорением графических функций делились на две группы: видеоадаптеры с графическим ускорителем (акселератором) и видеоадаптеры с графическим сопроцессором.
Графический акселератор — устройство, выполняющее заданные логические или арифметические операции по жесткому алгоритму, который не может быть изменен.
Графический сопроцессор — более универсальное устройство и работает параллельно с центральным процессором. Основное отличие графического сопроцессора от графического акселератора в том, что сопроцессор можно запрограммировать на выполнение различных задач, поскольку он является активным устройством: имеет возможность, как и центральный процессор, обращаться к системной оперативной памяти и управлять шиной ввода/вывода.
В современных видеоадаптерах объем и сложность графических функций, выполняемых графическим сопроцессором, стали соизмеримы с объемом задач, решаемых центральным процессором ПК. В связи с этим Chipset, составляющий основу современного видеоадаптера с аппаратной поддержкой графических функций, называют графическим процессором.
3D-акселераторы предназначены для обеспечения возможности видеть на экране проекцию виртуального (не существующего реально) динамического трехмерного объекта, например, в компьютерных играх. Такой объект необходимо сконструировать, смоделировать его объемное изображение, т.е. задать математическую модель объекта (каждую точку его поверхности) в трехмерной системе координат, аналитически рассчитать всевозможные зрительные эффекты (угол падения света, тени и т.п.), а затем спроецировать трехмерный объект на плоский экран. 3D-акселератор необходим только в том случае, когда объемное изображение синтезируется компьютером, т.е. создается программно.
Совокупность приложений и задач, в рамках которых реализуется эта схема построения трехмерного изображения на экране монитора PC, называется трехмерной графикой, или 3D (3-Dimentional — трехмерный).
4. Синтез трехмерного изображения. 3D-конвейер.
Синтез 3D-изображения выполняется путем аналитического расчета различных параметров изображения для создания визуальных эффектов, обеспечивающих ощущение его объемности и реальности. В частности, в процессе синтеза 3D-изображения выполняются:
• оценка расстояния до предмета путем анализа информации о его размерах (чем меньше объект — тем он дальше);
• оценка последовательности наложения предметов один на другой (кто выше — тот ближе);
• определение глубины пространства за счет использования эффекта перспективы, т. е. визуального сближения параллельных линий, уходящих вдаль;
• анализ световых эффектов на предмете (теней, бликов и т. п.).
Для получения этих эффектов процесс синтеза трехмерного изображения объекта в виде его двухмерной проекции на экране монитора строится по модели, называемой 3D-конвейером. Выделяют следующие основные этапы 3D-конвейера.
1. Построение геометрической модели поверхности объекта путем задания трехмерных координат его опорных точек и уравнений соеди няющих их линий. Полученная геометрическая модель представляет собой так называемую каркасную модель объекта (Wireframe).
2. Разбиение поверхности полученного объекта на элементарные плоские элементы (прямоугольники или треугольники) — тесселяция (Tessela-tiori), или триангуляция. Это приводит к тому, что поверхность объекта представляет собой совокупность плоских граней — многоугольников, в частности треугольников, как показано на рис. 4.17. Поверхность объекта воспроизводится точнее при увеличении числа и уменьшении размеров многоугольников (ср. рис. 4.17, а, б).
Рис. 4.17. Тесселяция объекта с помощью различного числа треугольников: а — 420 треугольников; б — 2668 треугольников
3. Моделирование движения объекта: его перемещение, вращение и изменение размеров (формы) — трансформация (transformation) — сводится к стандартному преобразованию координат вершин отдельных граней в виде многоугольников и реализуется путем выполнения множества различных алгебраических опера ций с использованием тригонометрических функций. На рис. 4.18 показана трансформация формы объекта путем изгиба и скручивания.
4. Расчет освещенности (Lighting) и затенения (Shading) объекта производится в два этапа. Сначала выполняется расчет освещенности каждого элементарного многоугольника с учетом его удаленности от источника света и угла падения светового луча. Чтобы поверхность объекта не выглядела состоящей из множества отдельных плоских граней, как это показано на рис. 4.19, а, применяют методы затенения, т.е. дополнительно производят интерполяцию значений освещенности, позволяющую плавно изменять освещенность каждой грани и скрыть резкие переходы между ними (рис. 4.19, б).
Рис. 4.18. Трансформация формы объекта путем изгиба и скручивания
5. Проецирование синтезированного трехмерного объекта на плоскостьэкрана, т.е. первое, предварительное преобразование трехмерного объекта в совокупность двухмерных.
Рис. 4.19. Изображение объекта, рассчитанное: а — без использования механизма интерполяции; б — с использованием метода затенения
При этом в Z-буфере сохраняется совокупность данных о расстоянии каждой из вершин элементарного многоугольника, образующего грани, до плоскости проецирования. Это позволяет в дальнейшем определить, какие части объекта окажутся видимыми, а какие — нет. Наличие Z-буфера — важнейшее отличие работы с трехмерной графикой от работы с двухмерной.
6. Обработка данных о вершинах элементарных многоугольников, полученных на предыдущих этапах (Triangle Setup), заключающаяся в преобразовании формы представления координат вершин: из чисел с плавающей точкой (вещественных чисел) в целые числа, а также в сортировке вершин и других действиях.
7. Удаление скрытых поверхностей — HSR (Hidden Surface Removal), т. е. исключение из проецирования тех элементов поверхности объекта, которые оказываются невидимыми с точки наблюдения.
8. Закраска элементарных треугольников, или текстурирование, выполняется наложением текстур (Texture Mapping). Текстура (Texture) — это элемент обшивки объекта, т.е. изображение участка его поверхности, которое хранится в виде квадратной растровой картинки, состоящей из текселов (Texel — Texture Element —элемент текстуры). После наложения текстуры (рис. 4.20, а) каркасная модель как бы покрывается своеобразным покрытием —текстурой и становится похожей на реальный объект (рис. 4.20, б). В процессе текстурирования каждый многоугольник, составлявший каркасную модель, заменяется на элемент текстуры, а значение каждого пиксела двухмерного изображения вычисляется по значению соответствующего тексела текстуры.
При текстурировании производится обработка растровой графики, что приводит к необходимости применять различные приемы коррекции изображения, например применение текстур с различным разрешением — м и п м э п п и н г.
Рис. 4.20. Текстурирование объекта: а — текстура; б — каркасная модель после наложения текстуры
MIP-текстурирование, или мипмэппинг (MIP— Multum In Parvo — много в одном), применяется для устранения пикселизации при приближении к SD-объекту. MIP-текстурирование заключается в том, что в памяти акселератора хранятся несколько копий одной и той же текстуры, но с различным разрешением LOD (Level Of Detalization — уровень детализации). Каждая последующая копия текстуры содержит в четыре раза больше пикселов, чем предыдущая. Совокупность всех копий одной и той же текстуры называют MIP-каскадом, пример которого дан на рис. 4.19.
Рис. 4.21. Пример МIР-каскада
В процессе «прорисовки» ближних к наблюдателю поверхностей используются более крупные текстуры, а при прорисовке дальних — более мелкие. Применение мипмэппинга требует значительных объемов памяти акселератора. Для хранения текстуры не в локальной памяти 3D-акселератора, а в RAM PC и при необходимости быстро их подгружать используется локальная шина AGP с высокой пропускной способностью.