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: