Таблица 5.4. Геометрические функции

Синтаксис

Описание

float length (float x)

Возвращает длину вектора х, то есть

float length (vec'2 x)

sqrtOrrO] л-[0] + л-[1] jr[l] + ...)

float length (vec3 x)
float length Cvec4 x)
float distance (float pO.

Возвращает расстояние между pOv\ pi,

float pi)

то есть length (pO- pi)

float distance (vec2 pO.
vec2 pi)
float distance (vec3 pO.
vec3 pi)
float distance (vec4 pO.
vec4 pi)

float dot (float x, float у)

Возвращает скалярное произведение xwy,

float dot (vec2 x. vec2 y)

ТО ЄСТЬ result = JC[0] - /[0] + А-[1] /[1] +...

float dot (vec3 x. vec3 y)
float dot (vec4 x. vec4 y)
vec3 cross (vee3 x, vee3 y)

Возвращает векторное произведение х\л у,

то есть resultfO] = х[1]- у[2] - у[1] х[2]

resultfl] = л-[21 - /[0] - у[2] х[0]

result[2] = х[0] /[1] - /[0] х[1]

float normalize (float x)

Возвращает вектор с тем же направлением, что х,

vec2 normalize (vec2 x)

но длиной 1

vec3 normalize (vec3 x)
vec4 normalize (vec4 x)

5.5. Матричные функции

Синтаксис

Описание

vec4 ftransfornH)

Только для вершинных шейдеров. Эта функция

гарантирует, что координаты вершин будут

преобразованы таким же способом, что и обыч-

ными операциями OpenGL. Предполагаемое при-

менение этой функции - вычисление значений

для gl^Position

float faceforward (float N.

Если скалярное произведение (/Vref, /) < 0,0,

float I. float Nref)

вернуть N ; в противном случае вернуть -N

vec2 faceforward (vec2 N.
vec2 I. vec2 Href)
vec3 faceforward (vec3 N,
vec3 I. vec3 Nref)
vec4 faceforward (vec4 N.
vec4 I. vec4 Nref)
float reflect (float I.

Для инцидентного вектора /и ориентации поверх-

float N)

ности N возвращает направление отражения:

vec2 reflect (vec2 I. result = /- 2,0 dot(/V, /) N
vec2 N)

/Vдолжно быть нормализовано

vec3 reflect (vec3 1.
vec3 N)
vec4 reflect (vec4 I. vec4 N)

Версия функции di stance с параметрами f 1 oat, возможно, не очень полезна (это то ж самое, что абсолютное значение разницы), но при этом вычисляется расстояние Эвклида между двумя точками. Подобным образом Я oat-версия функции normal i ze всегда будет возвращать 1, a f 1 oat-версия функции 1 ength всегда будет возвращать абсолютное значение входного аргумента. Скалярные формы этих функций полезны тем, что типы данных аргументов могут быть изменены без изменения кода, который будет вызывать встроенную функцию.


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