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

Chocobo  | 21/04/2011 0:00 AM

Hầu hết các Game mới ngày nay đều có hỗ trợ tính năng khử răng cưa, nhưng bạn có biết bật khử răng cưa mức nào vừa cho hình ảnh mượt hơn lại không làm giảm quá nhiều khung hình hay không.

Khử răng cưa từ lâu đã là tính năng không thể thiếu trong các game PC hiện nay, tuy nhiên nó hoạt động như thế nào thì không phải ai cũng biết. Bài viết này sẽ cung cấp cho các bạn cái nhìn sơ lược về tính năng thú vị này.
 
Răng cưa là gì ?
 
Trước tiên, bạn cần biết màn hình máy tính là một ma trận gồm rất nhiều những ô vuông nhỏ gọi là pixel. Nếu như trong thực tế 1 đường thẳng là tập hợp của vô số điểm tạo thành thì một đường thẳng trên màn hình là tập hợp của 1 số hữu hạn các pixel. Mọi hình ảnh trên máy tính đều được hiển thị bằng các “ô vuông”, pixel này dẫn đến hiện tượng răng cưa.
 
Hiện tượng răng cưa trên 1 đường chéo.
 
Bạn có thể thấy khi các pixel xếp sát nhau, nó sẽ tạo ra hình dạng trông giống như hình bậc thang mà ta gọi là răng cưa. Về lý thuyết, nếu số lượng pixel đủ lớn thì mắt ta sẽ không trông thấy được những răng cưa này, tuy nhiên thật không may là những màn hình hiện đại nhất hiện nay vẫn chưa thể làm được điều đó. Vì vậy mà các nhà sản xuất card đồ họa đưa ra công nghệ Anti - Aliasing để giải quyết vấn đề trên.                                                                             
 
Anti – Aliasing (AA) hoạt động như thế nào ?
 
AA ra đời với mục đích loại bỏ hiện tượng răng cưa này để nâng cao chất lượng hình ảnh cho các trò chơi. Có rất nhiều phương pháp để khử răng cưa nhưng nhìn chung đều dựa trên nguyên lý là GPU sẽ tính toán màu trung gian cho các pixel dựa trên màu của các pixel xung quanh nó nhằm làm cho các đường rìa trở nên bớt răng cưa hơn. Hình sau sẽ giúp bạn dễ hình dung hơn về khử răng cưa.
 
So sánh trước và sau khi bật AA.
 
Có thể nhận thấy ở hình trên, đường bao của hình tròn đã được chèn xen kẽ với các pixel màu xám (kết quả khi trộn giữa màu trắng của nền và đen của hình) tạo cảm giác mềm mại hơn và làm giảm hiệu ứng răng cưa.
 
Hai phương pháp khử răng cưa cơ bản nhất được sử dụng ngày nay đó là Super Sampling Multi Sampling.
 
Super Sampling (SSAA hay FSAA)
 
Super Sampling là phương pháp khử răng cưa ra đời đầu tiên. Như đã trình bày ở trên, để có thể khử được răng cưa thì GPU phải tính toán màu cho các pixel sao cho phù hợp. Nguyên lý của FSAA là GPU sẽ dựng hình(dựng trước bên trong GPU,hình này không hiển thị ra màn hình) với độ phân giải lớn hơn so với độ phân giải ban đầu, lớn hơn bao nhiêu phụ thuộc vào mức lấy mẫu.
 
Ví dụ với độ phân giải màn hình là 1024 x 768 và sử dụng 4x FSAA (2x cho chiều dài và 2x cho chiều rộng) thì hình sẽ được dựng trước với độ phân giải là (1024 * 2) x (768 * 2)  = 2048 x 1536 sau đó thu nhỏ hình về độ phân giải gốc. Màu của mỗi pixel lúc này sẽ là màu tổng hợp của 4 pixel dựng trước (cái này được gọi là sample pixels hay pixel mẫu), kết quả sẽ làm cho các chỗ răng cưa trở nên khó nhận thấy hơn. Với chế độ khử răng cưa 2x AA thì hình ảnh sẽ được dựng với chiều dài hoặc chiều rộng gấp đôi thay vì cả 2 chiều như 4x.
 
