многие из этих функций можно использовать в шейдерах, чтобы добиться интересных эффектов. При написании кода шейдера иногда бывает полезно нарисовать график функции, чтобы понять, каким будет вычисленное значение в данном месте шейдера. По некоторым приведенным здесь графикам будет легче понять, как нарисовать остальные и для чего можно пытаться использовать эти функции. Некоторые из применений таких функций читатель увидит в последующих главах книги.
5.1. Угловые и тригонометрические функции Тригонометрические функции можно использовать и в вершинных, и во фрагмент-ных шейдерах. Если параметр функции - угол, он обозначается в радианах. Ни одна из этих функций не генерирует ошибки деления на ноль. При нулевом делителе результаты выполнения функции не определены.
Все перечисленные далее функции выполняются покомпонентно (табл. 5.1).
Таблица 5.1. Угловые и тригонометрические функции
Синтаксис |
Описание |
float radians (float degrees) |
Переводит градусы в радианы и возвращает результат, |
vec2 radians (vec2 degrees) |
а именно: result = тс/180 degrees |
vec3 radians (vec3 degrees) | |
vec4 radians (vec4 degrees) | |
float degrees (float radians) |
Переводит радианы в градусы и возвращает результат, |
vec2 degrees (vec2 radians) |
а именно: result = 180/ti radians |
vec3 degrees (vec3 radians) | |
vec4 degrees (vec4 radians) | |
float sin (float radians) |
Стандартная тригонометрическая функция синуса. |
vec2 sin (vec2 radians) |
Значение, которое возвращает эта функция, |
vec3 sin (vec3 radians) |
находится в диапазоне [-1,1] |
vec4 sin (vec4 radians) | |
float cos (float radians) |
Стандартная тригонометрическая функция косинуса. |
vec2 cos (vec2 radians) |
Значение, которое возвращает эта функция, |
vec3 cos (vec3 radians) |
находится в диапазоне [-1,1] |
vec4 cos (vec4 radians) | |
float tan (float radians) |
Стандартная тригонометрическая функция тангенса |
vec2 tan (vec2 radians) | |
vec3 tan (vec3 radians) | |
vec4 tan (vec4 radians) | |
float asin (float x) |
Арксинус. Возвращает угол, синус которого равен х. |
vec2 asin (vec2 x) |
Диапазон возвращаемых значений [-л/2, л/2]. |
vec3 asin (vec3 x) |
При | х | > 1 результаты не определены |
vec4 asin (vec4 x) | |
float acos (float x) |
Арккосинус. Возвращает угол, косинус которого равен х. |
vec2 acos (vec2 x) |
Диапазон возвращаемых значений [0, я]. При | х \ > 1 |
vec3 acos (vec3 x) |
результаты не определены |
yec4 acos (vec4 x) |
5(2; Экспоненциальные функции