getOrthogonalBasis
a.k.a. orthBas
即ち、normalを渡すとbinormalとtangentを適当に決めて mat3 を作ってくれるやつ
その他、カメラの回転・レイ方向の決定・重点サンプリングでの方向ベクトルの生成など色々使えます
code:glsl
mat3 getOrthogonalBasis(vec3 z) {
z = normalize(z);
vec3 up = abs(z.y) < 0.99 ? vec3(0.0, 1.0, 0.0) : vec3(0.0, 0.0, 1.0);
vec3 x = normalize(cross(up, z));
return mat3(x, cross(z, x), z);
}
up の求め方はいろいろ択アリ