//////////////////////// // Set UV coordinates 4 envbumping // //////////////////////// ;add r0, v0, -c9 // DirFromCamera = Vector - CameraPos ; ;// normalize direction from camera ;dp3 r1.x, r0, r0 // DirFromCameraLenSquared = DirFromCamera | DirFromCamera ;rsq r1.y, r1.x // OneOverDirFromCameraLen = 1.0f / sqrt(DirFromCameraLenSquared) ;mul r0, r0, r1.y // DirFromCamera *= OneOverDirFromCameraLen ; ; ;// produce S n T vectors from vertex normal ;mov oT1, v1 ;mul r3, v1.zxyw, c11.xyzw ;mad r4.xyz, v1.yzxw, c11.zxyw, -r3 // S ;mul r3, v1.zxyw, c11.xyzw ;mad r5.xyz, v1.yzxw, c11.zxyw, -r3 // T ; ; ;// normalize s n t ; ;dp3 r4.w, r4, r4 ;rsq r4.w, r4.w ;mul r4, r4, r4.w ; ;dp3 r5.w, r5, r5 ;rsq r5.w, r5.w ;mul r5, r5, r5.w ; ;// scale bumps ; ;mul r4,r4,c37 ;mul r5,r5,c37 ; ;// rotate s n t by world(model) orlientation basis ; ;dp3 oT1.x, r4, c10 ;dp3 oT1.y, r5, c10 ;dp3 oT1.z, v1, c10 ; ;dp3 oT2.x, r4, c11 ;dp3 oT2.y, r5, c11 ;dp3 oT2.z, v1, c11 ; ;dp3 oT3.x, r4, c12 ;dp3 oT3.y, r5, c12 ;dp3 oT3.z, v1, c12 ; ; ;mov oT1.w,r0.x ;mov oT2.w,r0.y ;mov oT3.w,r0.z // update dynamic eye vector for vspec PS ; ; add r0, v0, -c9 // DirFromCamera = Vector - CameraPos dp3 r1.x, r0, r0 // DirFromCameraLenSquared = DirFromCamera | DirFromCamera rsq r1.y, r1.x // OneOverDirFromCameraLen = 1.0f / sqrt(DirFromCameraLenSquared) mul r0, r0, r1.y // DirFromCamera *= OneOverDirFromCameraLen dp3 r1.z, r0, v1 // Mul = DirFromCamera | Normal mul r1.w, r1.z, -c94.x // Mul *= -2.0f mad r2, v1, r1.w, r0 // dir = Normal * Mul + DirFromCamera dp3 oT0.x, r2, c12 // u = dir | ModelMatrixRight dp3 oT0.y, r2, c13 // v = dir | ModelMatrixUp dp3 oT0.z, r2, c14 // w = dir | ModelMatrixLook // copy base UV's mov oT1, v3 ;mov oT2, v3