После прочтения данной главы читатель способен изучать в подробностях API, которое поддерживает язык тендеров, и пробовать выполнять примеры.
2,1. Введение в язык шейдеров OpenGL
Цель данной книги - помочь читателю изучить и использовать высокоуровневый язык программирования, который формально называется языком шейдеров OpenGL. Этот язык и расширения OpenGL, которые его поддерживают, были утверждены как ARB-расширения еще в июне 2003 г. Ожидается, что они будут добавлены в базовый стандарт OpenGL в версии 2,0.
Замена постоянной функциональности программирусмостыо на тех этапах обработки изображения, которые становятся все более и более сложными, - последняя тенденция для графических ускорителей. Такими этапами являются обработка вершин и обработка фрагментов. Обработка вершин включает в себя операции, выполняемые над каждой вершиной, - в основном это преобразование и настройка освещения, Фрагменты - это структуры данных для каждого пиксела, которые создаются в результате растеризации графических примитивов. У фрагмента есть все данные, необходимые для обновления одного пиксела в буфере. Обработка фрагментов состоит из операций, выполняемых над одним фрагментом, - в основном это чтение из текстурной памяти к применение значений текстуры к каждому фрагменту. С языком шейдеров OpenGL постоянная функциональность обработки вершин и фрагментов дополнительно получила возможности программируемой функциональности, которая умеет то же, что и постоянная, и много больше. Язык шейдеров OpenGL создавался для того, чтобы программисты могли ускорять описанные этапы обработки графической информации в OpenGL.
Целостный фрагмент кода на языке шейдеров, предназначенный для выполнения на одном из программируемых OpenGL-процессоров, называется шейдером. Иногда термин «OpenGL-шейдер» используется для того, чтобы отличить шейдеры, написанные на языке шейдеров OpenGL, от шейдеров, написанных на другом языке, например RenderMan. Так как в OpenGL определены два
Основы
программируемых процессора, существует два типа шейдеров: вершинные шейде-ры и фрагментные тендеры. В OpenGL есть механизм для компиляции шейдеров и линкования их в выполняемый код (программу). Программа содержит один или несколько выполняемых модулей, которые могут запускаться на программируемых модулях обработки графической информации.