vs.1.1 //load the first index mov a0.x, v6.x //transform pos by first bone dp4 r0.x, v0, c[a0.x + 20] //20 being the base of the bone constants dp4 r0.y, v0, c[a0.x + 21] dp4 r0.z, v0, c[a0.x + 22] mov r0.w, c89.y //load the second index mov a0.x, v6.y //transform pos by second bone dp4 r1.x, v0, c[a0.x + 20] //20 being the base of the bone constants dp4 r1.y, v0, c[a0.x + 21] dp4 r1.z, v0, c[a0.x + 22] mov r1.w,c89.y //load the third index mov a0.x, v6.z //transform pos by third bone dp4 r2.x, v0, c[a0.x + 20] //20 being the base of the bone constants dp4 r2.y, v0, c[a0.x + 21] dp4 r2.z, v0, c[a0.x + 22] mov r2.w, c89.y //load the fourth index mov a0.x, v6.w //transform pos by fourth bone dp4 r3.x, v0, c[a0.x + 20] //20 being the base of the bone constants dp4 r3.y, v0, c[a0.x + 21] dp4 r3.z, v0, c[a0.x + 22] mov r3.w, c89.y //blend the poition values mul r0, r0, v7.x mad r0, r1, v7.y, r0 mad r0, r2, v7.z, r0 mad r0, r3, v7.w, r0 //////////////////////////////////////////////// // transform vertex pos into homogeneous xyzw // //////////////////////////////////////////////// dp4 oPos.x, r0, c0 dp4 oPos.y, r0, c1 dp4 oPos.z, r0, c2 dp4 r0.x, r0, c3 mov oPos.w, r0.x mad r0.x, r0.x , c90.x, c90.y min r0.x, r0.x , c90.w max r0.x, r0.x , c90.z mov oFog.x,r0.x // modulate vertex diffuse with ambient light mul oD0, v2, c5