Видеокарта

Процесс построения трехмерного изображения

Этот процесс – 3D-рендеринг – похож на создание фотографии-натюрморта: большую часть времени занимает расположение объектов в кадре, а затем делается моментальный «снимок», результаты которого выводятся на экран. В отличие от фотографии, процедура рендеринга при синтезе компьютерного изображения в реальном времени – например, в игре – повторяется несколько десятков раз в секунду (другой вариант: рендеринг производится заранее, а в итоге получается статичная картинка или видеоролик с высокой степенью реалистичности).

Исходным материалом для рендеринга является множество треугольников различного размера, из которых складываются все объекты виртуального мира: пейзаж, игровые персонажи, монстры, оружие и т.д. Однако сами по себе модели, созданные из треугольников, выглядят как проволочные каркасы. Поэтому на них накладываются текстуры – цветные двухмерные «обои». И текстуры, и модели помещаются в память графической карты, а дальше, при создании каждого кадра игрового действия выполняется цикл рендеринга, состоящий из нескольких этапов.

1. Игровая программа отправляет графическому процессору информацию, описывающую игровую сцену: состав присутствующих объектов, их окраску, положение относительно точки наблюдения, освещение и видимость. Передаются и дополнительные данные, характеризующие сцену и позволяющую видеокарте увеличить реалистичность получаемого изображения, добавив туман, размытие, блики и т.д.

2. Графический процессор располагает трехмерные модели в кадре, определяет, какие из входящих в них треугольников находятся на виду и отсекает скрытые другими объектами или, например, тенями. Затем создаются источники света и определяется их влияние на цвет освещаемых объектов. Этот этап рендеринга называется «трансформация и освещение» (T&L – Transformation & Lighting).

3. На видимые треугольники накладываются текстуры с применением различных технологий фильтрации. Билинейная фильтрация предусматривает наложение на треугольник двух версий текстуры с различным разрешением. Результатом ее использования являются хорошо различимые границы между областями четких и размытых текстур, возникающие на трехмерных поверхностях перпендикулярно направлению обзора. Трилинейная фильтрация, использующая три варианта одной текстуры, позволяет создать более мягкие переходы. Однако в результате использования обеих технологий по-настоящему четко выглядят лишь те текстуры, которые расположены перпендикулярно к оси зрения. При взгляде под углом они сильно размываются. Для того чтобы это предотвратить, используется анизотропная фильтрация.

Такой метод фильтрации текстур задается в настройках драйвера видеоадаптера либо непосредственно в компьютерной игре. Кроме того, можно изменять силу анизотропной фильтрации: 2х, 4х, 8х или 16х – чем больше «иксов», тем более четкими будут изображения на наклонных поверхностях. Но при увеличении силы фильтрации возрастает нагрузка на видеокарту, что может привести к снижению скорости работы и к уменьшению количества кадров, генерируемых в единицу времени.

На этапе текстурирования могут использоваться различные дополнительные эффекты. Например, наложение карт среды (Enironmental Mapping) позволяет создавать поверхности, в которых будет отражаться игровая сцена: зеркала, блестящие металлические предметы и т.д. Другой впечатляющий эффект получается с применением карт неровностей (Bump Mapping), благодаря которому свет, падающий на поверхность под углом, создает видимость рельефа. Текстурирование является последним этапом рендеринга, после которого картинка попадает в кадровый буфер видеокарты и выводится на экран монитора.

Электронные компоненты видеокарты

Теперь, когда стало понятно, каким образом происходит процесс построения трехмерного изображения, можно перечислить технические характеристики компонентов видеокарты, которые определяют скорость процесса. Главными составными частями видеокарты являются графический процессор (GPU – Graphics Processing Unit) и видеопамять.

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

Одной из основных характеристик этого компонента (как и центрального процессора ПК), является тактовая частота. При прочих равных условиях, чем она выше, тем быстрее происходит обработка данных, а следовательно – увеличивается количество кадров в секунду (FPS – frames per second) в компьютерных играх. Частота графического процессора – важный, но не единственный, влияющий на его производительность параметр.

Так же у GPU есть следующие характеристики:

1. Количество текстурных модулей (TMU – Texture Mapping Units) – элементов графического процессора, выполняющих наложение текстур на треугольники. От количества TMU напрямую зависит скорость построения трехмерной сцены.

2. Количество конвейеров рендеринга (ROP – Render Output Pipeline) – блоков, выполняющих «сервисные» функции. Они тоже влияют на скорость текстурирования.

Производительность текстурных модулей выражается в такой величине как филлрейт – скорость текстурирования, измеряемая в текселах за секунду - [Текс/сек].

3. Количество шейдерных блоков (шейдерных процессоров), которые – как следует из названия – занимаются обработкой пиксельных и вершинных шейдеров. Современные игры активно используют шейдеры, так что количество шейдерных блоков имеет решающее значение для определения производительности.

Больше чем десять лет назад, графические процессоры имели отдельные модули для выполнения пиксельных и вершинных шейдеров. Видеокарты Nvidia серии GeForce 8000 и адаптеры ATI Radeon HD 2000 первыми перешли на унифицированную шейдерную архитектуру. Графические процессоры этих карт имеют блоки, способные обрабатывать как пиксельные, так и вершинные шейдеры – универсальные шейдерные процессоры (потоковые процессоры). Такой подход позволяет полностью задействовать вычислительные ресурсы чипа при любом соотношении пиксельных и вершинных расчетов в коде игры. Кроме того, в современных графических процессорах шейдерные блоки часто работают на частоте, превышающей тактовую частоту GPU

Память видеокарты

Видеопамять по отношению к GPU выполняет те же функции, что и оперативная память – по отношению к центральному процессору ПК: она хранит весь «строительный материал», необходимый для создания изображения – текстуры, геометрические данные, программы шейдеров и т.д.

Что такое шейдеры

Шейдеры – микропрограммы, присутствующие в коде игры, с помощью которых можно изменять процесс построения виртуальной сцены, открывая возможности, недостижимые при использовании традиционных средств 3D-рендеринга. Современная игровая графика без шейдеров немыслима.

Вершинные шейдеры изменяют геометрию трехмерных объектов, благодаря чему можно реализовать естественную анимацию сложных моделей игровых персонажей, физически корректную деформацию предметов или настоящие волны на воде. Пиксельные шейдеры применяются для изменения цвета пикселей и позволяют создавать такие эффекты, как реалистичные круги и рябь на воде, сложное освещение и рельеф поверхностей. Кроме того, с помощью пиксельных шейдеров осуществляется постобработка кадра: всевозможные «кинематографические» эффекты размытия движущихся объектов, сверхъяркого света и т.д.

Существует несколько версий реализации шейдерной модели (Shader Model). Все современные видеокарты поддерживают пиксельные и вершинные шейдеры версии 6.0, обеспечивающие по сравнению с предыдущей версией более высокую реалистичность эффектов.