Skip to content

Tại sao thay đổi hình học có thể đòi cập nhật acceleration structure?

a By admin From the Creative Home Decor editorial desk
Tóm tắt

Acceleration structure trong DirectX Raytracing (DXR) là dữ liệu mà pipeline truy vấn để tìm giao cắt giữa tia và cảnh. Vì cấu trúc này phản ánh hình học hoặc các instance, thay đổi dữ liệu có thể khiến ứng dụng cần cập nhật cấu trúc trước lần truy vấn tiếp theo. Nhưng không phải mọi thay đổi đều buộc dựng lại toàn bộ: lựa chọn build hay update phụ thuộc cấu trúc, loại thay đổi và cách ứng dụng chuẩn bị tài nguyên. Đây là quyết định của ứng dụng theo API, không phải quy luật cố định về tốc độ của mọi trò chơi.

Điểm chính

  1. BLAS mô tả hình học cấp dưới, còn TLAS tổ chức các instance được đưa vào cảnh truy vấn.
  2. Acceleration structure phải phù hợp với dữ liệu cảnh mà ứng dụng muốn truy vấn.
  3. DXR cung cấp cách build/update nhưng khả năng update phụ thuộc cờ và điều kiện cấu trúc đã tạo. [1]
  4. Thay đổi transform instance và thay đổi dữ liệu vertex không nhất thiết dẫn đến cùng một công việc.
  5. Tài liệu API không cho biết engine hay trò chơi cụ thể đang dựng lại cấu trúc ra sao.

Acceleration structure nằm ở đâu trong DXR?

Ray tracing cần xác định tia có giao với hình học nào. Thay vì thử từng tam giác theo cách đơn giản, ứng dụng dùng acceleration structure để tổ chức dữ liệu không gian và giúp truy vấn hiệu quả hơn. Trong mô hình DXR, BLAS thường chứa dữ liệu hình học, còn TLAS chứa các instance tham chiếu tới cấu trúc cấp dưới cùng thông tin đặt chúng vào cảnh. Hai tầng giúp tách hình học dùng lại khỏi các bản thể được bố trí ở nhiều vị trí.

Illustration: Acceleration structure nằm ở đâu Decorative illustration for the section "Acceleration structure nằm ở đâu"; visual only, carries no data.

Microsoft Learn mô tả acceleration structure, quá trình tạo và dùng chúng trong workflow D3D12 ray tracing. Tài liệu này xác định các khái niệm ở cấp API; nó không xác nhận thiết kế nội bộ của một game hoặc mức tăng tốc đạt được trong một cảnh bất kỳ. [1]

Vì sao thay đổi hình học liên quan đến cấu trúc?

Acceleration structure chỉ hữu ích nếu các thông tin nó lưu còn đại diện cho cảnh mà ứng dụng muốn truy vấn. Nếu vị trí instance đổi, ứng dụng có thể cần làm mới thông tin ở tầng chứa instance. Nếu hình học nguồn thay đổi, phần cấu trúc phụ thuộc vào geometry cũng có thể cần xử lý. Tùy dạng tài nguyên và cách tổ chức, cập nhật có thể giới hạn ở tầng liên quan hoặc đòi hỏi công việc lớn hơn; cụm từ “thay đổi hình học” bao trùm nhiều loại thay đổi khác nhau.

Cũng cần phân biệt dữ liệu đỉnh thay đổi với transform của một instance. Trường hợp thứ nhất có thể tác động đến mô tả hình học trong BLAS; trường hợp thứ hai thường thuộc thông tin instance trong TLAS. Đây là cách suy luận khái quát dựa trên vai trò các tầng, không thay cho hướng dẫn cụ thể của engine. Để kết luận ứng dụng phải làm gì, cần xem cờ build, cấu trúc tài nguyên và yêu cầu API.

Build và update là lựa chọn có điều kiện

