Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Вбудовані функції
Godot підтримує велику кількість вбудованих функцій, що приблизно відповідають специфікації GLSL ES 3.0.
Примітка
Наступні псевдоніми типів використовуються лише в документації, щоб зменшити повторювані оголошення функцій. Кожен з них може стосуватися будь-якого з кількох фактичних типів.
псевдонім |
фактичні типи |
псевдонім документації glsl |
|---|---|---|
vec_type |
float, vec2, vec3, or vec4 |
genType |
vec_int_type |
int, ivec2, ivec3, or ivec4 |
genIType |
vec_uint_type |
uint, uvec2, uvec3, or uvec4 |
genUType |
vec_bool_type |
bool, bvec2, bvec3, or bvec4 |
genBType |
mat_type |
mat2, mat3, or mat4 |
mat |
gvec4_type |
vec4, ivec4, or uvec4 |
gvec4 |
gsampler2D |
sampler2D, isampler2D, або uSampler2D |
gsampler2D |
gsampler2DArray |
sampler2DArray, isampler2DArray, або uSampler2DArray |
gsampler2DArray |
gsampler3D |
sampler3D, isampler3D, або uSampler3D |
gsampler3D |
Якщо будь-який із них указано для кількох параметрів, усі вони мають бути одного типу, якщо не зазначено інше.
Примітка
Багато функцій, які приймають один або більше векторів або матриць, виконують описану функцію для кожного компонента вектора/матриці. Деякі приклади:
Операція |
Еквівалентна скалярна операція |
|---|---|
|
|
|
|
|
|
|
|
|
|
Специфікація мови GLSL говорить у розділі 5.10 Векторні та матричні операції:
За кількома винятками, операції є компонентними. Зазвичай, коли оператор працює з вектором або матрицею, він діє незалежно від кожного компонента вектора або матриці, покомпонентно. [...] Винятками є матриця, помножена на вектор, помножена на матрицю, і матриця, помножена на матрицю. Вони не працюють покомпонентно, а скоріше виконують правильне лінійне алгебраїчне множення.
Ці описи функцій адаптовано та змінено з офіційної документації OpenGL, спочатку опублікованої Khronos Group згідно з Ліцензією відкритої публікації. Кожен опис функції містить посилання на відповідну офіційну документацію OpenGL. Історію змін цієї сторінки можна знайти на GitHub.
Тригонометричні функції
Тип повернення |
Function |
Опис/Повернене значення |
|---|---|---|
vec_type |
radians(vec_type degrees) |
Перетворіть градуси в радіани. |
vec_type |
degrees(vec_type radians) |
Перетворіть радіани в градуси. |
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 радіан(vec_type degrees) 🔗
Перетворює величину, указану в градусах, у радіани за формулою
градуси * (PI / 180).
- парам ступенів:
Величина в градусах, яку потрібно перетворити в радіани.
- return:
Введені
градусиперетворені в радіани.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/radians.xhtml
vec_type ступенів(vec_type radians) 🔗
Перетворює величину, задану в радіанах, на градуси за формулою
radians * (180 / PI)
- параметр радіан:
Величина в радіанах, яку потрібно конвертувати в градуси.
- return:
Введені
радіаниперетворені в градуси.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/degrees.xhtml
vec_type гріх(vec_type angle) 🔗
Повертає тригонометричний синус
angle.
- параметр кута:
Кількість у радіанах, синус якої потрібно повернути.
- return:
Синус від
angle.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/sin.xhtml
vec_type cos(vec_type angle) 🔗
Повертає тригонометричний косинус
angle.
- параметр кута:
Кількість у радіанах, косинус якої потрібно повернути.
- return:
Косинус від
angle.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/cos.xhtml
vec_type tan(vec_type angle) 🔗
Повертає тригонометричний тангенс
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.
- параметр і:
Чисельник дробу, арктангенс якого потрібно повернути.
- параметр 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
Показникові та математичні функції
Тип повернення |
Function |
Опис/Повернене значення |
|---|---|---|
vec_type |
pow(vec_type x, vec_type y) |
Потужність (не визначено, якщо |
vec_type |
exp(vec_type x) |
База-е експонента. |
vec_type |
exp2(vec_type x) |
Основа-2 експоненціальна. |
vec_type |
log(vec_type x) |
Натуральний (база-е). |
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) |
Усічення. |
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.- параметр і:
Степінь, до якого буде зведено
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піднесені до степеня х.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за основою 2, тобто значення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) 🔗
Повернення
-1ifx < 0,0ifx == 0, and1ifx > 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 modulo y. Іноді його також називають залишком.Це обчислюється як
x - y * floor(x/y).
- параметр x:
Значення для оцінки.
- return:
Значення
x modulo y.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/mod.xhtml
vec_type modf(vec_type x, out vec_type i) 🔗
Розділяє значення з плаваючою комою
xна цілу та дробову частини.Функція повертає дробову частину числа. Ціла частина (як величина з плаваючою комою) повертається у вихідному параметрі
i.
- параметр x:
Значення, яке потрібно розділити.
- param 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.
- param a:
Перше значення для порівняння.
- param 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.
- param a:
Перше значення для порівняння.
- param 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:
Значення, яке потрібно обмежити.
- param minVal:
Нижня межа діапазону, в межах якого потрібно обмежити
x.- param 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.
- param a:
Початок діапазону для інтерполяції.
- param b:
Кінець діапазону для інтерполяції.
- param 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є векторними типами, операція виконується component-wise. тобто.mix(vec2(42, 314), vec2(9.8, 6e23), bvec2(true, false)))повернеvec2(9.8, 314).
- param a:
Значення, що повертається, коли
cє false.- param b:
Значення, що повертається, коли
cмає значення true.- param 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. У випадках використання, коли повернуте значення зрештою споживається змінною, оголошеною як precise:
fma()вважається однією операцією, тоді як виразa * b + c, що споживається змінною, оголошеною як precise, вважається двома операціями.Точність
fma()може відрізнятися від точності виразуa * b + c.
fma()обчислюватиметься з такою ж точністю, як і будь-який іншийfma(), що споживається точною змінною, даючи незмінні результати для тих самих вхідних значень a, b і c.В іншому випадку, за відсутності точного споживання, немає особливих обмежень щодо кількості операцій або різниці в точності між
fma()і виразомa * b + c.
- param a:
Перше значення для множення.
- param b:
Друге значення для множення.
- param 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 повертається в іншому випадку.
- param a:
Розташування краю ступінчастої функції.
- param 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.
- param a:
Значення нижнього краю функції Ерміта.
- param b:
Значення верхнього краю функції Ерміта.
- param 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
Геометричні функції
десяткове число |
length(vec_type x) |
Довжина вектора. |
десяткове число |
distance(vec_type a, vec_type b) |
Відстань між векторами, тобто |
десяткове число |
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 column, vec_type row) |
Зовнішній продукт матриці. |
mat_type |
transpose(mat_type m) |
Транспонуємо матрицю. |
десяткове число |
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.
тобто
довжина (b - a);
- param a:
Пункт перший.
- param 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 + ...
- param a:
Перший вектор.
- param 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)
- param a:
Перший вектор.
- param 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і нормалі до поверхніNreflect повертає напрямок відбиття, обчислений якI - 2,0 * dot(N, I) * N.Примітка
Nслід нормалізувати, щоб досягти бажаного результату.
- param I:
Вектор інциденту.
- param N:
Нормальний вектор.
- return:
Вектор відбиття.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/reflect.xhtml
vec3 refract(vec3 I, vec3 N, float eta) 🔗
Обчисліть напрямок заломлення для падаючого вектора.
Для заданого вектора падіння
I, нормалі до поверхніNі співвідношення показників заломленняeta, refract повертає вектор заломлення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 необхідно нормалізувати, щоб отримати бажаний результат.
- param I:
Вектор інциденту.
- param N:
Нормальний вектор.
- param 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) < 0faceforward повертаєN, інакше повертає-N.
- param N:
Вектор для орієнтування.
- param I:
Вектор інциденту.
- param Nref:
Опорний вектор.
- return:
Орієнтований вектор.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/faceforward.xhtml
mat_type matrixCompMult(mat_type x, mat_type y) 🔗
Виконайте component-wise множення двох матриць.
Виконує покомпонентне множення двох матриць, утворюючи матрицю результатів, де кожен компонент,
result[i][j], обчислюється як скалярний добутокx[i][j]таy[i][j].
- параметр x:
Перше матричне множене.
- параметр і:
Друге матричне множене.
- return:
Результуюча матриця.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/matrixCompMult.xhtml
mat_type outerProduct(vec_type column, vec_type row) 🔗
Обчисліть зовнішній добуток пари векторів.
Чи виконує лінійна алгебраїчна матриця множення
стовпець * рядок, утворюючи матрицю, кількість рядків якої є кількістю компонентів устовпці, а кількість стовпців — це кількість компонентіврядка.
- param column:
Вектор-стовпець для множення.
- param row:
Вектор-рядок для множення.
- return:
Зовнішня матриця продукту.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/outerProduct.xhtml
mat_type transpose(mat_type m) 🔗
Обчислити транспонування матриці.
- param m:
Матриця для транспонування.
- return:
Нова матриця, яка є транспонуванням вхідної матриці
m.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/transpose.xhtml
float determinant(mat_type m) 🔗
Обчислити визначник матриці.
- param m:
Матриця.
- return:
Визначник вхідної матриці
m.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/determinant.xhtml
mat_type inverse(mat_type m) 🔗
Обчисліть обернену матрицю.
Значення у поверненій матриці є невизначеними, якщо
mє сингулярним або погано обумовленим (майже сингулярним).
- param m:
Матрицю якої взяти оберненою.
- return:
Нова матриця, яка є оберненою до вхідної матриці
m.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/inverse.xhtml
Функції порівняння
vec_bool_type |
lessThan(vec_type x, vec_type y) |
Порівняння векторів Bool на векторах < int/uint/float. |
vec_bool_type |
greaterThan(vec_type x, vec_type y) |
Порівняння векторів Bool на векторах > int/uint/float. |
vec_bool_type |
lessThanEqual(vec_type x, vec_type y) |
Порівняння векторів Bool на векторах <= int/uint/float. |
vec_bool_type |
greaterThanEqual( vec_type x, vec_type y) |
Порівняння векторів Bool на векторах >= int/uint/float. |
vec_bool_type |
equal(vec_type x, vec_type y) |
Порівняння векторів Bool на векторах == int/uint/float. |
vec_bool_type |
notEqual(vec_type x, vec_type y) |
Порівняння векторів Bool на векторах != 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:
Перший вектор для порівняння.
- параметр і:
Другий вектор для порівняння.
- return:
Булев вектор, у якому кожен елемент
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:
Перший вектор для порівняння.
- параметр і:
Другий вектор для порівняння.
- return:
Логічний вектор, у якому кожен елемент
iобчислюється як1x[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:
Перший вектор для порівняння.
- параметр і:
Другий вектор для порівняння.
- return:
Логічний вектор, у якому кожен елемент
iобчислюється як1x[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:
Перший вектор для порівняння.
- параметр і:
Другий вектор для порівняння.
- return:
Логічний вектор, у якому кожен елемент
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:
Перший вектор для порівняння.
- параметр і:
Другий вектор для порівняння.
- return:
Логічний вектор, у якому кожен елемент
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:
Перший вектор для порівняння.
- параметр і:
Другий вектор для порівняння.
- 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:
Істинний, якщо будь-який елемент x є істинним, і хибний в іншому випадку.
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) 🔗
Логічно інвертувати логічний вектор.
- параметр 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)
|
Отримайте розмір текстури. З міркувань продуктивності цієї функції слід уникати, оскільки вона завжди виконує повне зчитування текстури. Коли це можливо, слід передавати розмір текстури як однорідний. |
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)
|
Виконує зчитування текстури на власному mipmap. |
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) |
Похідна відносно віконної координати Недоступно, якщо використовується рендерер сумісності. |
vec_type |
dFdxFine(vec_type p) |
Похідна відносно віконної координати Недоступно, якщо використовується рендерер сумісності. |
vec_type |
dFdy(vec_type p) |
Похідна відносно віконної координати |
vec_type |
dFdyCoarse(vec_type p) |
Похідна відносно віконної координати Недоступно, якщо використовується рендерер сумісності. |
vec_type |
dFdyFine(vec_type p) |
Похідна відносно віконної координати Недоступно, якщо використовується рендерер сумісності. |
vec_type |
fwidth(vec_type p) |
Сума абсолютної похідної в |
vec_type |
fwidthCoarse(vec_type p) |
Сума абсолютної похідної в Недоступно, якщо використовується рендерер сумісності. |
vec_type |
fwidthFine(vec_type p) |
Сума абсолютної похідної в Недоступно, якщо використовується рендерер сумісності. |
Опис функцій текстури
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(якщо є) текстури, прив’язаної до семплера.Компоненти в поверненому значенні заповнюються в порядку ширини, висоти та глибини текстури. Для форм масиву останнім компонентом значення, що повертається, є кількість шарів у масиві текстур.
- param s:
Семплер, до якого прив’язана текстура, розміри якої потрібно отримати.
- param 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 повертаного значення.
Якщо викликати неповну текстуру, результат операції буде невизначеним.
- param s:
Семплер, до якого прив’язана текстура, чий рівень деталізації запитуватиметься.
- param 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.
- param s:
Семплер, до якого прив’язана текстура, чий рівень міп-карти запитуватиметься.
- 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не використовується для 1D тіньового пошуку.)Для нетіньових варіантів шар масиву походить від останнього компонента P.
- param s:
Семплер, до якого прив’язана текстура, з якої будуть отримані текселі.
- param p:
Координати текстури, у яких текстура буде взята.
- param 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. Отриманий 3-й компонентpу тіньових формах використовується як Dref. Після того, як ці значення обчислено, пошук текстури продовжується, як у текстурі.
- param s:
Семплер, до якого прив’язана текстура, з якої будуть отримані текселі.
- param p:
Координати текстури, у яких текстура буде взята.
- param 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
- param s:
Семплер, до якого прив’язана текстура, з якої будуть отримані текселі.
- param p:
Координати текстури, у яких текстура буде взята.
- param 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. Отриманий 3-й компонентpу тіньових формах використовується як Dref. Після обчислення цих значень пошук текстури виконується так, як у textureLod<shader_func_textureLod>, зlod, що використовується для визначення рівня деталізації, з якого буде взято вибірку текстури.
- param s:
Семплер, до якого прив’язана текстура, з якої будуть отримані текселі.
- param p:
Координати текстури, у яких текстура буде взята.
- param 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для 1D або 2D текстури,δp.p/δxінакше
δr/δy=0.0для 1D або 2D текстури,δp.p/δyінакшеДля кубічної версії припускається, що часткові похідні
pзнаходяться в системі координат, яка використовується до того, як координати текстури проектуються на відповідну грань куба.
- param s:
Семплер, до якого прив’язана текстура, з якої будуть отримані текселі.
- param p:
Координати текстури, у яких текстура буде взята.
- param dPdx:
Часткова похідна P відносно вікна x.
- param 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як градієнти.
- param s:
Семплер, до якого прив’язана текстура, з якої будуть отримані текселі.
- param p:
Координати текстури, у яких текстура буде взята.
- param dPdx:
Часткова похідна від
pвідносно вікна x.- param 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у текстурі, прив’язаній до семплера.
- param s:
Семплер, до якого прив’язана текстура, з якої будуть отримані текселі.
- param p:
Координати текстури, у яких текстура буде взята.
- param 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);
- param s:
Семплер, до якого прив’язана текстура, з якої будуть отримані текселі.
- param p:
Координати текстури, у яких текстура буде взята.
- param 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)).
- param p:
Вираз якого взяти частковою похідною.
Примітка
Передбачається, що вираз
pє неперервним, і тому вирази, обчислені за допомогою нерівномірного потоку керування, можуть бути невизначеними.- return:
Часткова похідна від
p.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/dFdx.xhtml
vec_type dFdxCoarse(vec_type p) 🔗
Примітка
Доступно лише у фрагментному шейдері. Недоступно, якщо використовується рендерер сумісності.
Повертає часткову похідну
pвідносно координати вікна x.Обчислює похідні за допомогою локальної різниці на основі значення
pдля сусідів поточного фрагмента та, можливо, але не обов’язково, включатиме значення для поточного фрагмента. Тобто, у певній області реалізація може обчислювати похідні в меншій кількості унікальних місць, ніж дозволено для відповідної функції dFdxFine.Попередження
Вирази, які передбачають похідні вищого порядку, такі як
dFdx(dFdx(n)), мають невизначені результати, як і похідні змішаного порядку, такі якdFdx(dFdy(n)).
- param p:
Вираз якого взяти частковою похідною.
Примітка
Передбачається, що вираз
pє неперервним, і тому вирази, обчислені за допомогою нерівномірного потоку керування, можуть бути невизначеними.- return:
Часткова похідна від
p.https://registry.khronos.org/OpenGL-Refpages/gl4/html/dFdx.xhtml
vec_type dFdxFine(vec_type p) 🔗
Примітка
Доступно лише у фрагментному шейдері. Недоступно, якщо використовується рендерер сумісності.
Повертає часткову похідну
pвідносно координати вікна x.Обчислює похідні за допомогою локального диференціювання на основі значення
pдля поточного фрагмента та його найближчого(их) сусіда(ів).Попередження
Вирази, які передбачають похідні вищого порядку, такі як
dFdx(dFdx(n)), мають невизначені результати, як і похідні змішаного порядку, такі якdFdx(dFdy(n)).
- param 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)).
- param p:
Вираз якого взяти частковою похідною.
Примітка
Передбачається, що вираз
pє неперервним, і тому вирази, обчислені за допомогою нерівномірного потоку керування, можуть бути невизначеними.- return:
Часткова похідна від
p.https://registry.khronos.org/OpenGL-Refpages/gl4/html/dFdx.xhtml
vec_type dFdyCoarse(vec_type p) 🔗
Примітка
Доступно лише у фрагментному шейдері. Недоступно, якщо використовується рендерер сумісності.
Повертає частинну похідну від
pвідносно координати y вікна.Обчислює похідні за допомогою локальної різниці на основі значення
pдля сусідів поточного фрагмента та, можливо, але не обов’язково, включатиме значення для поточного фрагмента. Тобто, у заданій області реалізація може обчислювати похідні в меншій кількості унікальних місць, ніж це дозволено для відповідних функцій dFdyFine і dFdyFine.Попередження
Вирази, які передбачають похідні вищого порядку, такі як
dFdx(dFdx(n)), мають невизначені результати, як і похідні змішаного порядку, такі якdFdx(dFdy(n)).
- param p:
Вираз якого взяти частковою похідною.
Примітка
Передбачається, що вираз
pє неперервним, і тому вирази, обчислені за допомогою нерівномірного потоку керування, можуть бути невизначеними.- return:
Часткова похідна від
p.https://registry.khronos.org/OpenGL-Refpages/gl4/html/dFdx.xhtml
vec_type dFdyFine(vec_type p) 🔗
Примітка
Доступно лише у фрагментному шейдері. Недоступно, якщо використовується рендерер сумісності.
Повертає частинну похідну від
pвідносно координати y вікна.Обчислює похідні за допомогою локального диференціювання на основі значення
pдля поточного фрагмента та його найближчого(их) сусіда(ів).Попередження
Вирази, які передбачають похідні вищого порядку, такі як
dFdx(dFdx(n)), мають невизначені результати, як і похідні змішаного порядку, такі якdFdx(dFdy(n)).
- param 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)).
- param p:
Вираз якого взяти частковою похідною.
- return:
Часткова похідна.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/fwidth.xhtml
vec_type fwidthCoarse(vec_type p) 🔗
Примітка
Доступно лише у фрагментному шейдері. Недоступно, якщо використовується рендерер сумісності.
Повертає суму абсолютних значень похідних по x і y.
Використовує локальну різницю для вхідного аргументу p.
Еквівалент
abs(dFdxCoarse(p)) + abs(dFdyCoarse(p)).
- param p:
Вираз якого взяти частковою похідною.
- return:
Часткова похідна.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/fwidth.xhtml
vec_type fwidthFine(vec_type p) 🔗
Примітка
Доступно лише у фрагментному шейдері. Недоступно, якщо використовується рендерер сумісності.
Повертає суму абсолютних значень похідних по x і y.
Використовує локальну різницю для вхідного аргументу p.
Еквівалент
abs(dFdxFine(p)) + abs(dFdyFine(p)).
- param p:
Вираз якого взяти частковою похідною.
- return:
Часткова похідна.
https://registry.khronos.org/OpenGL-Refpages/gl4/html/fwidth.xhtml
Функції пакування та розпакування
Ці функції перетворюють числа з плаваючою комою в цілі числа різного розміру, а потім упаковують ці цілі числа в одне 32-розрядне ціле число без знаку. Функції «розпакувати» виконують протилежну операцію, повертаючи вихідні числа з плаваючою комою.
uint
Vec2
|
packHalf2x16(vec2 v)
unpackHalf2x16(uint v)
|
Перетворіть два 32-бітні числа з плаваючою точкою на 16-бітні числа з плаваючою точкою та запакуйте їх. |
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 старших бітів.
- param v:
Вектор двох 32-розрядних значень із плаваючою комою, які потрібно перетворити на 16-розрядне представлення та запакувати в результат.
- return:
Упакована цінність.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/packHalf2x16.xhtml
vec2 unpackHalf2x16(uint v) 🔗
Зворотне до packHalf2x16.
Розпаковує 32-розрядне ціле число в два 16-розрядних значення з плаваючою комою, перетворює їх на 32-розрядні значення з плаваючою комою та поміщає їх у вектор. Перший компонент вектора отримується з 16 молодших бітів
v; другий компонент отримується з 16 старших бітівv.
- param 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)Перший компонент вектора буде записаний у молодші біти виходу; останній компонент буде записаний до старших бітів.
- param v:
Вектор значень, які потрібно упакувати в ціле число без знака.
- return:
32-розрядне ціле число без знаку, що містить упаковане кодування вектора.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/packUnorm.xhtml
vec2 unpackUnorm2x16(uint v) 🔗
Розпакуйте значення з плаваючою комою з цілого числа без знака.
Розпакуйте окремі 32-розрядні цілі числа без знака в пару 16-розрядних цілих чисел без знаку. Потім кожен компонент перетворюється на нормалізоване значення з плаваючою комою, щоб створити повернутий двокомпонентний вектор.
Перетворення неупакованого значення фіксованої коми f у число з плаваючою комою виконується наступним чином:
f / 65535.0
Перший компонент повернутого вектора буде витягнуто з молодших бітів вхідних даних; останній компонент буде виділено зі старших бітів.
- param 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)Перший компонент вектора буде записаний у молодші біти виходу; останній компонент буде записаний до старших бітів.
- param 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)
Перший компонент повернутого вектора буде витягнуто з молодших бітів вхідних даних; останній компонент буде виділено зі старших бітів.
- param 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)Перший компонент вектора буде записаний у молодші біти виходу; останній компонент буде записаний до старших бітів.
- param v:
Вектор значень, які потрібно упакувати в ціле число без знака.
- return:
32-розрядне ціле число без знаку, що містить упаковане кодування вектора.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/packUnorm.xhtml
vec4 unpackUnorm4x8(uint v) 🔗
Розпаковує значення з плаваючою комою з цілого числа без знаку.
Розпаковує окремі 32-розрядні цілі числа без знака в чотири 8-розрядні цілі числа без знаку. Потім кожен компонент перетворюється на нормалізоване значення з плаваючою комою, щоб створити повернутий чотирикомпонентний вектор.
Перетворення неупакованого значення фіксованої коми f у число з плаваючою комою виконується наступним чином:
f / 255.0
Перший компонент повернутого вектора буде витягнуто з молодших бітів вхідних даних; останній компонент буде виділено зі старших бітів.
- param 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)Перший компонент вектора буде записаний у молодші біти виходу; останній компонент буде записаний до старших бітів.
- param 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)
Перший компонент повернутого вектора буде витягнуто з молодших бітів вхідних даних; останній компонент буде виділено зі старших бітів.
- param 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].Старші біти результату будуть встановлені на нуль.
Примітка
Якщо біт дорівнює нулю, результат буде нульовим.
Попередження
Результат буде невизначеним, якщо:
зсув або біти від’ємні.
якщо сума зсуву та бітів більша за кількість бітів, які використовуються для зберігання операнда.
- param value:
Ціле число, з якого потрібно отримати біти.
- param offset:
Індекс першого біта для вилучення.
- param 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].Для старших бітів буде встановлено значення
зміщення + основа - 1(тобто це знак, розширений на ширину типу, що повертається).Примітка
Якщо біт дорівнює нулю, результат буде нульовим.
Попередження
Результат буде невизначеним, якщо:
зсув або біти від’ємні.
якщо сума зсуву та бітів більша за кількість бітів, які використовуються для зберігання операнда.
- param value:
Ціле число, з якого потрібно отримати біти.
- param offset:
Індекс першого біта для вилучення.
- param 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) 🔗
Вставляє
бітимолодші значущі бітиinsertуосновузі зміщеннямoffset.Повернуте значення матиме біти [зсув, зсув + біти + 1], взяті з [0, біти - 1]
вставки, а всі інші біти взяті безпосередньо з відповідних бітів основи.Примітка
Якщо біт дорівнює нулю, результатом буде вихідне значення основи.
Попередження
Результат буде невизначеним, якщо:
зсув або біти від’ємні.
якщо сума зсуву та бітів більша за кількість бітів, які використовуються для зберігання операнда.
- param base:
Ціле число, у яке потрібно вставити
insert.- param insert:
Значення бітів для вставки.
- param offset:
Індекс першого біта для вставки.
- param 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значення, де біт - це загальна кількість бітів, які використовуються для представленнязначення.
- param 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 біта в цілому числі.
- param value:
Значення, біти якого підраховуються.
- return:
Кількість бітів, для яких встановлено значення 1 у двійковому представленні
value.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.Примітка
Якщо
значеннядорівнює нулю, буде повернено-1.
- param 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.
- param 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:
Перше множене.
- параметр і:
Друге множене.
- param msb:
Змінна для отримання найважливішого слова продукту.
- param 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:
Перше множене.
- параметр і:
Друге множене.
- param msb:
Змінна для отримання найважливішого слова продукту.
- param 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:
Перший операнд.
- параметр і:
Другий операнд.
- param 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:
Перший операнд.
- параметр і:
Другий операнд.
- 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:
Значення, яке буде використовуватися як джерело значущості.
- param 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:
Значення, з якого слід витягти значуще число та показник степеня.
- param exp:
Змінна, в яку потрібно підставити показник степеня
x.- return:
Значуще значення
x.https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/frexp.xhtml