Графический процессор (ГП или GPU) предназначен для хранения, обработки и передачи на монитор данных о выводимом на экран изображении. ГП существенно повышает производительность компьютера, освобождая центральный процессор (ЦП) от обработки графических данных. По своей сложности современные ГП могут превосходить ЦП.
Обработки графических данных включает определение объектов, составляющих сцену, расчет местоположения вершин, задающих эти объекты, построение по вершинам граней, наложение на грани текстур и т.п.
Графические процессоры имеют конвейерную архитектуру. В классическом варианте различают вершинные и пиксельные процессоры — конвейеры.
Поступающие в ГП данные об изображаемом объекте сначала обрабатываются в вершинном процессоре (Vertex Pipeline) с помощью программ, называемых вершинными шейдерами (Vertex Shader). Вершинный шейдер рассчитывает геометрию сцены и параметры вершин (координаты, цвет, освещение и др.), может выполнять такие операции, как деформация и анимация объектов.
Далее происходит сборка (Setup) трехмерной модели в полигоны. На этом этапе вершины соединяются между собой линиями, образуя каркасную модель. При соединении вершин друг с другом образуются полигоны (треугольники).
После этапа сборки данные поступают в пиксельный процессор (Pixel Pipeline), который определяет конечные пикселы, которые будут выведены в кадровый буфер. Пиксельный процессор в итоге своей работы выдает конечное значение цвета пиксела и Z-значение для последующего этапа конвейера. Пиксельный процессор работает под управлением специальной программы, называемой пиксельным шейдером (Pixel Shader). Пиксельные шейдеры — это программы, выполняемые пиксельными процессорами во время растеризации для каждого пиксела изображения. Поскольку пиксельные шейдеры реализуют различные операции над отдельными пикселами, такие как затенение или освещение, текстурирование (операцию выполняет блок наложения текстур TMU), присвоение цвета, данных о прозрачности и т.п., то можно говорить, что пиксельный процессор работает на этапе растеризации.
Пиксельные шейдеры реализуют такие функции, как мультитекстурирование (наложение нескольких слоев текстуры), попиксельное освещение, создание процедурных текстур, постобработка кадра и т.д.
После обработки данных в пиксельном процессоре с помощью пиксельных шейдеров данные обрабатываются блоком растровых операций ROP (Raster Operations). На данном этапе с использованием буфера глубины (Z-буфера) определяются и отбрасываются те пикселы, которые будут не видны пользователю. Когда рассчитывается новый пиксел, его глубина сравнивается со значениями глубин уже рассчитанных пикселов с теми же координатами Х и Y. Если новый пиксел имеет значение глубины больше какого-либо значения в Z-буфере, новый пиксел не записывается в буфер для отображения (если меньше — то записывается).
Кроме буфера глубины, позволяющего отсекать невидимые поверхности, при создании реалистичных трехмерных изображений необходимо учитывать, что объекты могут быть полупрозрачными. Эффект полупрозрачности создается путем объединения цвета исходного пиксела с пикселом, уже находящимся в буфере. В результате цвет точки является комбинацией цветов переднего и заднего плана. Для учета прозрачности объектов используется так называемый alpha-коэффициент прозрачности, который имеет значение от 0 до 1 (для каждого цветового пиксела).