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.

Применение оператора индекса к матрице возвращает соответствующий столбец матрицы в виде вектора, например:


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