СПРАВОЧНИК
Функции шейдеров
Встроенные функции GLSL для графики и игр
Этот том собирает встроенные функции языка GLSL — тех самых, что доступны прямо в вершинных и фрагментных шейдерах без подключения библиотек. Здесь интерполяция и сглаживание, тригонометрия, работа с векторами и матрицами, выборка из текстур и экранные производные. Для каждой функции дана сигнатура, краткое описание поведения или формула и короткий пример на GLSL.
Векторные операции 8
cross()
cross(a, b)Векторное произведение (только vec3).distance()
distance(p0, p1)Расстояние между двумя точками.dot()
dot(a, b)Скалярное произведение двух векторов.faceforward()
faceforward(N, I, Nref)Разворачивает нормаль к наблюдателю.length()
length(v)Длина (евклидова норма) вектора.normalize()
normalize(v)Приводит вектор к единичной длине, сохраняя направление.reflect()
reflect(I, N)Отражает падающий вектор I относительно нормали N.refract()
refract(I, N, eta)Преломляет вектор I через границу с показателем eta.Интерполяция и сглаживание 5
clamp()
clamp(x, minVal, maxVal)Ограничивает x диапазоном [minVal, maxVal].mix()
mix(x, y, a)Линейная интерполяция между x и y по коэффициенту a.saturate()
saturate(x)Зажимает x в диапазон [0, 1]. Встроена в HLSL; в GLSL эмулируется через clamp.smoothstep()
smoothstep(edge0, edge1, x)Плавный переход от 0 к 1 на отрезке [edge0, edge1].step()
step(edge, x)Ступенчатая функция: 0.0 ниже порога, 1.0 на пороге и выше.Конструкторы и приведение 3
Округление и дробь 7
ceil()
ceil(x)Округление вверх до ближайшего целого.floor()
floor(x)Округление вниз до ближайшего целого.fract()
fract(x)Дробная часть числа: x - floor(x).mod()
mod(x, y)Остаток от деления: x - y * floor(x / y).round()
round(x)Округление к ближайшему целому.sign()
sign(x)Знак числа: -1, 0 или 1.trunc()
trunc(x)Отбрасывает дробную часть, округляя к нулю.Производные 3
Прочее 2
Сравнение компонентов 3
Текстуры 4
texelFetch()
texelFetch(sampler, ivec, lod)Чтение конкретного тексела по целочисленным координатам без фильтрации.texture()
texture(sampler, coord)Выборка цвета из текстуры по нормализованным координатам.textureLod()
textureLod(sampler, coord, lod)Выборка из текстуры с явно заданным уровнем мипмапа.textureSize()
textureSize(sampler, lod)Возвращает размеры текстуры в текселях для уровня lod.Тригонометрия 8
acos()
acos(x)Арккосинус: угол по косинусу.asin()
asin(x)Арксинус: угол по синусу.atan()
atan(y, x)Арктангенс. Двухаргументная форма даёт угол в правильном квадранте.cos()
cos(angle)Косинус угла (в радианах).degrees()
degrees(radians)Переводит радианы в градусы.radians()
radians(degrees)Переводит градусы в радианы.sin()
sin(angle)Синус угла (в радианах).tan()
tan(angle)Тангенс угла (в радианах).