0001: ; Shadow.vsh 0002: ; c0-3 -- world + ビュー + 透視変換行列 0003: ; c12 -- {0.0, 0.5, 1.0, 2.0} 0004: ; c13 -- ライトのベクトル 0005: ; c15 -- ライトの位置のベクトル 0006: ; 0007: ; v0 頂点の座標値 0008: ; v3 法線ベクトル (w成分は1.0f) 0009: ; v7 テクスチャ座標 0010: 0011: vs.1.0 0012: 0013: ;座標変換 0014: sub r0, v0, c15 ; r0 = v-eye 0015: dp3 r1, r0, r0 0016: rsq r1.w, r1.w ; r1.w = 1/|v-eye| 0017: mul r1.w, c15.w, r1.w ; r1.w = far/|v-eye| 0018: mad r2, r1.w, r0, -r0 ; r2 = (far-|v-eye|)*(v-eye)/|v-eye| 0019: 0020: dp3 r1, v3, r0 0021: sge r1.w, r1.w, c12.x ; r1.w = (0<=N・L)?1:0 0022: add r1.w, r1, c16 ; オフセット 0023: 0024: mad r0, -r2, r1.w, v0 ; r0 = v - (0<=N・L)?(far-|v-eye|)*(v-eye)/|v-eye|:0 0025: mov r0.w, c12.z ; r0.w = 1 0026: m4x4 oPos, r0, c0 0027: