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

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

Синтаксис

Описание

float abs (float x)

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

vec2 abs Cvec2 x)

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

vec3 abs (vec3 x)
vec4 abs (vec4 x)
float sign (float x)

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

vec2 sign (vec2 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)

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

vec3 ceil (vec3 x)
vec4 ceil (vec4 x)
float fract (float x)

Возвращает х- ЯоогОО

vec2 fract (vec2 x)
vec3 fract (vec3 x)
vec4 fract (vec4 x)
float mod (float x. float y)

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

vec2 mod (vec2 x. float y)

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

vec3 mod (vec3 x. float у)

запятой у

vec4 mod (vec4 x, float y)
vec2 mod (vec2 x. vec2 y)

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

vec3 mod (vec3 x. vec3 y)

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

vec4 mod (vec4 x. vec4 y)

компонент у

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

Синтаксис

Описание

float mfn (float x, float у) vec2 min (vec2 x, vec2 y) vec3 min (vec3 x, vec3 y) vecl min (vec4 x. vec4 y)

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

vsc2 min (vec2 x. float y) vec3 min (vec3 x. float y) vec4 min (vec4 x. float y)

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

float max (float x, float y) ,vec2 max (vec2 x. vec2 y) vec3 max (vec3 x. vec3 y) vec4 max (vec4 x. vec4 y)

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

vec2 max (vec2 x, float y) vec3 max (vec3 x. float y) vec4 max (vec4 x. float у)

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

float clamp (float x. float minVa 1. float maxVal') v.ec2 clamp (vec2 x. float minVal. float rnaxVal)vec3 clamp (vec3 x, float minVal, float maxVal) vec4 clamp (vec4 x. float minVal. float maxVal)

Возвращает min(max(>r, minVal), maxVal) для каждого компонента х, используя числа с плавающей запятой minVal и maxVal

vec2 clamp (vec2 x. vec2 minVal. vec2 maxVal) vec3 clamp (vec3 x. vec3 minVal. vec3 maxVal) vec4 clasitp (vec4 x. vec4 minVal. vec4 maxVal)

Возвращает покомпонентный результат min(maxl>, minVal), maxVal)

float mix (float x. float y. float a) vec2 mix (vec2 x. vec2 y. float a) vec3 mix (vec3 x, vec3 y, float a) vec4 mix (vec4 x. vec4 y. float a)

Возвращает х- (1,0 - а) + у- а, то есть линейное сочетание хул ус использованием числа с плавающей запятой а. Значение а не ограничено диапазоном [0,1]

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

Возвращает покомпонентный результат х (1,0 - а)+ + у - а, то есть линейное сочетание векторов лги у с использованием вектора а. Значение а не ограничено диапазоном [0,1]

float step (float edge, float x) vec2 step (vec2 edge. vec2 x) vec3 step (vec3 edge. vec3 x) vec4 step (vec4 edge. vec4 x)

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

float smoothstep (float edgeO, float edgel. float x) vec2 smoothstep (vec2 edged. vec2 edgel. vec2 x) vec3 smoothstep (vec3 edgeO, vec3 edgel. vec3 x) vec4 smoothstep (vec4 edgeO. vec4 edgel. vec4 x)

Возвращает 0, если >r<edge0, и 1,0, если > edgel, и выполняет плавную интерполяцию Хермитз между 0

и 1 при edgeO < х< edgel

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


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