Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Графические процессоры общего - Павлив.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
411.14 Кб
Скачать

1.2.2 Построение примитивов и растеризация

Входные данные этого этапа — трансформированные вершины, а также информация о их соединении. Из этих данных осуществляется сборка геометрических примитивов. В результате получается последовательность треугольников, линий или точек. Над этими примитивами может производиться отсечение по фрактуму (видимой в текущий момент области трехмерного пространства) или любым определенным в программе плоскостям отсечения. Также на этом этапе могут быть отброшены задние грани объектов. Определяются эти грани по порядку следования (порядку обхода) вершин полигона.

На выходе данной ступени конвейера мы получаем поток треугольников, представленных в общей трехмерной системе координат. Зритель располагается в начале координат, а взгляд его ориентирован вдоль оси z.

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

После этапа построения примитивы поступают в пиксельный процессор, который определяет конечные пикселы, которые будут выведены в кадровый буфер. Пиксельный процессор в итоге своей работы выдает конечное значение цвета пиксела и Z-значение для последующего этапа конвейера. Пиксельный процессор работает под управлением специальной программы, называемой пиксельным шейдером. Пиксельные шейдеры — это программы, выполняемые пиксельными процессорами во время растеризации для каждого пиксела изображения.

Все попадающие в экранное пространство треугольники отображаются на дисплее в виде некоторого набора пикселов. Процедуру определения этих пикселов называют растеризацией. На сегодняшний день создатели графических процессоров реализовали множество алгоритмов растеризации, но все они подчиняются одному принципу: воздействие на каждый конкретный пиксел осуществляется независимо от остальных. Благодаря этому система может обрабатывать все пикселы в параллель; существуют даже экзотические архитектуры, где управление каждым пикселом осуществляется с помощью отдельного процессора. Соблюдение этого непременного условия независимости привело к тому, что разработчики графических процессоров создают конвейеры со все более высокой степенью параллелизма [2].

1.2.3 Текстурирование и окрашивание

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

На практике графическому процессору может потребоваться попиксельный доступ к различным текстурам для получения более точного визуального представления; в частности, такая потребность возникает, если текстуры оказываются больше или меньше фактического разрешения экрана. Поскольку характер обращений к памяти текстур обычно является регулярным (соседним пикселам, как правило, требуется информация о фрагментах текстур, расположенных в непосредственной близости друг от друга), задержки, возникающие при операциях чтения из памяти, удается компенсировать за счет оптимизации устройства буфера.

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

Все современные графические процессоры имеют буфер глубины — область памяти, в которой хранится информация о расстоянии от каждого пиксела до зрителя. Перед выводом на дисплей графический процессор сравнивает расстояние от зрителя до текущего пиксела с расстоянием до того пиксела, который уже отображен на экране. Текущий пиксел выводится на экран только в том случае, если он расположен ближе к зрителю [2].

Н

Рисунок 2 – Пример работы графического конвейера

а рисунке 2 ниже изображен упрощенный пример работы графического конвейера.

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