Шейдер (Shader)
Шейдер (Shader) — программа для процессора графической карты (GPU), управляющая поведением шейдерной стадии графического конвейера и занимающаяся обработкой соответствующих входных данных.
Полноценная поддержка шейдеров появилась в видеоускорителях GeForce 3, но зачатки были реализованы ещё в GeForce256 (в виде Register Combiners).
Типы шейдеров:
- Вершинный шейдер (или вершинная программа в OpenGL) — программа для вершинной шейдерной стадии конвейера, обрабатывающая вершинные данные. Вершинный шейдер может описывать, например, трансформацию вершин из объектного пространства в пространство камеры. Вершинный шейдер выполняется отдельно для каждой вершины.
- Пиксельный шейдер (или фрагментная программа в OpenGL) — программа для пиксельной шейдерной стадии конвейера. Пиксельный шейдер выполняется для каждого фрагмента растеризованной геометрии. Обычно пиксельный шейдер занимается закраской геометрического объекта — наложение текстур, освещение, и наложение разных текстурных эффектов, таких как отражение, преломление, туман, Bump Mapping и пр. Пиксельные шейдеры также используются для пост-эффектов.
- Геометрический шейдер — шейдерные программы, выполняющиеся в конвейерной стадии геометрического шейдера. Геометрический шейдер работает с вершинными данными, но выполняется сразу для элемента геометрии, например, для треугольника, то есть на вход подаются три вершины. Кроме этих трёх вершин, возможно использование вспомогательных вершин (т.н. adjacent vertices). Геометрические шейдеры способны создавать новую геометрию, могут использоваться для создания частиц, изменения детализации модели «на лету», создание силуэтов и т.д.
Изначально шейдеры можно было писать на асм-подобном языке, позже появились шейдерные языки высокого уровня, такие как: Cg, GLSL и HLSL. Синтаксис шейдерной программы очень похож на синтаксис языка C.
Для удобства программирования шейдеров на языках высокого уровня, можно использовать специальные инструментарии: FX Composer (разработана корпорацией NVIDIA), RenderMonkey (разработана ATI) и пр.
Статьи по шейдерам:
Введение в GLSL.
Программирование шейдеров на HLSL.
Введение в геометрический шейдер.
Что такое Шейдер (Shader)?
18 ноября 2005 (Обновление: 26 июня 2010)