Tôi muốn bắt đầu với những quan niệm sai lầm:
Các GPU hiện đại (NVIDIA khá lâu và AMD kể từ Quần đảo phía Nam) không hỗ trợ một cách có ý nghĩa các hoạt động vectơ / ma trận vốn có trong phần cứng. Chúng là các kiến trúc vector theo một hướng khác nhau: mỗi thành phần của một vectơ (x, y, z) thường có giá trị 32 hoặc 64, chứa các giá trị cho mỗi phần tử trong một làn. Vì vậy, một sản phẩm chấm 3D thường không phải là một hướng dẫn, nó là một phép nhân và hai phép nhân.
Ngoài ra, việc đếm các hoạt động nguyên thủy như nhân thêm, biến đổi một vectơ theo một bậc bốn sẽ tốn kém hơn so với chuyển đổi một vectơ bằng một ma trận. Biến đổi một vectơ bằng ma trận 3x3 là 3 bội số và 6 phép nhân, và biến đổi một vectơ theo một bậc bốn là hai bội số, mỗi phép nhân gồm 4 phép nhân và 12 phép nhân. (Bạn có thể nhận được ít ngây thơ hơn so với điều này ở đây, đây là một bài viết trên một cách nhanh hơn, nhưng nó vẫn không rẻ như nhân một vectơ với một ma trận.)
Tuy nhiên, hiệu suất không phải lúc nào cũng được xác định đơn giản bằng cách đếm số lượng hoạt động ALU mà nó thực hiện. Đệ tứ yêu cầu ít không gian hơn so với ma trận tương đương (giả sử bạn chỉ thực hiện xoay / tỷ lệ thuần túy) và điều đó có nghĩa là không gian lưu trữ ít hơn và lưu lượng bộ nhớ ít hơn. Điều này thường rất quan trọng trong hoạt hình (điều này cũng thuận tiện khi thường xuất hiện các thuộc tính nội suy đẹp của tứ phương).
Ngoài ra:
- Ma trận sử dụng nhiều không gian hơn vì chúng hỗ trợ nhiều hoạt động hơn. Một ma trận 3x3 có thể chứa tỷ lệ không hình thành, độ nghiêng, độ phản xạ và phép chiếu trực giao.
- Ma trận có thể được coi tự nhiên là các vectơ cơ sở và dễ dàng được xây dựng từ các vectơ đó.
- Nhân một bậc bốn với một phép quay khác (kết hợp hai phép quay) ít hoạt động hơn so với nhân một ma trận với một ma trận khác.