「ディフューズ・ライティング」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
7行目: | 7行目: | ||
光源の方向は光源とモデルの位置から計算し、法線はあらかめ持つものとし、この2つのベクトルは[[ベクトルの正規化|正規化]]されたものとする。 | 光源の方向は光源とモデルの位置から計算し、法線はあらかめ持つものとし、この2つのベクトルは[[ベクトルの正規化|正規化]]されたものとする。 | ||
− | + | このとき拡散反射する光の強さは「方向」と「法線」の角度の[[コサイン]]に比例する。法線と同一方向(角度ゼロ度)の場合は最大値に、法線に垂直(角度90度、真横から光が当たった)の場合はゼロになる。 | |
− | |||
− | このとき拡散反射する光の強さは「方向」と「法線」の角度の[[コサイン]] | ||
角度のコサインは2つの[[ベクトル]]の[[内積]]に比例する。つまり拡散反射する光の強さは「sとnの内積の積」として表現できるので、いちいち自前でコサインを計算せずとも[[プログラマブルシェーダー]]によくあるdot関数に2つのベクトルを突っ込んでやればよい。数値を0-1に丸め込む[[saturate関数]]を呼んでいるのはマイナス値(裏面)の場合はゼロとするためである。 | 角度のコサインは2つの[[ベクトル]]の[[内積]]に比例する。つまり拡散反射する光の強さは「sとnの内積の積」として表現できるので、いちいち自前でコサインを計算せずとも[[プログラマブルシェーダー]]によくあるdot関数に2つのベクトルを突っ込んでやればよい。数値を0-1に丸め込む[[saturate関数]]を呼んでいるのはマイナス値(裏面)の場合はゼロとするためである。 |