0001: ; c0-3   -- world + ビュー + 透視変換行列
0002: ; c4-7   -- world 行列
0003: ; c8-11  -- world の逆転置行列
0004: ; c12    -- {0.0, 0.5, 1.0, -1.0}
0005: ; c14    -- カメラの位置
0006: ; c13    -- 屈折ファクタ N = c13.w * n
0007: ; c15    -- メッシュの色
0008: ;
0009: ; v0    頂点の座標値
0010: ; v3    法線ベクトル
0011: ; v7    テクスチャ座標0
0012: 
0013: vs.1.0
0014: 
0015: ; 位置座標を射影空間にトランスフォームし、レジスタに出力
0016: dp4 oPos.x, v0, c0
0017: dp4 oPos.y, v0, c1
0018: dp4 oPos.z, v0, c2
0019: dp4 oPos.w, v0, c3
0020: 
0021: ; 頂点位置をワールド空間にトランスフォーム
0022: dp4 r0.x, v0, c4
0023: dp4 r0.y, v0, c5
0024: dp4 r0.z, v0, c6
0025: dp4 r0.w, v0, c7
0026: 
0027: ; 法線ベクトルをワールド空間にトランスフォーム
0028: dp3 r1.x, v3, c8
0029: dp3 r1.y, v3, c9
0030: dp3 r1.z, v3, c10
0031: 
0032: ; ワールド空間の法線ベクトルを正規化
0033: dp3 r1.w, r1, r1
0034: rsq r1.w, r1.w
0035: mul r1, r1, r1.w
0036: 
0037: ; 頂点から視点へのベクトル
0038: sub r3, c14, r0
0039: dp3 r2.w, r3, r3
0040: rsq r2.w, r2.w
0041: mul r2, r3, r2.w
0042: 
0043: ; 屈折ファクタをセット
0044: mul r4.xyz, r1, c13
0045: 
0046: ; 2*(E dot N)*N - E を計算し、レジスタに出力
0047: dp3 r3, r2, r4
0048: add r3, r3, r3
0049: mad oT0.xyz, r4, r3, -r2
0050: mov oT0.w, c12.z
0051: