Thế giới đồ họa PC trong game đã chạm đến một ngưỡng nhất định. Mặc dù chúng ta vẫn liên tục đón nhận những tựa game tuyệt đẹp, đẩy giới hạn kỹ thuật lên tầm cao mới – từ Doom: The Dark Ages với tính năng dò tia theo thời gian thực (real-time path tracing) đến công nghệ Multi-Frame Generation (MFG) của Nvidia đã có mặt trong hàng chục trò chơi – nhưng có vẻ như thế hệ này đã đạt đến một bức tường. Các công nghệ như hình học ảo hóa (virtualized geometry) của Unreal Engine Nanite đã phổ biến, và dò tia (ray tracing) đã tiến bộ đến mức trở thành một tính năng bắt buộc trong các tựa game lớn. Tuy nhiên, đằng sau những tiến bộ bề nổi này, một công nghệ tiềm năng khác đã âm thầm phát triển trong nhiều năm qua, hứa hẹn sẽ thay đổi cục diện đồ họa game.
Đó chính là Neural Texture Compression (NTC) – Nén Texture Neural, một khái niệm đã được Nvidia giới thiệu hai năm trước và khiến một bộ phận nhỏ những người đam mê công nghệ phải nín thở chờ đợi tiềm năng của nó. Các nhà nghiên cứu đồ họa đã cố gắng “phá vỡ” bài toán NTC trong hơn hai năm, và gần đây, công nghệ này vừa đạt được một bước đột phá lớn. NTC không phải là thứ bạn sẽ đọc được trên trang Steam của một trò chơi hay nghe trong các buổi giới thiệu sản phẩm lớn, nhưng nó đang là tâm điểm chú ý của cộng đồng chuyên gia và hứa hẹn sẽ là tương lai của việc tối ưu hiệu suất và chất lượng hình ảnh trong các tựa game bom tấn.
Tìm Hiểu Về Neural Texture Compression (NTC)
NTC Đã Xuất Hiện Vài Năm
Neural Texture Compression thực sự là một công nghệ mang tính cách mạng, và bạn có thể thấy điều đó chỉ bằng cách hiểu cơ chế hoạt động của nó. Khi bạn chơi game, các texture (kết cấu bề mặt) sẽ được tải từ các file nén được lưu trữ cùng với trò chơi. Những file này sau đó được gửi đến GPU của bạn, lưu trữ trong VRAM và giải nén. Quá trình này tiềm ẩn hai nguồn gây mất hiệu suất hoặc giảm chất lượng. Thứ nhất là thời gian cần thiết để đọc và giải nén texture từ ổ cứng. Thứ hai là yêu cầu về VRAM khi texture sẵn sàng để hiển thị.
Điều này đã dẫn đến nhiều vấn đề khi các texture ngày càng lớn và phức tạp hơn. Ví dụ điển hình là tình trạng thiếu VRAM, nơi việc hoán đổi mức độ chi tiết (level-of-detail swapping) không thể theo kịp logic của trò chơi, gây ra hiện tượng “pop-in” rõ rệt (các vật thể đột ngột xuất hiện hoặc thay đổi chi tiết). Ngoài ra còn có sự sụt giảm hiệu suất, vì các texture lớn mất nhiều thời gian hơn để truyền qua hệ thống và giải nén trên GPU.
Neural Texture Compression giải quyết vấn đề này bằng cách ứng dụng Trí tuệ Nhân tạo (AI). Thay vì một file texture nén truyền thống cần trải qua chuỗi xử lý trên, NTC tìm cách biểu diễn texture dưới một định dạng mà một mô hình AI có thể đọc và thực hiện suy luận.
Cảnh gameplay của Doom: The Dark Ages với đồ họa path tracing ấn tượng
Điều này có nghĩa là, thay vì một texture khổng lồ chiếm dụng một lượng lớn VRAM của bạn, Neural Texture Compression sử dụng một “texture” rất nhẹ mà mô hình AI sẽ xử lý. Sau đó, các lõi Tensor Cores trên GPU sẽ được kích hoạt để thực hiện quá trình suy luận, và texture sẽ được tái tạo với chất lượng như mong đợi. Trên thực tế, tài liệu nghiên cứu gốc của Nvidia đã chỉ ra rằng Neural Texture Compression thậm chí có thể dẫn đến các texture có chất lượng cao hơn. Các nhà phát triển game không chỉ có thể sử dụng các texture lớn hơn mà còn không phải đối phó với các lỗi nén (compression artifacts) thường xuất hiện với phương pháp nén khối (block compression) truyền thống.
Rõ ràng là rất khó để phản bác một kỹ thuật như Neural Texture Compression. Nó hứa hẹn hiệu suất tốt hơn, ít tài nguyên hơn và tiềm năng tạo ra các texture chất lượng cao hơn. Nvidia đã từng trình diễn một texture 272MB có thể thu nhỏ xuống chỉ còn 11.37MB với NTC. Thật ấn tượng! Tuy nhiên, đã vài năm kể từ khi Nvidia giới thiệu ý tưởng này, và chúng ta vẫn chưa thấy nó được ứng dụng trong một ứng dụng đồ họa thời gian thực. Mặc dù NTC đầy hứa hẹn, nhưng cho đến nay, nó chưa thực sự khả thi trong một tựa game thương mại. Tuy nhiên, điều này có thể đang thay đổi.
Bước Đột Phá Lớn Vừa Diễn Ra
Giải Quyết Rào Cản Lọc Texture
Trong tài liệu nghiên cứu gốc của Nvidia về NTC, các nhà nghiên cứu đã để lại một lưu ý trong phần “Hạn chế”: “Việc lọc texture truyền thống (unrolled filtering) rất tốn kém về mặt tính toán, và lọc ngẫu nhiên (stochastic filtering) có thể gây ra hiện tượng nhấp nháy bằng cách tăng gánh nặng lên việc tái tạo không gian-thời gian. Các tài liệu cho thấy có thể tạo ra các biểu diễn neural có thể lọc trực tiếp, nhưng chúng tôi để dành cho công việc trong tương lai.” Chính “công việc trong tương lai” được đề cập trong tài liệu gốc đó là điều chúng ta đang chứng kiến hiện nay.
Trong một tài liệu mới của Nvidia có tiêu đề “Collaborative Texture Filtering” (Lọc Texture Cộng tác), các nhà nghiên cứu đã thảo luận về các vấn đề với lọc texture ngẫu nhiên khi sử dụng biểu diễn neural của một texture, chẳng hạn như với NTC. Trong bối cảnh NTC, điều quan trọng cần biết là việc lọc texture đã dẫn đến nhiễu và nhấp nháy khi texture được phóng to, về cơ bản khiến NTC trở nên không thể sử dụng đối với bất kỳ nhà phát triển game nào đang thực hiện một tựa game thương mại.
Minh họa cách Neural Texture Compression của Nvidia giảm đáng kể dung lượng texture
Kỹ thuật mà Nvidia gọi là Collaborative Texture Filtering (CTF) dựa trên nghiên cứu trước đây về lọc texture ngẫu nhiên, nơi các nhà nghiên cứu đã chỉ ra rằng có thể chia sẻ các texel (đơn vị của texture) đã giải nén với các pixel lân cận. CTF tiến một bước xa hơn. Sử dụng các GPU intrinsics có sẵn trong DirectX 12 và Vulkan, Nvidia cho biết họ có thể chia sẻ các texel giữa các pixel mà không cần giải nén texel lặp lại, và trong quá trình đó, tạo ra khả năng lọc không lỗi với NTC mà không gây ra gánh nặng hiệu suất lớn.
Nếu tất cả những điều trên nghe có vẻ phức tạp, đây là tóm tắt đơn giản: NTC sẽ gây ra nhiễu và nhấp nháy khi một texture được phóng to, khiến nó không thể sử dụng trong một trò chơi thực tế. Giờ đây, các nhà nghiên cứu của Nvidia đã tìm ra cách loại bỏ hiện tượng nhấp nháy đó bằng cách lọc texture phù hợp. Và, trong tài liệu của họ, các nhà nghiên cứu đã trình diễn cụ thể CTF hoạt động với texture NTC.
Tương Lai Nào Cho Neural Texture Compression?
Hỗ Trợ Cooperative Vector Còn Rất Mới Mẻ
Chúng ta khó có thể xác định một lộ trình cụ thể cho NTC hoặc các kỹ thuật tương tự được trình diễn bởi các nhà nghiên cứu tại AMD hoặc Intel. Bộ SDK của NTC đã có sẵn miễn phí trên GitHub, vì vậy, về lý thuyết, nó có thể được đưa vào các trò chơi ngay bây giờ. Tuy nhiên, thời điểm chúng ta bắt đầu thấy NTC trong game hoàn toàn nằm trong tay các nhà phát triển. Cho đến thời điểm này, có rất nhiều lý do không nên sử dụng các biểu diễn neural cho việc nén texture, không chỉ vì các vấn đề đã nói ở trên về việc lọc các texture đó, mà còn do vấn đề hỗ trợ phần cứng.
NTC chạy một mạng neural trên GPU, vì vậy nó cần quyền truy cập vào phần cứng AI, và đây là lĩnh vực mà mọi yếu tố cuối cùng đang dần khớp nối. DirectX và Vulkan hiện hỗ trợ Cooperative Vectors, về cơ bản cho phép các nhà phát triển tận dụng phần cứng AI có sẵn trên card đồ họa của bạn thông qua API – các nhà phát triển có thể thêm tính năng kết xuất AI vào các shader của họ mà không cần nhắm mục tiêu một nhà cung cấp cụ thể nào. Vấn đề là hỗ trợ Cooperative Vector tương đối mới; nó mới được giới thiệu vào đầu năm nay trong DirectX. Hỗ trợ GPU vẫn còn rất nhiều điều chưa chắc chắn.
So sánh chất lượng đồ họa game khi bật và tắt DLSS 4, minh họa vai trò của AI trong tăng cường hình ảnh
AMD, Nvidia và Intel đều có bộ tăng tốc AI trên GPU của họ, nhưng ở các mức độ khác nhau. Ví dụ, các GPU RDNA 4 như RX 9070 XT hỗ trợ Cooperative Vectors, nhưng hỗ trợ RDNA 3 dường như còn khó khăn hơn. Trong SDK NTC, Nvidia lưu ý rằng mọi thứ từ dòng GTX 10-series trở xuống đều có thể hoạt động, nhưng họ đã vô hiệu hóa suy luận với Cooperative Vectors trên các GPU Turing và Ampere một cách cụ thể. Trước khi một thứ gì đó như NTC có thể xuất hiện trong một tựa game thương mại, nó cần được hỗ trợ rõ ràng bởi một loạt phần cứng rộng rãi mà game thủ đang thực sự sử dụng. Công việc đó đang được tiến hành, nhưng nó còn lâu mới hoàn thành.
Các Yếu Tố Khác Cần Xem Xét
Còn có vấn đề về các phương án dự phòng (fallbacks). Nếu sự hỗ trợ còn rời rạc như hiện nay, các nhà phát triển sẽ cần phải bao gồm các texture nén thông thường cùng với các biểu diễn neural cho NTC, điều này đòi hỏi rất nhiều công sức cho một khả năng hiện đang còn rất ngách. Dù sao đi nữa, sẽ mất vài năm nữa để chúng ta thấy bất kỳ điều gì giống như NTC xuất hiện, và tôi nghi ngờ rằng nó sẽ được triển khai một cách “âm thầm”. Chúng ta có thể sẽ thấy nó được áp dụng cho một số texture nhất định và không phải tất cả, ban đầu, mang lại lợi ích về hiệu suất và/hoặc chất lượng “vô hình” trên các GPU hỗ trợ Cooperative Vectors.
Các kỹ thuật kết xuất thường mất một thời gian dài để phát triển. Phải mất nhiều năm sau khi chúng ta nghe về một điều gì đó trong một tài liệu nghiên cứu trước khi nó xuất hiện trong một sản phẩm thực tế, và đôi khi phải mất hàng thập kỷ trước khi một kỹ thuật mang lại đủ lợi ích để được sử dụng rộng rãi. NTC cũng không khác. Nó là một kỹ thuật có những hạn chế và ứng dụng nhất định, và các nhà phát triển game sẽ là người quyết định liệu nó có đáng để sử dụng hay không.
Điểm khác biệt chính với NTC là nó có một số lợi ích và ứng dụng rất rõ ràng, vì vậy có lẽ các nhà phát triển đã từng thử nghiệm – hoặc ít nhất là nghĩ đến – nó cho đến thời điểm này. Có thể hiện đang có những trò chơi đang được phát triển sử dụng các biểu diễn neural cho texture, và chúng ta chỉ chưa biết về chúng. Dự đoán của tôi là chúng ta có thể sẽ có ít nhất một số ví dụ về nén texture neural trong một vài trò chơi trong vài năm tới, nhưng hiện tại chúng ta sẽ phải chờ xem.
Card đồ họa Nvidia GeForce RTX 4070 Super Founders Edition, một ví dụ về phần cứng hỗ trợ công nghệ đồ họa mới
Neural Texture Compression mang đến một tương lai đầy hứa hẹn cho đồ họa game, giải quyết các thách thức về dung lượng và chất lượng một cách đột phá. Tuy nhiên, để công nghệ này thực sự phổ biến, nó cần vượt qua rào cản về hỗ trợ phần cứng và thời gian để các nhà phát triển tích hợp. Bạn nghĩ sao về tiềm năng của Neural Texture Compression trong ngành game? Hãy chia sẻ ý kiến của bạn trong phần bình luận!