Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Последовательность работы графического конвейера

Поиск

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

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

Рис. 2.16. Этапы работы графического конвейера

 

Этап 1. На этом этапе решаются задачи создания модели трехмерной сцены, которую необходимо отобразить. В их число входят определение перечня объектов сцены, их положения и ориентации в объеме сцены, состояния объектов, назначения материалов объектов, задание положения источников освещения, их типа и параметров и т. п. С каждым объектом в сцене (например, при создании игр) может быть связан некоторый набор геометрических моделей, т. е. объект один (например, некий монстр), но с ним сопоставляются разные геометрические модели в зависимости от его состояния — жив, ранен, убит, трансформировался в другой объект и т. д. Практически ^ все задачи первого этапа решает ЦП. Результаты его работы пересылаются в графический процессор по шине графического адаптера с помощью драйвера.

Однако чем выше требования к качеству отображения трехмерной сцены и чем сложнее сцена, тем больше объем передаваемых данных и тем выше требования к пропускной способности шины графического адаптера. Одним из основных критериев реалистичности отображения сцены является сложность представленных в ней моделей. Обычно считается, что начиная с 500 000 треугольников в сцене, можно обеспечить качество отображения, близкое к фотореалистичному. Объем данных для одного треугольника в этом случае близок к 1 Кбайту, а общий поток данных превысит 2,5 Гбайт/с. Поэтому для современных графических адаптеров характерна миграция с шины AGP на шину PCI Express 16x с пропускной способностью до 8 Гбайт/с.

Кроме того, путем использования трехмерных поверхностей высокого порядка можно добиться улучшения формы трехмерных полигональных моделей и снижения потока передаваемых данных. В этом случае исходный объект можно представить меньшим числом элементов, а детализацию выполнить средствами графического адаптера путем разбиения граней на большее число треугольников (тесселяция). В библиотеке DirectX 8 появились средства описания поверхностей высокого порядка с помощью набора контрольных точек {Patches).

Этап 2. Выполняется построение геометрических моделей объектов трехмерной сцены. Внешний вид объекта формируется с помощью полигональной модели. Чаще всего в роли полигонов используются треугольники, поскольку треугольник — это простейшая плоская фигура, однозначно располагаемая в трехмерном пространстве. Как правило, применительно к 3D-графике в компьютерных играх термины «полигон» и «треугольник» являются синонимами. Современные графические процессоры умеют выполнять дополнительные операции, например тесселяцию {Tesselation), т.е. разделение исходных треугольников на более мелкие. Некоторые графические процессоры могут аппаратно обрабатывать геометрические модели, построенные на основе параметрических поверхностей (механизм RT-Patches). Часть графических процессоров может превращать плоские треугольники в трехмерные поверхности путем «выдавливания» в третье измерение (механизм N-Patches).

Данные вершин выбираются из памяти и попадают в предварительный кэш вершин. Современные видеоадаптеры поддерживают несколько топологий хранения геометрии (треугольников) в памяти. Кроме того, поддерживается аппа- ратно-гибкий формат данных — для каждой вершины могут храниться не только классические данные, такие как координаты или вектор ее нормали, но и любые другие наборы атрибутов допустимых скалярных или векторных типов. Существует аппаратная поддержка работы с несколькими потоками данных — когда часть атрибутов вершины хранится в одном массиве данных, а другая часть — в другом. В таком случае выборка из памяти должна идти в несколько потоков. Всем этим и занимается блок выборки геометрии.

Этап 3. Итоговый результат операций второго этапа (каждая вершина) пересылается в вершинный процессор геометрического процессора для обработки вершинным шейдером. Каждая вершина полигона полностью описывается набором атрибутов: трехмерные координаты, нормаль, цвет, текстурные координаты и др. При обработке вершины вершинным шейдером графический процессор не имеет какой-либо информации о соседних вершинах треугольника. Нормаль (вектор, перпендикулярный к моделируемой поверхности) также является атрибутом вершины, но не треугольника. Вершинные процессоры последовательно обрабатывают каждую вершину объекта, выполняя межкадровую интерполяцию вершин (Key Frame Interpolation), наложение вершин (Vertex Blending) с использованием более чем четырех матриц преобразования, искажение свойств вершин каким-либо параметрическим объектом и другие трансформации, а также рас-чет освещенности, используя сложные модели освещения, учитывающие свойства материала объектов, и другие операции. Содержание операций преобразования и расчета освещенности объектов — Transform & Lightning (T&L) — можно динамически изменять посредством вершинных шейдеров. Таким образом, в современном персональном компьютере многоядерный ЦП дополняется еще более сложным программируемым графическим процессором, содержащим несколько десятков ядер.

