Bật khử răng cưa trong game - Bao nhiêu là đủ? (phần cuối)

Chocobo  | 01/05/2011 0:00 AM

Cả MSAA và SSAA đều là 2 công nghệ khử răng cưa đầu tiên trên thế giới. Tuy nhiên, nó còn tồn tại nhiều khuyết điểm. Và các công nghệ "thế hệ mới" sắp được trình bày dưới đây sẽ chủ yếu bổ sung khuyết điểm của 2 loại kể trên.

Phần đầu của loạt bài này đã giới thiệu cho các bạn về 2 biện pháp khử răng cưa cơ bản là SSAA và MSAA cùng với ưu, nhược điểm của chúng. Trong phần cuối ngày hôm nay, chúng ta sẽ tìm hiểu về một số công nghệ khử răng cưa mới của cả Nvidia và AMD. Nhưng trước hết ta cần tìm hiểu một chút về Transparent Texture.
 
Trong game 3D, một vật thể được tạo nên từ nhiều đa giác hợp thành. Vật thể càng chi tiết bao nhiêu thì số lượng đa giác cần để thể hiện càng lớn bấy nhiêu. Trong những cảnh như rừng cây, việc thể hiện từng chiếc lá cây bằng mô hình 3D sẽ cần một số lượng đa giác khổng lồ, chưa kể đến các hiệu ứng ánh sáng và đổ bóng cần phải được tính toán trên từng đa giác. Vì vậy, ngay cả với những card đồ họa cao cấp nhất hiện nay thì công việc này vẫn còn hết sức nặng nhọc. Thế là các nhà làm game phải sử dụng một thủ thuật khác gọi là Transparent Texture.
 
Transparent Texture, cơ bản có thể hiểu là một tấm “ảnh” mô phỏng một vật thể 3D. Ví dụ như khi thể hiện 1 hàng rào sắt, một texture 2D sẽ được dựng lên.
 
Khu vực kẻ sọc là vùng trong suốt.
 
GPU sẽ dựng khung cảnh 3D chưa có hàng rào.
 
Bạn có thể thấy các vùng hàng rào không hề được vẽ bằng các đa giác.
 
Sau đó các texture thể hiện hàng rào sẽ được “dán” vào hình.
 
Khung hình đã được dựng hoàn chỉnh.
 
Transparent Texture là biện pháp rất hữu hiệu để thể hiện những vật thể nhiều chi tiết mà không làm tăng số lượng đa giác trong khung hình. Tuy nhiên nó lại làm nảy sinh vấn đề khi sử dụng khử răng cưa. Chắc bạn còn nhớ MSAA hoạt động dựa trên nguyên tắc xác định cạnh của vật thể để tiến hành xử lý. Tuy nhiên các texture lại không phải là vật thể 3D, vì vậy mà MSAA hoàn toàn không có tác dụng. Đây cũng chính là lý do mà ở bức hình MSAA ở cuối phần 1, răng cưa ở khu vực hàng rào vẫn còn nguyên như khi chưa bật AA. Tất nhiên SSAA vẫn có thể hoạt động tốt đối với texture do đặc tính của nó nhưng nhược điểm thì chắc bạn đã rõ. Vì lý do đó mà các nhà sản xuất card đồ họa đã nghĩ tới việc phát triển tính năng khử răng cưa có khả năng khắc phục nhược điểm này gọi là Transparency Anti – Aliasing.
 
TAAA và Adaptive Anti - Aliasing
 
Cùng với sự xuất hiện của dòng Geforce 7, Nvidia giới thiệu một tính năng khử răng cưa mới có tên là TAAA (Transparency adaptive anti-aliasing). Như đã đề cập ở trên, MSAA chỉ hoạt động trên những pixel nằm trên cạnh của đa giác. Với TAAA, các pixel nằm trong vùng texture cũng được đánh dấu và tiến hành khử răng cưa. Driver của Nvidia cung cấp cho người sử dụng 2 lựa chọn giữa khử răng cưa texture bằng MSAA (TrMSAA) hoặc bằng SSAA (TrSSAA).
 
Với TrMSAA thì số mẫu khử răng cưa phụ thuộc vào số mẫu MSAA trên toàn khung hình còn TrSSAA cho phép bạn lựa chọn 2X, 4X hoặc 8X Super Sampling. Công nghệ Adaptive AA của AMD (được giới thiệu lần đầu tiên trên dòng Radeon X1000) cũng hoạt động tương tự tuy nhiên nó chỉ cho phép lựa chọn số mẫu khử răng cưa với SSAA. Sau đây chúng ta cùng xem hiệu quả mang lại từ TAAA và Adaptive AA.
 
TrMSAA.
 
TrSSAA.
 
