vector sample_hemisphere(vector2 u)
vector sample_hemisphere(vector center, vector2 u)
vector sample_hemisphere(float bias, vector2 u)
vector sample_hemisphere(vector center, float bias, vector2 u)
center
半球の中心を通る方向。これは正規化する必要がありません。 指定しなかった場合、中心方向は、(1,0,0)つまりX軸になります。
bias
中心方向に向かったバイアスで、-1から無限大の間を指定します。0はバイアスなしで、-1はすべてのポイントを水平にし、無限大はすべてのポイントを中心に寄せます。
これを指定すると、u.y
は単に1-pow(1-u.y, 1.0/(bias+1.0))
に置き換わります。
もっと汎用的なsample_direction_cone
、sample_sphere_cone
、他に関連する関数を使用して、これと同じバイアスを得るには、
それらの関数をコールする前にu.x
に同じ変更を適用します。
u
0から1の範囲の数値。
u
に基づいて単位ベクトル、つまり長さが1のベクトルを返します。
[0,1)
(つまり、0以上1未満)範囲の均等にランダムなu
値を指定すると、bias
が0なら、返される単位ベクトルは、center
を中心とする単位半球の表面上のu
に対して均等にランダムで連続的になります。
bias
が0より大きいなら、単位ベクトルは、center
に向かって滑らかに偏ります。
bias
が-1から0の間なら、単位ベクトルは、center
から離れて水平に向かって偏ります。
See also |