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: 
0035: 
0036: mov oD0, c14
0037: 
0038: ; ワールド座標での法線ベクトル
0039: m3x3 oT0,  v3,   c4
0040: