Сервис для
сео - оптимизаторов

Найди ошибки на сайте
Ошибки мешают продвижению сайта
Исправь ошибки на сайте
Сайт без ошибок продвигать легче
Получи новых клиентов
Новые клиенты принесут больше прибыль

Обзор рендеринга конвейера

  1. Трубопровод
  2. Рендеринг вершин
  3. Обработка вершин
  4. Вершинный шейдер
  5. мозаика
  6. Геометрический шейдер
  7. Пост-обработка вершин
  8. вырезка
  9. Примитивная сборка
  10. Отбор лица
  11. растеризации
  12. Обработка фрагментов
  13. Операции за образец

Конвейер рендеринга - это последовательность шагов, которые OpenGL выполняет при рендеринге объектов. Этот обзор предоставит общее описание шагов в конвейере.

Трубопровод

Конвейер рендеринга - это последовательность шагов, которые OpenGL выполняет при рендеринге объектов

Схема рендеринга конвейера. Синие прямоугольники являются программируемыми этапами шейдера.

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

После запуска конвейер работает в следующем порядке:

  1. Обработка вершин :
    1. На каждую вершину, извлеченную из массивов вершин (согласно определению VAO), воздействует Вершинный шейдер , Каждая вершина в потоке обрабатывается по очереди в выходную вершину.
    2. Необязательный примитив этапы тесселяции ,
    3. Необязательный Геометрический шейдер примитивная обработка. Вывод представляет собой последовательность примитивов.
  2. Пост-обработка Vertex выходы последнего этапа настраиваются или отправляются в разные места.
    1. Преобразование обратной связи здесь происходит
    2. Примитивный вырезка , перспективный разрыв и преобразование области просмотра в пространство окна.
  3. Примитивная Ассамблея
  4. Сканирование преобразования и интерполяция примитивных параметров , который генерирует ряд Фрагменты ,
  5. Фрагмент шейдера обрабатывает каждый фрагмент. Каждый фрагмент генерирует ряд выходных данных.
  6. Per-Sample_Processing , в том числе, но не ограничивается:
    1. Тест ножниц
    2. Трафарет Тест
    3. Тест глубины
    4. смешивание
    5. Логическая операция
    6. Написать маску

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

Примитивы - это базовые формы для рисования, такие как треугольники, линии и точки. Как именно список вершин интерпретируется как примитивы, обрабатывается на более позднем этапе.

Эта часть конвейера имеет дело с рядом объектов, таких как Vertex Array Objects а также Объекты буфера вершин , Объекты Vertex Array определяют, какие данные имеет каждая вершина, в то время как объекты Vertex Buffer хранят сами фактические данные вершины.

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

Рендеринг вершин

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

Обработка вершин

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

Многие из этих этапов являются необязательными.

Вершинный шейдер

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

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

Одно ограничение на обработку вершин состоит в том, что каждая входная вершина должна отображаться на определенную выходную вершину. И потому что вызовы вершинных шейдеров не может разделить состояние между ними, входные атрибуты для отображения данных вершинных вершин 1: 1. То есть, если вы передадите одинаковые атрибуты одному и тому же вершинному шейдеру в одном и том же примитиве, вы получите те же выходные данные вершин. Это дает реализациям право оптимизировать обработку вершин; если они могут обнаружить, что собираются обработать ранее обработанную вершину, они могут использовать ранее обработанные данные, хранящиеся в кэш после преобразования , Таким образом, им не нужно снова запускать обработку вершин для этих данных.

Вершинные шейдеры не являются обязательными.

мозаика

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

Тесселяция как процесс необязательна. Тесселяция считается активной, если TES активен. TCS является необязательным, но TCS может использоваться только вместе с TES.

Геометрический шейдер

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

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

Однако существует ряд типов входных примитивов, которые определены специально для геометрических шейдеров. Эти примитивы смежности дают GS более широкое представление о примитивах; они обеспечивают доступ к вершинам примитивов, смежных с текущей.

Выход GS - ноль или более простых примитивов, очень похоже на вывод примитивной сборки. GS может удалять примитивы или тесселяровать их, выводя множество примитивов для одного входа. GS также может работать с самими значениями вершин, выполняя некоторую работу для вершинного шейдера, или просто интерполировать значения при их тесселяции. Геометрические шейдеры могут даже преобразовывать примитивы в различные типы; входные точечные примитивы могут стать треугольниками, или линии могут стать точками.

Геометрические шейдеры являются необязательными.

Пост-обработка вершин

После обработки вершин на основе шейдера вершины проходят ряд этапов обработки с фиксированной функцией.

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

Данные, выводимые в буфер обратной связи преобразования, представляют собой данные от каждого примитива, испускаемого этим этапом.

вырезка

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

Позиции вершин преобразуются из пространства клипа в пространство окна через Перспектива Разделить и Viewport Transform ,

Примитивная сборка

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

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

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

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

Отбор лица

Примитивы треугольника могут быть отбракованы (то есть: отброшены без рендеринга) на основе поверхности треугольника в пространстве окна. Это позволяет избежать рендеринга треугольников, обращенных в сторону от зрителя. Для замкнутых поверхностей такие треугольники естественным образом будут закрыты треугольниками, обращенными к пользователю, поэтому нет никакой необходимости их визуализировать. Отбор лица - это способ избежать рендеринга таких примитивов.

растеризации

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

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

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

Обработка фрагментов

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

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

Операции за образец

Выходные данные фрагмента из процессора фрагментов затем проходят через последовательность шагов.

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

  • Тест владения пикселем: Сбой, если пиксель фрагмента не «принадлежит» OpenGL (если другое окно перекрывается с окном GL). Всегда проходит при использовании Объект Framebuffer , Ошибка означает, что пиксель содержит неопределенные значения.
  • Тест ножниц : При включении тест не пройден, если пиксель фрагмента находится за пределами указанного прямоугольника экрана.
  • Трафарет Тест : При включении тест завершается неудачно, если значение шаблона, предоставленное тестом, не сравнивается, поскольку пользователь указывает значение трафарета из базового образца в буфере шаблонов. Обратите внимание, что значение трафарета в кадровом буфере все еще можно изменить, даже если тест трафарета не пройден (и даже если тест глубины не пройден).
  • Тест глубины : При включении проверка завершается неудачно, если глубина фрагмента не сравнивается, поскольку пользователь указывает значение глубины из базового образца в буфере глубины.
Примечание.

Хотя это указано после Фрагмент шейдера они могут произойти перед фрагментом шейдера при определенных условиях. Если они происходят до FS, то любой отбор фрагмента также будет препятствовать выполнению шейдерного фрагмента, что сохраняет производительность.

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

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

Похожие

Обзор Plextor M6V (256 ГБ) SSD
Первоначально планировалось, что SSD Plextor M6V станет их первым приводом с использованием TLC NAND, но теперь его перенесли на M7V следующего года. Вместо этого Plextor пользуется неожиданным успехом на рынке контроллеров SSD, контроллером Silicon Motion SM2246EN. Мы ранее проверили этот контроллер в ADATA Premier SP610 ,
Обзор WD My Cloud EX2 Ultra
Александра Хаскелл Western Digital выпустила My Cloud EX2 Ultra в начале февраля , Этот высокопроизводительный NAS с 2 отсеками обладает рядом дополнительных преимуществ по сравнению с предшественником My Cloud EX2. My Cloud EX2 Ultra обеспечивает удаленный безопасный доступ к вашим файлам и предоставляет упрощенную платформу для синхронизации и обмена контентом между компьютерами. Благодаря множеству
Обзор телефона Nokia X2-02. Как установить Оперу и другие приложения?
Уже долго носил с собой два телефона, потому пользуюсь услугами двух операторов. Конечно, это не очень удобно, поэтому возникла мысль приобрести телефон с двумя sim-картами. Как это обычно происходит, порасспрашивал друзей - владельцев «двокарточникив», сходил за советом в интернет. Выбор пал на телефон Nokia X2-02 по нескольким причинам. В телефоне присутствуют все нужные мне функции: две карточки, неплохая телефонная книга, довольно гибкие настройки меню, клавиш, пунктов
Коды к Minecraft Pocket Edition (обзор приложения)
Читы для Minecraft Pocket Edition не то, что, кажется, указывает название. Это не приложение, которое позволяет читы в Minecraft PE через приложение. Это мобильное приложение для сайта. minecraftpecheats.com , Веб-разработчик использовал плагин Mobiloud Wordpress для создания своего приложения на своей веб-странице. Я хотел упомянуть об этом заранее, потому что важно судить об этом приложении, основываясь на том, что оно есть, а не на том,
Wi-Fi USB-адаптер D-Link AC1900 (DWA-192) Обзор
Что такое Wi-Fi USB-адаптер D-Link AC1900? За последние пару лет Wi-Fi изменился благодаря появлению стандарта AC и его самой быстрой итерации AC1900. Но, несмотря на то, что маршрутизаторы AC1900 существуют уже некоторое время, количество устройств, которые могут подключаться к стандарту на полной скорости, все еще очень мало. Немногие устройства - например, телефоны и ноутбуки - поставляются со встроенным, в то время как количество отдельных приемников AC1900 было минимальным.
Архитектуры Pentium и Pentium Pro - INF3151 - выпуск 2017 - Университет в Осло
Кай Ли, Принстонский университет Целью данной документации является предоставление краткой и краткой документации об архитектурах ПК Pentium. Он содержит краткое описание процессоров Intel Pentium и Pentium Pro и краткое введение в программирование на ассемблере с помощью ассемблера Gnu. Два полезных справочника: Руководство для разработчиков семейства Pentium Pro, том 2: Справочник программиста, Intel Corporation, 1996, и Руководство для разработчиков семейства
Гаджеты для боковой панели Microsoft Windows Vista
Боковая панель - это панель на рабочем столе Vista, куда вы можете добавлять апплеты или «гаджеты Vista». Когда Vista была на стадии бета-тестирования, я был за то, что отказался от боковой панели; Мне не нужны были большие часы, а другие гаджеты мало привлекали. Однако со временем я стал сторонником этой панели с ее гаджетами, и я рекомендую дать этой новой возможности шанс. По мере того, как все больше и больше компаний поручают разработчикам создавать гаджеты, наш выбор
02. Как установить Оперу и другие приложения?