DXR cho phép ứng dụng tạo acceleration structure và có các cơ chế hỗ trợ update khi cấu trúc được tạo với điều kiện thích hợp. Vì vậy, “có thay đổi” không đồng nghĩa “phải dựng lại từ đầu”, nhưng cũng không có nghĩa mọi dữ liệu đều có thể cập nhật tùy ý. Ứng dụng phải khai báo khả năng tương ứng khi build và tuân thủ ràng buộc về loại cấu trúc, dữ liệu và thao tác tiếp theo. Nếu điều kiện update không được đáp ứng, đường xử lý khác có thể cần thiết.

Illustration: Build và update là lựa chọn có điều Decorative illustration for the section "Build và update là lựa chọn có điều"; visual only, carries no data.

Tài liệu Microsoft Learn là điểm tham chiếu để kiểm tra tên khái niệm, cờ và quy trình của API. Khi đọc tài liệu, hãy tách phần bắt buộc của API khỏi các lựa chọn tối ưu do ứng dụng quyết định. Các từ như “update” và “rebuild” mô tả công việc khác nhau, nhưng tài liệu không hứa rằng update luôn nhanh hơn trong mọi workload. [1]

Shader table không phải acceleration structure

Một nguồn nhầm lẫn là gộp mọi dữ liệu ray tracing vào một cấu trúc. Shader table là nơi liên kết các record với shader và dữ liệu liên quan cho dispatch; acceleration structure phục vụ truy vấn giao cắt trong cảnh. Chúng tham gia cùng workflow nhưng giải quyết các vai trò khác. Thay đổi geometry không tự động có nghĩa shader table phải thay đổi, cũng như sửa shader record không đồng nghĩa geometry đã được cập nhật.

Khi lần theo một vấn đề, hãy hỏi bước nào dùng dữ liệu nào: build cấu trúc cảnh, tạo shader table hay dispatch tia. Việc tách các bước giúp tránh chẩn đoán chung chung kiểu “ray tracing cập nhật chậm”, vốn không chỉ ra CPU, GPU, dữ liệu hay giai đoạn nào tạo ra chi phí. API cho biết cách liên kết các thành phần, còn phép đo mới cho biết ứng dụng cụ thể đang tốn thời gian ở đâu.

Không suy diễn hiệu năng của trò chơi từ khái niệm API

Một cảnh có thể thay đổi liên tục, hoặc chỉ cập nhật một phần dữ liệu; ứng dụng lựa chọn cấu trúc và lịch build dựa trên nhu cầu của mình. Không có căn cứ để nói mọi game dựng lại toàn bộ sau mỗi thay đổi, hoặc một phương pháp luôn có chi phí thấp hơn. Các yếu tố như kích thước cảnh, số instance, phần cứng, driver và cách triển khai đều có thể ảnh hưởng kết quả.

Nếu bạn đang theo dõi nội dung thể thao trực tiếp, hãy xem Theo dõi thêm giải đấu esports đang diễn ra cùng KLIVE. Liên kết này dành cho nội dung thể thao và không hàm ý KLIVE sử dụng DXR hoặc bất kỳ kỹ thuật dựng hình cụ thể nào.

Nguồn tham khảo

  1. Microsoft Learn — Direct3D 12 raytracing

Câu hỏi thường gặp

Mọi thay đổi hình học có buộc dựng lại toàn bộ acceleration structure không?

Không thể kết luận như vậy. Cần xét loại thay đổi, tầng cấu trúc và điều kiện build/update của ứng dụng.

BLAS và TLAS khác nhau ở điểm nào?

BLAS tổ chức dữ liệu hình học; TLAS tổ chức các instance tham chiếu đến cấu trúc hình học trong cảnh.

Tài liệu DXR có cho biết một game cụ thể cập nhật ra sao không?

Không. Nó mô tả API; cách engine sử dụng API phải được xác minh riêng.

a

About admin

A contributing stylist to Creative Home Decor, admin tests every recommendation in real rooms before it earns a place in the publication. Read more on the about page.

Keep reading