Видеокарта (графическая плата, видеоадаптер) (videocard, VideoBlaster) — устройство, преобразующее изображение, находящееся в памяти компьютера, в видеосигнал для монитора.
Обычно видеокарта является платой расширения и вставляется в специальный разъем (ISA, VLB, PCI, AGP, PCI-Express) для видеокарт на материнской плате. Многие материнские платы имеют встроенную видеокарту.
Современные видеокарты не ограничиваются простым выводом изображения, они имеют встроенный микропроцессор (графический процессор), который может производить дополнительную обработку данных, разгружая от этих задач центральный процессор компьютера.
Обычная видеокарта состоит из четырех основных устройств: памяти, графического процессора (видеоконтроллера), цифро-аналогового преобразователя (RAMDAC) и ПЗУ, а также интерфейсы для связи с другими устройствами (ISA, PCI, AGP, PCI-Express и др. для связи с системной шиной; аналоговый (VGA) или цифровой (DVI) разъемы для связи с монитором, возможно наличие интерфейсов для подключения к телевизору и т.п.). В качестве синонимов «видеокарты» используются термины акселератор, ускоритель, видеобластер, видеоадаптер.
Режимы работы видеокарт
Все современные видеоподсистемы могут работать в одном из двух основных видеорежимов: текстовом или графическом. В текстовом режиме экран монитора разбивается на отдельные символьные позиции, в каждой из которых одновременно может выводиться только один символ. Для преобразования кодов символов, хранимых в видеопамяти адаптера, в точечные изображения на экране служит так называемый знакогенератор, который обычно представляет собой ПЗУ, где хранятся изображения символов, «разложенные» по строкам. При получении кода символа знакогенератор формирует на своем выходе соответствующий двоичный код, который затем преобразуется в видеосигнал. Текстовый режим в современных операционных системах используется только на этапе начальной загрузки.
В графическом режиме для каждой точки изображения, называемой пикселом, отводится от одного (монохромный режим) до 32-бит (цветной). Графический режим часто называют режимом с адресацией всех точек (All Points Addresable), поскольку только в этом случае имеется доступ к каждой точке изображения. Максимальное разрешение и количество воспроизводимых цветов конкретной видеоподсистемы в первую очередь зависят от общего объема видеопамяти и количества бит, приходящихся на один элемент изображения. Существует несколько стандартов видеокарт (см. MDA, Hercules, EGA, VGA, SVGA, Видеорежимы xxxGA).
Функции 3D-акселератора
В компьютере трехмерные объекты представляются с помощью геометрических моделей, состоящих из сотен и тысяч элементарных геометрических фигур, обычно треугольников. Задаются также пространственное положение источников света, отражательные свойства материала поверхности объекта, степень его прозрачности и т. п. При этом некоторые объекты могут частично загораживать друг друга, между ними может переотражаться свет; пространство может быть не абсолютно прозрачным, а затянутым туманом или дымкой. Для большего реализма необходимо учесть и эффект перспективы. Чтобы поверхность смоделированного объекта не выглядела искусственной, на нее наносится текстура — двухмерная картинка небольшого размера, передающая цвет и фактуру поверхности. Все перечисленные трехмерные объекты с учетом примененных к ним эффектов должны в конечном итоге быть преобразованы в плоское изображение. Эту операцию, называемую рендерингом, и выполняет 3D-ускоритель.
Перечислим наиболее распространенные операции, которые 3D-ускоритель выполняет на аппаратном уровне:
Удаление невидимых поверхностей. Обычно выполняется по методу Z-буфера, который заключается в том, что проекции всех точек трехмерной модели объекта на плоскость изображения сортируются в специальной памяти (Z-буфере) по расстоянию от плоскости изображения. В качестве цвета изображения в данной точке выбирается цвет той точки в Z-буфере, которая наиболее близка к плоскости изображения, а остальные точки считаются невидимыми (если не включен эффект прозрачности), так как они загорожены от нас самой первой точкой. Эта операция выполняется подавляющим большинством 3D-ускорителей.
Закрашивание (Shading) придает треугольникам, составляющим объект, определенный цвет, зависящий от освещенности. Бывает равномерным (Flat Shading), когда каждый треугольник закрашивается равномерно, что вызывает эффект не гладкой поверхности, а многогранника; по Гуро (Gouraud Shading), когда интерполируются значения цвета вдоль каждой грани, что придает криволинейным поверхностям более гладкий вид без видимых ребер; по Фонгу (Phong Shading), когда интерполируются векторы нормали к поверхности, что позволяет добиться максимальной реалистичности, однако требует больших вычислительных затрат.
Отсечение (Clipping) определяет часть объекта, видимую на экране, и обрезает все остальное, чтобы не выполнять лишних расчетов.
Расчет освещения. Для выполнения этой процедуры часто применяют метод трассировки лучей (Ray Tracing), позволяющий учесть переотражения света между объектами и их прозрачность. Эту операцию с разным качеством умеют выполнять все 3D-ускорители.
Наложение текстур (Texture Mapping), или наложение плоского растрового изображения на трехмерный объект с целью придания его поверхности большей реалистичности. Например, в результате такого наложения деревянная поверхность будет выглядеть именно как сделанная из дерева, а не из неизвестного однородного материала. Качественные текстуры обычно требуют значительных объемов видеопамяти (хотя разработчики ПО, как правило, используют несколько наборов текстур для разных видеокарт). Для работы с текстурами применяют 3D-ускорители, которые поддерживают технологию сжатия текстур. Наиболее совершенные карты поддерживают мультитекстурирование — одновременное наложение нескольких текстур.
Фильтрация (Filtering) и сглаживание (Anti-aliasing). Под сглаживанием понимается уменьшение искажений текстурных изображений с помощью их интерполяции, особенно на границах, а под фильтрацией понимается способ уменьшения нежелательной «зернистости» при изменении масштаба текстуры при приближении к 3D-объекту или при удалении от него. Известна билинейная фильтрация (Bilinear Filtering), в которой цвет пиксела вычисляется путем линейной интерполяции цветов соседних пикселов, а также более качественная трилинейная фильтрация с использованием MIP-карт (Trilinear MIP Mapping). Под MIP-картами (от лат. Multum in Parvum — «многое в одном») понимается набор текстур с разными масштабами, что позволяет в процессе трилинейной фильтрации выполнять усреднение между соседними пикселами и между соседними MIP-картами. Трилинейная фильтрация дает особенный эффект при наложении текстур на протяженный объект, удаляющийся от наблюдателя. Современные платы поддерживают трилинейную фильтрацию.
Прозрачность, или альфа-канал изображения (Transparency, Alpha Blending) — это информация о прозрачности объекта, позволяющая строить такие прозрачные и полупрозрачные объекты, как вода, стекло, огонь, туман и дымка. Наложение тумана (Fogging) часто выделяется в отдельную функцию и вычисляется отдельно.
Смешение цветов, или дизеринг (Dithering) применяется при обработке двух- и трехмерных изображений с большим количеством цветов на устройстве с меньшим их количеством. Этот прием заключается в рисовании малым количеством цветов специального узора, создающего при удалении от него иллюзию использования большего количества цветов. Пример дизеринга — применяемый в полиграфии способ передачи градаций серого цвета за счет нанесения мелких черных точек с различной пространственной частотой. В 3D-ускорителях дизеринг используется для передачи 24-битного цвета в 8- или 16-битных режимах.
Для поддержки функций 3D-ускорителя в играх и других программах существует несколько интерфейсов прикладного программирования, или API (Application Program Interface), позволяющих приложению стандартным образом использовать возможности 3D-ускорителя. Наиболее известны интерфейсы Direct3D (входит в состав DirectX, Microsoft), OpenGL (Silicon Graphics), Glide (3Dfx), 3DR (Intel), Heidi (Autodesk), RenderGL (Intergraph).
Интерфейс Direct3D компании Microsoft стал фактическим стандартом для большинства компьютерных игр; и большинство 3D-ускорителей укомплектованы Direct3D-драйверами.
Разработанный компанией Silicon Graphics для своих графических станций Iris GL интерфейс прикладного программирования OpenGL стал общепринятым стандартом для программ трехмерного моделирования и САПР, сегодня он используется также и многими другими программами, позволяя очень точно описывать параметры сцены. OpenGL в настоящее время является открытым стандартом, контролируемым ассоциацией OpenGL Architecture Review Board, в которую помимо Silicon Graphics входят Digital, IBM, Intel, Intergraph, Microsoft и др. Несмотря на это, существует множество диалектов OpenGL.
Интерфейс Glide разработан компанией 3Dfx Interactive для производившихся ею ускорителей Voodoo. Glide снискал широкое распространение среди производителей компьютерных игр, хотя, в отличие от OpenGL, Glide не является универсальным 3D API и поддерживает только возможности Voodoo.
Характеристики современных видеокарт
Современные видеокарты различаются многими характеристиками, важнейшими из которых являются: тип и тактовая частота графического процессора; тип, объем и разрядность шины памяти; число блоков шейдеров (отвечающих за визуализацию сложных эффектов и придающих трехмерному изображению большую реалистичность), внешним интерфейсом. Указанные характеристики и определяют общую производительность видеокарты.
Тактовая частота GPU, измеряемая в мегагерцах, определяет количество операций, которые графический процессор может выполнить за 1 с (для современных процессоров составляет порядка 400-700 МГц). Помимо тактовой частоты реальная скорость выполнения операций зависит от архитектуры процессора (например, количества конвейеров), а также от скорости обмена процессора с видеопамятью. Причем, объем видеопамяти (от 64 до 512 Мб на 2006) оказывает меньшее влияние на производительность видеосистемы, чем ширина (разрядность) шины видеопамяти, которая указывает на количество одновременно (за 1 такт) передаваемых сигналов и в современных видеокартах обычно составляет 64, 128, 256 или 512 бит. Пропускная способность шины памяти, определяющая ее производительность, зависит не только от разрядности, но и от ее тактовой частоты. Тип видеопамяти также оказывает влияние на производительность. Если ранее в видеокартах использовалась одноканальная память типа SDRAM, то сегодня используется более быстрая двухканальная DDR SDRAM, DDR2 SDRAM или GDDR. Использование современных интерфейсов с более высокой пропускной способностью теоретически должно повышать производительность системы, но на практике производительность видеокарт стандарта PCI-Express не намного отличается от производительности видеокарт на шине AGP. Тем не менее, большинство современных видеокарт изготавливается для шины PCI-Express.
На производительность видеокарты большое значение оказывает также технологический процесс (техпроцесс) изготовления ее микросхем (прежде всего, графического процессора). Чем меньше размер одного полупроводникового элемента (транзистора), являющегося основным «кирпичиком» микросхемы, тем больше таких элементов может быть задействовано в микросхеме, тем меньше расстояние между ними и больше скорость взаимодействия, выше тактовая частота, меньше потребляемое напряжение и выделяемое тепло (что является весьма чувствительным моментом). Современные видеокарты производятся на основе техпроцесса 130, 90нм и менее.
Для увеличения производительности видеосистемы ПК ведущие производители графических чипов — nVidia и ATI предложили технологии (SLI и Crossfire соответственно), обеспечивающие возможность одновременного использования двух видеокарт на одной материнской плате. Впрочем, согласно тестам при использовании двух идентичных видеокарт двукратного увеличения производительности не наблюдается.
В зависимости от назначения и сферы применения все видеокарты можно условно разделить на три класса:
1) бюджетные офисные видеокарты;
2) игровые карты;
3) профессиональные карты (их также называют OpenGL-ускорителями).
1) бюджетные офисные видеокарты;
2) игровые карты;
3) профессиональные карты (их также называют OpenGL-ускорителями).
С начала 2000-х на мировом рынке видеокарт первых двух классов лидируют фирмы ATi (семейства видеокарт Radeon) и nVIDIA (семейства GeForce). Одной из особенностей современных видеокарт является реализация в них технологии коррекции инерционности жидкокристаллических мониторов за счет искусственного формирования дополнительного промежуточного изображения между воспроизводимыми кадрами — Overdrive (или также — LCD Overdrive). Среди профессиональных видеокарт в 2003-2004-х бесспорным лидером являлась карта фирмы nVIDIA — Quadro FX 3000. В 2005 ей на смену пришла GeForce 7800GTX.