Таблица 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 всегда будет возвращать абсолютное значение входного аргумента. Скалярные формы этих функций полезны тем, что типы данных аргументов могут быть изменены без изменения кода, который будет вызывать встроенную функцию.
