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 |