メインメニューを開く

「ハーフベクトル」を編集中

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
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;
 
float3 CameraPosition;
 
  
 
struct VSIn {
 
struct VSIn {
30行目: 28行目:
 
      
 
      
 
     // カメラベクトルを求める
 
     // カメラベクトルを求める
     float3 cameraVector  = normalize(worldPosition.xyz - CameraPosition.xyz);
+
     float3 cameraVector  = normalize(worldPosition.xyz - cameraPosition.xyz);
  
 
     // ハーフベクトルを求める
 
     // ハーフベクトルを求める
     vsout.HalfVector    = normalize(LightDirection.xyz + cameraVector.xyz);
+
     vsout.HalfVector    = normalize(LightPosition.xyz + cameraVector.xyz);
 
      
 
      
 
     return vsout;
 
     return vsout;

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)