Функция ftransform предназначена для вычисления gl_Position таким образом:

gl_Position = ftransformO

Она преобразует значение glj/ertex, используя текущую матрицу модели-вида, чтобы вычислить для gl _Posi ti on значение, идентичное тому, что было бы вычислено с помощью стандартных операций OpenGL. Эта функция используется, например, когда приложение обрабатывает одни и те же геометрические фигуры за несколько проходов, и один проход выполняется с помощью стандартных операций, а другой - с использованием программируемых процессоров.

5.5. Матричные функции Матричные функции могут вызываться как из вершинных, так и из фрагментных шейдеров (табл. 5.5).

ПримечаниеЧтобы получить результат математического умножения матриц, следует использовать оператор умножения (*).

Встроенные функции

Таблица 5,5. Матричные функции

Синтаксис

Описание

таі2 та1:п"хсопіршИ

Умножает матрицу л-на матрицу /покомпонентно,

таі2 х, таЬ2 у)

то есть, твиК [г][Л является скалярным

таіЗ ш№хсояртии

произведением х[Ц[/\ на /[<][;'].

тЬЗ х. таї-З у)

таЬ4 П1atгi хсотртиі t

таі4 х. таі4 у)

Эти функции выполняют покомпонентное умножение двух матриц. Например, результат вызова функции таІтіхсотрглиН с двумя ЗО-матрицами х и у будет выглядеть так:

Обычно это не те действия над матрицами, которые необходимы для преобразований. Нужно использовать оператор умножения (*), чтобы выполнить математическое умножение матриц: лпаіЗ х. у. пемпат.: пемгнг = х * у: При этом будет выполняться следующая операция:

Функции отношения векторов

5.6. Функции отношения векторов Операторы равенства и отношения (<, <=, >, >=, ==,. 1=) определены таким образом, чтобы возвращать скалярные логические значения, они могут использоваться как из вершинных, так и из фрагментных шейдеров. Для векторов следует воспользоваться одной из перечисленных далее встроенных функций (табл. 5.6).

5,6. Функции отношения векторов Таблица 5.6. Функции отношения векторов

Синтаксис

Описание

Ьуєсй lessThan(vec2 x. vec2 y)

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

bvec3 lessThan(vec3 x. vec3 y)

сравнения х < у

bvec4 lessThan(vec4 x. vec4 y)
bvec2 lessThan(ivec2 x. ivec2 y)
bvec3 lessThandvecS x, ivec3 y)
bvec4 lessThan(ivec4 x, ivec4 y)
byec2 lessThanEqual(vec2 x, vec2 y)

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

bvec3 lessThanEquaKvec3 x, vec3 y)

сравнения х< у

bvec4 lessThanEqual(vec4 x. vec4 y)
bvec2 lessThanEquaKivec2 x. ivec2 y)
bvec3 lessThanEqual(ivec3 x, ivec3 y)
by.ec4 lessThanEquaKivec4 x, ivec4 y)
bvec2 greaterThan(vec2 x. vec2 y)

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

bvec3 greaterThan(vec3 x. vec3 y)

сравнения х> у

b.vec4 greaterThan(vec4 x. vec4 y)
bvec2 greaterThan(ivec2 x. ivec2 y)
.bvec3 greaterThan(ivec3 x, ivec3 y)
bvec4 greaterThan(ivec4 x. ivec4 y\
bvec2 greaterThanEqual(vec2 x.

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

vec2 y)

сравнения x^l у

bvec3 greaterThanEqual(vec3 x. vec3 y)
bvec4 greaterThanEqual(vec4 x. vec4 y)
bvec? greaterThanEqualfіvec2 x.
1vec2 y)
bvecS greaterThanEquaKivec3 x.ivec3 y)
bvec4 greaterThanEqual(іvec4 x.ivec4 y)
bvec2 equal(vec2 x, vec2 y)

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

bvec3 equal(vec3 x. vec3 y)

сравнения х~ у

bvec4 equal(vec4 x. vec4 y)
byec2 equal (ivec2 x, ivec2 y)
bvec3 equal(ivec3 x. ivec3 y)
bvec4 equa!(iveC4 x. ivec4 y)
bvec2 equal(bvec2 x. bvec2 y)

ЬуесЗ equal(ЬуесЗ x. bvec3 y)

bvec4 equal(bvec4 x. bvec4 y)
bvec2 notEqual(vec2 x. yec2 y)

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

ЬуєєЗ notEqual(vec3 x. vec3 y)

сравнения Jrt = у

bvec4 notEqual(vec4 x. vec4 y)
bvec2 notEqual(іvec2 x. ivec2 y)
bvec3 notEqual(іvec3 x. ivec3 y)
bvec4 notEqual(ivec4 x. ivec4 y)
byec2 notEquaUbvec2 x. bvec2 y)
bvec3 notEqual(bvec3 x, bvec3 y)
bvec4 notEqual(bvec4 x. bvec4 y)
bool any(bve.c2 x)

Возвращает true, если хотя бы один компонент х

bool any(bvec3 x)

Возвращает true, если хотя бы один компонент х

bool any(bvec4 x)

является true

bool all(bv'ec2 x)

Возвращает true, только если все компоненты х- true

bool alUbvec3 x)
bool all(bvec4 x)
bvec2 not(bvec2 x)

Возвращает результаты покомпонентного отрицания х

bvec3 not(bvec3 x)
bvec4 not(bvec4 x)

Встроенные функции


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