BLAS và TLAS khác nhau thế nào trong quy trình DXR?
BLAS và TLAS là hai tầng cấu trúc tăng tốc trong quy trình ray tracing của Direct3D 12: BLAS tổ chức dữ liệu hình học, còn TLAS mô tả các instance được đưa vào cảnh và tham chiếu tới BLAS. Có thể nhớ sự khác nhau qua “hình học” và “instance”, nhưng chi tiết tạo, cập nhật và sử dụng phụ thuộc yêu cầu API và thiết kế ứng dụng.
Điểm chính
- Tài liệu Microsoft mô tả acceleration structure trong DXR theo hai loại chính: bottom-level và top-level. [1]
- BLAS gắn với dữ liệu hình học; TLAS biểu diễn các instance và mối liên hệ để ứng dụng ray tracing truy vấn cảnh.
- TLAS không đơn giản là bản sao hình học của BLAS: instance có thể tham chiếu cấu trúc cấp dưới cùng với thông tin biến đổi phù hợp.
- Cấu trúc dữ liệu, cờ build và quy trình cập nhật phải tuân theo tài liệu API; không nên suy ra một quy tắc tối ưu phổ quát.
- Đây là thuật ngữ phát triển ứng dụng D3D12, không phải thiết lập mà người chơi cần bật trong menu đồ họa.
Hai tầng giải quyết hai cách nhìn khác nhau
DXR (DirectX Raytracing) mở rộng Direct3D 12 với API để ứng dụng tổ chức và thực hiện công việc ray tracing. Trong bối cảnh đó, acceleration structure là dữ liệu được xây dựng để hỗ trợ truy vấn giao cắt tia với cảnh. Microsoft mô tả cấu trúc theo tầng bottom-level và top-level; cách gọi BLAS/TLAS phản ánh quan hệ giữa dữ liệu hình học và các lần xuất hiện của nó trong cảnh. [1]
BLAS, viết tắt của bottom-level acceleration structure, thường đại diện dữ liệu hình học mà ứng dụng cung cấp cho một đối tượng hoặc nhóm hình học. TLAS, top-level acceleration structure, mô tả các instance ở cấp cảnh và liên kết tới cấu trúc cấp dưới. Tách như vậy giúp phân biệt nội dung hình học với cách nội dung ấy được đặt hoặc sử dụng trong một cảnh. Đây là cách đọc khái niệm, không phải lời khẳng định rằng mọi engine lưu trữ toàn bộ dữ liệu nội bộ theo cùng một bố cục.
BLAS gắn với hình học, TLAS gắn với instance
Hãy tưởng tượng một mô hình có dữ liệu tam giác và một cảnh có nhiều vị trí đặt mô hình. Phần hình học là ứng viên để tổ chức ở tầng BLAS; mỗi lần xuất hiện trong cảnh là một instance có thể tham chiếu dữ liệu cấp dưới. TLAS giúp mô tả những lần xuất hiện ấy trong cấu trúc cấp cao hơn. Ví dụ chỉ minh họa sự khác nhau giữa loại dữ liệu; ứng dụng thực tế phải theo định nghĩa tài nguyên và quy tắc của Direct3D 12.
Sự tách tầng có thể hữu ích khi cùng một hình học được dùng trong nhiều instance, vì khái niệm instance không nhất thiết đồng nghĩa với việc tạo một bản hình học hoàn toàn mới. Tuy nhiên, người viết không nên suy ra rằng mọi trường hợp đều tiết kiệm bộ nhớ hay thời gian. Cờ build, dữ liệu, thay đổi cảnh và cách ứng dụng lập lịch đều ảnh hưởng cách triển khai; tài liệu API đặt ra các yêu cầu mà lập trình viên phải đáp ứng. Không có một tỷ lệ hiệu năng chung chỉ từ tên BLAS hoặc TLAS.
Build và cập nhật là quyết định của ứng dụng
Khi cảnh thay đổi, cần xác định dữ liệu nào thay đổi: hình học nền, transform của instance hay cả hai. Phân biệt này giúp đặt câu hỏi đúng về việc xây dựng hoặc cập nhật cấu trúc, nhưng không đủ để kết luận rằng luôn phải dựng lại toàn bộ BLAS hoặc TLAS. Tài liệu Microsoft về DXR giải thích các cấu trúc và cơ chế liên quan ở cấp API; ứng dụng cần tuân thủ điều kiện cụ thể, tài nguyên và cờ được sử dụng.
Trong mã nguồn hoặc trace, hãy tìm nơi tạo resource, lệnh build và dữ liệu instance thay vì kết luận từ tên biến. Kiểm tra phiên bản API, loại cấu trúc, trạng thái tài nguyên và thứ tự lệnh nếu đang gỡ lỗi. Những khác biệt đó có ý nghĩa với nhà phát triển, song chúng không tự nói lên một trò chơi cụ thể dùng cấu trúc nào hoặc đạt hiệu năng ra sao. Tránh trình bày sơ đồ tối giản như mô tả đầy đủ mọi chi tiết thực thi.
Cách đọc thuật ngữ mà không khái quát quá mức
Một mô tả chính xác nên nói rõ BLAS là tầng cấu trúc dưới gắn với hình học, TLAS là tầng trên tổ chức instance, và cả hai được đặt trong mô hình DXR của Direct3D 12. Nếu chuyển sang Vulkan, thư viện riêng hay engine cụ thể, phải kiểm tra tài liệu tương ứng; tên khái niệm tương tự không đảm bảo API và quy trình hoàn toàn giống nhau. Nguồn Microsoft hỗ trợ phạm vi D3D12, không chứng minh mọi hệ thống ray tracing có cấu trúc đồng nhất. [1]
Đối với người dùng cuối, phân biệt BLAS và TLAS không phải thao tác cấu hình thường ngày. Đây là khái niệm dành cho xây dựng ứng dụng, công cụ đồ họa và phân tích pipeline. Nếu đang đọc bài nói về tính năng game, hãy tách mô tả API khỏi kết quả trên phần cứng: muốn biết hiệu năng phải đo một workload cụ thể, không thể suy ra từ phân cấp dữ liệu. Độc giả theo dõi tin thể thao có thể ghé Trải nghiệm các sự kiện thể thao đang diễn ra tại KLIVE; nội dung này không phải nguồn kỹ thuật xác nhận hành vi DXR.
Người đọc cũng có thể khám phá nội dung thể thao qua Trải nghiệm các sự kiện thể thao đang diễn ra tại KLIVE; liên kết không khẳng định một trận cụ thể đang phát.
Nguồn tham khảo
Câu hỏi thường gặp
BLAS có phải là hình ảnh của một vật thể không?
Không. BLAS là cấu trúc tăng tốc gắn với dữ liệu hình học trong mô hình DXR, không phải ảnh hiển thị.
TLAS có thay thế BLAS không?
Không theo cách phân biệt khái niệm ở Direct3D 12: TLAS tổ chức instance và tham chiếu các cấu trúc cấp dưới.
BLAS và TLAS cho biết hiệu năng ray tracing của game không?
Không. Tên cấu trúc không cung cấp benchmark; kết quả cần được đo trong workload và cấu hình cụ thể.