3. OpenGL Architecture Review Board: спецификация расширения ARB_vertex_sha-der, реестр расширений OpenGL (http://oss.sgi.com/projects/ogL-sampLe/registry).

4. OpenGL Architecture Review Board: спецификация расширения ARB_f ragment_sha -der, реестр расширений OpenGL (http://05s.sgT.com/project5/ogL-sampLe/registry).

5. OpenGL Architecture Review Board: спецификация расширения ARB_shader_ob-jects, реестр расширений OpenGL (http://oss.sgi.com/projects/ogL-sampLe/regis-try).

Определение языка1

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

Синтаксис языка шейдеров OpenGL заимствован у семейства языков программирования С. Лексемы, идентификаторы, точки с запятыми, обозначение вложения блоков фигурными скобками, структурная схема и многие ключевые слова выглядят так же, как в языке С. Доступны оба вида комментариев,.// ... и /* ... */. Но многие особенности отличаются от используемых в С, и в этой главе все серьезные отличия будут описаны.

Каждый пример шейдера представлен в виде, в котором он может появиться в файле или на экране. Но на самом деле шейдеры передаются в OpenGL в виде строк, а не файлов.

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

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

// uniform-переменные, изменяемые не чаще, чек при смене примитива uniform float CoolestTemp: uniform float TempRange:


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