float sin(float х):
3.7. Операции Если шейдер хочет переопределить эту функцию или специализировать ее для конкретного типа параметров, это можно сделать следующим образом: float sir (float х)
{return <.. какая-то функция от х..>
)
void maint)
{// вызывается функция, определенная ранее, а не встроенная float s = sin(x):
)Это напоминает стандартные приемы компоновки разных библиотек и функций, где преимуществом обладает локальная функция - если функция определена, то вызывается именно она, а не функция из внешней библиотеки. Если определение такой функции находится в другом шейдере, нужно просто перед вызовом этой функции указать в текущем шейдере ее прототип. В противном случае будет использоваться встроенная функция.
3,7. Операции В табл. 3.1 в порядке приоритетности приведены операторы, доступные в языке шейдеров OpenGL. Приоритетность и ассоциативность совместимы с С.
Таблица 3.1. Операторы в порядке приоритетности
| Оператор | Описание | 
| [] | Индекс | 
| Выбор компонента | |
| ++ - | Постфиксный инкремент/декремент | 
| ++ - | Префиксный инкремент/декремент | 
| ! | Унарное отрицание и логическое «НЕ» | 
| */ | Умножение и деление | 
| + - | Сложение и вычитание | 
| <><=>= | Относительные | 
| = = ! = | Равенства | 
| т. | Логическое «И» | 
| Л Л | Логическое «исключающее ИЛИ» | 
| II | Логическое «ИЛИ» | 
| Выбор | |
| = += -= *= /= | Присваивание | 
| Последовательность | 
3.7.1. Обращение по индексу
К векторам, матрицам и массивам можно обращаться с помощью оператора индекса ([ ]). Все индексы начинаются с нуля; первый элемент всегда имеет индекс 0. Индексирование массива такое же, как в С.
Определение языка
Оператор индекса для вектора возвращает скалярный компонент. Это позволяет компонентам вектора иметь номера 0, 1… и обеспечивает произвольный доступ к ним, например:
vec4 V = vec4(l.G. 2.0, 3.0. 4.0):float f = v[2]: // f принимает значение 3.0
В данном случае v[2] - скалярное значение с плавающей запятой 3,0, которое присваивается f.
Применение оператора индекса к матрице возвращает соответствующий столбец матрицы в виде вектора, например:
