0001: ; c0-3   -- world + ビュー + 透視変換行列
0002: ; c4-7   -- world
0003: ; c12    -- {0.0, 0.5, 1.0, 2.0}
0004: ;
0005: ; v0    頂点の座標値
0006: ; v3    法線ベクトル (w成分は1.0f)
0007: 
0008: vs.1.0
0009: 
0010: ;座標変換
0011: m4x4 oPos,  v0,   c0
0012: 
0013: ; Lambert 拡散
0014: dp4 r0, v3, c13
0015: max r0, r0, c13.w
0016: mul oD0, r0, c14
0017: 
0018: ; ワールド座標での法線ベクトル
0019: m3x3 r1,  v3,   c4
0020: mov oT1, r1
0021: 
0022: ; 視線ベクトル
0023: m4x4 r0,  v0,   c4
0024: add r0, c15, -r0
0025: mov oT2, r0
0026: 
0027: dp3 r0.w, r0, r0    ; 正規化
0028: rsq r0.w, r0.w
0029: mul r0, r0, r0.w
0030: 
0031: dp3 r0.w, r0, r1
0032: mul r0.w, r0.w, c12.w
0033: mad oT0.xyz, r0.w, r1, -r0  ; r=2(N・E)N-E
0034: