64 Глава 2. Основы Состояния OpenGL доступны фрагментному шейдеру через встроенные uni-form-перемеиные - так же, как и вершинному шейдеру. Фактически все состояния OpenGL, передающиеся через встроенные unjform-nepeMeniibie, доступны и вершинному, и фрагментному тендерам. Именно поэтому возможно реализовать стандартные операции над вершинами, например выбор освещения, во фрагмент-ном тендере, используя стандартные OpenGL-операции управления состоянием.

Приложение может использовать определенные разработчиком unifonn-nepe-меипые для передачи произвольных, нечасто меняющихся данных фрагментному шейдеру. Одна и та же nnifonri-перемепиая может быть использована как вершинным, так и фрагментным шейдером, если она объявлена в обоих как один и тот же тип данных.

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

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

Фрагментный процессор может выполнять почти все операции преобразования пикселов, которые определены в OpenGL 1.5, включая и дополнительные операции над изображениями. Это значит, что фрагментный процессор поддерживает современные способы обработки пикселов. Операции с таблицей преобразования можно выполнять с lD-текстурным доступом, при этом приложения полностью контролируют размер и формат текстур. Операции масштабирования и смещения легко расширяются с помощью языка программирования. Доступ к матрицам цвета можно получить через встроенные uniform-переменные. Правильные значения для искривления и масштабирования пиксела вычисляются посредством множественного доступа к текстуре. Гистограмма и операции вычисления минимума и максимум остаются расширениями, так как их довольно трудно распараллелить для отдельных пикселов.


⇐ Предыдущая| |Следующая ⇒