「スペキュラー・ライティング」の版間の差分

imported>Administrator
ページの作成:「'''スペキュラー・ライティング'''(英語: specular lighting)とは、3DCGにおいてモデルの表面の輝きを計算するアルゴ...」
 
 
(他の1人の利用者による、間の1版が非表示)
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]]にも反射光ベクトルを求めるreflect関数があるので難しいことを考えずに入射光ベクトルと法線をブチ込んでやれば一発で計算してくれる。
ちなみに[[HLSL]]にも[[GLSL]]にも反射光ベクトルを求めるreflect関数があるので難しいことを考えずに入射光ベクトルと法線ベクトルをブチ込んでやれば一発で計算してくれる。


[[HLSL]]
[[HLSL]]
25行目: 25行目:
反射は視線ベクトルvと反射ベクトルrが一致するときに最大になり、反射ベクトルから離れるにつれ急激に減衰する。
反射は視線ベクトルvと反射ベクトルrが一致するときに最大になり、反射ベクトルから離れるにつれ急激に減衰する。
これは視線ベクトルvと反射ベクトルrの内積を求め、さらに光沢shininessの冪乗を求めればそれらしくなる。乗数(光沢shininess)が大きいほど角度に応じて急速にゼロに近づき、より輝いて見える。
これは視線ベクトルvと反射ベクトルrの内積を求め、さらに光沢shininessの冪乗を求めればそれらしくなる。乗数(光沢shininess)が大きいほど角度に応じて急速にゼロに近づき、より輝いて見える。
  float3 intensity =  pow( max( dot( v, r ), 0.0 ), shininess);
  float3 intensity =  pow( saturate( dot( v, r ) ), shininess);


== 関連項目==
== 関連項目==
33行目: 33行目:
**[[アンビエント・ライティング]]
**[[アンビエント・ライティング]]
**[[スペキュラー・ライティング]]
**[[スペキュラー・ライティング]]
[[category: 3DCG]]