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の全要素の真偽値を反転して返します |