0001: vs.1.0 0002: 0003: ; c0-3 -- world + ビュー + 透視変換行列 0004: ; c4-7 -- world 行列 0005: ; c8-11 -- world の逆転置行列 0006: ; c12 -- {0.0, 0.5, 1.0, 2.0} 0007: ; c13 -- ライトのベクトル 0008: ; c14 -- カメラの位置 0009: ; c15 -- メッシュの色 0010: ; c16 -- diffuse ライトの色 0011: ; c17 -- specular ライトの色 0012: ; 0013: ; v0 頂点の座標値 0014: ; v3 法線ベクトル 0015: ; v7 テクスチャ座標0 0016: 0017: 0018: ;座標変換 0019: dp4 oPos.x, v0, c0 0020: dp4 oPos.y, v0, c1 0021: dp4 oPos.z, v0, c2 0022: dp4 oPos.w, v0, c3 0023: 0024: ; 視点から頂点の方向e 0025: add r1, c14, -v0 0026: dp3 r1.w, r1, r1 0027: rsq r1.w, r1.w 0028: mul r1, r1, r1.w ; r1 = e = 正規化(視点 - 頂点) 0029: 0030: ; Phone すぺきゅらー (cos^2γ) 0031: dp3 r2.w, c13, v3 ; (l,n) 0032: dp3 r2.x, c13, r1 ; (l,e) 0033: dp3 r2.y, v3, r1 ; (n,e) 0034: 0035: mul r2.z, r2.w, r2.y ; r2.z = (l,n)(n,e) 0036: mad r2.z, c12.w, r2.z, -r2.x ; r2.z = 2(l,n)(n,e)-(l,e) = cosγ 0037: max r2.z, r2.z, c12.x ; 負の値をカット 0038: mov r2.w, c12.w ; 2乗するためのパラメータを入れる 0039: lit r2.z, r2.zzww ; r2.z = r2.z^r2.w 0040: mul r3, c17, r2.z ; スペキュラーの色をつける 0041: 0042: dp4 r2.z, c13, v3 ; (l,n)+ambient 0043: mad oD0, c15, r2.z, r3 ; ランバート diffuse 0044: 0045: ; メッシュのテクスチャー 0046: mov oT0, v7 0047: