
Trước khi khám phá, hãy xem đoạn clip ngắn dưới đây, một YouTuber đã thử nghiệm Alan Wake II với một trong những card đồ họa cao cấp nhất cách đây 6 năm, GTX 1080 Ti.
Nếu bạn không muốn xem, thì nói qua một chút. Ở cài đặt đồ họa thấp nhất, độ phân giải 1080p, dù có tới 11GB VRAM nhưng GTX 1080 Ti vẫn không thể vượt qua con số 20 FPS. Phải bật FSR2 lên (vì GPU Pascal không có nhân tensor xử lý DLSS), game mới chơi được ở mức gần 30 FPS, và gặp rất nhiều vấn đề đồ họa:
Alan Wake II yêu cầu cấu hình tối thiểu là RTX 2060 để có thể chơi được. Nếu như ray tracing, path tracing hay các công nghệ như DLSS hay FSR đã trở nên quen thuộc, thì lần này cần phải có phần cứng xử lý mesh shader, chứ không chạy bằng phần mềm. Không chỉ Nvidia Pascal, mà cả card AMD Radeon RX 5000 series cũng sẽ gặp khó khăn với Alan Wake II.
Vậy mesh shader là gì, có tác dụng gì cho game, và vì sao Remedy dám bỏ rơi những thế hệ card đồ họa ra mắt chưa đầy 10 năm về trước để chạy theo tiêu chuẩn hình ảnh của thế giới ảo? (Mà đúng là game đẹp đến mức thôi rồi, đẹp hơn hẳn mọi tác phẩm ra mắt trong năm nay).
Nếu bạn không muốn xem, thì nói qua một chút. Ở cài đặt đồ họa thấp nhất, độ phân giải 1080p, dù có tới 11GB VRAM nhưng GTX 1080 Ti vẫn không thể vượt qua con số 20 FPS. Phải bật FSR2 lên (vì GPU Pascal không có nhân tensor xử lý DLSS), game mới chơi được ở mức gần 30 FPS, và gặp rất nhiều vấn đề đồ họa:
Alan Wake II yêu cầu cấu hình tối thiểu là RTX 2060 để có thể chơi được. Nếu như ray tracing, path tracing hay các công nghệ như DLSS hay FSR đã trở nên quen thuộc, thì lần này cần phải có phần cứng xử lý mesh shader, chứ không chạy bằng phần mềm. Không chỉ Nvidia Pascal, mà cả card AMD Radeon RX 5000 series cũng sẽ gặp khó khăn với Alan Wake II.
Vậy mesh shader là gì, có tác dụng gì cho game, và vì sao Remedy dám bỏ rơi những thế hệ card đồ họa ra mắt chưa đầy 10 năm về trước để chạy theo tiêu chuẩn hình ảnh của thế giới ảo? (Mà đúng là game đẹp đến mức thôi rồi, đẹp hơn hẳn mọi tác phẩm ra mắt trong năm nay).

Đây là giải thích ngắn gọn:
Với mesh shader, các nhà phát triển game có thể xử lý bộ khung đa giác tạo ra hình dáng của vật thể trong thế giới ảo theo cách hoàn toàn mới mẻ so với giải pháp vertex shader truyền thống. Với mesh shader, một cảnh game có thể có hàng tỷ đa giác mà GPU vẫn xử lý mượt mà, miễn là GPU có cụm phần cứng xử lý chuyên biệt.
Một cách đơn giản, vật thể được tạo thành từ càng nhiều đa giác thì càng đẹp. Đó là lý do mọi thứ trong Alan Wake II trông vô cùng mịn màng và chi tiết, đặc biệt là đường cong và mép của những mô hình vật thể.
Và trên những thế hệ card đồ họa cũ từ GTX 10 series và Radeon RX 5000 series trở về trước, GPU không hỗ trợ xử lý mesh shader. Đó là lý do tại sao cài đặt vẫn được, game vẫn chạy, nhưng hiệu suất khi chơi Alan Wake II lại rất kém.

Bây giờ, phiên bản dài, chi tiết hơn dành cho những bạn muốn khám phá sâu hơn.
Thế giới ảo 3D của trò chơi điện tử bắt đầu từ những hình khối ghép lại thành những hình dạng của vật thể và môi trường. Quá trình đầu tiên để hiển thị những hình khối này lên màn hình hoặc TV của bạn là di chuyển và co giãn chúng. Sau đó, phần cứng xử lý các texture được áp dụng lên bề mặt của các vật thể trong trò chơi, và sau đó tạo màu cho chúng.

Với API Direct3D, các đoạn mã lập trình thực hiện các bước trên được gọi là vertex shader. Vertex là các điểm nằm ở đỉnh của các hình khối. Ngoài ra, còn có các loại mã khác như hull, domain và geometry shader. Nhờ những shader này, các nhà phát triển game có thể mang các mô hình vật thể 3D từ studio của họ vào trò chơi.
Hầu hết các trò chơi ngày nay đều sử dụng vertex shader, không gây áp lực quá lớn cho phần cứng GPU trong máy tính. Lý do là trong quá trình tối ưu hóa trò chơi, các nhà phát triển luôn cố gắng giảm thiểu số lượng hình khối mà CPU và GPU cần xử lý. Để đảm bảo trò chơi mượt mà, còn có các giải pháp khác như pixel shader.


Ví dụ, khi nhìn từ trên cao xuống thành phố trong Spider-Man 2, các tòa nhà không cần nhiều chi tiết, vì chúng có thể chỉ chiếm vài chục hoặc vài trăm điểm ảnh trên màn hình. Chỉ cần áp dụng hiệu ứng ánh sáng và hậu kỳ thì mọi thứ sẽ trông rất đẹp. Ngược lại, khi quan sát gần mặt của nhân vật, cần có số lượng hình khối cao để miêu tả các chi tiết như lỗ chân lông, nếp nhăn, hoặc thậm chí cả tơ máu. Lúc này, các giải pháp như geometry và tessellation shader sẽ được sử dụng để tạo ra chiều sâu cho bề mặt vật thể.

Đây là cách gần như tất cả các trò chơi xử lý hình ảnh đa giác để tạo ra thế giới ảo.
Tuy nhiên, yêu cầu về đồ họa của game ngày càng tăng cao. Số lượng đa giác càng nhiều chỉ làm cho trò chơi trở nên tương đối hơn, nhưng muốn đạt được đồ họa chân thực thì cần phải tăng số lượng đa giác của mỗi vật thể. Nhưng điều này đồng nghĩa với việc phần cứng sẽ phải xử lý mã shader cho nhiều đa giác hơn ở mức độ cao hơn.
Dưới đây là một hình ảnh mà Nvidia chia sẻ khi giới thiệu công nghệ mesh shader, mô tả toàn bộ công việc mà GPU phải làm chỉ để tạo ra một khung hình trong Cyberpunk 2077, từ xử lý đa giác, áp dụng texture, tô màu, làm hậu kỳ, cho đến các hiệu ứng path tracing và upscale độ phân giải bằng DLSS. Bạn có thể thấy rằng, các dòng mã Vertex/Tessellation/Geometry Warps Shader chỉ tác động rất ít đến GPU so với các công việc khác.

Dễ hiểu khi nghĩ rằng, việc tăng số lượng đa giác sẽ làm cho trò chơi trở nên chân thực hơn, trong khi card đồ họa vẫn có thể chịu được. Vấn đề không phải là GPU xử lý được bao nhiêu đa giác, mà là cách quản lý hàng tỷ đa giác đó.

Đó là lúc giải pháp vertex shader truyền thống trên nền tảng Direct3D gặp trở ngại. Bản chất của việc xử lý đa giác truyền thống tạo ra giới hạn cho các nhà làm game. Với vertex shader, toàn bộ 100% đa giác trong một cảnh game phải được xử lý trước khi GPU tiếp tục công việc. Điều này dẫn đến việc GPU phải xử lý tất cả các đa giác ngay cả khi chúng không xuất hiện trong tầm nhìn của người chơi. Để thực hiện các kỹ thuật đồ họa phức tạp hiện nay, chuỗi công việc của vertex pipeline của Direct3D kiểu cũ trở nên phức tạp.
Do đó, hầu hết các trò chơi ngày nay cố gắng tối ưu hóa số lượng đa giác ở mức thấp nhất có thể.
Hậu quả là các vật thể không quan trọng thường có chất lượng thấp hơn đáng kể so với các phần khác. Điều này tạo ra sự chênh lệch về mức độ chân thực trong trò chơi. Ví dụ, mô hình của Nhện Người có chi tiết tuyệt vời, trong khi các cột đèn đường và thùng rác công cộng thiếu chi tiết rất nhiều.

Để vượt qua hạn chế của vertex shader truyền thống, vào năm 2019, Microsoft đã cập nhật một tính năng mới được gọi là mesh shader phiên bản beta, và sau đó vào năm 2020 là phiên bản chính thức. Gói API mới này được gọi là DirectX 12 Ultimate. Trước khi mesh shader trở thành một tính năng của API đồ họa trên Windows, Nvidia đã giới thiệu về nó và trình diễn sức mạnh của khả năng xử lý đa giác trong thế giới ảo trên thế hệ card RTX 20 series kiến trúc Turing hồi năm 2018:
Tuy nhiên, phải đến 3 năm sau mới có một trò chơi sử dụng mesh shader để tạo ra một thế giới ảo chân thực chưa từng thấy, và đó chính là Alan Wake II. Và chỉ vào năm 2021, UL Solutions mới cập nhật bộ phần mềm benchmark 3DMark với bài test mesh shader.
Đơn giản và ngắn gọn, mesh shader là những dòng mã được thiết kế đặc biệt để tính toán và xử lý đa giác. Nhờ vào những lệnh này, một nhóm đa giác có thể được tổ chức thành một lưới đa giác hoặc chia nhỏ một lưới lớn thành nhiều nhóm nhỏ hơn. Khả năng xử lý đa giác dạng lưới như vậy là lý do mesh shader được phát triển.

