Tìm hiểu kỹ thuật khử răng cưa trong đồ họa vi tính (Phần 3)

cuLong
23/7/2012 8:41Phản hồi: 37
Tìm hiểu kỹ thuật khử răng cưa trong đồ họa vi tính (Phần 3)
(Adaptive AA của AMD)
Như đã nói ở phần 2, MSAA là giải pháp khử răng cưa khá tốt, nó đem lại chất lượng hình ảnh đẹp cùng với hiệu năng xử lý tốt, nhưng MSAA có một nhược điểm quan trọng, đó là nó không thể xử lý răng cưa cho các đối tượng có vân bề mặt trong suốt (transparency texture). Vì vậy các nhà phát triển phải làm gì để loại bỏ được lượng răng cưa này? Mời các bạn theo dõi tiếp phần 3 của loại bài viết “Tìm hiểu kĩ thuật khử răng cưa trong đồ họa vi tính” ngay sau đây:

Các game ngày nay chứa rất nhiều các đối tượng 3 chiều phức tạp, mỗi đối tượng gồm nhiều đa giác hợp thành (polygon), mỗi đa giác lại chứa nhiều thông tin như vân của đối tượng đó, ánh sáng, đổ bóng… Do đó các nhà phát triển phải “vẽ” sẵn các mô hình có độ chi tiết từ cao đến thấp tùy theo khoảng cách của đối tượng đến người chơi nhằm giảm tải cho hệ thống. Công nghệ Tessellation trong thư viện DirectX 11 như trong bài viết phần 1 đã giải quyết được bài toán này.

Tuy nhiên khi có quá nhiều đối tượng phức tạp nhưng nhỏ cùng xuất hiện trong một khung cảnh thì sao (ví dụ rất nhiều chiếc lá trong rừng, hoặc 1 bãi cỏ, hoặc các mắt lưới trên một khung lưới…). Nếu mỗi mắt lưới được dựng riêng rẽ thì không một máy tính nào có thể kham nổi số lượng đối tượng khổng lồ như vậy, kể cả các máy chơi game mạnh nhất hiện nay. Vân trong suốt là giải pháp cho vấn đề này.


Vân trong suốt sẽ mô phỏng các đối tượng riêng rẽ phức tạp đó bằng các hình 2D thông thường. Hãy lấy ví dụ cụ thể là một hàng rào lưới B40 trong game. Thay vì dựng từng mắt lưới riêng rẽ, ta chỉ việc “vẽ” một mảng lưới dạng 2D hoàn toàn, đồng thời làm trong suốt các mắt lưới ở giữa, như vậy ta đã có một lớp hàng rào lưới rất đẹp mà không hề làm nặng nề máy.

Hình ảnh sau sẽ cho bạn hình dung vân trong suốt là như thế nào, các đối tượng hình học thể hiện như thế nào và cảnh cuối cùng trong game ra sao:

Lớp vân của hàng rào (hình nền có các ô bàn cờ là lớp trong suốt)

Mô hình khung của các đối tượng 3D ở phía sau lớp lưới

Hình ảnh được dựng nên sau khi kết hợp 2 lớp trên

Như bạn thấy, vân trong suốt đã giải quyết được vấn đề thể hiện chi tiết của lớp lưới này mà không làm tăng tải của hệ thống. Tuy nhiên vấn đề chính ở lớp vân trong suốt này, vì MSAA, như đã nói ở trên, không thể khử được răng cưa đối với vân trong suốt, do đó lớp lưới này vẫn còn nguyên răng cưa cho dù bạn có bật 16X MSAA chăng nữa. SSAA thì xử lý răng cưa cho lớp lưới này rất tốt, nhưng tốc độ thì lại lê lết thảm hại. Do đó đã phát sinh yêu cầu phải có một kỹ thuật mới để xử lý được lớp vân trong suốt này.


nVIDIA đã có công nghệ riêng của mình để làm việc này. Với sự công bố dòng card đồ họa GeForce 7 series (ra mắt tháng 6/2005 – sản phẩm mạnh nhất lúc này là GeForce 7950), họ đã giới thiệu một kỹ thuật khử răng cưa cho vân trong suốt, gọi tắt là TAAA. TAAA có 2 cách tiếp cận, một sử dụng kỹ thuật MSAA (gọi là TrMSAA – Transparency MSAA ) và một sử dụng SSAA (gọi là TrSSAA – Transparency SSAA).

Ở bài trước ta đã có nói đến nguyên lý của MSAA là xử lý các pixel nằm ở cạnh đối tượng. Với TAAA, các pixel nằm trong đối tượng có vân trong suốt cũng sẽ được lấy mẫu, không chỉ các pixel ở cạnh. Hai kỹ thuật của TAAA khác nhau ở chỗ: TrMSAA sẽ lấy mẫu pixel các vân trong suốt cùng số mẫu MSAA, trong khi TrSSAA sẽ lấy mẫu riêng cho vân trong suốt theo 2, 4 hoặc 8 mẫu, riêng biệt với các pixel ở cạnh. Mọi việc có vẻ được giải quyết hoàn toàn.
TrMSAA và TrSSAA của nVIDIA
Tuy nhiên không hẳn vậy. Theo lý thuyết như trên thì mọi pixel đều được xử lý. Nhưng TrSSAA không chơi với DirectX 9, còn TrMSAA chỉ hoạt động với DirectX 9, nhưng không ổn định.

