Встроенные функции
Godot поддерживает большое количество встроенных функций, примерно соответствующих спецификации GLSL ES 3.0.
Примечание
Следующие псевдонимы типов используются только в документации для сокращения количества повторяющихся объявлений функций. Каждый из них может ссылаться на любой из нескольких реальных типов.
псевдоним |
фактические типы |
псевдоним документации glsl |
|---|---|---|
vec_type |
float, vec2, vec3, или vec4 |
genType |
vec_int_type |
int, ivec2, ivec3, или ivec4 |
genIType |
vec_uint_type |
uint, uvec2, uvec3, или uvec4 |
genUType |
vec_bool_type |
bool, bvec2, bvec3, или bvec4 |
genBType |
mat_type |
mat2, mat3, или mat4 |
mat |
gvec4_type |
vec4, ivec4, или uvec4 |
gvec4 |
gsampler2D |
sampler2D, isampler2D, или uSampler2D |
gsampler2D |
gsampler2DArray |
sampler2DArray, isampler2DArray, или uSampler2DArray |
gsampler2DArray |
gsampler3D |
sampler3D, isampler3D, или uSampler3D |
gsampler3D |
Если какой-либо из них указан для нескольких параметров, все они должны быть одного типа, если не указано иное.
Примечание
Многие функции, принимающие один или несколько векторов или матриц, выполняют описанную функцию над каждым компонентом вектора/матрицы. Вот несколько примеров:
Операция |
Эквивалентная скалярная операция |
|---|---|
|
|
|
|
|
|
|
|
|
|
В разделе 5.10 "Операции с векторами и матрицами" Спецификации языка GLSL говорится следующее:
За некоторыми исключениями, операции выполняются покомпонентно. Обычно, когда оператор работает с вектором или матрицей, он действует независимо над каждым компонентом вектора или матрицы, покомпонентно. [...] Исключениями являются умножение матрицы на вектор, умножение вектора на матрицу и умножение матрицы на матрицу. Эти операции не выполняются покомпонентно, а выполняют корректное линейное алгебраическое умножение.
Эти описания функций адаптированы и изменены из официальной документации OpenGL, первоначально опубликованной Khronos Group под лицензией Open Publication License. Каждое описание функции ссылается на соответствующую официальную документацию OpenGL. Историю изменений этой страницы можно найти на GitHub.
Тригонометрические функции
Тип возврата |
Функция |
Описание / Возвращаемое значение |
|---|---|---|
vec_type |
radians(vec_type градусы) |
Преобразование градусов в радианы. |
vec_type |
degrees(vec_type радианы) |
Преобразование радиан в градусы. |
vec_type |
sin(vec_type x) |
Синус. |
vec_type |
cos(vec_type x) |
Косинус. |
vec_type |
tan(vec_type x) |
Тангенс. |
vec_type |
asin(vec_type x) |
Арк-синус. |
vec_type |
acos(vec_type x) |
Арк-косинус. |
vec_type
vec_type
|
Арк-тангенс. |
|
vec_type |
sinh(vec_type x) |
Гиперболический синус. |
vec_type |
cosh(vec_type x) |
Гиперболический косинус. |
vec_type |
tanh(vec_type x) |
Гиперболический тангенс. |
vec_type |
asinh(vec_type x) |
Дугогиперболический синус. |
vec_type |
acosh(vec_type x) |
Арк-гиперболический косинус. |
vec_type |
atanh(vec_type x) |
Арк-гиперболический тангенс. |
Описания тригонометрических функций
vec_type radians(vec_type градусы) 🔗
Преобразует величину, указанную в градусах, в радианы по формуле
градусы * (ПИ / 180).
- парам градусов:
Величина в градусах, которую необходимо перевести в радианы.
- return:
Входные
градусыпреобразуются в радианы.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/radians.xhtml
vec_type degrees(vec_type radians) 🔗
Преобразует величину, указанную в радианах, в градусы по формуле
радианы * (180 / ПИ)
- параметр радианы:
Величина в радианах, которую необходимо перевести в градусы.
- return:
Входные данные
радианыпреобразованы в градусы.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/degrees.xhtml
vec_type sin(vec_type угол) 🔗
Возвращает тригонометрический синус
угла.
- угол параметра:
Величина в радианах, синус которой вычисляется.
- return:
Синус
угла.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/sin.xhtml
vec_type cos(vec_type угол) 🔗
Возвращает тригонометрический косинус
угла.
- угол параметра:
Величина в радианах, косинус которой вычисляется.
- return:
Косинус
угла.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/cos.xhtml
vec_type tan(vec_type угол) 🔗
Возвращает тригонометрический тангенс
angle.
- угол параметра:
Величина в радианах, тангенс которой вычисляется.
- return:
Тангенс
angle.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/tan.xhtml
vec_type asin(vec_type x) 🔗
Арксинус, или арксинус. Вычисляет угол, синус которого равен
xи находится в диапазоне[-PI/2, PI/2]. Результат не определён, еслиx < -1илиx > 1.
- параметр x:
Значение, арксинус которого требуется вернуть.
- return:
Угол, тригонометрический синус которого равен
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/asin.xhtml
vec_type acos(vec_type x) 🔗
Арккосинус, или обратный косинус. Вычисляет угол, косинус которого равен
xи находится в диапазоне[0, PI].Результат не определен, если
x < -1илиx > 1.
- параметр x:
Значение, арк-косинус которого требуется вернуть.
- return:
Угол, тригонометрический косинус которого равен
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/acos.xhtml
vec_type atan(vec_type y_over_x) 🔗
Вычисляет арктангенс по значению тангенса
y/x.Примечание
Из-за неоднозначности знака функция не может точно определить, в какой квадрант попадает угол, только по значению его тангенса. Чтобы узнать квадрант, используйте atan(vec_type y, vec_type x).
- параметр y_over_x:
Дробь, арк-тангенс которой требуется вернуть.
- return:
Тригонометрический арктангенс
y_over_xнаходится в диапазоне[-PI/2, PI/2].https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/atan.xhtml
vec_type atan(vec_type y, vec_type x) 🔗
Вычисляет арктангенс по числителю и знаменателю. Знаки
yиxиспользуются для определения квадранта, в котором находится угол. Результат не определён, еслиx == 0.Эквивалентно atan2() в GDScript.
- параметр y:
Числитель дроби, арк-тангенс которой требуется вернуть.
- параметр x:
Знаменатель дроби, арк-тангенс которой требуется вернуть.
- return:
Тригонометрический арктангенс
y/xнаходится в диапазоне[-PI, PI].https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/atan.xhtml
vec_type sinh(vec_type x) 🔗
Вычисляет гиперболический синус с помощью
(e^x - e^-x)/2.
- параметр x:
Значение, гиперболический синус которого требуется вернуть.
- return:
Гиперболический синус
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/sinh.xhtml
vec_type cosh(vec_type x) 🔗
Вычисляет гиперболический косинус с помощью
(e^x + e^-x)/2.
- параметр x:
Значение, гиперболический косинус которого требуется вернуть.
- return:
Гиперболический косинус
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/cosh.xhtml
vec_type tanh(vec_type x) 🔗
Вычисляет гиперболический тангенс с помощью
sinh(x)/cosh(x).
- параметр x:
Значение, гиперболический тангенс которого требуется вернуть.
- return:
Гиперболический тангенс
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/tanh.xhtml
vec_type asinh(vec_type x) 🔗
Вычисляет арк-гиперболический синус
x, или обратный емуsinh.
- параметр x:
Значение, гиперболический синус дуги которого требуется вернуть.
- return:
Арк-синус гиперболического числа
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/asinh.xhtml
vec_type acosh(vec_type x) 🔗
Вычисляет арк-гиперболический косинус
xили неотрицательный обратный косинусcosh. Результат не определён, еслиx < 1.
- параметр x:
Значение, арк-гиперболический косинус которого требуется вернуть.
- return:
Арк-гиперболический косинус
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/acosh.xhtml
vec_type atanh(vec_type x) 🔗
Вычисляет аркгиперболический тангенс
xили обратный емуtanh. Результат не определён, еслиabs(x) > 1.
- параметр x:
Значение, дугу арк-гиперболический тангенс для возврата.
- return:
Арк-гиперболический тангенс
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/atanh.xhtml
Экспоненциальные и математические функции
Тип возврата |
Функция |
Описание / Возвращаемое значение |
|---|---|---|
vec_type |
pow(vec_type x, vec_type y) |
Power (не определена, если |
vec_type |
exp(vec_type x) |
Экспонента. |
vec_type |
exp2(vec_type x) |
Экспонента по основанию 2. |
vec_type |
log(vec_type x) |
Натуральный (по основанию e) логарифм. |
vec_type |
log2(vec_type x) |
Логарифм по основанию 2. |
vec_type |
sqrt(vec_type x) |
Квадратный корень. |
vec_type |
inversesqrt(vec_type x) |
Обратный квадратный корень. |
vec_type
vec_int_type
|
Абсолютное значение (возвращает положительное значение если отрицательно). |
|
vec_type |
sign(vec_type x) |
Возвращает |
vec_int_type |
sign(vec_int_type x) |
Возвращает |
vec_type |
floor(vec_type x) |
Округляет до целого числа, указанного ниже. |
vec_type |
round(vec_type x) |
Округляет до ближайшего целого числа. |
vec_type |
roundEven(vec_type x) |
Округляет до ближайшего четного целого числа. |
vec_type |
trunc(vec_type x) |
Усечение (trunc(123.56) = 123). |
vec_type |
ceil(vec_type x) |
Округляет до указанного выше целого числа. |
vec_type |
fract(vec_type x) |
Дробная часть (возвращает |
vec_type
vec_type
|
Модуль (остаток от деления). |
|
vec_type |
modf(vec_type x, out vec_type i) |
Дробь от |
vec_type
vec_type
vec_int_type
vec_int_type
vec_uint_type
vec_uint_type
|
Наименьшее значение между |
|
vec_type
vec_type
vec_int_type
vec_int_type
vec_uint_type
vec_uint_type
|
Наибольшее значение между |
|
vec_type
vec_type
vec_int_type
vec_int_type
vec_uint_type
vec_uint_type
|
Зажимы |
|
vec_type
vec_type
vec_type
|
Линейная интерполяция между |
|
vec_type |
fma(vec_type a, vec_type b, vec_type c) |
Объединенная операция умножения-сложения: |
vec_type
vec_type
|
|
|
vec_type
vec_type
|
smoothstep(vec_type a, vec_type b, vec_type c)
smoothstep(float a, float b, vec_type c)
|
Эрмитова интерполяция между |
vec_bool_type |
isnan(vec_type x) |
Возвращает |
vec_bool_type |
isinf(vec_type x) |
Возвращает |
vec_int_type |
floatBitsToInt(vec_type x) |
Побитовое копирование |
vec_uint_type |
floatBitsToUint(vec_type x) |
Побитовое копирование |
vec_type |
intBitsToFloat(vec_int_type x) |
Копирование битов |
vec_type |
uintBitsToFloat(vec_uint_type x) |
Побитовое копирование |
Описания экспоненциальных и математических функций
vec_type pow(vec_type x, vec_type y) 🔗
Возводит
xв степеньy.Результат не определен, если
x < 0или еслиx == 0иy <= 0.
- параметр x:
Значение, которое необходимо возвести в степень
y.- параметр y:
Степень, в которую будет возведено
x.- return:
Значение
x, возведенное в степеньy.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/pow.xhtml
vec_type exp(vec_type x) 🔗
Возводит
eв степеньx, или в натуральную степень.Эквивалентно
pow(e, x).
- параметр x:
Значение, которое необходимо возвести в степень.
- return:
Естественное возведение в степень
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/exp.xhtml
vec_type exp2(vec_type x) 🔗
Возводит
2в степеньx.Эквивалентно
pow(2.0, x).
- параметр x:
Значение степени, в которую будет возведено
2.- return:
2, возведенное в степень x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/exp2.xhtml
vec_type log(vec_type x) 🔗
Возвращает натуральный логарифм числа
x, то есть значениеy, удовлетворяющее условиюx == pow(e, y). Результат не определён, еслиx <= 0.
- параметр x:
Значение, от которого следует взять натуральный логарифм.
- return:
Натуральный логарифм
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/log.xhtml
vec_type log2(vec_type x) 🔗
Возвращает двоичный логарифм числа
x, то есть значениеy, удовлетворяющее условиюx == pow(2, y). Результат не определён, еслиx <= 0.
- параметр x:
Значение, из которого следует взять логарифм по основанию 2.
- return:
Логарифм числа
xпо основанию 2.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/log2.xhtml
vec_type sqrt(vec_type x) 🔗
Возвращает квадратный корень числа
x. Результат не определён, еслиx < 0.
- параметр x:
Значение, из которого следует извлечь квадратный корень.
- return:
Квадратный корень из
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/sqrt.xhtml
vec_type inversesqrt(vec_type x) 🔗
Возвращает значение, обратное квадратному корню
x, или1.0 / sqrt(x). Результат не определён, еслиx <= 0.
- параметр x:
Значение, из которого следует извлечь обратный квадратный корень.
- return:
Обратное значение квадратного корня
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/inversesqrt.xhtml
vec_type abs(vec_type x) 🔗
vec_int_type abs(vec_int_type x) 🔗
Возвращает абсолютное значение
x. Возвращаетx, еслиxположительно, в противном случае возвращает-1 * x.
- параметр x:
Значение, абсолютное значение которого необходимо вернуть.
- return:
Абсолютное значение
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/abs.xhtml
vec_type sign(vec_type x) 🔗
vec_int_type sign(vec_int_type x) 🔗
Возвращает
-1, еслиx < 0,0, еслиx == 0, и1, еслиx > 0.
- параметр x:
Значение, из которого извлекается знак.
- return:
Знак
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/sign.xhtml
vec_type floor(vec_type x) 🔗
Возвращает значение, равное ближайшему целому числу, которое меньше или равно
x.
- параметр x:
Округление значения вниз.
- return:
Ближайшее целое число, меньшее или равное
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/floor.xhtml
vec_type round(vec_type x) 🔗
Округляет
xдо ближайшего целого числа.Примечание
Округление значений с дробной частью
0.5зависит от реализации. Это включает в себя возможность того, чтоround(x)вернёт то же значение, что иroundEven(x)для всех значенийx.
- параметр x:
Значение, которое необходимо округлить.
- return:
Округленное значение.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/round.xhtml
vec_type roundEven(vec_type x) 🔗
Округляет
xдо ближайшего целого числа. Значение с дробной частью0.5всегда округляется до ближайшего четного целого числа. Например,3.5и4.5округляются до4.0.
- параметр x:
Значение, которое необходимо округлить.
- return:
Округленное значение.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/roundEven.xhtml
vec_type trunc(vec_type x) 🔗
Усекает
x. Возвращает значение, равное ближайшему целому числу кx, абсолютное значение которого не превышает абсолютное значениеx.
- параметр x:
Значение для оценки.
- return:
Усеченное значение.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/trunc.xhtml
vec_type ceil(vec_type x) 🔗
Возвращает значение, равное ближайшему целому числу, которое больше или равно
x.
- параметр x:
Значение для оценки.
- return:
Предельно допустимое значение.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/ceil.xhtml
vec_type fract(vec_type x) 🔗
Возвращает дробную часть
x.Рассчитывается как
x - floor(x).
- параметр x:
Значение для оценки.
- return:
Дробная часть
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/fract.xhtml
vec_type mod(vec_type x, vec_type y) 🔗
vec_type mod(vec_type x, float y) 🔗
Возвращает значение
x по модулю y. Иногда его также называют остатком.Вычисляется как
x - y * floor(x/y).
- параметр x:
Значение для оценки.
- return:
Значение
x по модулю y.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/mod.xhtml
vec_type modf(vec_type x, вне vec_type i) 🔗
Разделяет число с плавающей точкой
xна целую и дробную части.Функция возвращает дробную часть числа. Целая часть (в виде числа с плавающей точкой) возвращается в выходном параметре
i.
- параметр x:
Значение, которое необходимо отделить.
- параметр out i:
Переменная, которая получает целую часть
x.- return:
Дробная часть числа.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/modf.xhtml
vec_type min(vec_type a, vec_type b) 🔗
vec_type min(vec_type a, float b) 🔗
vec_int_type min(vec_int_type a, vec_int_type b) 🔗
vec_int_type min(vec_int_type a, int b) 🔗
vec_uint_type min(vec_uint_type a, vec_uint_type b) 🔗
vec_uint_type min(vec_uint_type a, uint b) 🔗
Возвращает минимум двух значений
aиb.Возвращает
b, еслиb < a, в противном случае возвращаетa.
- параметр а:
Первое значение для сравнения.
- параметр b:
Второе значение для сравнения.
- return:
Минимальное значение.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/min.xhtml
vec_type max(vec_type a, vec_type b) 🔗
vec_type max(vec_type a, float b) 🔗
vec_uint_type max(vec_uint_type a, vec_uint_type b) 🔗
vec_uint_type max(vec_uint_type a, uint b) 🔗
vec_int_type max(vec_int_type a, vec_int_type b) 🔗
vec_int_type max(vec_int_type a, int b) 🔗
Возвращает максимальное из двух значений
aиb.Возвращает
b, еслиb > a, в противном случае возвращаетa.
- параметр а:
Первое значение для сравнения.
- параметр b:
Второе значение для сравнения.
- return:
Максимальное значение.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/max.xhtml
vec_type clamp(vec_type x, vec_type minVal, vec_type maxVal) 🔗
vec_type clamp(vec_type x, float minVal, float maxVal) 🔗
vec_int_type clamp(vec_int_type x, vec_int_type minVal, vec_int_type maxVal) 🔗
vec_int_type clamp(vec_int_type x, int minVal, int maxVal) 🔗
vec_uint_type clamp(vec_uint_type x, vec_uint_type minVal, vec_uint_type maxVal) 🔗
vec_uint_type clamp(vec_uint_type x, uint minVal, uint maxVal) 🔗
Возвращает значение
x, ограниченное диапазоном отminValдоmaxVal.Возвращаемое значение вычисляется как
min(max(x, minVal), maxVal).
- параметр x:
Значение, которое необходимо ограничить.
- параметр minVal:
Нижняя граница диапазона, в котором ограничивается
x.- параметр maxVal:
Верхний предел диапазона, в который следует ограничить
x.- return:
Зафиксированное значение.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/clamp.xhtml
vec_type mix(vec_type a, vec_type b, vec_type c) 🔗
vec_type mix(vec_type a, vec_type b, float c) 🔗
Выполняет линейную интерполяцию между
aиb, используяcв качестве веса между ними.Вычисляется как
a * (1 - c) + b * c.Эквивалентно lerp() в GDScript.
- параметр а:
Начало диапазона, в котором следует интерполировать.
- параметр b:
Конец диапазона, в котором следует выполнить интерполяцию.
- параметр c:
Значение, используемое для интерполяции между
aиb.- return:
Интерполированное значение.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/mix.xhtml
vec_type mix(vec_type a, vec_type b, vec_bool_type c) 🔗
Выбирает значение
aилиbна основе значенияc. Если компонентcимеет значение "false", возвращается соответствующий компонентa. Если компонентcимеет значение "true", возвращается соответствующий компонентb. Невыбранные компонентыaиbмогут быть недопустимыми значениями с плавающей запятой и не повлияют на результаты.Если
a,bиcявляются векторными типами, то операция выполняется покомпонентно. т.е.mix(vec2(42, 314), vec2(9.8, 6e23), bvec2(true, false)))вернетvec2(9.8, 314).
- параметр а:
Значение возвращается, когда
cимеет значение false.- параметр b:
Значение возвращается, когда
cравно true.- параметр c:
Значение, используемое для выбора между
aиb.- return:
Интерполированное значение.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/mix.xhtml
vec_type fma(vec_type a, vec_type b, vec_type c) 🔗
Выполняет, где это возможно, объединённую операцию умножения и сложения, возвращая
a * b + c. В случаях, когда возвращаемое значение в конечном итоге используется переменной, объявленной как точная:
fma()считается одной операцией, тогда как выражениеa * b + c, используемое переменной, объявленной как точная, считается двумя операциями.Точность
fma()может отличаться от точности выраженияa * b + c.
fma()будет вычисляться с той же точностью, что и любой другойfma(), используемый точной переменной, давая инвариантные результаты для тех же входных значений a, b и c.В противном случае, при отсутствии точного потребления, нет особых ограничений на количество операций или разницу в точности между
fma()и выражениемa * b + c.
- параметр а:
Первое значение, которое необходимо умножить.
- параметр b:
Второе значение, которое необходимо умножить.
- параметр c:
Значение, которое необходимо добавить к результату.
- return:
Значение
a * b + c.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/fma.xhtml
vec_type step(vec_type a, vec_type b) 🔗
vec_type step(float a, vec_type b) 🔗
Генерирует ступенчатую функцию путем сравнения "b" с "a".
Эквивалентно
if (b < a) { return 0.0; } else { return 1.0; }. Для элемента "i" возвращаемого значения возвращается 0.0, если b[i] < a[i], и 1.0 в противном случае.
- параметр а:
Местоположение края ступенчатой функции.
- параметр b:
Значение, которое будет использоваться для генерации ступенчатой функции.
- return:
0.0или1.0.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/step.xhtml
vec_type smoothstep(vec_type a, vec_type b, vec_type c) 🔗
vec_type smoothstep(float a, float b, vec_type c) 🔗
Выполняет плавную интерполяцию Эрмита между
0и1при a < c < b. Это полезно в случаях, когда требуется пороговая функция с плавным переходом.Smoothstep (Плавный шаг) эквивалентен:
vec_type t; t = clamp((c - a) / (b - a), 0.0, 1.0); return t * t * (3.0 - 2.0 * t);Результаты не определены, если
a >= b.
- параметр а:
Значение нижнего края функции Эрмита.
- параметр b:
Значение верхнего края функции Эрмита.
- параметр c:
Исходное значение для интерполяции.
- return:
Интерполированное значение.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/smoothstep.xhtml
vec_bool_type isnan(vec_type x) 🔗
Для каждого элемента i результата возвращает
true, если x[i] является положительным или отрицательным числом с плавающей точкой NaN (не числом), и false в противном случае.
- параметр x:
Значение для проверки на NaN.
- return:
trueилиfalse.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/isnan.xhtml
vec_bool_type isinf(vec_type x) 🔗
Для каждого элемента "i" результата возвращает
true, если x[i] — положительное или отрицательное число с плавающей точкой, и "false" в противном случае.
- параметр x:
Значение для проверки на бесконечность.
- return:
trueилиfalse.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/isinf.xhtml
vec_int_type floatBitsToInt(vec_type x) 🔗
Возвращает кодировку параметров с плавающей точкой как
int.Представление на уровне битов с плавающей точкой сохраняется.
- параметр x:
Значение, кодировку которого с плавающей точкой требуется вернуть.
- return:
Кодировка
xс плавающей точкой.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/floatBitsToInt.xhtml
vec_uint_type floatBitsToUint(vec_type x) 🔗
Возвращает кодировку параметров с плавающей точкой как
uint.Представление на уровне битов с плавающей точкой сохраняется.
- параметр x:
Значение, кодировку которого с плавающей точкой требуется вернуть.
- return:
Кодировка
xс плавающей точкой.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/floatBitsToInt.xhtml
vec_type intBitsToFloat(vec_int_type x) 🔗
Преобразует битовое кодирование в значение с плавающей точкой. Противоположно floatBitsToInt<shader_func_floatBitsToInt>
Если кодировка
NaNпередана вx, сигнал не будет подан, а результирующее значение будет неопределенным.Если кодировка бесконечности с плавающей точкой передается в параметре
x, то полученное значение с плавающей точкой будет соответствующей (положительной или отрицательной) бесконечностью с плавающей точкой.
- параметр x:
Битовая кодировка, возвращаемая в виде значения с плавающей точкой.
- return:
Значение с плавающей точкой.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/intBitsToFloat.xhtml
vec_type uintBitsToFloat(vec_uint_type x) 🔗
Преобразует битовое кодирование в число с плавающей точкой. Противоположно floatBitsToUint<shader_func_floatBitsToUint>
Если кодировка
NaNпередана вx, сигнал не будет подан, а результирующее значение будет неопределенным.Если кодировка бесконечности с плавающей точкой передается в параметре
x, то полученное значение с плавающей точкой будет соответствующей (положительной или отрицательной) бесконечностью с плавающей точкой.
- параметр x:
Битовая кодировка, возвращаемая в виде значения с плавающей точкой.
- return:
Значение с плавающей точкой.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/intBitsToFloat.xhtml
Геометрические функции
float |
length(vec_type x) |
Длина вектора. |
float |
distance(vec_type a, vec_type b) |
Расстояние между векторами, т.е. |
float |
dot(vec_type a, vec_type b) |
Скалярное произведение. |
vec3 |
cross(vec3 a, vec3 b) |
Векторное произведение. |
vec_type |
normalize(vec_type x) |
Нармализация к единицы длины. |
vec3 |
reflect(vec3 I, vec3 N) |
Отражение. |
vec3 |
refract(vec3 I, vec3 N, float eta) |
Преломление. |
vec_type |
faceforward(vec_type N, vec_type I, vec_type Nref) |
Если |
mat_type |
matrixCompMult(mat_type x, mat_type y) |
Скалярное перемножение. |
mat_type |
outerProduct(vec_type столбец, vec_type строка) |
Матричное внешнее произведение. |
mat_type |
transpose(mat_type m) |
Транспонирование матрицы. |
float |
determinant(mat_type m) |
Матричный определитель. |
mat_type |
inverse(mat_type m) |
Обратная матрица. |
Описания геометрических функций
float length(vec_type x) 🔗
Возвращает длину вектора. т.е.
sqrt(x[0] * x[0] + x[1] * x[1] + ... + x[n] * x[n])
- параметр x:
Вектор
- return:
Длина вектора.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/length.xhtml
float distance(vec_type a, vec_type b) 🔗
Возвращает расстояние между двумя точками "a" и "b".
т.e.,
length(b - a);
- параметр а:
Первый пункт.
- параметр b:
Второй пункт.
- return:
Скалярное расстояние между точками
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/distance.xhtml
float dot(vec_type a, vec_type b) 🔗
Возвращает скалярное произведение двух векторов,
aиb. т.е.,a.x * b.x + a.y * b.y + ...
- параметр а:
Первый вектор.
- параметр b:
Второй вектор.
- return:
Скалярное произведение.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/dot.xhtml
vec3 cross(vec3 a, vec3 b) 🔗
Возвращает векторное произведение двух векторов. То есть:
vec2( a.y * b.z - b.y * a.z, a.z * b.x - b.z * a.x, a.x * b.z - b.x * a.y)
- параметр а:
Первый вектор.
- параметр b:
Второй вектор.
- return:
Перекрестное произведение
aиb.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/cross.xhtml
vec_type normalize(vec_type x) 🔗
Возвращает вектор с тем же направлением, что и
x, но длиной1.0.
- параметр x:
Вектор для нормализации.
- return:
Нормализованный вектор.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/normalize.xhtml
vec3 reflect(vec3 I, vec3 N) 🔗
Рассчитайте направление отражения для падающего вектора.
Для заданного вектора падения
Iи нормали поверхностиNфункция reflect возвращает направление отражения, рассчитанное какI - 2.0 * dot(N, I) * N.Примечание
Для достижения желаемого результата
Nследует нормализовать.
- параметр "I":
Вектор инцидента.
- параметр "N":
Нормальный вектор.
- return:
Вектор отражения.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/reflect.xhtml
vec3 refract(vec3 I, vec3 N, float eta) 🔗
Рассчитайте направление преломления для падающего вектора.
Для заданного вектора падения
I, нормали к поверхностиNи отношения показателей преломленияeta, функция reflect возвращает вектор преломленияR.
Rрассчитывается как:k = 1.0 - eta * eta * (1.0 - dot(N, I) * dot(N, I)); if (k < 0.0) R = genType(0.0); // or genDType(0.0) else R = eta * I - (eta * dot(N, I) + sqrt(k)) * N;Примечание
Для достижения желаемого результата входные параметры "I" и "N" должны быть нормализованы.
- параметр "I":
Вектор инцидента.
- параметр "N":
Нормальный вектор.
- параметр eta:
Отношение показателей преломления.
- return:
Вектор рефракции.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/refract.xhtml
vec_type faceforward(vec_type N, vec_type I, vec_type Nref) 🔗
Возвращает вектор, указывающий в том же направлении, что и другой вектор.
Ориентирует вектор так, чтобы он был направлен от поверхности, как определено его нормалью. Если
dot(Nref, I) < 0, функция faceforward возвращаетN, в противном случае возвращает-N.
- параметр "N":
Вектор для ориентации.
- параметр "I":
Вектор инцидента.
- параметр Nref:
Опорный вектор.
- return:
Ориентированный вектор.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/faceforward.xhtml
mat_type matrixCompMult(mat_type x, mat_type y) 🔗
Выполнить пок-омпонентное умножение двух матриц.
Выполняет по-компонентное умножение двух матриц, в результате чего получается матрица результата, где каждый компонент
result[i][j]вычисляется как скалярное произведениеx[i][j]иy[i][j].
- параметр x:
Первый матричный множитель.
- параметр y:
Второй матричный множитель.
- return:
Результирующая матрица.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/matrixCompMult.xhtml
mat_type outerProduct(vec_type column, vec_type row) 🔗
Вычислите внешнее произведение пары векторов.
Умножает ли линейную алгебраическую матрицу
столбец * строка, давая матрицу, количество строк которой равно количеству компонентов встолбце, а количество столбцов равно количеству компонентов встроке.
- параметр column (столбец):
Вектор-столбец для умножения.
- параметр row:
Вектор-строка для умножения.
- return:
Внешняя матрица продукта.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/outerProduct.xhtml
mat_type transpose(mat_type m) 🔗
Вычислить транспонирование матрицы.
- параметр m:
Матрица для транспонирования.
- return:
Новая матрица, являющаяся транспонированной входной матрицей
m.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/transpose.xhtml
float determinant(mat_type m) 🔗
Вычислить определитель матрицы.
- параметр m:
Матрица.
- return:
Определитель входной матрицы
m.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/determinant.xhtml
mat_type inverse(mat_type m) 🔗
Вычислить обратную матрицу.
Значения в возвращаемой матрице не определены, если
mявляется единственным или плохо обусловленным (почти единственным) числом.
- параметр m:
Матрица, к которой нужно взять обратную.
- return:
Новая матрица, являющаяся обратной входной матрицей
m.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/inverse.xhtml
Функции сравнения
vec_bool_type |
lessThan(vec_type x, vec_type y) |
Логическое сравнение векторов < int/uint/float. |
vec_bool_type |
greaterThan(vec_type x, vec_type y) |
Логическое сравнение векторов > int/uint/float. |
vec_bool_type |
lessThanEqual(vec_type x, vec_type y) |
Логическое сравнение векторов <= int/uint/float. |
vec_bool_type |
greaterThanEqual( vec_type x, vec_type y) |
Логическое сравнение векторов >= int/uint/float. |
vec_bool_type |
equal(vec_type x, vec_type y) |
Логическое сравнение векторов == int/uint/float. |
vec_bool_type |
notEqual(vec_type x, vec_type y) |
Логическое сравнение векторов != int/uint/float. |
bool |
any(vec_bool_type x) |
|
bool |
all(vec_bool_type x) |
|
vec_bool_type |
not(vec_bool_type x) |
Обратный логический вектор. |
Описания функций сравнения
vec_bool_type lessThan(vec_type x, vec_type y) 🔗
Выполняет component-wise сравнение «меньше чем» двух векторов.
- параметр x:
Первый вектор для сравнения.
- параметр y:
Второй вектор для сравнения.
- return:
Boolean вектор, в котором каждый элемент
iвычисляется какx[i] < y[i].https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/lessThan.xhtml
vec_bool_type greaterThan(vec_type x, vec_type y) 🔗
Выполняет component-wise сравнение двух векторов «больше чем».
- параметр x:
Первый вектор для сравнения.
- параметр y:
Второй вектор для сравнения.
- return:
Булев вектор, в котором каждый элемент
iвычисляется какx[i] > y[i].https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/greaterThan.xhtml
vec_bool_type lessThanEqual(vec_type x, vec_type y) 🔗
Выполняет component-wise сравнение двух векторов по принципу «меньше или равно».
- параметр x:
Первый вектор для сравнения.
- параметр y:
Второй вектор для сравнения.
- return:
A boolean вектор, в котором каждый элемент
iвычисляется какx[i] <= y[i].https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/lessThanEqual.xhtml
vec_bool_type greaterThanEqual(vec_type x, vec_type y) 🔗
Выполняет component-wise сравнение двух векторов по принципу «больше или равно».
- параметр x:
Первый вектор для сравнения.
- параметр y:
Второй вектор для сравнения.
- return:
A boolean вектор, в котором каждый элемент
iвычисляется какx[i] >= y[i].https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/greaterThanEqual.xhtml
vec_bool_type equal(vec_type x, vec_type y) 🔗
Выполняет component-wise сравнение двух векторов на равенство.
- параметр x:
Первый вектор для сравнения.
- параметр y:
Второй вектор для сравнения.
- return:
A boolean вектор, в котором каждый элемент
iвычисляется какx[i] == y[i].https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/equal.xhtml
vec_bool_type notEqual(vec_type x, vec_type y) 🔗
Выполняет component-wise сравнение «не равно» двух векторов.
- параметр x:
Первый вектор для сравнения.
- параметр y:
Второй вектор для сравнения.
- return:
Булев вектор, в котором каждый элемент
iвычисляется какx[i] != y[i].https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/notEqual.xhtml
bool any(vec_bool_type x) 🔗
Возвращает
true, если любой элемент булева вектора равенtrue, в противном случае —false.Функционально эквивалентно:
bool any(bvec x) { // bvec can be bvec2, bvec3 or bvec4 bool result = false; int i; for (i = 0; i < x.length(); ++i) { result |= x[i]; } return result; }
- параметр x:
Вектор, который необходимо проверить на истинность.
- return:
"True", если любой элемент "x" является "true", и "false" в противном случае.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/any.xhtml
bool all(vec_bool_type x) 🔗
Возвращает
true, если все элементы булева вектора равныtrue, в противном случае —false.Функционально эквивалентно:
bool all(bvec x) // bvec can be bvec2, bvec3 or bvec4 { bool result = true; int i; for (i = 0; i < x.length(); ++i) { result &= x[i]; } return result; }
- параметр x:
Вектор, который необходимо проверить на истинность.
- return:
true, если все элементыxявляютсяtrue, иfalseв противном случае.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/all.xhtml
vec_bool_type not(vec_bool_type x) 🔗
Логически инвертировать boolean вектор.
- параметр x:
Вектор, который необходимо инвертировать.
- return:
Новый логический вектор, для которого каждый элемент "i" вычисляется как "!x[i]".
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/not.xhtml
Текстурные функции
ivec2
ivec2
ivec2
ivec3
ivec3
|
textureSize(gsampler2D s, int lod)
textureSize(samplerCube s, int lod)
textureSize(samplerCubeArray s, int lod)
textureSize(gsampler2DArray s, int lod)
textureSize(gsampler3D s, int lod)
|
Получает размер текстуры. For performance reasons, this function should be avoided as it always performs a full texture read. When possible, you should pass the texture size as a uniform instead. |
vec2
vec3
vec2
vec2
|
textureQueryLod(gsampler2D s, vec2 p)
textureQueryLod(gsampler2DArray s, vec2 p)
textureQueryLod(gsampler3D s, vec3 p)
textureQueryLod(samplerCube s, vec3 p)
|
Вычислите уровень детализации, который будет использоваться для выборки из текстуры. |
int
int
int
int
|
textureQueryLevels(gsampler2D s)
textureQueryLevels(gsampler2DArray s)
textureQueryLevels(gsampler3D s)
textureQueryLevels(samplerCube s)
|
Получает количество доступных уровней mipmap текстуры. |
gvec4_type
gvec4_type
gvec4_type
vec4
vec4
vec4
|
Выполняет чтение текстуры. |
|
gvec4_type
gvec4_type
gvec4_type
|
textureProj(gsampler2D s, vec3 p [, float bias] )
textureProj(gsampler2D s, vec4 p [, float bias] )
textureProj(gsampler3D s, vec4 p [, float bias] )
|
Выполняет чтение текстуры с проекцией. |
gvec4_type
gvec4_type
gvec4_type
vec4
vec4
|
textureLod(gsampler2D s, vec2 p, float lod)
textureLod(gsampler2DArray s, vec3 p, float lod)
textureLod(gsampler3D s, vec3 p, float lod)
textureLod(samplerCube s, vec3 p, float lod)
textureLod(samplerCubeArray s, vec4 p, float lod)
|
Выполняет чтение текстуры в пользовательском MIP-текстуре. |
gvec4_type
gvec4_type
gvec4_type
|
textureProjLod(gsampler2D s, vec3 p, float lod)
textureProjLod(gsampler2D s, vec4 p, float lod)
textureProjLod(gsampler3D s, vec4 p, float lod)
|
Выполняет чтение текстуры с проекцией/LOD. |
gvec4_type
gvec4_type
gvec4_type
vec4
vec4
|
textureGrad(gsampler2D s, vec2 p, vec2 dPdx, vec2 dPdy)
textureGrad(gsampler2DArray s, vec3 p, vec2 dPdx, vec2 dPdy)
textureGrad(gsampler3D s, vec3 p, vec2 dPdx, vec2 dPdy)
textureGrad(samplerCube s, vec3 p, vec3 dPdx, vec3 dPdy)
textureGrad(samplerCubeArray s, vec3 p, vec3 dPdx, vec3 dPdy)
|
Выполняет чтение текстуры с явными градиентами. |
gvec4_type
gvec4_type
gvec4_type
|
textureProjGrad(gsampler2D s, vec3 p, vec2 dPdx, vec2 dPdy)
textureProjGrad(gsampler2D s, vec4 p, vec2 dPdx, vec2 dPdy)
textureProjGrad(gsampler3D s, vec4 p, vec3 dPdx, vec3 dPdy)
|
Выполняет чтение текстуры с проекцией/LOD и с явным |
gvec4_type
gvec4_type
gvec4_type
|
texelFetch(gsampler2D s, ivec2 p, int lod)
texelFetch(gsampler2DArray s, ivec3 p, int lod)
texelFetch(gsampler3D s, ivec3 p, int lod)
|
Получает один тексель, используя целочисленные координаты. |
gvec4_type
gvec4_type
vec4
|
textureGather(gsampler2D s, vec2 p [, int comps] )
textureGather(gsampler2DArray s, vec3 p [, int comps] )
textureGather(samplerCube s, vec3 p [, int comps] )
|
Собирает четыре текселя из текстуры. |
vec_type |
dFdx(vec_type p) |
Производная по координате окна |
vec_type |
dFdxCoarse(vec_type p) |
Производная по координате окна Недоступно при использовании рендерера Compatibility. |
vec_type |
dFdxFine(vec_type p) |
Производная по координате окна Недоступно при использовании рендерера Compatibility. |
vec_type |
dFdy(vec_type p) |
Производная по координате окна |
vec_type |
dFdyCoarse(vec_type p) |
Производная по координате окна Недоступно при использовании рендерера Compatibility. |
vec_type |
dFdyFine(vec_type p) |
Производная по оконной координате Недоступно при использовании рендерера Compatibility. |
vec_type |
fwidth(vec_type p) |
Сумма абсолютной производной по |
vec_type |
fwidthCoarse(vec_type p) |
Сумма абсолютной производной по Недоступно при использовании рендерера Compatibility. |
vec_type |
fwidthFine(vec_type p) |
Сумма абсолютной производной по Недоступно при использовании рендерера Compatibility. |
Описания функций текстуры
ivec2 textureSize(gsampler2D s, int lod) 🔗
ivec2 textureSize(samplerCube s, int lod) 🔗
ivec2 textureSize(samplerCubeArray s, int lod) 🔗
ivec3 textureSize(gsampler2DArray s, int lod) 🔗
ivec3 textureSize(gsampler3D s, int lod) 🔗
Возвращает размеры уровня текстуры.
Возвращает размеры уровня
lod(если присутствует) текстуры, привязанной к сэмплеру.Компоненты возвращаемого значения заполняются по порядку шириной, высотой и глубиной текстуры. Для форм массива последний компонент возвращаемого значения — это количество слоёв в массиве текстур.
- параметр "s":
Сэмплер, к которому привязана текстура, размеры которой требуется извлечь.
- параметр "lod":
Уровень текстуры, для которого необходимо получить размеры.
- return:
Размеры уровня
lod(если присутствует) текстуры, привязанной к сэмплеру.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/textureSize.xhtml
vec2 textureQueryLod(gsampler2D s, vec2 p) 🔗
vec2 textureQueryLod(gsampler2DArray s, vec2 p) 🔗
vec2 textureQueryLod(gsampler3D s, vec3 p) 🔗
vec2 textureQueryLod(samplerCube s, vec3 p) 🔗
Примечание
Доступно только во фрагментном шейдере.
Вычислите уровень детализации, который будет использоваться для выборки из текстуры.
Массив(ы) mipmap, к которым будет осуществляться доступ, возвращается в компоненте x возвращаемого значения. Вычисленный уровень детализации относительно базового уровня возвращается в компоненте y возвращаемого значения.
При вызове на неполной текстуре результат операции не определен.
- параметр "s":
Сэмплер, к которому привязана текстура, уровень детализации которой будет запрошен.
- параметр "p":
Координаты текстуры, по которым будет запрашиваться уровень детализации.
- return:
См. описание.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/textureQueryLod.xhtml
int textureQueryLevels(gsampler2D s) 🔗
int textureQueryLevels(gsampler2DArray s) 🔗
int textureQueryLevels(gsampler3D s) 🔗
int textureQueryLevels(samplerCube s) 🔗
Вычислить количество доступных уровней mipmap.
При вызове неполной текстуры или если сэмплеру не сопоставлена ни одна текстура, возвращается
0.
- параметр "s":
Сэмплер, к которому привязана текстура, для которой будет запрошен счетчик уровней mipmap.
- return:
Количество доступных уровней mipmap в текстуре, или
0.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/textureQueryLevels.xhtml
gvec4_type texture(gsampler2D s, vec2 p [, float bias] ) 🔗
gvec4_type texture(gsampler2DArray s, vec3 p [, float bias] ) 🔗
gvec4_type texture(gsampler3D s, vec3 p [, float bias] ) 🔗
vec4 texture(samplerCube s, vec3 p [, float bias] ) 🔗
vec4 texture(samplerCubeArray s, vec4 p [, float bias] ) 🔗
vec4 texture(samplerExternalOES s, vec2 p [, float bias] ) 🔗
Извлекает текселы из текстуры.
Выполняет выборку текселей из текстуры, привязанной к
sв координате текстурыp. Необязательное смещение, указанное вbias, включается в вычисление уровня детализации, используемое для выбора MIP-карт для выборки.Для форм тени последний компонент
pиспользуется как Dsub, а слой массива указывается во втором с конца компонентеp. (Второй компонентpне используется для поиска одномерных теней.)Для вариантов без тени слой массива берется из последнего компонента P.
- параметр "s":
Сэмплер, к которому привязана текстура, из которой будут извлечены текселы.
- параметр "p":
Координаты текстуры, по которым будет производиться выборка текстуры.
- параметр "bias":
Необязательное смещение, которое можно применять при вычислении уровня детализации.
- return:
Тексель.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/texture.xhtml
gvec4_type textureProj(gsampler2D s, vec3 p [, float bias] ) 🔗
gvec4_type textureProj(gsampler2D s, vec4 p [, float bias] ) 🔗
gvec4_type textureProj(gsampler3D s, vec4 p [, float bias] ) 🔗
Выполнить поиск текстуры с помощью проекции.
Координаты текстуры, полученные из
p, за исключением последнего компонентаp, делятся на последний компонентp. Полученный третий компонентpв теневых формах используется как Dref. После вычисления этих значений поиск текстуры продолжается так же, как в случае с текстурой.
- параметр "s":
Сэмплер, к которому привязана текстура, из которой будут извлечены текселы.
- параметр "p":
Координаты текстуры, по которым будет производиться выборка текстуры.
- параметр "bias":
Необязательное смещение, которое может применяться при вычислении уровня детализации.
- return:
Тексель.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/textureProj.xhtml
gvec4_type textureLod(gsampler2D s, vec2 p, float lod) 🔗
gvec4_type textureLod(gsampler2DArray s, vec3 p, float lod) 🔗
gvec4_type textureLod(gsampler3D s, vec3 p, float lod) 🔗
vec4 textureLod(samplerCube s, vec3 p, float lod) 🔗
vec4 textureLod(samplerCubeArray s, vec4 p, float lod) 🔗
Выполняет поиск текстуры в точке с координатой
pиз текстуры, привязанной к сэмплеру, с явным уровнем детализации, указанным вlod.lodзадает λbase и задает частные производные следующим образом:δu/δx=0, δv/δx=0, δw/δx=0 δu/δy=0, δv/δy=0, δw/δy=0
- параметр "s":
Сэмплер, к которому привязана текстура, из которой будут извлечены текселы.
- параметр "p":
Координаты текстуры, по которым будет производиться выборка текстуры.
- параметр "lod":
Явный уровень детализации.
- return:
Тексель.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/textureLod.xhtml
gvec4_type textureProjLod(gsampler2D s, vec3 p, float lod) 🔗
gvec4_type textureProjLod(gsampler2D s, vec4 p, float lod) 🔗
gvec4_type textureProjLod(gsampler3D s, vec4 p, float lod) 🔗
Выполняет поиск текстуры с проекцией из явно указанного уровня детализации.
Координаты текстуры, полученные из "P", за исключением последнего компонента
p, делятся на последний компонентp. Полученный третий компонентpв теневых формах используется в качестве Dref. После вычисления этих значений поиск текстуры выполняется так же, как в textureLod<shader_func_textureLod>, гдеlodиспользуется для указания уровня детализации, из которого будет взята текстура.
- параметр "s":
Сэмплер, к которому привязана текстура, из которой будут извлечены текселы.
- параметр "p":
Координаты текстуры, по которым будет производиться выборка текстуры.
- параметр "lod":
Явный уровень детализации, из которого следует извлекать текселы.
- return:
тексель
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/textureProjLod.xhtml
gvec4_type textureGrad(gsampler2D s, vec2 p, vec2 dPdx, vec2 dPdy) 🔗
gvec4_type textureGrad(gsampler2DArray s, vec3 p, vec2 dPdx, vec2 dPdy) 🔗
gvec4_type textureGrad(gsampler3D s, vec3 p, vec2 dPdx, vec2 dPdy) 🔗
vec4 textureGrad(samplerCube s, vec3 p, vec3 dPdx, vec3 dPdy) 🔗
vec4 textureGrad(samplerCubeArray s, vec3 p, vec3 dPdx, vec3 dPdy) 🔗
- Выполняет поиск текстуры в точке с координатами
pиз текстуры, привязанной к сэмплеру, с явными градиентами текстурных координат, указанными вdPdxиdPdy. Задает:
δs/δx=δp/δxдля одномерной текстуры,δp.s/δxв противном случае
δs/δy=δp/δyдля одномерной текстуры,δp.s/δyв противном случае
δt/δx=0.0для одномерной текстуры,δp.t/δxв противном случае
δt/δy=0.0для одномерной текстуры,δp.t/δyв противном случае
δr/δx=0.0для одномерной или двумерной текстуры,δp.p/δxв противном случае
δr/δy=0.0для одномерной или двумерной текстуры,δp.p/δyв противном случаеДля кубической версии предполагается, что частные производные
pнаходятся в системе координат, используемой до того, как координаты текстуры проецируются на соответствующую грань куба.
- параметр "s":
Сэмплер, к которому привязана текстура, из которой будут извлечены текселы.
- параметр "p":
Координаты текстуры, по которым будет производиться выборка текстуры.
- параметр "dPdx":
Частная производная "P" по окну "x".
- параметр "dPdy":
Частная производная "P" по окну "y".
- return:
Тексель.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/textureGrad.xhtml
gvec4_type textureProjGrad(gsampler2D s, vec3 p, vec2 dPdx, vec2 dPdy) 🔗
gvec4_type textureProjGrad(gsampler2D s, vec4 p, vec2 dPdx, vec2 dPdy) 🔗
gvec4_type textureProjGrad(gsampler3D s, vec4 p, vec3 dPdx, vec3 dPdy) 🔗
Выполнить поиск текстуры с проекцией и явными градиентами.
Координаты текстуры, полученные из
p, за исключением последнего компонентаp, делятся на последний компонентp. После вычисления этих значений поиск текстуры выполняется так же, как в textureGrad<shader_func_textureGrad>, передаваяdPdxиdPdyв качестве градиентов.
- параметр "s":
Сэмплер, к которому привязана текстура, из которой будут извлечены текселы.
- параметр "p":
Координаты текстуры, по которым будет производиться выборка текстуры.
- параметр "dPdx":
Частная производная
pпо окну "x".- параметр "dPdy":
Частная производная
pпо окну "y".- return:
Тексель.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/textureProjGrad.xhtml
gvec4_type texelFetch(gsampler2D s, ivec2 p, int lod) 🔗
gvec4_type texelFetch(gsampler2DArray s, ivec3 p, int lod) 🔗
gvec4_type texelFetch(gsampler3D s, ivec3 p, int lod) 🔗
Выполняет поиск одного текселя из координаты текстуры
pв текстуре, привязанной к сэмплеру.
- параметр "s":
Сэмплер, к которому привязана текстура, из которой будут извлечены текселы.
- параметр "p":
Координаты текстуры, по которым будет производиться выборка текстуры.
- параметр "lod":
Задает уровень детализации текстуры, из которой будет извлечен тексель.
- return:
Тексель.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/texelFetch.xhtml
gvec4_type textureGather(gsampler2D s, vec2 p [, int comps] ) 🔗
gvec4_type textureGather(gsampler2DArray s, vec3 p [, int comps] ) 🔗
vec4 textureGather(samplerCube s, vec3 p [, int comps] ) 🔗
Собирает четыре текселя из текстуры.
Возвращает значение:
vec4(Sample_i0_j1(p, base).comps, Sample_i1_j1(p, base).comps, Sample_i1_j0(p, base).comps, Sample_i0_j0(p, base).comps);
- параметр "s":
Сэмплер, к которому привязана текстура, из которой будут извлечены текселы.
- параметр "p":
Координаты текстуры, по которым будет производиться выборка текстуры.
- парамет "comps":
необязательно компонент исходной текстуры (0 -> x, 1 -> y, 2 -> z, 3 -> w), который будет использоваться для генерации результирующего вектора. Ноль, если не указано.
- return:
Собранный тексель.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/textureGather.xhtml
vec_type dFdx(vec_type p) 🔗
Примечание
Доступно только во фрагментном шейдере.
Возвращает частную производную
pпо координате окна "x", используя локальное дифференцирование.Возвращает либо dFdxCoarse, либо dFdxFine. Реализация может выбирать, какие вычисления выполнять, основываясь на таких факторах, как производительность или значение подсказки API
GL_FRAGMENT_SHADER_DERIVATIVE_HINT.Предупреждение
Выражения, подразумевающие производные более высокого порядка, такие как
dFdx(dFdx(n)), имеют неопределенные результаты, как и производные смешанного порядка, такие какdFdx(dFdy(n)).
- параметр "p":
Выражение, от которого следует взять частную производную.
Примечание
Предполагается, что выражение
pявляется непрерывным, и поэтому выражения, вычисляемые посредством неоднородного потока управления, могут быть неопределенными.- return:
Частная производная
p.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/dFdx.xhtml
vec_type dFdxCoarse(vec_type p) 🔗
Примечание
Доступно только во фрагментном шейдере. Недоступно при использовании рендера Compatibility.
Возвращает частную производную
pпо координате окна "x".Вычисляет производные, используя локальную разность на основе значения
pдля соседей текущего фрагмента, и, возможно, но не обязательно, включает значение для текущего фрагмента. То есть, для заданной области реализация может вычислять производные в меньшем количестве уникальных точек, чем это разрешено для соответствующей функции dFdxFine.Предупреждение
Выражения, подразумевающие производные более высокого порядка, такие как
dFdx(dFdx(n)), имеют неопределенные результаты, как и производные смешанного порядка, такие какdFdx(dFdy(n)).
- параметр "p":
Выражение, от которого следует взять частную производную.
Примечание
Предполагается, что выражение
pявляется непрерывным, и поэтому выражения, вычисляемые посредством неоднородного потока управления, могут быть неопределенными.- return:
Частная производная
p.https://registry.khronos.org/OpenGL-Refpages/gl4/html/dFdx.xhtml
vec_type dFdxFine(vec_type p) 🔗
Примечание
Доступно только во фрагментном шейдере. Недоступно при использовании рендера Compatibility.
Возвращает частную производную
pпо координате окна "x".Вычисляет производные с использованием локального дифференцирования на основе значения
pдля текущего фрагмента и его ближайших соседей.Предупреждение
Выражения, подразумевающие производные более высокого порядка, такие как
dFdx(dFdx(n)), имеют неопределенные результаты, как и производные смешанного порядка, такие какdFdx(dFdy(n)).
- параметр "p":
Выражение, от которого следует взять частную производную.
Примечание
Предполагается, что выражение
pявляется непрерывным, и поэтому выражения, вычисляемые посредством неоднородного потока управления, могут быть неопределенными.- return:
Частная производная
p.https://registry.khronos.org/OpenGL-Refpages/gl4/html/dFdx.xhtml
vec_type dFdy(vec_type p) 🔗
Примечание
Доступно только во фрагментном шейдере.
Возвращает частную производную
pпо координате окна y, используя локальное дифференцирование.Возвращает либо dFdyCoarse, либо dFdyFine. Реализация может выбирать, какие вычисления выполнять, основываясь на таких факторах, как производительность или значение подсказки API
GL_FRAGMENT_SHADER_DERIVATIVE_HINT.Предупреждение
Выражения, подразумевающие производные более высокого порядка, такие как
dFdx(dFdx(n)), имеют неопределенные результаты, как и производные смешанного порядка, такие какdFdx(dFdy(n)).
- параметр "p":
Выражение, от которого следует взять частную производную.
Примечание
Предполагается, что выражение
pявляется непрерывным, и поэтому выражения, вычисляемые посредством неоднородного потока управления, могут быть неопределенными.- return:
Частная производная
p.https://registry.khronos.org/OpenGL-Refpages/gl4/html/dFdx.xhtml
vec_type dFdyCoarse(vec_type p) 🔗
Примечание
Доступно только во фрагментном шейдере. Недоступно при использовании рендера Compatibility.
Возвращает частную производную
pпо координате y окна.Вычисляет производные, используя локальную разность на основе значения
pдля соседей текущего фрагмента, и, возможно, но не обязательно, включает значение для текущего фрагмента. То есть, для заданной области реализация может вычислять производные в меньшем количестве уникальных точек, чем это разрешено для соответствующих функций dFdyFine и dFdyFine.Предупреждение
Выражения, подразумевающие производные более высокого порядка, такие как
dFdx(dFdx(n)), имеют неопределенные результаты, как и производные смешанного порядка, такие какdFdx(dFdy(n)).
- параметр "p":
Выражение, от которого следует взять частную производную.
Примечание
Предполагается, что выражение
pявляется непрерывным, и поэтому выражения, вычисляемые посредством неоднородного потока управления, могут быть неопределенными.- return:
Частная производная
p.https://registry.khronos.org/OpenGL-Refpages/gl4/html/dFdx.xhtml
vec_type dFdyFine(vec_type p) 🔗
Примечание
Доступно только во фрагментном шейдере. Недоступно при использовании рендера Compatibility.
Возвращает частную производную
pпо координате y окна.Вычисляет производные с использованием локального дифференцирования на основе значения
pдля текущего фрагмента и его ближайших соседей.Предупреждение
Выражения, подразумевающие производные более высокого порядка, такие как
dFdx(dFdx(n)), имеют неопределенные результаты, как и производные смешанного порядка, такие какdFdx(dFdy(n)).
- параметр "p":
Выражение, от которого следует взять частную производную.
Примечание
Предполагается, что выражение
pявляется непрерывным, и поэтому выражения, вычисляемые посредством неоднородного потока управления, могут быть неопределенными.- return:
Частная производная
p.https://registry.khronos.org/OpenGL-Refpages/gl4/html/dFdx.xhtml
vec_type fwidth(vec_type p) 🔗
Возвращает сумму абсолютных значений производных по "x" и "y".
Использует локальное дифференцирование для входного аргумента
p.Эквивалентно
abs(dFdx(p)) + abs(dFdy(p)).
- параметр "p":
Выражение, от которого следует взять частную производную.
- return:
Частная производная.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/fwidth.xhtml
vec_type fwidthCoarse(vec_type p) 🔗
Примечание
Доступно только во фрагментном шейдере. Недоступно при использовании рендера Compatibility.
Возвращает сумму абсолютных значений производных по "x" и "y".
Использует локальное дифференцирование для входного аргумента "p".
Эквивалентно
abs(dFdxCoarse(p)) + abs(dFdyCoarse(p)).
- параметр "p":
Выражение, от которого следует взять частную производную.
- return:
Частная производная.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/fwidth.xhtml
vec_type fwidthFine(vec_type p) 🔗
Примечание
Доступно только во фрагментном шейдере. Недоступно при использовании рендера Compatibility.
Возвращает сумму абсолютных значений производных по "x" и "y".
Использует локальное дифференцирование для входного аргумента "p".
Эквивалентно
abs(dFdxFine(p)) + abs(dFdyFine(p)).
- параметр "p":
Выражение, от которого следует взять частную производную.
- return:
Частная производная.
https://registry.khronos.org/OpenGL-Refpages/gl4/html/fwidth.xhtml
Функции упаковки и распаковки
Эти функции преобразуют числа с плавающей точкой в целые числа различных размеров, а затем упаковывают их в одно 32-битное беззнаковое целое число. Функции распаковки выполняют обратную операцию, возвращая исходные числа с плавающей точкой.
uint
vec2
|
packHalf2x16(vec2 v)
unpackHalf2x16(uint v)
|
Преобразовать два 32-битных floats в 16-битные floats и упаковать их. |
uint
vec2
|
packUnorm2x16(vec2 v)
unpackUnorm2x16(uint v)
|
Преобразовать два нормализованных (диапазон 0..1) 32-битных числа с плавающей точкой в 16-битные беззнаковые целые числа и упаковать их. |
uint
vec2
|
packSnorm2x16(vec2 v)
unpackSnorm2x16(uint v)
|
Преобразовать два знаковых нормализованных (диапазон -1..1) 32-битных числа с плавающей точкой в 16-битные знаковые целые числа и упаковать их. |
uint
vec4
|
packUnorm4x8(vec4 v)
unpackUnorm4x8(uint v)
|
Преобразовать четыре нормализованных (диапазон 0..1) 32-битных числа с плавающей точкой в 8-битные беззнаковые целые числа и упаковать их. |
uint
vec4
|
packSnorm4x8(vec4 v)
unpackSnorm4x8(uint v)
|
Преобразовать четыре знаковых нормализованных (диапазон -1..1) 32-битных числа с плавающей точкой в 8-битные знаковые целые числа и упаковать их. |
Описания функций упаковки и распаковки
uint packHalf2x16(vec2 v) 🔗
Преобразует два 32-битных числа с плавающей точкой в 16-битные числа с плавающей точкой и упаковывает их в одно 32-битное целое число.
Возвращает беззнаковое целое число, полученное путём преобразования компонентов двухкомпонентного вектора с плавающей точкой в 16-битное представление с плавающей точкой, описанное в спецификации OpenGL, и последующей упаковки этих двух 16-битных целых чисел в 32-битное беззнаковое целое число. Первый компонент вектора определяет 16 младших значащих бит результата; второй компонент определяет 16 старших значащих бит.
- параметр "v":
Вектор из двух 32-битных значений с плавающей точкой, которые необходимо преобразовать в 16-битное представление и упаковать в результат.
- return:
Упакованная ценность.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/packHalf2x16.xhtml
vec2 unpackHalf2x16(uint v) 🔗
Inverse of packHalf2x16.
Распаковывает 32-битное целое число в два 16-битных числа с плавающей точкой, преобразует их в 32-битные числа с плавающей точкой и помещает в вектор. Первый компонент вектора получается из 16 младших битов
v; второй компонент получается из 16 старших битовv.
- параметр "v":
Одно 32-битное беззнаковое целое число, содержащее 2 упакованных 16-битных значения с плавающей запятой.
- return:
Два распакованных значения с плавающей точкой.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/unpackHalf2x16.xhtml
uint packUnorm2x16(vec2 v) 🔗
Упаковать значения с плавающей точкой в беззнаковое целое число.
Преобразует каждый компонент нормализованного значения с плавающей запятой v в 16-битные целые значения, а затем упаковывает результаты в 32-битное беззнаковое целое число.
Преобразование компонента c числа
vв число с фиксированной точкой выполняется следующим образом:round(clamp(c, 0.0, 1.0) * 65535.0)Первый компонент вектора будет записан в наименее значимые биты выходных данных; последний компонент будет записан в наиболее значимые биты.
- параметр "v":
Вектор значений, которые необходимо упаковать в беззнаковое целое число.
- return:
Беззнаковое 32-битное целое число, содержащее упакованную кодировку вектора.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/packUnorm.xhtml
vec2 unpackUnorm2x16(uint v) 🔗
Распаковать значения с плавающей точкой из беззнакового целого числа.
Распаковывает отдельные 32-битные беззнаковые целые числа в пару 16-битных беззнаковых целых чисел. Затем каждый компонент преобразуется в нормализованное значение с плавающей запятой для формирования возвращаемого двух-компонентного вектора.
Преобразование неупакованного значения с фиксированной точкой "f" в значение с плавающей точкой выполняется следующим образом:
f / 65535.0
Первый компонент возвращаемого вектора будет извлечен из наименее значимых битов входных данных; последний компонент будет извлечен из наиболее значимых битов.
- параметр "v":
Беззнаковое целое число, содержащее упакованные значения с плавающей точкой.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/unpackUnorm.xhtml
uint packSnorm2x16(vec2 v) 🔗
Упаковывает значения с плавающей точкой в беззнаковое целое число.
Преобразует каждый компонент нормализованного значения с плавающей запятой
vв 16-битные целые значения, а затем упаковывает результаты в 32-битное беззнаковое целое число.Преобразование компонента c числа
vв число с фиксированной точкой выполняется следующим образом:round(clamp(c, -1.0, 1.0) * 32767.0)Первый компонент вектора будет записан в наименее значимые биты выходных данных; последний компонент будет записан в наиболее значимые биты.
- параметр "v":
Вектор значений, которые необходимо упаковать в беззнаковое целое число.
- return:
Беззнаковое 32-битное целое число, содержащее упакованную кодировку вектора.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/packUnorm.xhtml
vec2 unpackSnorm2x16(uint v) 🔗
Распаковывает значения с плавающей точкой из беззнакового целого числа.
Распаковывает отдельные 32-битные беззнаковые целые числа в пару 16-битных знаковых целых чисел. Затем каждый компонент преобразуется в нормализованное значение с плавающей запятой для формирования возвращаемого двухкомпонентного вектора.
Преобразование неупакованного значения с фиксированной точкой "f" в значение с плавающей точкой выполняется следующим образом:
clamp(f / 32727.0, -1.0, 1.0)
Первый компонент возвращаемого вектора будет извлечен из наименее значимых битов входных данных; последний компонент будет извлечен из наиболее значимых битов.
- параметр "v":
Беззнаковое целое число, содержащее упакованные значения с плавающей точкой.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/unpackUnorm.xhtml
uint packUnorm4x8(vec4 v) 🔗
Упаковывает значения с плавающей точкой в беззнаковое целое число.
Преобразует каждый компонент нормализованного значения с плавающей запятой
vв 16-битные целые значения, а затем упаковывает результаты в 32-битное беззнаковое целое число.Преобразование компонента c числа
vв число с фиксированной точкой выполняется следующим образом:round(clamp(c, 0.0, 1.0) * 255.0)Первый компонент вектора будет записан в наименее значимые биты выходных данных; последний компонент будет записан в наиболее значимые биты.
- параметр "v":
Вектор значений, которые необходимо упаковать в беззнаковое целое число.
- return:
Беззнаковое 32-битное целое число, содержащее упакованную кодировку вектора.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/packUnorm.xhtml
vec4 unpackUnorm4x8(uint v) 🔗
Распаковывает значения с плавающей точкой из беззнакового целого числа.
Распаковывает отдельные 32-битные беззнаковые целые числа в четыре 8-битных беззнаковых целых числа. Затем каждый компонент преобразуется в нормализованное значение с плавающей запятой для формирования возвращаемого четырёхкомпонентного вектора.
Преобразование неупакованного значения с фиксированной точкой "f" в значение с плавающей точкой выполняется следующим образом:
f / 255.0
Первый компонент возвращаемого вектора будет извлечен из наименее значимых битов входных данных; последний компонент будет извлечен из наиболее значимых битов.
- параметр "v":
Беззнаковое целое число, содержащее упакованные значения с плавающей точкой.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/unpackUnorm.xhtml
uint packSnorm4x8(vec4 v) 🔗
Упаковывает значения с плавающей точкой в беззнаковое целое число.
Преобразует каждый компонент нормализованного значения с плавающей запятой
vв 16-битные целые значения, а затем упаковывает результаты в 32-битное беззнаковое целое число.Преобразование компонента c числа
vв число с фиксированной точкой выполняется следующим образом:round(clamp(c, -1.0, 1.0) * 127.0)Первый компонент вектора будет записан в наименее значимые биты выходных данных; последний компонент будет записан в наиболее значимые биты.
- параметр "v":
Вектор значений, которые необходимо упаковать в беззнаковое целое число.
- return:
Беззнаковое 32-битное целое число, содержащее упакованную кодировку вектора.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/packUnorm.xhtml
vec4 unpackSnorm4x8(uint v) 🔗
Распаковать значения с плавающей точкой из беззнакового целого числа.
Распаковывает отдельные 32-битные беззнаковые целые числа в четыре 8-битных знаковых целых числа. Затем каждый компонент преобразуется в нормализованное значение с плавающей запятой для формирования возвращаемого четырёхкомпонентного вектора.
Преобразование неупакованного значения с фиксированной точкой "f" в значение с плавающей точкой выполняется следующим образом:
clamp(f / 127.0, -1.0, 1.0)
Первый компонент возвращаемого вектора будет извлечен из наименее значимых битов входных данных; последний компонент будет извлечен из наиболее значимых битов.
- параметр "v":
Беззнаковое целое число, содержащее упакованные значения с плавающей точкой.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/unpackUnorm.xhtml
Побитовые функции
vec_int_type
vec_uint_type
|
bitfieldExtract(vec_int_type value, int offset, int bits)
bitfieldExtract(vec_uint_type value, int offset, int bits)
|
Извлечение диапазона битов из целого числа. |
vec_int_type
vec_uint_type
|
bitfieldInsert(vec_int_type base, vec_int_type insert, int offset, int bits)
bitfieldInsert(vec_uint_type base, vec_uint_type insert, int offset, int bits)
|
Вставка диапазона битов в целое число. |
vec_int_type
vec_uint_type
|
bitfieldReverse(vec_int_type value)
bitfieldReverse(vec_uint_type value)
|
Изменение порядка следования битов в целых числах. |
vec_int_type
vec_uint_type
|
Подсчитывает количество бит 1 в целых числах. |
|
vec_int_type
vec_uint_type
|
Находит индекс наименьшего значащего бита, установленного в 1, в целом числе. |
|
vec_int_type
vec_uint_type
|
Находит индекс старшего бита, установленного в 1, в целом числе. |
|
void
void
|
imulExtended(vec_int_type x, vec_int_type y, out vec_int_type msb, out vec_int_type lsb)
umulExtended(vec_uint_type x, vec_uint_type y, out vec_uint_type msb, out vec_uint_type lsb)
|
Умножает два 32-битных числа и даёт 64-битный результат. |
vec_uint_type |
uaddCarry(vec_uint_type x, vec_uint_type y, out vec_uint_type carry) |
Складывает два беззнаковых целых числа и генерирует перенос. |
vec_uint_type |
usubBorrow(vec_uint_type x, vec_uint_type y, out vec_uint_type borrow) |
Вычитает два беззнаковых целых числа и генерирует заимствование. |
vec_type |
ldexp(vec_type x, out vec_int_type exp) |
Сборка числа с плавающей точкой из значения и экспоненты. |
vec_type |
frexp(vec_type x, out vec_int_type exp) |
Разбивает число с плавающей точкой ( |
Описания побитовых функций
vec_int_type bitfieldExtract(vec_int_type value, int offset, int bits) 🔗
Извлекает подмножество битов
valueи возвращает его в младших битах результата. Диапазон извлекаемых битов:[offset, offset + bits - 1].Наиболее значимые биты результата будут установлены в ноль.
Примечание
Если бит равен нулю, результат будет равен нулю.
Предупреждение
Результат будет неопределенным, если:
смещение или биты отрицательны.
если сумма смещения и битов больше количества битов, используемых для хранения операнда.
- параметр "value":
Целое число, из которого извлекаются биты.
- параметр "offset":
Индекс первого извлекаемого бита.
- параметр "bits":
Количество извлекаемых битов.
- return:
Целое число с запрошенными битами.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/bitfieldExtract.xhtml
vec_uint_type bitfieldExtract(vec_uint_type value, int offset, int bits) 🔗
Извлекает подмножество битов
valueи возвращает его в младших битах результата. Диапазон извлекаемых битов:[offset, offset + bits - 1].Наиболее значимым битам будет присвоено значение
offset + base - 1(т.е. это знак, расширенный до ширины возвращаемого типа).Примечание
Если бит равен нулю, результат будет равен нулю.
Предупреждение
Результат будет неопределенным, если:
смещение или биты отрицательны.
если сумма смещения и битов больше количества битов, используемых для хранения операнда.
- параметр "value":
Целое число, из которого извлекаются биты.
- параметр "offset":
Индекс первого извлекаемого бита.
- параметр "bits":
Количество извлекаемых битов.
- return:
Целое число с запрошенными битами.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/bitfieldExtract.xhtml
vec_uint_type bitfieldExtract(vec_uint_type value, int offset, int bits) 🔗
vec_uint_type bitfieldInsert(vec_uint_type base, vec_uint_type insert, int offset, int bits) 🔗
Вставляет младшие биты
bitsизinsertвbaseсо смещениемoffset.Возвращаемое значение будет иметь биты [offset, offset + bits + 1], взятые из [0, биты - 1]
insert, а все остальные биты будут взяты непосредственно из соответствующих битов базы.Примечание
Если бит равен нулю, результатом будет исходное значение базы.
Предупреждение
Результат будет неопределенным, если:
смещение или биты отрицательны.
если сумма смещения и битов больше количества битов, используемых для хранения операнда.
- параметр "base":
Целое число, в которое следует вставить
insert.- параметр "insert" (вставка):
Значение битов для insert.
- параметр "offset":
Индекс первого бита для вставки.
- параметр "bits":
Количество битов для вставки.
- return:
baseсо вставленными битами.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/bitfieldInsert.xhtml
vec_int_type bitfieldReverse(vec_int_type value) 🔗
vec_uint_type bitfieldReverse(vec_uint_type value) 🔗
Изменение порядка следования битов в целых числах.
Бит с номером
nбудет взят из бита(биты - 1) - nизvalue, где биты - это общее количество бит, используемых для представленияvalue.
- параметр "value":
Значение, биты которого следует изменить на противоположные.
- return:
value, но с обратными битами.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/bitfieldReverse.xhtml
vec_int_type bitCount(vec_int_type value) 🔗
vec_uint_type bitCount(vec_uint_type value) 🔗
Подсчитывает количество бит 1 в целых числах.
- параметр "value":
Значение, биты которого нужно подсчитать.
- return:
Количество бит, которые в двоичном представлении
valueустановлены в 1.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/bitCount.xhtml
vec_int_type findLSB(vec_int_type value) 🔗
vec_uint_type findLSB(vec_uint_type value) 🔗
Найдите индекс наименее значимого бита, установленного в
1.Примечание
Если
valueравно нулю, будет возвращено-1.
- параметр "value":
Значение, биты которого нужно сканировать.
- return:
Номер младшего бита, который в двоичном представлении значения установлен в 1.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/findLSB.xhtml
vec_int_type findMSB(vec_int_type value) 🔗
vec_uint_type findMSB(vec_uint_type value) 🔗
Найдите индекс самого старшего бита, установленного в 1.
Примечание
- Для знаковых целых типов сначала проверяется бит знака, а затем:
Для положительных целых чисел результатом будет номер самого старшего бита, установленного в 1.
Для отрицательных целых чисел результатом будет номер самого старшего бита, установленный в 0.
Примечание
Для значения ноль или отрицательной 1 будет возвращено -1.
- параметр "value":
Значение, биты которого нужно сканировать.
- return:
Номер самого старшего бита, который в двоичном представлении значения установлен в 1.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/findMSB.xhtml
void imulExtended(vec_int_type x, vec_int_type y, out vec_int_type msb, out vec_int_type lsb) 🔗
Выполнить 32-битное знаковое умножение на 32-битное для получения 64-битного результата.
32 младших бита этого произведения возвращаются в
lsb, а 32 старших бита возвращаются вmsb.
- параметр x:
Первый множимый.
- параметр y:
Второй множимый.
- параметр "msb":
Переменная для получения наиболее значимого слова продукта.
- параметр "lsb":
Переменная для получения наименее значимого слова произведения.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/umulExtended.xhtml
void umulExtended(vec_uint_type x, vec_uint_type y, out vec_uint_type msb, out vec_uint_type lsb) 🔗
Выполнить 32-битное на 32-битное беззнаковое умножение для получения 64-битного результата.
32 младших бита этого произведения возвращаются в
lsb, а 32 старших бита возвращаются вmsb.
- параметр x:
Первый множимый.
- параметр y:
Второй множимый.
- параметр "msb":
Переменная для получения наиболее значимого слова продукта.
- параметр "lsb":
Переменная для получения наименее значимого слова произведения.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/umulExtended.xhtml
vec_uint_type uaddCarry(vec_uint_type x, vec_uint_type y, out vec_uint_type carry) 🔗
Складываем беззнаковые целые числа и создаем перенос.
складывает две 32-битные беззнаковые целые переменные (скаляры или векторы) и генерирует 32-битный беззнаковый целочисленный результат вместе с результатом переноса. Значение переноса равно .
- параметр x:
Первый операнд.
- параметр y:
Второй операнд.
- параметр "carry" (перенос):
0, если сумма меньше 232, в противном случае 1.
- return:
(x + y) % 2^32.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/uaddCarry.xhtml
vec_uint_type usubBorrow(vec_uint_type x, vec_uint_type y, out vec_uint_type borrow) 🔗
Вычтите беззнаковые целые числа и сгенерируйте заем.
- параметр x:
Первый операнд.
- параметр y:
Второй операнд.
- param "borrow" (заимствовать):
0еслиx >= y, в противном случае1.- return:
Разность
xиy, если число неотрицательное, или 232 плюс эта разность в противном случае.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/usubBorrow.xhtml
vec_type ldexp(vec_type x, out vec_int_type exp) 🔗
Составляет число с плавающей точкой из значения и показателя степени.
Предупреждение
Если это произведение слишком велико для представления в виде числа с плавающей точкой, результат не определен.
- параметр x:
Значение, которое будет использоваться в качестве источника означающего.
- параметр "exp":
Значение, которое будет использоваться в качестве источника показателя степени.
- return:
x * 2^exphttps://www.khronos.org/registry/OpenGL-Refpages/gl4/html/ldexp.xhtml
vec_type frexp(vec_type x, out vec_int_type exp) 🔗
Извлекает
xв мантису с плавающей точкой в диапазоне[0.5, 1.0)и в целочисленную степень двух, таким образом:x = significand * 2 ^ exponentДля плавающего значения, равного нулю, мантисса и показатель степени равны нулю.
Предупреждение
Для значения с плавающей точкой, которое равно бесконечности или NaN с плавающей точкой, результаты не определены.
- параметр x:
Значение, из которого необходимо извлечь мантиссу и показатель степени.
- параметр "exp":
Переменная, в которую помещается показатель степени
x.- return:
Значащая часть
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/frexp.xhtml