So với vertex shader, mesh shader mạnh mẽ hơn rất nhiều, nhờ vào khả năng chia nhóm “lưới” đa giác và cho GPU xử lý song song. Khả năng xử lý song song này đã khiến cho GPU hiện đại có thể được sử dụng trong nhiều ứng dụng khác nhau, không chỉ là đồ họa. Cùng một lúc xử lý nhiều đa giác và nhóm đa giác độc lập, điều này giúp các nhà phát triển game có khả năng kiểm soát tốt hơn nhiều.
Một ví dụ đơn giản là nếu có một vật thể bị ẩn, muốn loại bỏ nó để tối ưu hiệu suất, các nhà phát triển không cần phải xử lý ngay từ đầu hoặc chờ đợi cho đến khi tất cả các đa giác trong màn hình được xử lý xong. Chỉ cần nhóm các đa giác đó lại và yêu cầu GPU ngừng xử lý chúng là được.

Vấn đề đặt ra là, nếu mesh shader đã đến mức hoàn hảo như vậy, thì tại sao phải mất đến 3 năm kể từ ngày ra mắt cả phần cứng và phần mềm mới chỉ có một trò chơi duy nhất sử dụng công nghệ đồ họa này?
Điều quan trọng nhất là phần cứng xử lý game phải hỗ trợ mesh shader. Điều này đồng nghĩa rằng máy tính của bạn phải có card đồ họa AMD RDNA 2 trở lên hoặc Nvidia Turing trở lên, tức là Radeon RX 6000 series và RTX 20 series hoặc cao hơn.
Khi GPU hỗ trợ ray tracing được ra mắt, gần như ngay lập tức có những trò chơi mới hỗ trợ công nghệ đồ họa này. Nhưng mesh shader không. Lý do là PS5 sử dụng API đồ họa riêng của mình thay vì DirectX 12 Ultimate như Windows 11 và Xbox Series X/S. Không phải tất cả các nhà phát triển đều tốn công sức để tối ưu mesh shader trên cả hai API đồ họa của PlayStation và Windows như Remedy Entertainment, vì yêu cầu về thời gian, công sức và kinh phí để thực hiện điều đó.

Tương tự là Unreal Engine 5. Bộ công cụ phát triển game này có một tính năng quản lý đa giác tạo thành vật thể trong màn chơi gọi là Nanite, với mesh shader là trung tâm của Nanite, giúp tăng giảm quy mô đa giác một cách thông minh, vật thể càng gần thì càng chi tiết. Nhưng những game làm bằng UE5 hỗ trợ Nanite chắc chắn chỉ đếm trên đầu ngón tay, và demo The Matrix Awakens vẫn là đẹp nhất:


Việc chưa có trò chơi nào ngoại trừ Alan Wake II sử dụng mesh shader cũng giống như tính năng Direct Storage được Microsoft quảng cáo nhiều, giúp giảm nghẽn cổ chai do thuật toán lập trình cũ gây ra khi chơi game. Thay vì tải toàn bộ mô hình và texture vào RAM trước khi gửi tới VRAM cho GPU, DirectStorage cho phép GPU lấy dữ liệu game trực tiếp từ ổ cứng, tự xử lý giải nén, không cần chờ đợi CPU và RAM như trước.
Nhưng đến nay chỉ có một trò chơi ứng dụng DirectStorage của Microsoft, đó là Forspoken. Thật đáng tiếc là trò chơi này cũng không phải là một tác phẩm hoàn hảo để thể hiện sức mạnh của công nghệ.
Alan Wake II thì hoàn toàn khác biệt. Chất lượng hình ảnh của trò chơi chứng minh lợi thế của nhiều công nghệ đồ họa kết hợp: Path tracing, ray reconstruction, DLSS và cả mesh shader. Nếu so sánh giữa mesh shader và ray tracing, thì sức mạnh khác biệt của công nghệ ray tracing sẽ tạo ra ảnh hưởng lớn hơn đối với trải nghiệm của người chơi. Và Alan Wake II cũng không phải là trò chơi dễ dàng với cấu hình PC một chút nào.

Để khai thác triệt để sức mạnh của mesh shader, các nhà phát triển game cần tạo ra các mô hình vật thể phong phú và kết hợp chúng thành một thế giới game chi tiết. Đồng thời, đảm bảo rằng số lượng người chơi sử dụng card đồ họa hỗ trợ mesh shader đủ lớn để không ảnh hưởng đến doanh số game, cũng như chứng minh rằng việc áp dụng mesh shader đáng giá về thời gian, công sức và kinh phí.
Điều này đúng với Alan Wake II, một bước tiến rất mạo hiểm của Remedy Entertainment có thể làm bỏ lỡ nhiều người chơi sử dụng GPU cũ. Nhưng hiện nay, GPU phổ biến nhất không phải là GTX 1060 mà là RTX 3060.
Tóm lại, có thể dự đoán rằng trong năm 2023, với ray reconstruction của DLSS 3.5 và path tracing, công nghệ ray tracing thời gian thực đã được hoàn thiện hơn nhiều. Và không loại trừ khả năng trong năm 2024 và 2025, mesh shader sẽ được ứng dụng nhiều hơn, khi số lượng card đồ họa ra mắt trước năm 2018 bắt đầu giảm.