netlib.narod.ru | < Назад | Оглавление | Далее > |
Шейдеры — это небольшие программы, выполняемые графическим процессором, и определяющие, как будут обрабатываться данные на программируемых этапах конвейера визуализации. Для программирования шейдеров вы можете использовать много различных языков, включая низкоуровневые языки (ассемблер) и высокоуровневые языки (похожие на С). В общем случае код шейдера похож на математическое выражение, записанное с использованием функций языка.
Шейдеры, используемые в показанном на рис. 8.1 этапе обработки вершин, называются вершинными шейдерами (vertex shader). Вы используете вершинные шейдеры для обработки атрибутов вершин визуализируемых объектов и генерации нового набора атрибутов, который выводится из вершинного шейдера и отправляется на следующий этап конвейера. Выходные атрибуты вершинного шейдера не фиксированы и могут меняться в каждом шейдере, а единственным обязательным выходным атрибутом вершинного шейдера является финальная (преобразованная) позиция вершины.
Вершинные шейдеры позволяют вам выполнять множество задач, таких как деформация поверхностей, скелетная анимация и движение частиц.
Этап растеризации выполняется между этапом обработки вершин, где используется вершинный шейдер, и этапом обработки пикселей, где применяется пиксельный шейдер. На этапе растеризации из вершин, получаемых на выходе этапа обработки вершин, конструируются примитивы. Затем сконструированные примитивы растеризуются, в результате чего их векторное представление (позиции вершин) преобразуется в пиксельное.
На рис. 8.2 показана растеризация треугольника, генерирующая много пикселей. Обратите особое внимание на то, что атрибуты вершин линейно интерполируются между всеми генерируемыми пикселями.
Рис. 8.2. Растеризация треугольника. Серые квадраты представляют сгенерированные пиксели
Сгенерированные на этапе растеризации пиксели отправляются на этап обработки пикселей, программируемый путем использования пиксельных шейдеров (pixel shader). В отличие от вершинных шейдеров, пиксельные шейдеры могут возвращать только два атрибута: цвет пикселя, являющийся обязательным, и необязательную глубину пикселя.
Пиксельные шейдеры позволяют вам выполнять множество задач, таких как попиксельное освещение, текстурирование и процедурная генерация текстур. Вы можете также использовать пиксельные шейдеры для применения эффектов пост-обработки, таких как регулировка яркости, контрастности и цветовой насыщенности, или размытие движущихся объектов, ко всей визуализированной сцене.
netlib.narod.ru | < Назад | Оглавление | Далее > |