Bên phía AMD cũng phát triển một kỹ thuật tương tự với TAAA của Nvidia, gọi là AdAA (Adaptive AA - khử răng cưa thích ứng), cùng với dòng card Radeon X1000 (lúc bấy giờ là ATi). Nguyên lý hoạt động tương tự như TAAA, chỉ khác biệt ở chỗ ATi chỉ giới hạn kỹ thuật xử lý vân trong suốt bằng MSAA, tức hoàn toàn giống với TrMSAA, kể cả việc chỉ hoạt động với DirectX 9. ATi cho biết kỹ thuật AdAA này của họ vẫn có thể dùng với các game DirectX 10 và 11, nếu các nhà phát triển áp dụng kỹ thuật này vào game của họ. Hiện tại có một số game đã ứng dụng AdAA, ví dụ S.T.A.L.K.E.R: Clear Sky, S.T.A.L.K.E.R: Call of Pripyat và Metro 2033 đã ứng dụng hiệu quả kỹ thuật này.

  • So sánh về hiệu quả xử lý của 2 dòng card GeForce và Radeon

Quảng cáo


Nhìn hình trên bạn có thể thấy, kỹ thuật xử lý răng cưa cho vân bề mặt đem lại chất lượng hình ảnh vượt trội. Lớp lưới đã trở nên mịn màng và trơn tru, khác hẳn với kết quả tệ hại mà MSAA truyền thống mang lại.

Tuy nhiên, với các game DirectX 10 và 11 thì sao? Trong thư viện DirectX 10 và 11 đã có một công nghệ gọi là alpha-to-coverage, sử dụng sức mạnh của GPU để xử lý răng cưa cho vân bề mặt. Các game mới ra trong năm 2012 này đã ứng dụng các kỹ thuật dựng hình hàng rào và cây cối tốt và ít răng cưa hơn nhiều các game thế hệ DirectX 9. Bài tiếp theo sẽ giải thích các kỹ thuật khử răng cưa mới trong DirectX 10 và 11.


(còn tiếp)
37 bình luận
Chia sẻ

Xu hướng

Đọc chả hiểu nổi nhưng vẫn công nhận là đẹp hơn ! Chắc phải tìm hiểu kĩ lại mới được !
@Nokfev Hii 😁 Cũng là hình thức dán cái gì đó ...trên bao thư trước khi gửi đi phải hông bạn:D
@logoo2011 Tự nhiên lại nhớ hồi bé chơi cướp cờ bác ạ ! Cũng đỡ buồn !
Cám ơn tinhte.vn phát nào:p
@Nokfev Nó có sức hấp dẫn lắm nha:p canh me nè, suy nghĩ phải cmt cài gì nè, rùi xí chỗ trước nè, đọc kỹ lại nội dung bài viết nè V.V... nói chung là dzui he he.:p
@logoo2011 Có bài mới kìa bác . Em vưa cm vừa sửa vừa cười một mình hài vãi luôn 😁
@Nokfev Hi hi.. Nhường bạn ạh để người khác chơi với:D
😃 Công nghệ khử răng cưa? lấy cái cưa ra thì khỏi mắc công khử😁
@logoo2011 Ơ kìa bác nói gì đi chứ ạ !
không hiểu lắm, nhưng không quan trọng, chỉ cần sd nó là ok
máy em chơi hd3000 cùi bắp, có bao giờ dám bật AA đâu 😔
anhtlcm
ĐẠI BÀNG
12 years
Bác có tài liệu chuyên sâu ghê. Đọc hoa cả mắt.
phức tạp vê lờ
Bác viết bài này công phu quá, mà link bài gốc ko thấy ở nguồn cuLong à?
@uhraman Thiếu sót quá, mình đã bổ sung link nguồn rồi đó bạn 😁
@cuLong Hehe, lướt qua bài gốc thấy "độ thánh" về kỹ thuật khử răng cưa của bác giảm đi một nửa rồi :D
@uhraman giải thích rõ hơn đc ko bạn? giảm là giảm ntn? bạn có cao kiến j xin trình bày để học hỏi đc ko ạ?
Bài phân tích rất chi tiết và hữu ích.

Sent from my GT-P6200 using Tinhte.vn
công nghệ quá , dù hơi khó hỉu 😃
Thấy hay nhưng mình chưa cần ứng dụng nó lắm
@qhungxd thế bạn có chơi game ko bạn 😁
cái này hay nè
Dacan
TÍCH CỰC
12 years
nói chung ae tinhte ít chơi game nên ko quan tâm lắm thì phải. Xài desk vs vga khủng hãy bật. Lap thường ko bật nổi đâu.
Kiến thức về phần cứng và phần mềm chuyên sâu như thế này không phải dễ dàng để những người ngoại đạo có thể hiểu được.
Mọi người cứ cố được đến đâu thì cố, đừng cố quá làm gì...
Đây là ứng dụng trong đồ họa của game đấy. mấy bạn khi vào setting của game thấy có AA là nó đó có AA và đến 16x AA tuy nhiên cái này rất ngốn phần cứng. máy yếu thì tốt nhất đừng bật lên chịu khó hình xấu chút đi 😁
chưa hiểu mấy nhưng thấy đẹp hơn 😁
Nhiều khi không khử răng cưa lại đem hiệu quả hình ảnh tốt hơn, nhất là ở các đối tượng xù xì như cỏ, mặt đất, vỏ cây... Khử răng cưa khung hình hay bị mờ đi
bb_72
TÍCH CỰC
12 years
RENDER 3D CÓ CARD NGON THÌ CHẮC CHẮN SẼ KHỬ ĐƯỢC RĂNG CƯA, CÒN CHƠI GAME THÌ TUYỆT VỜI RỒI.
http://www.facebook.com/Signajsc

Xu hướng

Bài mới










  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019