Функции sin и cos

Рис. 5.1. Функции sin и cos

.2. Экспоненциальные функции

Экспоненциальные функции можно вызывать и из вершинных, и из фрагментах шейдеров. Все перечисленные далее функции выполняются покомпонентно (табл. 5.2).

Таблица 5.2. Экспоненциальные функции

Синтаксис

Описание

float pow (float х. float у)

Возвращает значение хв степени у, то есть ху

vec2 pow (vec2 x, vec2 y)

vec3 pow (vec3 x. vec3 y)

vec4 pow (vec4 x, vec4 y)

float exp2 (float x)

Возвращает значение 2 в степени х, то есть 2х

vec2 exp2 (vec2 x)

vec3 exp2 (vec3 x)

vec4 exp2 (vec4 x)

Таблица 5.2 (продолжение)

Синтаксис

Описание

float log2 (float х)

Возвращает логарифм с основанием 2 от х, то есть

vec2 logZ (vec2 х)

возвращает значение у, удовлетворяющее

vec3 1од2 (vec3 х)

уравнению х= 2 у

vec4 1од2 (vec4 х)

float sqrt (float x)

Возвращает положительное значение квадратного

vec2 sqrt (vec2 x)

корня из X

vec3 sqrt (vec3 x)

vec4 sqrt (,vec4 x)

float inversesqrt (float x)

Возвращает обратное положительному значение

vec2 inversesqrt (vec2 x)

квадратного корня из х

vec3 inversesqrt (vec3 x)

vec4 Inversesqrt (vec4 x)

5.3. Общие функции Общие функции могут использоваться и вершинным, и фрагментиым шейдерами. Все они работают с аргументами покомпонентно (табл. 5.3).

Таблица 5.3. Общие функции

Синтаксис Описание

float abs (float х)

Возвращает x, если x> 0; в противном случае

vec2 abs (vec2 x)

возвращает -х

vec3 abs (vec3 x)

vec4 abs Cvec4 x)

float sign (float x)

Возвращает 1,0, если х> 0, 0,0, если х= 0, -1,0,

vec2 sign (vec? x)

если х< 0

vee3 sign (vec3 x)

vec4 sign (vec4 x)

float floor (float x)

Возвращает значение ближайшего целого числа,

vec2 floor (vec2 x)

меньшего или равного х

vec3 floor (vec3 x)

vec4 floor (vec4 x)

float ceil (float x)

Возвращает значение ближайшего целого числа,

vec2 ceil (vec2 x)

большего или равного х

vee3 ceil (vec3 x)

vec4 ceil (vec4 x)

float fract (float x)

Возвращает х- floor(jc)

vec2 fract (vec2 x)

vec3 fract (vec3 x)

vec4 fract (vec4 x)

float mod {float x, float y)

Модуль. Возвращает х- у- f[oor{x!y) для каждого

vec2 mod (vec2 x. float y)

компонента х, используя число с плавающей

vec3 mod (vec3 x. float у)

запятой у

vec4 mod (vec4 x, float у)

vec2 mod (vec2 x. vec2 y)

Модуль. Возвращает х- у - floor (х/у) для каждого

vec3 mod (vsc3 x. vec3 y)

компонента х, используя соответствующий

vec4 mod (vec4 x. vec4 y)

компонент у

Синтаксис

Описание

'float min (float x, float у)

Возвращает у, если у < лг; в противном случае возвра

■vec2 min (vec2 x, vec2 y)

щает X

ve:3 min (vec3 к. vec3 y)

«4 min (vec4 x. vec4 y)

vec2 min (vec2 x, float y)

Возвращает минимум для каждого компонента х, сопо

vec3 min (vec3 x. float y)

ставляемого с числом с плавающей запятой у

vec4 min (vec4 x. float y)

float max (float x. float у)

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

Ш2 max (vec2 x, vec2 y)

щает X

vec3 max (vec3 x, vec3 y)

vec4 max (vec4 x, vec4 y)

vec2 max (vec2 x. float у)

Возвращает максимум для каждого компонента х, сопо

йэсЗ max (vec3 x. float у)

ставляемого с числом с плавающей запятой у

vec4 max (vec4 x. float y)

float clamp (float x. float minVal,

Возвращает min(max(*, minVal), maxVal) для каждого

float maxVal)

компонента х, используя числа с плавающей запятой

y.ec2 clamp Cvec2 x. float minVal.

minVal и maxVal

float maxVal) vec3 clamp (vec3 x,

float minVal, float maxVal)

vec4 clamp (vec4 x, float minVal.

float maxVal)

vec2 clamp (vec2 x. vec2 minVal,

Возвращает покомпонентный результат

vec2 maxVal)

min(max(A, minVal), maxVal)

vec3 clamp (vec3 x. vec3 minVal,

vec3 maxVal)

vec4 cl amp (vec4 x. vec4 minVal,

vec4 maxVal)

float mix (float x. float y,

Возвращает х- (1,0 - а) + у- а, то есть линейное

float a)

сочетание хи ус использованием числа с плавающей

vec2 mix (vec2 x. vec2 y,

запятой а. Значение а не ограничено диапазоном [0,1]

float a)

vec3 mix (vec3 x, vec3 y,

float a)

vec4 mix (vec4 x, vec4 y.

float a)

vec2 mix (vec2 x. vec2 y, vec2 a)

Возвращает покомпонентный результат х- (1,0 -«?)+

vec3 mix (vec3 x. vec3 y, vec3 a)

+ у - а, то есть линейное сочетание векторов хи у

vec4 mix (vec4 x, vec4 y. vec4 a)

с использованием вектора а. Значение а не ограничено

диапазоном [0,1]

float step (float edge, float x)

Возвращает 0, если х< edge; в противном случае

vec2 step (vec2 edge. vec2 x)

возвращает 1,0

vec3 step (vec3 edge. vec3 x)

vec4 step (vec4 edge. vec4 x)

float smoothstep (float edgeO,

Возвращает 0, если *-<edge0, и 1,0, если > edgel,

float edgel. float x)

и выполняет плавную интерполяцию Хермита между 0

vec2 smoothstep (vec2 edged.

и 1 при edgeO < х< edgel

vec2 edgel. vec2 x)

vec3 smoothstep (vec3 edgeO.

vec3 edgel. vec3 x)

vec4 smoothstep Cvee4 edgeO.

vec4 edgel. vec4 x)

Эти функции полезны в целом, кроме того, многие из них могут пригодиться и для создания интересных шейдеров, как будет видно в последующих главах.


⇐ вернуться назад | | далее ⇒