0001: #define PI 3.14159265358979
0002: 
0003: // ---------------------------------------------------------------------------
0004: // 頂点シェーダ入力データ
0005: // ---------------------------------------------------------------------------
0006: struct appdata
0007: {
0008:     float4 position : POSITION;
0009:     float2 texcoord : TEXCOORD;
0010: };
0011: // ---------------------------------------------------------------------------
0012: // 頂点シェーダ出力データ
0013: // ---------------------------------------------------------------------------
0014: struct vertout
0015: {
0016:     float4 hpos     : HPOS; // 頂点座標
0017:     float4 tcoords  : TEX0; // テクスチャ座標
0018:     float4 eye      : TEX1; // 視線ベクトル
0019:     float4 light    : TEX2; // 光源ベクトル
0020: };
0021: // ---------------------------------------------------------------------------
0022: // 頂点シェーダプログラム
0023: // ---------------------------------------------------------------------------
0024: vertout main(appdata IN
0025:             , uniform float4x4  ModelViewProj
0026:             , uniform float4    EyePos
0027:             , uniform float4    LightPos
0028:             )
0029: {
0030:     vertout OUT;
0031: 
0032:     // 座標変換
0033:     OUT.hpos = mul(ModelViewProj, IN.position);
0034: 
0035:     // 視線ベクトル
0036:     OUT.eye = EyePos - IN.position;
0037:     
0038:     // 光源ベクトル
0039:     OUT.light = LightPos - IN.position;
0040:     
0041:     // テクスチャ座標
0042:     OUT.tcoords.xy = IN.texcoord;
0043: 
0044:     return OUT;
0045: }
0046: