Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Matrix VFunction Matrix::LookTo(const Vector& position, const Vector& direction, const Vector& up)
- {
- //Vector R2 = Vector::Normalize3(direction);
- Vector R2 = direction;
- Vector R0 = Vector::Cross(up, R2);
- R0 = Vector::Normalize3(R0);
- Vector R1 = Vector::Cross(R2, R0);
- Vector NegEyePosition = _mm_sub_ps(_mm_setzero_ps(), position);
- Vector D0 = Vector::Dot3(R0, NegEyePosition);
- Vector D1 = Vector::Dot3(R1, NegEyePosition);
- Vector D2 = Vector::Dot3(R2, NegEyePosition);
- Matrix M;
- M.x = Vector::Select(D0, R0, Vector::Constant::Select1110);
- M.y = Vector::Select(D1, R1, Vector::Constant::Select1110);
- M.z = Vector::Select(D2, R2, Vector::Constant::Select1110);
- M.w = Vector::Constant::IdentityR3.v;
- M = Transpose(M);
- return M;
- }
- Matrix VFunction Matrix::LookAt(const Vector& position, const Vector& target, const Vector& up)
- {
- return Matrix::LookTo(position, Vector::Normalize3(_mm_sub_ps(target, position)), up);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement