Edited at

GLSLについてのメモ

WebGLの勉強を始めました。の姉妹記事的な感じです。

主にGLSLについてのメモや備忘録を書いていきます。


ビルトイン関数(一部)

関数
説明

radians(x)
xを度数からラジアンに変換する

degrees(x)
xをラジアンから度数に変換する

abs(x)
xの絶対値を返す

sign(x)
xが正なら+1.0、0.0なら0.0、負なら-1.0を返す

floor(x)
x以下の最大の整数を返す

ceil(x)
x以上の最小の整数を返す

fract(x)
x-floor(x)を返す

mod(x, y)
x-y*floor(x/y)を返す

min(x, y)
xとyのより小さい値を返す

max(x, y)
xとyのより大きい値を返す

clamp(x, a, b)
min(max(x, a), b)を返す。なお、HLSLなどで実装されている saturate 関数は、clamp(a, 0.0, 1.0) によって実現できる

mix(x, y, a)
x(1-a)+y*aを返す(つまり線形補間)

step(a, x)
aはしきい値、xはチェックされる値。しきい値未満の場合は0.0を、それ以上の場合は1.0の二値化を行う関数

smoothstep(e0, e1, x)
エルミート補完を行う

sin(x)
正弦を返す

cos(x)
余弦を返す

tan(x)
正接を返す

asin(x)
逆正弦を返す

acos(x)
逆余弦を返す

atan(y, x)
逆正接を返す

pow(x, y)
xのy乗を返す

exp(x)
eのx乗を返す

log(x)
xの自然対数を返す

exp2(x)
2のx乗を返す

log2(x)
xの底2のlogを返す

sqrt(x)
xの平方根を返す

inverssqrt(x)
1/sqrt(x)を返す


ベクトル用ビルトイン関数(一部)

関数
説明

length(x)
xの長さをfloatで返す

distance(x, y)
xとyの距離をfloatで返す

normalize(x)
xを正規化した値を返す

dot(x, y)
xとyの内積をfloatで返す

cross(v1, v2)
vec3型の引数v1とv2の外積をvec3で返す

faceforward(N, I, R)
dot(R, I) < 0ならNを返し、それ以外は-Nを返す

reflect(I, N)
Nを法線として、Iの反射方向をIと同じ型で返す

refract(I, N, eta)
Nを法線、eta(常にfloat型)を屈折率として、Iの屈折方向をIと同じ型で返す


ベクトルの比較演算

関数
説明

lessThan(x, y)
要素ごとの x < y の比較結果を返します

lessThanEqual(x, y)
要素ごとの x <= y の比較結果を返します

greaterThan(x, y)
要素ごとの x > y の比較結果を返します

greaterThanEqual(x, y)
要素ごとの x >= y の比較結果を返します

equal(x, y)
要素ごとの x == y の比較結果を返します

notEqual(x, y)
要素ごとの x != y の比較結果を返します

any(x)
xのすべての要素がfalseならfalseを、それ以外ならtrueを返します

all(x)
xのすべての要素がtrueならtrueを、それ以外ならfalseを返します

not(x)
xの全要素の真偽値を反転して返します