HÌNH ẢNH HÀNG RÀO TRƯỚC VÀ SAU KHI XỬ LÝ RĂNG CƯA |
- Khử răng cưa là gì?
Nguyên lý làm việc của khử răng cưa rất đơn giản, nhưng quá trình xử lý thì không đơn giản như vậy. Các phần cứng máy tính ngày nay (cụ thể là card đồ họa) cung cấp nhiều phương pháp xử lý răng cưa, cùng với nhiều kết quả khác nhau. Thiết lập nào là phù hợp, ưu điểm và khuyết điểm của từng loại, bạn nên chọn phương pháp nào phù hợp với sức mạnh của Card đồ họa của bạn? Bài viết này sẽ gồm 4 phần, phần đầu tiên này sẽ giới thiệu về nguyên lý làm việc cơ bản của kỹ thuật khử răng cưa.
- Nguyên lý cơ bản của khử răng cưa
Như các bạn đã biết, mọi hình ảnh ta nhìn thấy trên màn hình được cấu thành từ các pixel có hình vuông, là đơn vị cơ bản nhất của hình ảnh và có màu sắc cố định. Tập hợp nhiều các pixel sẽ tạo nên hình ảnh lớn. Do đó khi thể hiện các đối tượng đồ họa như đường chéo, hình tròn, ta sẽ gặp hiện tượng “răng cưa”, hình thành bởi cạnh vuông của các pixel cơ bản đó. Ta theo dõi ví dụ sau:
HÌNH ẢNH CHƯA ĐƯỢC VÀ ĐÃ ĐƯỢC XỬ LÝ RĂNG CƯA |
Khi ta vẽ một hình nào đó (đường thẳng hoặc hình tròn), card đồ họa sẽ hiểu là một hình vector có tọa độ, nhưng khi hiển thị lên màn hình thì nó sẽ hiển thị ở dạng raster, tức là hình ảnh được cấu tạo từ các pixel độc lập. Và khi phóng to hình ảnh raster đó ta sẽ thấy rất rõ các pixel. Răng cưa ở đây chính là các cạnh vuông của pixel hình thành, có hình dạng như các bậc thang. Việc khử răng cưa về cơ bản, chính là việc làm giảm đi sự khác biệt rõ ràng giữa các pixel trắng và đen, có thể do việc lấy các mẫu pixel có sắc xám đặt bên cạnh, để làm giảm đi cảm giác răng cưa của hình ảnh.
Tương tự như vậy, khi ta chơi một game 3D nào đó, hình ảnh sẽ có dạng như sau:
HÌNH ẢNH SO SÁNH KHI CHƯA KHỬ VÀ ĐÃ KHỬ RĂNG CƯA |
Các cạnh của đối tượng đồ họa ở ví dụ này như hàng rào, mỏm đá… nếu không áp dụng khử răng cưa sẽ có hình dạng rất gồ ghề, khó nhìn, nhưng khi đã được áp dụng kỹ thuật khử răng cưa, hình ảnh trở nên mịn màn và đẹp mắt. Rất tuyệt đúng không. Lưu ý rằng hiện tượng răng cưa sẽ càng rõ hơn nếu độ phân giải càng thấp, đơn giản vì ở độ phân giải thấp sẽ có ít pixel để hiển thị đối tượng đồ họa đó hơn ở độ phân giải cao.
Nhưng về mặt kỹ thuật, khử răng cưa sẽ phải làm cụ thể những gì để đem lại hình ảnh mịn màng hơn? Hãy cùng tìm hiểu 2 kỹ thuật khử răng cưa lâu đời nhất: SSAA (Super Sampling AntiAliasing – Khử răng cưa siêu mẫu) và MSAA (Multi Sampling AntiAliasing – Khử răng cưa đa mẫu), cùng với cách người ta áp dụng nó vào đồ họa trong các trò chơi điện tử trên máy tính.
- Supersampling Anti Aliasing (SSAA, tên khác là FSAA – Full Scene AA)
Card đồ họa sẽ xử lý răng cưa ở khung hình lớn gấp 4 lần hình gốc, sau đó resize lại kích thước ban đầu khi trả kết quả. |
Thực tế đến tại thời điểm này, SSAA vẫn là phương pháp khử răng cưa cho chất lượng hình ảnh đẹp nhất, nhưng để có chất lượng tốt như vậy, mọi thành phần của máy bạn phải chạy với công suất gấp nhiều lần khối lượng công việc gốc phải làm. Kết quả là khung hình của game sẽ sụt giảm nghiêm trọng tương ứng với số mẫu khử răng cưa SSAA. Do đó, các nhà phát triển đã phát triển nhiều giải pháp hiệu quả hơn nhằm cân bằng chất lượng hình ảnh và hiệu năng.
- Multisampling (MSAA)
Nguyên tắc thực hiện là MSAA chỉ tìm các cạnh của vật thể và tiến hành khử răng cưa cho nó. Để làm việc này, card đồ họa sẽ sử dụng một thuật toán riêng gọi là “Z-test” để nhận biết các cạnh của vật thể, tiến hành lấy mẫu về màu sắc của các pixel trên cạnh này và thay thế các pixel bên cạnh bằng các pixel có màu sắc trung gian tùy vào vị trí và số mẫu được lấy của nó.
Sau đây là ví dụ minh họa cách thức làm việc của MSAA. Ở đây ta có 4 pixel cạnh nhau để thể hiện 1 đường chéo. Nếu không áp dụng các thuật toán khử răng cưa, ta có kết quả của hình bên cạnh , vì đơn giản card đồ họa sẽ lấy màu sắc ngay tại trung tâm pixel đó để thể hiện lên màn hình, bất kể tại pixel đó có bao nhiêu đối tượng.
Mỗi pixel sẽ lấy mẫu tại trung tâm của pixel đó, cho ra hình ảnh bên phải
Nếu MSAA được áp dụng (mức 4X) thì card đồ họa sẽ tiến hành lấy 4 mẫu tại mỗi pixel, các mẫu này sẽ được card đồ họa xử lý các giá trị màu sắc trung bình để cho ra pixel có màu trung gian. Theo hình bên dưới ta thấy pixel phía trên bên trái có 2 mẫu có màu xanh dương và 2 mẫu có màu xanh lục, card đồ họa sẽ xử lý pixel này có màu gồm 50% xanh dương và 50% xanh lục. Tương tự, pixel bên phải phía dưới sẽ có 25% màu xanh dương và 75% màu xanh lục. Riêng pixel góc trong cùng thì phép thử “Z-test” xác định không phải là cạnh nên MSAA sẽ không lấy mẫu, giúp giảm tải cho hệ thống.
Mỗi pixel lấy 4 mẫu thử, sau đó màu cho pixel đó sẽ trộn kết quả mà 4 mẫu đem lại
Theo đó ta có thể thấy với số mẫu càng tăng lên thì độ chính xác của việc pha màu sẽ càng cao hơn, làm giảm hiệu ứng răng cưa đi, tuy nhiên card đồ họa cũng phải chịu gánh nặng nhiều hơn và khung hình sẽ giảm nhiều hơn bình thường. Việc áp dụng thuật toán “Z-test” cũng giúp MSAA tránh việc phải lấy mẫu pixel của đối tượng khác nằm bên dưới đối tượng cần lấy mẫu.MSAA rõ ràng đem lại hiệu quả cao hơn hẳn SSAA, cân bằng được hiệu năng và chất lượng hình ảnh. Tuy nhiên MSAA chỉ phát huy hiệu quả với cạnh biên của các đối tượng, trong khi lớp vân bề mặt (texture) của đối tượng thì không được xử lý, SSAA thì ngược lại sẽ xử lý khử răng cưa với tất cả đối tượng trên màn hình. Do đó với các đối tượng có lớp vân bề mặt trong suốt sẽ vẫn còn nguyên răng cưa nếu sử dụng MSAA.
Ví dụ dưới đây sẽ chỉ ra rõ nhược điểm của MSAA, hãy để ý kỹ các hàng rào lưới. Do lớp hàng rào này nằm trên một lớp vân bề mặt trong suốt (để nhìn thấy các đối tượng phía sau) nên không nằm trong diện xử lý của MSAA, kết quả là răng cưa khắp nơi trên hàng rào, rất xấu xí. Trong khi đó SSAA không cần phân biệt gì đều xử lý hết nên hình ảnh rất mịn màng.
Do MSAA còn những hạn chế như vậy nên cả nVIDIA và AMD đều phát triển các kỹ thuật khử răng cưa riêng của mình. Cả hai hãng đều ra sức quảng bá cho công nghệ riêng của mình và cho rằng nó ưu việt hơn công nghệ của đối thủ. Thực hư của việc này ra sao thì phần 3 của bài viết sẽ trình bày rõ hơn. Nhưng trước hết ta hãy nhìn lại hiệu quả của 2 công nghệ cổ điển này dưới sự xử lý của 2 dòng card nổi tiếng nhất là nVIDIA GeForce và AMD Radeon ra sao nhé.
- So sánh chất lượng hình ảnh xử lý bởi card đồ họa nVIDIA và AMD
Do đó chúng ta sẽ sử dụng Source Engine của Valve với chế độ DirectX 9 để kiểm tra hiệu quả xử lý mà 2 dòng card này đem lại.
Hình trên phóng to lên 4 lần
Qua hình trên ta thấy hiệu quả xử lý MSAA của cả 2 dòng card đồ họa đều cho kết quả rất giống nhau. Và cũng cho thấy khi tăng số mẫu lên nhiều lần nhưng hiệu quả xử lý hình ảnh thu được lại không tương xứng, có nghĩa tăng từ 2x lên 4x thì hình ảnh rất đẹp, nhưng 4x lên 8x thì không khác nhau nhiều lắm và 8x thì kết quả giống hệt 16x mà thôi.
(còn nữa)
Nguồn: Tomshareware
Dịch: cuLong (tinhte.vn)
Nguồn: Tomshareware
Dịch: cuLong (tinhte.vn)
No comments:
Post a Comment