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 の求め方はいろいろ択アリ