「ハーフベクトル」の版間の差分

編集の要約なし
9行目: 9行目:
2個の[[ベクトル]]を足し算するとその中間のベクトルが得られるので、 ハーフベクトルを求めるには物体表面([[頂点]]または[[ピクセル]])の位置を基準とした「視点」と「光源」のベクトルを足し合わせればよい。 また、光の強さは0.0~1.0の範囲で表すのが一般的なので、その範囲になるよう[[正規化]](normalize)しておく。
2個の[[ベクトル]]を足し算するとその中間のベクトルが得られるので、 ハーフベクトルを求めるには物体表面([[頂点]]または[[ピクセル]])の位置を基準とした「視点」と「光源」のベクトルを足し合わせればよい。 また、光の強さは0.0~1.0の範囲で表すのが一般的なので、その範囲になるよう[[正規化]](normalize)しておく。


[[頂点シェーダー]]での実装例。
[[頂点シェーダー]]での実装例(超抜粋)。
<source lang="HLSL">
<source lang="HLSL">
float4x4 World;
float4x4 World;
float3 LightDirection;


struct VSIn {
struct VSIn {
31行目: 32行目:


     // ハーフベクトルを求める
     // ハーフベクトルを求める
     vsout.HalfVector    = normalize(LightPosition.xyz + cameraVector.xyz);
     vsout.HalfVector    = normalize(LightDirection.xyz + cameraVector.xyz);
      
      
     return vsout;
     return vsout;