С практической точки зрения нерационально все объекты трехмерной сцены отображать с максимальной детализацией, так как зрение человека не может воспринимать мелкие детали удаленных объектов. К тому же непрерывная обработка нескольких десятков или сотен тысяч полигонов, составляющих объект, независимо от его удаления приводит к дополнительной и бесполезной нагрузке графического процессора. Изменить эту ситуацию можно, определяя в некоторые моменты времени так называемый уровень детализации LOD (Level of Detail) для всех объектов в трехмерной сцене. Расчет уровня детализации (LOD) в 3D-приложениях позволяет снизить сложность рендеринга кадра за счет уменьшения общего количества полигонов, текстур и иных ресурсов в сцене. Метод особенно эффективен, если количество объектов в сцене велико и они расположены на разных расстояниях от камеры. Существуют статический и динамический подходы к управлению детализацией. В первом случае заранее создаются упрощенные варианты максимально детализированного объекта. В технологии динамического или непрерывного управления детализацией используют различные алгоритмы, позволяющие плавно регулировать число полигонов в объекте в зависимости от расстояния до картинной плоскости.

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

Этап4. После вершинного процессора трансформированные и освещенные, т. е. уже обработанные вершинным шейдером, вершины попадают в небольшой (порядка 32 вершин в современных архитектурах) промежуточный буфер. Он называется «Post T&L буфер вершин». Этот буфер играет двоякую роль, во-первых, служит для накопления результатов, готовых отправиться на последующие стадии конвейера, и таким образом уменьшает вероятность потенциальных простоев блоков графического процессора в ожидании данных, а во-вторых, позволяет избежать повторного трансформирования и обработки шейдером вершины, если она будет повторно использована в скором времени. Например, это часто происходит с соседними треугольниками, несмотря на наличие разных подходов к описанию геометрии, практически в каждом из них одна вершина будет использоваться несколько раз.

Этап 5. Вершины объединяются в соответствии с выбранной топологией (обычно по три), в соответствии с полигонами (треугольниками), к которым они принадлежат, и отправляются в блок установки треугольников, где происходит предварительная подготовка данных, необходимых для закраски всего полигона. Поскольку треугольники часто имеют общие вершины, обычно требуется обработка лишь одной вершины для каждого нового треугольника. Недостающие вершины считываются из Post T&L буфера вершин. Здесь же производится отбрасывание невидимых (вышедших за экран или заданных плоскостей отсечения) и повернутых к нам обратной стороной (если такая опция задействована) треугольников.

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

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

Этап 7. При установке фрагментов для каждого из квадов вычисляются параметры, такие как текстурные координаты, MIP-уровень, векторы и установочные параметры анизотропии и т. д., необходимые для дальнейших расчетов. Именно здесь вычисляются только базовые значения параметров на весь блок и специальные коэффициенты dx и dy — их предполагаемое изменение по горизонтали и вертикали квада. А затем из этого набора параметров получаются все четыре значения. По мере роста сложности пиксельных шейдеров увеличивается и число передаваемых и интерполируемых для каждой точки параметров. Число интерполяторов в видеопроцессоре не может быть очень большим, поскольку это достаточно длительная операция, и интерполяция типичного набора параметров может занимать более одного такта, замедляя закраску. Использование квадов позволяет существенно поднять эффективность этого процесса.

В практических реализациях процесс интерполяции параметров может частично или полностью проходить в пиксельном процессоре, используя его специальные или общие ресурсы (ALU).

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

Этап 9. После того как значения цвета были рассчитаны, если включен соответствующий режим, в пиксельном процессоре происходит смешивание (блендинг). Под этим понимается комбинирование двух или более текстур с использованием некоторого базиса пикселов, которое определяется коэффициентом смешивания (blend factor) и режимом смешивания (blend mode). Если цвет пиксела представлен в формате RGBA, возможно выполнение смешивания с учетом альфаканала (alpha blending). Этот метод позволяет моделировать прозрачность объектов ЗБ-сцены для создания оптических эффектов типа дыма, стекла или воды. При отсутствии блендинга выполняется просто запись результирующих значений цвета и глубины в буфер кадра. На этом этапе может происходить несколько дополнительных операций, таких как: гамма-коррекция или вычисление самого большого значения глубины всего блока 4x4 для корректного обновления мини-буфера глубины, сжатие Z-координат и т. д.

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

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



Поделиться:


Последнее изменение этой страницы: 2016-04-25; просмотров: 1118; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.158.29 (0.008 с.)