Diablo Immortal nâng cao chất lượng hình ảnh bằng tính năng theo dõi tia phần cứng

Diablo Immortal là một trò chơi hành động nhập vai (ARPG) nhiều người chơi miễn phí do Blizzard EntertainmentNetEase đồng phát triển. Diablo Immortal, một chương mới trong loạt Diablo, ra mắt vào năm 2022. Trò chơi này lấp đầy khoảng trống về cốt truyện giữa Diablo 2Diablo 3, đồng thời mở ra một cuộc phiêu lưu mới xung quanh các mảnh của World Stone (Hòn đá thế giới), nơi người chơi khám phá lục địa Sanctuary để chiến đấu chống lại các con quỷ và thế lực hủ bại.

Với sự đổi mới về cấu trúc GPU di động và những đột phá trong khả năng tăng tốc phần cứng, công nghệ theo dõi tia đang dần di chuyển từ máy tính sang thiết bị di động, trở thành một trong những yếu tố cốt lõi của quá trình kết xuất đồ hoạ có độ chân thực cao. Việc tính toán hiệu ứng phản chiếu động thực tế về mặt vật lý đòi hỏi nhiều phép tính, nhưng một đơn vị phần cứng chuyên dụng có thể thực hiện việc này trên các nền tảng di động bị hạn chế về nguồn điện. Bằng cách theo dõi đường truyền ánh sáng qua cảnh theo thời gian thực, công nghệ này mô phỏng chính xác hành vi phản chiếu của các bề mặt phức tạp như gương, kim loại và chất lỏng. Tính năng theo dõi tia giúp khắc phục các giới hạn không gian và lỗi xấp xỉ của các lược đồ quét điểm truyền thống, đồng thời hỗ trợ việc thể hiện nhất quán trên toàn cầu các nguồn sáng động, đối tượng ngoài màn hình và các phản xạ nhiều cấp.

Theo dõi tia bằng phần cứng trên thiết bị di động

Công nghệ theo dõi tia bằng phần cứng chủ yếu bao gồm hai mô hình triển khai: quy trình theo dõi tiatruy vấn tia.

Quy trình theo dõi tia tạo ra một quy trình hoàn chỉnh thông qua các giai đoạn đổ bóng chuyên dụng (tạo tia / giao điểm / đổ bóng điểm chạm gần nhất). Mặc dù có thể đạt được khả năng kiểm soát tương tác chính xác của tia, nhưng quy trình theo dõi tia đòi hỏi cấu hình quy trình độc lập, làm tăng độ phức tạp của quá trình phát triển.

Mặt khác, truy vấn tia cho phép khởi tạo truy vấn tia trực tiếp từ chương trình đổ bóng tính toán hoặc mảnh truyền thống, giúp đây trở thành công nghệ cốt lõi cho tính năng theo dõi tia trên thiết bị di động. Bằng cách loại bỏ nhu cầu về quy trình riêng biệt, truy vấn tia không chỉ đơn giản hoá đáng kể quy trình phát triển mà còn có 3 ưu điểm chính:

  1. Cung cấp khả năng tương thích với các môi trường điện toán không đồng nhất và phần cứng theo dõi tia không hoàn chỉnh
  2. Hỗ trợ gọi tính năng theo dõi tia theo yêu cầu ở bất kỳ giai đoạn đổ bóng nào
  3. Bằng cách giảm mức sử dụng tài nguyên, đáp ứng các quy tắc hạn chế về băng thông và nguồn điện của các nền tảng di động, đồng thời cung cấp cơ sở khả thi cho các hiệu ứng nâng cao như chiếu sáng toàn cầu động và phản chiếu theo thời gian thực trong trò chơi dành cho thiết bị di động

Diablo Immortal sử dụng Vulkan để tận dụng khả năng theo dõi tia phần cứng của GPU. Trò chơi tính toán đường đi của các tia sáng xuyên qua cảnh theo thời gian thực và tính đến các thuộc tính vật liệu phức tạp để đạt được hiệu ứng phản chiếu đột phá theo thời gian thực trên thiết bị Android.

Hình 1. Cảnh có phản chiếu theo phương pháp theo dõi tia.
Hình 2. Cảnh có tính năng phản chiếu theo phương pháp theo dõi tia bị tắt.

Cấu trúc tăng tốc

Cấu trúc tăng tốc là cốt lõi của tính năng theo dõi tia bằng phần cứng. Cấu trúc tăng tốc cải thiện đáng kể hiệu quả của việc kiểm thử giao nhau của tia thông qua việc sắp xếp dữ liệu theo phân cấp.

Hệ thống thường có hai cấp: cấu trúc tăng tốc cấp cao nhất (TLAS) và cấu trúc tăng tốc cấp thấp nhất (BLAS):

  • TLAS đóng vai trò là trình quản lý cảnh – Bằng cách ghi lại ma trận biến đổi không gian (bao gồm vị trí, độ xoay và tỷ lệ) của tất cả các thực thể BLAS, TLAS hiện thực hoá việc sắp xếp toàn cục của các cảnh động. Ví dụ: TLAS cho phép nhà phát triển phân phối hàng trăm thực thể của cùng một mô hình cây ở nhiều vị trí và tư thế trong cảnh; do đó, nhà phát triển chỉ cần cập nhật ma trận biến đổi của đối tượng chuyển động trong mỗi khung hình thay vì tái tạo hình học.
  • BLAS làm đơn vị cơ sở – Chịu trách nhiệm mã hoá hiệu quả các chi tiết hình học của một đối tượng 3D, BLAS thiết lập cấu trúc chỉ mục không gian thông qua thuật toán phân cấp khối giới hạn (BVH) để có thể nhanh chóng bỏ qua các khu vực không liên quan trong quá trình phát hiện tia.

Thiết kế phân cấp này cho phép quy trình theo dõi tia hình thành một chuỗi phát hiện hiệu quả của tia ==> TLAS (phiên bản đối tượng sàng thô) ==> BLAS (điểm giao nhau chính xác).

Việc tách biệt mô hình động và tĩnh là yếu tố then chốt để giảm thiểu chi phí xây dựng cấu trúc tăng tốc:

  • Mô hình tĩnh – Bạn chỉ cần tạo BLAS một lần ở giai đoạn khởi chạy và có thể sử dụng lại trực tiếp trong quá trình tải cảnh tiếp theo. Để tránh tình trạng trễ tải của các cảnh có quy mô lớn, bạn có thể sử dụng công nghệ tạo trước không đồng bộ của tính năng tạo khung để phân bổ tác vụ tạo BLAS cho nhiều khung.
  • Mô hình động
    • Do ảnh động khung xương điều khiển – Dữ liệu đỉnh được phủ da cần được tính toán song song bằng chương trình đổ bóng điện toán mỗi khung để tạo vùng đệm đỉnh mới, sau đó kích hoạt quá trình cập nhật gia tăng của BLAS tương ứng, giúp tránh việc tái tạo hoàn toàn để cải thiện hiệu suất.
    • Biến đổi cơ thể cứng – Nếu chỉ liên quan đến các phép biến đổi dịch/xoay/thu phóng, bạn không cần sửa đổi BLAS, chỉ cần cập nhật ma trận biến đổi thế giới trong TLAS rồi kích hoạt quy trình cập nhật nhanh TLAS.

Việc tái tạo định kỳ là điều cần thiết để duy trì hiệu quả của cấu trúc tăng tốc trong các cảnh động theo dõi tia. Khi các đối tượng động trải qua những thay đổi đáng kể về cấu trúc hình học, chẳng hạn như biến dạng hoặc dịch chuyển đỉnh trên quy mô lớn, thì việc phân chia không gian ban đầu có thể không thành công, làm giảm hiệu suất phát hiện va chạm trong quá trình truyền tia. Do đó, bạn phải kích hoạt quá trình tái tạo đầy đủ (thay vì cập nhật gia tăng) của BLAS/TLAS có tính linh động cao sau mỗi N khung hình.

Cuối cùng, để tối ưu hoá hiệu suất kết xuất theo phương pháp dò tia, hãy áp dụng chiến lược tạo TLAS động dựa trên vùng có thể xem của nhân vật: chỉ các mô hình trong ngưỡng bán kính hoạt động của nhân vật mới được đưa vào TLAS để giảm hao tổn cốt lõi của việc tính toán giao điểm tia.

Ánh phản chiếu được theo dõi tia

Hiệu ứng phản chiếu theo dõi tia có một số ưu điểm so với các kỹ thuật truyền thống như hiệu ứng phản chiếu không gian màn hình (SSR) và hiệu ứng phản chiếu mặt phẳng (các bề mặt đơn giản chiếu một cảnh theo một chiều). Hiệu ứng phản chiếu theo dõi tia mô phỏng thực tế đường đi của ánh sáng, ghi lại chính xác các đối tượng động bên trong và bên ngoài cảnh, hỗ trợ phản chiếu tự nhiên từ các bề mặt cong và không phẳng, đồng thời bật nhiều hiệu ứng ánh sáng bật lại như gương. Ngược lại, SSR chỉ giới hạn ở thông tin hiển thị trên màn hình và các hình phản chiếu phẳng có xu hướng bị lỗi hình ảnh hoặc méo trong các cảnh phức tạp.

Hình 3. Hình ảnh phản chiếu của đôi cánh trong hồ.
Hình 4. Hình ảnh phản chiếu của quái vật.

Theo nguyên tắc, tính năng phản chiếu theo dõi tia tương tự như SSR truyền thống: tính năng phản chiếu theo dõi tia phát ra các tia theo hướng phản chiếu đường ngắm trên cơ sở từng pixel và tính toán giao điểm của các tia với các đối tượng cảnh. Điểm giao nhau do API truy vấn tia trả về chứa thông tin hình học (bao gồm mã thực thể, chỉ mục hình học và chỉ mục gốc) và các tham số tạo điểm ảnh (tọa độ trọng tâm) ở cấp tam giác, nhưng không chứa dữ liệu màu pixel. Giải pháp thông thường sử dụng công nghệ liên kết tài nguyên không liên kết để biên dịch trước tất cả các tham số kết cấu và chất liệu của cảnh thành một mảng chỉ mục toàn cục. Bằng cách sử dụng giá trị nhận dạng hình học do truy vấn tia trả về, bạn có thể tra cứu các thuộc tính vật lý của chất liệu tương ứng (chẳng hạn như bản đồ pháp tuyến và độ nhám), sau đó kết hợp với nội suy toạ độ trọng tâm để tính toán thông tin tô bóng bề mặt và có thể tái tạo giá trị màu thực của giao điểm thông qua quá trình quét.

Tuy nhiên, trong quá trình triển khai, nhóm Diablo Immortal đã phát hiện ra hai vấn đề kỹ thuật quan trọng:

  1. Mô hình chiếu sáng buộc phải được hợp nhất, điều này xung đột với các hệ thống đổ bóng đa dạng tích luỹ trong quá trình thực hiện dự án và sẽ dẫn đến sự không khớp giữa chất liệu phản chiếu và chất liệu ban đầu.
  2. Sự đa dạng của các định dạng đỉnh dẫn đến việc giảm hiệu quả phân nhánh lệnh trong giai đoạn tạo điểm ảnh. Đây là vấn đề lớn trong phạm vi ngân sách hiệu suất eo hẹp của thiết bị di động.

Nhóm Diablo Immortal đã giới thiệu một cách sáng tạo bộ đệm chế độ hiển thị để tách biệt quá trình xử lý hình học với các phép tính đổ bóng:

  • Giai đoạn theo dõi tia — Thông tin về tia chạm ở cấp pixel được ghi lại theo thời gian thực thông qua truy vấn tia. Giá trị nhận dạng không gian 3D (InstanceID với PrimitiveIndex) của điểm giao nhau được mã hoá thành một mã nhận dạng chế độ hiển thị nhỏ gọn và được ghi vào vùng đệm không gian màn hình.
  • Giai đoạn tô màu – Tương tự như các thao tác do chương trình đổ bóng đỉnh và pixel thực hiện, các giá trị nhận dạng hình học trong vùng đệm chế độ hiển thị được phân tích cú pháp động, các thuộc tính đỉnh (chẳng hạn như UV và pháp tuyến) và bản đồ chất liệu dựa trên vật lý của mô hình ban đầu được tìm nạp và cuối cùng, các phép tính đổ bóng liên kết với loại chất liệu được thực hiện.

Giải pháp này cho phép kết nối các thành phần nghệ thuật với hệ thống phản chiếu theo dõi tia mà không cần sửa đổi định dạng đỉnh hoặc chương trình đổ bóng.

Các bước kết xuất cụ thể

Truyền truy vấn tia

Tương ứng với giai đoạn theo dõi tia và tạo vùng đệm chế độ hiển thị cho các phản chiếu không gian màn hình:

  • Color0
    • Định dạng: R32G32UInt
    • R = TriangleID, G = Barycentrics
Hình 5. Vùng đệm chế độ hiển thị.
  • Chiều sâu:
    • Định dạng: Depth32F
    • D = EncodeAsFloat(InstanceIdx, GeometryIdx)
    • Giá trị nhận dạng chất liệu của giao điểm được mã hoá ở dấu phẩy động 32 bit và ghi vào vùng đệm độ sâu cho giai đoạn tiếp theo của kỹ thuật phát hiện độ sâu mã hoá phù hợp của chất liệu
Hình 6. Độ sâu được mã hoá.

So với chương trình đổ bóng điện toán, truy vấn tia trong chương trình đổ bóng pixel có các ưu điểm sau:

  • Tích hợp quy trình — Quy trình được nhúng trực tiếp vào quy trình kết xuất chuyển tiếp/hoãn hiện có, duy trì tính liên tục của trạng thái quy trình kết xuất.
  • Tối ưu hoá băng thông di động – Đối với cấu trúc dựa trên ô trên thiết bị di động, tính năng nén không tổn hao trên chip có thể được kích hoạt khi dữ liệu về lượt đánh trúng tia sáng được ghi vào RenderTarget, giúp giảm mức tiêu thụ băng thông bộ nhớ so với đầu ra chương trình đổ bóng điện toán truyền thống vào vùng đệm.
  • Kiểm soát số lượng tia — Bạn có thể đánh dấu và từ chối các vùng không phản chiếu bằng cách sử dụng giai đoạn tính toán trước kết hợp với kiểm thử mô hình.

Giải quyết thẻ và vé

Trong giai đoạn tô màu (xem phần Phản chiếu theo dõi tia), nhóm Diablo Immortal đã đạt được khả năng so khớp nhận dạng nhanh bằng cách sử dụng đơn vị phần cứng kiểm thử độ sâu và thực hiện việc tô màu các vật liệu theo lô liên tiếp.

Đối với mỗi chất liệu, một lượt vẽ toàn màn hình sẽ được phát hành. Chương trình đổ bóng đỉnh sẽ tái tạo động giá trị nhận dạng được mã hoá của chất liệu hiện tại. Khi sử dụng quy trình kiểm thử bằng độ sâu bằng nhau, giá trị nhận dạng được so sánh với các giá trị đã mã hoá trong vùng đệm độ sâu và chỉ những pixel có giá trị đã mã hoá khớp chính xác mới được giữ lại, tức là những pixel thuộc về thực thể chất liệu hiện tại. Các pixel được giữ lại sẽ thực thi chương trình đổ bóng chất liệu tương ứng.

Tiếp theo, tính năng tái tạo chất liệu có độ chính xác cao được triển khai trong chương trình đổ bóng pixel:

  • Giải mã dữ liệu hình học – Trích xuất giá trị nhận dạng tam giác (MeshID + PrimitiveID) và toạ độ trọng tâm từ vùng đệm chế độ hiển thị, đồng thời tải động các thuộc tính đỉnh (vị trí, UV, pháp tuyến, v.v.) của tam giác tương ứng từ vùng đệm đỉnh. Vì mỗi mô hình được tô bóng dưới dạng một chất liệu độc lập, nên bạn không cần sử dụng các tính năng nâng cao như liên kết.
  • Tái tạo tham số bề mặt — Tính toán toạ độ UV tại điểm giao nhau bằng cách nội suy toạ độ trọng tâm. Quá trình tạo điểm ảnh bằng phần mềm được thực hiện để lấy mẫu bản đồ dựa trên UV nội suy.
  • Sử dụng lại tính toán đổ bóng — Trực tiếp sử dụng lại mã chương trình đổ bóng hiện có để duy trì cùng một logic chất liệu với quy trình kết xuất chính.
Hình 7. Đã giải quyết phản chiếu.

Cuối cùng, các mô hình thực sự tham gia vào quá trình tính toán độ phản chiếu chỉ chiếm một phần rất nhỏ của cảnh. Dữ liệu nhận dạng mô hình phản chiếu do GPU trả về có thể được đọc không đồng bộ để loại bỏ các mô hình/chất liệu không tham gia vào quá trình phản chiếu, giúp giảm hiệu quả số lượng lệnh gọi vẽ (lệnh gọi vẽ xảy ra khi các chất liệu và lưới được gửi đến GPU để vẽ) trong giai đoạn tô bóng.

Ánh phản chiếu specular dựa trên vật lý

Để đạt được độ phản chiếu trung thực cao, các bề mặt phản chiếu được phân loại là một trong ba loại theo độ nhám:

  1. Không có phản chiếu — Bạn có thể bỏ qua các phép tính phản chiếu cho các bề mặt này để tiết kiệm tài nguyên. Nếu bề mặt rất gồ ghề, hình ảnh phản chiếu sẽ bị mờ và yếu, do đó, mức đóng góp không rõ ràng.
  2. Phản chiếu gương — Giống như một tấm gương nhẵn, hình ảnh phản chiếu rõ ràng và không bị mờ. Chụp đường thẳng theo hướng phản chiếu từ đường ngắm.
  3. Ánh phản chiếu bóng — Ánh phản chiếu với độ nhám nhất định của bề mặt được mô phỏng dựa trên phép lấy mẫu theo trọng số GGX, có thể tính đến cả hiệu quả tính toán và độ chính xác thực tế. Ánh phản chiếu sẽ lệch sang hướng chính của ánh phản chiếu gương khi phát ra đường thẳng, giúp cải thiện hiệu quả lấy mẫu của vùng sáng.

Để đạt được chất lượng hình ảnh có thể sử dụng với mức tiêu thụ điện năng hạn chế, nhóm Diablo Immortal đã áp dụng giải pháp 1SPP+Denoiser. Tức là nhóm Diablo Immortal đã lấy một mẫu cho mỗi pixel, sau đó sử dụng thuật toán giảm nhiễu không gian/thời gian để làm mượt lượng lớn nhiễu do tốc độ lấy mẫu thấp gây ra.

Nhóm Diablo Immortal đã chọn công cụ Giảm nhiễu phản chiếu trong công cụ Giảm nhiễu FidelityFX của AMD, một công cụ giảm nhiễu hiệu suất cao được tối ưu hoá cho các hiệu ứng phản chiếu theo dõi tia và phản chiếu không gian màn hình. Ưu điểm cốt lõi của công cụ Giảm nhiễu phản chiếu là thuật toán giảm nhiễu kết hợp không gian-thời gian của công cụ này: bằng cách kết hợp khung hình hiện tại và dữ liệu khung hình trước đó (dựa trên tính năng bù chuyển động), kết hợp với các kỹ thuật lọc không gian (chẳng hạn như lọc giữ lại cạnh theo hướng dẫn của phương sai), công cụ Giảm nhiễu phản chiếu sẽ loại bỏ hiệu quả nhiễu và tạo ra hiệu ứng phản chiếu mượt mà ở tốc độ lấy mẫu rất thấp.

Để thích ứng với các đặc điểm của quy trình kết xuất tự phát triển và đáp ứng các quy tắc ràng buộc nghiêm ngặt về hiệu suất của thiết bị di động, nhóm Diablo Immortal đã triển khai việc đơn giản hoá và điều chỉnh cấu trúc theo mục tiêu khi tích hợp Trình giảm nhiễu phản chiếu AMD FidelityFX.

Theo dõi tia có độ chân thực cao bằng Vulkan

Diablo Immortal chạy trên nhiều thiết bị Android hỗ trợ Vulkan, trong đó nhóm Diablo Immortal đã tận dụng các tính năng theo dõi tia sáng phần cứng GPU sáng tạo. Vulkan đã giảm chi phí phát triển và sự cố, tạo điều kiện phân phối nội dung và lối chơi Diablo Immortal chất lượng cao cho người dùng Android.