0001: ; c0-3   -- world + ビュー + 透視変換行列
0002: ; c12    -- {0.0, 0.5, 1.0, 2.0}    N.B. 今回出番無し
0003: ; c13    -- ライトのベクトル (w成分は環境光の強さ)
0004: ; c14    -- ライトの色(メッシュの色)
0005: ; c15    -- 視線ベクトル
0006: ;
0007: ; v0    頂点の座標値
0008: ; v3    法線ベクトル (w成分は1.0f)
0009: ; v7    テクスチャ座標
0010: 
0011: vs.1.0
0012: 
0013: ;座標変換
0014: dp4 oPos.x, v0,   c0
0015: dp4 oPos.y, v0,   c1
0016: dp4 oPos.z, v0,   c2
0017: dp4 oPos.w, v0,   c3
0018: 
0019: ; ランバート diffuse
0020: dp4 r0.w,   v3,  c13            ; l・n
0021: mul oD0,    c14,  r0.w          ; ライトの色(メッシュの色付き)をつける
0022: 
0023: ;カメラへの向きVを計算する
0024: add r2, c15, -v0
0025: 
0026: ;V の正規化
0027: dp3 r2.w, r2, r2
0028: rsq r2.w, r2.w
0029: mul r2, r2, r2.w
0030: 
0031: ; H = (V+L)/|V+L|
0032: add r2, r2, c13
0033: 
0034: dp3 r2.w, r2, r2
0035: rsq r2.w, r2.w
0036: mul r2, r2, r2.w
0037: 
0038: ; H・N
0039: dp3 oT0.x,   r2,   v3
0040: 
0041: ; N・L
0042: dp3 oT0.y,   v3,   c13