Tham dự Tech Lounge

Tham dự Tech Lounge


Tìm hiểu về Tessellation, tính năng chính của DirectX 11

cuLong
8/7/2012 14:21Phản hồi: 43
Tìm hiểu về Tessellation, tính năng chính của DirectX 11
Tổ ong là hình mẫu của tessellation trong tự nhiên

Tessellation là gì?
Có lẽ bạn đã rất quen thuộc với thư viện đồ họa DirectX 11 của Microsoft, DirectX 11 có mặt trong phần lớn các game trên máy tính xuất hiện trong khoảng 2 năm gần đây, cùng với các thế hệ card đồ họa hỗ trợ DirectX 11 đầu tiên là nVIDIA GeForce 400 series và AMD Radeon HD 5000 series.

Về cơ bản, DirectX 11 khác biệt với thế hệ DirectX 10 trước đó chủ yếu ở công cụ Tessellation. Vậy Tessellation là gì, nó giúp ích gì được cho các game thủ và các nhà phát triển ứng dụng? Bài viết này sẽ đem đến cho bạn cái nhìn sơ lược nhất về tessellation và việc ứng dụng của nó.

Tessellation, nói đơn giản, là việc chia các đa giác (polygon) thành những đa giác nhỏ hơn một cách tự động theo một kịch bản quy định sẵn bởi các nhà phát triển. Ví dụ bạn lấy một hình vuông, cắt chéo nó, bạn sẽ có 2 hình tam giác nhỏ hơn, cây kéo để cắt chính là công cụ tessellation. Chỉ khác là tessellation được thực hiện hoàn toàn tự động. Tuy nhiên chia hình vuông ra 2 tam giác hay hàng ngàn đa giác thì nhìn cũng không khác nhau là mấy, nếu chúng nằm trên một mặt phẳng. Tessellation chỉ có tác dụng rõ rệt nếu các đa giác nằm trên một cấu trúc gồ ghề, không bằng phẳng.


Sau khi dùng tessellation để cắt các đa giác, người ta sẽ dùng một kỹ thuật khác, nhằm sắp xếp các đa giác mới đó vào một mô hình vật thể, được gọi là ánh xạ vị trí (displacement mapping). Một bản đồ ánh xạ vị trí là một tổ hợp các thông số chứa thông tin về độ cao của từng đa giác, hoặc gọi là đỉnh độ cao (vertices). Khi nó được áp vào một bề mặt nào đó, nó sẽ ra lệnh cho các vị trí trên bề mặt nâng lên hoặc hạ xuống ứng với thông tin độ cao trên bản đồ ánh xạ vị trí đó.

Ví dụ, nhà thiết kế game khi cần thiết kế một ngọn núi trong game, họ sẽ thiết lập một bản đồ ánh xạ vị trí chứa độ cao của từng điểm (tương tự với bản đồ đường đồng mức của ngành trắc địa) và áp một một file hình ảnh trên mặt phẳng của ngọn núi lên bản đồ đó để tạo ra một mô hình 3 chiều của ngọn núi. Với nguyên lý tương tự như vậy, các nhà phát triển sẽ làm ra nhà cửa, xe cộ, vũ khí, người, cây…


Tương tự như tessellation, bản đồ ánh xạ vị trí đã tồn tại khá lâu, nhưng cho tới gần đây nó mới được chú ý sử dụng nhiều hơn. Lý do rằng để bản đồ ánh xạ được phát huy hiệu quả, bề mặt vật liệu được tạo lập sẵn từ rất nhiều các đỉnh độ cao. Trong ví dụ của ngọn núi ở trên, nếu chỉ có khoảng 8 đỉnh độ cao, sẽ không có thông tin về độ cao của các vị trí lân cận để định hình được ngọn núi. Do đó cần phải có một số lượng đỉnh độ cao đủ lớn, các nhà phát triển phải bỏ công sức khá nhiều cho công đoạn này. Tessellation sẽ thực hiện việc này hoàn toàn tự động, giúp tiết kiệm công sức thiết kế của nhà phát triển rất nhiều.

