0001: ; c0-3   -- world + ビュー 行列
0002: ; c8-11   -- world
0003: ; c12    -- {1/sqrt(2), 0.5, 1.0, 2.0}
0004: ; c13    -- ライトのベクトル (w成分は環境光の強さ)
0005: ; c14    -- モデルの色
0006: ;
0007: ; v0    頂点の座標値
0008: ; v7    テクスチャ座標
0009: 
0010: vs.1.1
0011: 
0012: ; 通常レンダリング
0013: m4x4   r0,  v0,   c0
0014: m4x4 oPos,  r0,   c4
0015: 
0016: ; ((L・N) + L.w)*c14 (平行光源のライティング)
0017: dp4 r0.w,   v3,   c13
0018: mul oD0,    r0.w, c14
0019: 
0020: m4x4   r0,  v0,   c8
0021: add    r0, c16,   r0        ; 視線ベクトル 
0022: dp3 r0.w, r0, r0            ; 規格化
0023: rsq r0.w,  r0.w
0024: mul r0.xyz,  r0.xyz,  r0.w
0025: 
0026: dp3 r1.x,  v3,   c8         ; ワールド空間での法線
0027: dp3 r1.y,  v3,   c9
0028: dp3 r1.z,  v3,   c10
0029: dp3 r1.w, r1, r1            ; 規格化
0030: rsq r1.w,  r1.w
0031: mul r1.xyz,  r1.xyz,  r1.w
0032: 
0033: dp3 r1.w, r0, r1
0034: add r1.w, r1.w, r1.w
0035: mad r0.xyz, r1.w, r1.xyz, -r0.xyz; 反射ベクトル
0036: 
0037: add oD0.w, r0.z,   c12.y ; nzがz軸のどちらを向いているか
0038: 
0039: ; テクスチャーを張る
0040: add r2.z, c12.z, r0.z
0041: rcp r2.z, r2.z
0042: mul r2.x,  r0, r2.z
0043: mul r2.y, -r0, r2.z
0044: mad oT0.xy, c12.y, r2, c12.y
0045: 
0046: add r2.z, c12.z, -r0.z
0047: rcp r2.z, r2.z
0048: mul r2.xy, -r0, r2.z
0049: mad oT1.xy, c12.y, r2, c12.y
0050: