「スペキュラー・ライティング」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
5行目: | 5行目: | ||
; 反射光ベクトル | ; 反射光ベクトル | ||
− | * n = | + | * n = 法線 |
* s = 光源に対する方向(-sで入射光ベクトル) | * s = 光源に対する方向(-sで入射光ベクトル) | ||
* r = 反射光ベクトル | * r = 反射光ベクトル | ||
14行目: | 14行目: | ||
r = -s + 2 ( s ・ n) n | r = -s + 2 ( s ・ n) n | ||
− | ちなみに[[HLSL]]にも[[GLSL]] | + | ちなみに[[HLSL]]にも[[GLSL]]にも反射光ベクトルを求めるreflect関数があるので難しいことを考えずに入射光ベクトルと法線をブチ込んでやれば一発で計算してくれる。 |
[[HLSL]] | [[HLSL]] | ||
25行目: | 25行目: | ||
反射は視線ベクトルvと反射ベクトルrが一致するときに最大になり、反射ベクトルから離れるにつれ急激に減衰する。 | 反射は視線ベクトルvと反射ベクトルrが一致するときに最大になり、反射ベクトルから離れるにつれ急激に減衰する。 | ||
これは視線ベクトルvと反射ベクトルrの内積を求め、さらに光沢shininessの冪乗を求めればそれらしくなる。乗数(光沢shininess)が大きいほど角度に応じて急速にゼロに近づき、より輝いて見える。 | これは視線ベクトルvと反射ベクトルrの内積を求め、さらに光沢shininessの冪乗を求めればそれらしくなる。乗数(光沢shininess)が大きいほど角度に応じて急速にゼロに近づき、より輝いて見える。 | ||
− | float3 intensity = pow( | + | float3 intensity = pow( max( dot( v, r ), 0.0 ), shininess); |
== 関連項目== | == 関連項目== | ||
33行目: | 33行目: | ||
**[[アンビエント・ライティング]] | **[[アンビエント・ライティング]] | ||
**[[スペキュラー・ライティング]] | **[[スペキュラー・ライティング]] | ||
− | |||
− |