Với DirectX 11 thì hai công cụ này đã được kết hợp chặt chẽ với nhau, nhờ tessellation, việc thiết kế các đỉnh độ cao được thực hiện hoàn toàn tự động, giúp tiết kiệm công sức cho các nhà phát triển, đồng thời đem lại hiệu ứng đồ họa bắt mắt hơn với các mô hình có độ chi tiết cao. Các game phổ biến như Alien vs Predator hay Metro 2033 đều áp dụng tessellation để tạo ra các mô hình rất trơn tru và mượt mà.
Một mô hình thô (trái) sau khi được xử lý bằng tessellation (giữa) và áp bản đồ ánh xạ vị trí lên (phải)
Vậy với công dụng như vậy, Tessellation có những ứng dụng gì? Sau đây là 4 ứng dụng tiêu biểu nhất được dùng rộng rãi trong ngành công nghiệp trò chơi điện tử.

Ứng dụng của Tessellation:

1. Tạo hiệu ứng vân nổi hoàn hảo
Bản đồ ánh xạ vị trí sẽ là một giải pháp thay thế cho các kỹ thuật ánh xạ vân nổi (bump mapping) hiện tại. Các kỹ thuật ánh xạ vân nổi hiện tại thường dựa chủ yếu vào thị giác để tạo cảm giác về độ sâu. Trong đó, kỹ thuật ánh xạ thông thường (normal mapping) được sử dụng nhiều nhất trong các thế hệ game cũ. Ví dụ phổ biến nhất là các vết thủng trên tường khi bắn đạn vào, kỹ thuật vân nổi thông thường sẽ áp các vân (ví dụ vết thủng tường) lên bề mặt vật thể, tạo ra một “ảo giác” về độ sâu của vật thể đó, cụ thể ở đây là tường bị thủng lỗ.
Nhưng kỹ thuật ánh xạ vị trí sẽ dựa trên thông tin về độ sâu của việc thủng tường để tạo ra một vết thủng thực sự bằng mô hình 3 chiều, thông tin về đỉnh độ sâu này sẽ được cung cấp bởi tessellation.

Kỹ thuật ánh xạ thông thường (trái) và kỹ thuật ánh xạ vị trí có sự giúp đỡ của Tessellation (phải)

Quảng cáo


Rõ ràng ta có được hiệu ứng đồ họa đẹp mắt và chân thực hơn nhiều so với “miếng dán” kia trong các game sử dụng các thế hệ DirectX cũ (phiên bản 10 trở về trước).

2. Mô hình nhân vật mượt mà và chi tiết hơn
Một công cụ có thể khai thác tessellation khác là thuật toán làm mịn. Thuật toán này sẽ dùng một mô hình thô, với sự trợ giúp của tessellation sẽ tạo ra một mô hình mịn màng và có số lượng đa giác cao hơn nhiều, mà không cần các nhà phát triển phải bỏ thời gian để vẽ mô hình đó.

Một ví dụ khá phổ biến là thuật toán PN-triangles (có tên khác là N-patches). PN-triangles sẽ chuyển đổi một mô hình có bề mặt đơn giản thành các bề mặt có số lượng đa giác phức tạp hơn nhiều lần, nhờ tessellation. Thuật toán này được sử dụng rất rộng rãi trong các game DirectX 11 hiện nay, từ các vô lăng xe hơi, khuôn mặt nhân vật, quả bóng đá… Trong game Stalker: Call of Pripyat, PN-triangles được dùng để tạo ra rất nhiều các mô hình nhân vật.
Mô hình này được xử lý bởi tessellation cho ra một kết quả mịn màn và trơn tru hơn.

3. Tạo ra các mức độ chi tiết liền mạch nhau

Đối với các game có môi trường lớn, như series GTA hoặc các game đua xe, bạn sẽ nhận thấy có nhiều vật thể nằm ở xa mà chỉ xuất hiện khi bạn tiến lại gần nó ở một khoảng cách nhất định nào đó (*). Trong các game trước thế hệ DirectX 11, khi càng tiến lại gần, các vật thể sẽ xuất hiện rõ ràng và chi tiết hơn một chút, và chỉ xuất hiện ở hình dạng chi tiết nhất khi bạn tiến tới đủ gần. Nguyên nhân của việc này là các nhà phát triển game đã tạo sẵn các mô hình (của vật thể đó) từ sơ cấp đến rất chi tiết và tùy thuộc vào khoảng cách xa gần mà hiển thị cho phù hợp, tác dụng chính là giúp máy tính không bị quá tải với quá nhiều vật thể có độ chi tiết cao cùng xuất hiện cùng lúc.

*Khoảng cách này phụ thuộc vào tùy chỉnh View of Distance (hoặc Limit of Detection) trong game.

Quảng cáo



Nhược điểm của việc này là các nhà phát triển phải bỏ công sức ra vẽ nhiều mức độ chi tiết của cùng một mô hình, đồng thời người chơi cũng nhận thấy mô hình sẽ biến đổi rõ ràng khi khoảng cách xa gần thay đổi.

Tessellation sẽ giúp cho độ chi tiết của mô hình thay đổi một cách liền mạch, ko bị ngắt quãng. Ví dụ trong game đua xe, khi ở khoảng cách xa tầm 500m, ngôi nhà sẽ có khoảng 100 đa giác, khi khoảng cách giảm xuống (tức là ta tiến lại gần nó hơn), ngôi nhà sẽ tăng mức đa giác lên từ từ, 100 lên 500 chẳng hạn, và khi bạn ở cách nó chỉ 10m thì ngôi nhà đã có khoảng 10.000 đa giác, rất liền mạch. Đây gọi là tessellation động (dynamic tessellation).

Ưu điểm rất rõ ràng: nhà phát triển không phải mất công vẽ 5 hoặc 10 mô hình sẵn ứng với các mức độ chi tiết, và người chơi cũng cảm thấy ngôi nhà có mức chi tiết rất liền mạch, ko biến đổi một cách “giật cục” nữa.

3 cấp độ chi tiết của cùng một mô hình mà nhà phát triển phải “vẽ” sẵn khi không có tessellation hỗ trợ

4. Khả năng thay đổi độ chi tiết linh hoạt
Đối với các nhà phát triển, tessellation giúp họ tiết kiệm công sức và thời gian rất nhiều. Jasson Mitchell, một nhà phát triển của Valve, đã chia sẻ: “Chúng tôi rất thích thú với khả năng tăng lên và hạ xuống mức độ chi tiết mô hình của tessellation. Chúng tôi chỉ cần thiết kế một mô hình, tessellation sẽ giúp tăng mức độ chi tiết như trong các bộ phim. Ngược lại, tessellation sẽ giảm mức chi tiết xuống thấp nhất để tiết kiệm thời gian render”. Nhờ đó, họ chỉ cần thiết kế mô hình một lần và sử dụng nó cho nhiều nền tảng, nhiều mục đích khác nhau, giúp tiết kiệm rất nhiều thời gian và công sức bỏ ra. Đối với gamer, họ sẽ có được những hình ảnh đẹp nhất tương xứng với sức mạnh card đồ họa của mình.

Mức độ chi tiết thay đổi theo tùy chỉnh tessellation
Kết luận
Như vậy sau rất nhiều năm thử nghiệm, tessellation đã chính thức đến với thế giới máy tính cá nhân. Các game như Metro 2033 đã phô diễn sức mạnh của tessellation, cho ra chất lượng đồ hoạt tuyệt vời. Theo thời gian, tessellation sẽ đóng vai trò rất quan trọng, tương tự vai trò của công nghệ đổ bóng điểm ảnh (pixel shading) hôm nay. Cả nVIDIA và AMD đều đã ứng dụng tessellation vào các thế hệ card đồ họa mới nhất của mình, nhằm đem lại những trải nghiệm đồ họa tuyệt vời nhất cho người dùng.

Metro 2033, tựa game nổi tiếng với hiệu ứng Tessellation.




43 bình luận
Chia sẻ

Xu hướng

aeronautic
ĐẠI BÀNG
12 năm
Quan trong gia ca la hanh phuc roi.....😃
@aeronautic comment cha lien wan gi den bai viet, spam de dc boc tem ah
^
Não à? Hay là spam để tăng posts?
thật ra thuật toán này đã dùng trong đồ họa 3 chiều, dúng các tam giác để tạo nên vật thể...có liên quan đến ma trận, lâu rồi không nhớ nữa
Thật là kinh khủng o_O
1 vật thể được tạo nên từ nhiều polygon ghép lại,
đơn giản như hình tròn tạo bởi đa giác rất nhiều cạnh, và nếu game để ở chế độ low thì số cạnh giảm xuống, nhìn rõ từng góc cạnh không tròn nữa,
còn cái têsêllation này nó vót tròn các cạnh đó lại,
mềnh hiểu thế có đúng k nhỉ
@nhatientri vót tròn cạnh là sang vấn đề khử răng cưa rồi (anti-aliasing)
túm cái váy lại là cái công nghệ này làm giảm thời gian khi tạo hình 3d xuống, dev ko cần phải tạo ra nhiều mô hình ứng với các cấp độ chi tiết khác nhau của cùng 1 vật thể.
@nhatientri Chuẩn đó bác. Đối với các khối hình 3D thì càng nhiều khối đa giác ghép lại thì càng giúp cho khối hình đó trơn và mượt hơn. tessellation giúp tạo ra các khối đa giác đó mà không tốn quá nhiều công sức của nhà phát triển.
@nhatientri Tessellation là công cụ để chia nhỏ đa giác, như vậy hình ảnh khi khi xử lý qua Tessellation sẽ sắc nét hơn.
Nhìn game cũng kết không biết giá cả ntn.