Adaptive AA.
 
Có thể thấy cả 2 phương pháp đều cho kết quả rất tốt. Răng cưa ở vùng hàng rào đã không còn mặc dù phần hàng rào ở TrSSAA nhìn có vẻ dày dặn hơn so với Adaptive AA. Một điều đáng tiếc là 2 phương pháp này trong thực tế lại không thật sự hiệu quả và chỉ hoạt động trong một số Game nhất định, đối với TAAA thì thường là các Game trên nền DirectX10,11 còn Adaptive AA thì ngược lại chỉ hoạt động trên DirectX9.
 
Nvidia Quincunx
 
Được tích hợp cùng với dòng Geforce 3, Quincunx được giới thiệu nhằm thay thế các tính năng khử răng cưa đời đầu như MSAA và FSAA. Thay vì việc lấy mẫu để khử răng cưa như trước, Quincunx hoạt động bằng cách tạo 1 bản sao của khung hình sau đó dịch bản sao đó theo đường chéo ½ pixel.
 
 
Mặc dù được quảng cáo là cho hiệu quả khử răng cưa 4x mà khối lượng xử lý chỉ bằng MSAA 2x nhưng thực tế Quincunx làm cho hình ảnh bị nhòe trông khá khó chịu (giống như choi Game ở độ phân giải thấp vậy). Tính năng này cũng không tồn tại được lâu và đã bị loại bỏ khi các card đồ họa ra đời sau đủ mạnh để kích hoạt MSAA một cách trơn tru.
 
Temporal Anti - Aliasing
 
Xuất hiện cùng với thế hệ Radeon X800, cũng giống như Quincunx của Nvidia Temporal AA của AMD nhắm tới mục tiêu nâng cao hiệu quả khử răng cưa mà không làm tăng khối lượng xử lý của GPU. Về cơ bản Temporal AA sẽ thực hiện khử răng cưa một cách riêng biệt trên 2 khung hình liền nhau. Khi số khung hình lớn hơn mức 60fps, Mắt người sẽ không phân biệt được và sẽ làm tăng hiệu quả khử răng cưa.
 
Các frame được lấy mẫu khử răng cưa riêng biệt.
 
như bạn có thể thấy ở hình trên, mỗi khung hình được lấy mẫu ở các vị trí khác nhau, do thời gian xử lý giữa 2 khung hình là rất nhanh nên số mẫu khử răng cưa dường như được nhân đôi mà không yêu cầu GPU phải xử lý thêm. Tuy nhiên Temporal AA gặp phải một vấn đề rất dễ nhận thấy đó là mức khung hình luôn luôn phải đảm bảo ở 60fps. Đối với những Game tầm trung thì mức này đã rất khó để duy trì chứ chưa nói đến những Game sát phần cứng như Crysis. Hiện nay thì Temporal AA đã không còn có mặt trong các phiên bản Driver mới của AMD.
 
Custom Filter Anti – Aliasing (CFAA)
 
Vẫn dựa trên nguyên tắc cũ tuy nhiên CFAA còn sử dụng các mẫu nằm bên ngoài pixel.  Mẫu được lấy trong một khu vực hình tròn xung quanh pixel nhằm làm cho việc trộn màu được chính xác hơn. AMD cung cấp 3 lựa chọn cho CFAA đó là narrow tent, wide tent và edge – detect. Narrow và wide tent đơn giản chỉ là 2 mức kích thước khu vực lấy mẫu (wide tent rộng hơn) còn edge – detect thì phức tạp hơn một chút, nó áp dụng một thuật toán nhận biết các góc cạnh của vật thể để tập trung khử răng cưa vào những khu vực đó. Thực tế edge – detect là tùy chọn hữu hiệu nhất trong cả 3 tuy nhiên cũng yêu cầu năng lực xử lý của GPU nhiều hơn.
 
 
So sánh giữa khi bật và tắt Edge Detect.
 
Nhìn chung, hiệu quả của Edge – Detect cũng tùy thuộc vào từng game. Ở hình trên ta có thể thấy Edge - Detect không tạo ra nhiều khác biệt khi được kích hoạt và nó vẫn mắc phải khuyết điểm là không khử được răng cưa cho texture.
 
Đồ họa trong các trò chơi ngày nay càng ngày càng gần với thực tế hơn một phần cũng nhờ vào sự hỗ trợ của tính năng khử răng cưa, nhờ có nó mà thế giới ảo đã trở nên mềm mại sinh động hơn chứ không còn là những khối đa giác thô kệch nữa. Hy vọng sau khi đọc xong bài viết này bạn đã có thêm được những kinh nghiệm giá trị về tính năng thú vị này trong Game.
 
Tham khảo:Tom’s Hardware