Render với độ phân giải gấp đôi sau đó thu nhỏ lại.
 
FSAA cho tới bây giờ vẫn là phương pháp khử răng cưa mang lại hình ảnh chất lượng tốt nhất. Tuy nhiên việc GPU phải tính toán thêm một lượng lớn điểm ảnh dẫn đến hiệu năng dựng hình sụt giảm rất nhiều. Nếu ai đã từng sở hữu card đồ họa dòng GeForce 2 của NVIDIA thì chắc đã biết tính năng khử răng cưa tại thời điểm đó chỉ bật lên để ngắm là chính chứ mức fps khi  kích hoạt FSAA thực sự không thể chấp nhận nổi. Vì lý do đó mà tính năng FSAA hiện nay đã bị loại bỏ trong các driver của NVIDIA (với ATI/AMD thì từ dòng card HD 5xxx trở đi FSAA đã được hỗ trợ trở lại).
 
Multi Sampling (MSAA)
 
Multi Sampling ra đời để thay thế cho Super Sampling với mục tiêu cân bằng giữa hiệu năng - chất lượng, giúp giảm thiểu số lượng điểm ảnh mà GPU phải tính toán thêm.
 
MSAA hoạt động cũng tương tự như SSAA, hình sẽ được dựng trước với độ phân giải lớn hơn, tuy nhiên thay vì xử lý màu và độ sâu của tất cả các pixel như SSAA, MSAA sẽ tiến hành 1 phép thử độ sâu (depth-test) của các mẫu nằm bên trong pixel nhằm xác định xem những pixel nào nằm trên cạnh của vật thể để từ đó tiến hành khử răng cưa. Nhờ đó GPU chỉ cần tính toán để khử răng cưa phần vật thể chứ không cần khử toàn bộ khung hình như FSAA nữa. 
 
Nguyên lý làm việc của MSAA.
 
Hình trên là 1 ví dụ về MSAA với mức lấy mẫu 4x. Các chấm đỏ thể hiển vị trí mà GPU sẽ lấy mẫu để từ đó trộn màu cho phù hợp. Ta có thể thấy pixel trên cùng bên trái có 2 mẫu lọt vào vùng xanh lá cây và 2 mẫu ở vùng xanh lam nên màu của pixel này sẽ được trộn theo tỉ lệ tương ứng là 2 : 2. Số lượng mẫu thử trong 1 pixel càng nhiều thì tỉ lệ trộn màu càng chính xác và cho hiệu quả khử răng cưa càng tốt hơn.
 
Ưu điểm dễ nhận thấy nhất của MSAA so với FSAA là GPU không phải tính toán và chỉnh sửa màu cho tất cả pixel trên màn hình mà chỉ những khu vực trên cạnh của các vật thể, đồng nghĩa với việc fps không bị sụt giảm tồi tệ như FSAA.
 
So sánh chất lượng hình ảnh giữa FSAA và MSAA
 
Để tiện so sánh, chúng ta cùng xem 3 bức hình dưới đây.
 
 Chưa bật AA.
 
 MSAA 4x.
 
 Và FSAA 4x.
 
Có thể thấy chất lượng hình ảnh khá chênh lệch giữa FSAA và MSAA, đặc biệt là ở khu vực mặt nước và lưới sắt (khu vực lưới sắt khi bật MSAA 4x hầu như không thay đổi so với khi chưa bật AA). Đây cũng là hạn chế lớn nhất của MSAA khi chỉ khử được răng cưa ở cạnh của vật thể còn texture bên trong thì không được khử.
 
FSAA như đã nói, nó có tác động lên mọi pixel trên màn hình nên ngoài tác dụng khử răng cưa thì FSAA còn làm cho bề mặt các vật thể trở nên mịn hơn. Chính vì nhược điểm này của MSAA mà cả AMD và NVIDIA đều đã phát triển những công nghệ của riêng mình nhằm khắc phục khiếm khuyết đó, chúng sẽ được để cập tới trong phần tiếp theo.
 
Còn tiếp - Tham khảo: Tom's Hardware