_ :*"v"*:_thanh™_(._.*)_
thax bạn bài viết rất hửu ích . biết bao giờ mình mới chơi dc game như vậy trời . máy ở nhà far cry 1 chơi còn ko nổi nữa là ^^!
quyetk12
ĐẠI BÀNG
12 năm
toàn từ chuyên ngành. e là e chịu:rolleyes:
dr12 thì bao giờ có nhỉ ?
Mới nhìn lại tưởng tìm hiểu về cuộc sống loài ong 😁
ko có j là quá khó hiểu đâu, bạn nào thường chơi game PC sẽ hiểu ngay bài này ấy mà 😁
WP8 sắp tới có nhiều game khủng đây
@noctunalguy Hiện tại game có dx 11 cũng nhiều rồi bạn
@le hoang tuan WP8 là có kernel chung vs Win và có hỗ trợ native code trong đó có tối ưu cho mã Directx nữa, xem keynote gthiệu WP8 sẽ thấy ng` ta test ra sao. rất tiềm năng hơn các nền tảng khác, biết đâu MS sẽ tung Halo hay GOW lên WP8 biết chừng 😁
@noctunalguy Gow là độc quyền của SONY rồi bác ah. chắc chỉ có halo thì mai ra :D
casperpas
ĐẠI BÀNG
12 năm
Thật ra thì công nghệ này có trên OpenGL từ lâu rồi. Ngay cả PixelShader cũng vậy (bên OpenGL sử dụng 2 cái là VertexShader và FragmentShader, được viết bằng GLSL). Nhờ có công nghệ này mà nhiều hình mô phỏng trông thật hơn. Xem mấy cái demo của NVIDIA đẹp ghê gớm. 😁
hamyty
CAO CẤP
12 năm
Iphone có công nghệ này lâu rồi , game 3d hình ảnh rất tuyệt vời , nếu ko dùng thử chắc mình ko tin iphone 4s chơi infinity blade hình ảnh lại tuyệt vời như thế :">
gtr_271
ĐẠI BÀNG
12 năm
@hamyty LOL IB dùng Unreal Engine thì đâu có nghĩa là nó có tess?
Nên nhớ là tess tốn kha khá sức mạnh của VGA, và GPU di động hầu như chưa đủ sức cho tess đâu.
//iFan f** detected???
@hamyty Nên xem lại comment đi bác, làm gi mà có dx11 trên GPU di động. liệu con GPU di động đủ sức gánh ko bác. thành viên 1200 bài viết mà nói gì thế này :eek:
@gtr_271 ban noi lam gi cho ton suc, ko hieu biet ma thich phan bua la vay do :mad:
gtr_271
ĐẠI BÀNG
12 năm
@le hoang tuan Chuẩn, mình như kiểu thánh khai sáng cho bọn đầu óc mụ mị đó =))
d73b3e
ĐẠI BÀNG
12 năm
Chia lưới trong Phần Tử Hữu Hạn cũng na ná zầy 😃
Lập trình game thì cần nhiều thuật toán quá mà giải thuật thì bỏ lâu quá và ko có học thêm nên chẳng nhớ được gì! Theo lập trình ứng dụng cho nó lành! 😁. Ai tạo game ra mình chơi. :D
Công nghệ này hỗ trợ tốt hơn cho các nhà phát triển đồ hoạ, nhất là game và hoạt hình ( trong này chắc có hãng pixar nổi tiếng của bác Jobs) trong việc tiết kiêm thời gian và khả năng dùng lại các mô hình là chính.
Còn người dùng, hehe, các anh có $ mua cấu hình cao mới tận dụng được công nghệ này :d
Mình không mê chơi game nhưng mê những gình ảnh đồ hoạ đẹp mắt trong các game nổi tiếng! Nên chủ yếu chơi game là để thuởng thức đồ hoạ!
bài viết rất hay, tâm huyết nhưng phạm phải 1 sai lầm nghiêm trọng. Đó là post nó lên forum tinh tế 1 forum toàn bọn @#%*&$!
@thienphong215 bạn nói đúng nỗi khổ tâm của mền 😔

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