Nắm bắt hệ sinh thái WebGPU

François Beaufort
François Beaufort
Corentin Wallez
Corentin Wallez

WebGPU thường được xem là một API đồ hoạ web cấp quyền truy cập nhanh chóng và hợp nhất vào GPU bằng cách cho thấy các chức năng phần cứng tiên tiến, đồng thời cho phép thực hiện các hoạt động kết xuất và tính toán trên GPU, tương tự như Direct3D 12, Metal và Vulkan.

Tuy nhiên, WebGPU vượt ra ngoài ranh giới của một API JavaScript đơn thuần; nó là một khối xây dựng cơ bản giống như WebAssembly, với những hàm ý mở rộng ra ngoài web do hệ sinh thái đang phát triển của nó. Nhóm Chrome công nhận WebGPU không chỉ là công nghệ web mà còn là một hệ sinh thái lớn mạnh tập trung vào công nghệ cốt lõi.

Khám phá hệ sinh thái hiện tại

Hành trình này bắt đầu từ quy cách JavaScript, một nỗ lực cộng tác có sự tham gia của nhiều tổ chức như Apple, Google, Intel, Mozilla và Microsoft. Hiện tại, tất cả các trình duyệt web chính đã triển khai hoặc đang trong quá trình triển khai WebGPU.

Đồng thời, Mozilla và Google đã công nhận tiềm năng của WebGPU trong các ứng dụng dành riêng cho nền tảng và đã tách biệt các hoạt động triển khai WebGPU khỏi các trình duyệt, cho phép sử dụng độc lập.

Đối với Chrome, thư viện này được cụ thể hoá thành Dawn, một thư viện C/C++ giúp chuyển các lệnh gọi WebGPU thành các lệnh của trình điều khiển GPU. Dawn cho phép các ứng dụng C và C++ sử dụng WebGPU một cách tự nhiên, mang đến khả năng trừu tượng GPU di động và tiện dụng bằng cách sử dụng chuyên gia của nhà cung cấp trình duyệt.

Như đã minh hoạ trong bài đăng trên blog WebGPU: API đồ hoạ đa nền tảng của ngày mai, việc chuyển ứng dụng WebGPU dành riêng cho nền tảng lên web rất đơn giản. Emscripten, chuỗi công cụ C++ WebAssembly, đã hỗ trợ WebGPU, nên bạn chỉ cần sửa đổi rất ít để chuyển nó lên web.

Bạn cũng có thể chạy mã JavaScript WebGPU bên ngoài trình duyệt bằng thời gian chạy JavaScript Node.js vì mã này bao gồm một mô-đun WebGPU dựa trên Dawn. Tính năng này cho phép bạn chạy mã mà không cần sửa đổi phía máy chủ hoặc trong các ngữ cảnh riêng của nền tảng khác.

Một hệ sinh thái tương tự cũng tồn tại trong Rust với wgpu, cách triển khai WebGPU của Firefox. Bạn có thể tích hợp trực tiếp Wgpu vào các ứng dụng Rust. Sau đó, có thể chuyển các ứng dụng này sang web bằng web-sys. Ngoài ra, thời gian chạy Deno JavaScript hỗ trợ WebGPU thông qua wgpu. Xem bài đăng trên blog về liên minh wgpu với Deno.

Việc này thiết lập một hệ sinh thái song song giữa Rust và C++ như minh hoạ trong sơ đồ sau.

Sơ đồ hệ sinh thái WebGPU vào năm 2023.
Hệ sinh thái WebGPU năm 2023.

Nền tảng mới nổi

Hệ sinh thái WebGPU mở rộng ra ngoài các vùng JavaScript, C++ và Rust.

Ngôn ngữ lập trình ưu tiên của bạn có thể đã có liên kết cho WebGPU vì các kỹ sư triển khai WebGPU cũng đang phát triển tiêu đề C chung cho WebGPU. Bạn có thể dùng tính năng này để nhắm mục tiêu đến Dawn, wgpu và các ngôn ngữ khác, giúp giảm việc tạo liên kết cho các ngôn ngữ bằng C FFI.

Nhóm Chrome cũng đang cân nhắc sử dụng Dawn làm phần phụ trợ kết xuất mặc định cho tất cả các thành phần trên giao diện người dùng của trình duyệt, bao gồm cả trình đơn, thanh công cụ, công cụ cho nhà phát triển và nội dung web. Điều này sẽ giúp bạn không cần phải triển khai kết xuất riêng biệt cho từng API gốc, giúp đơn giản hoá quá trình phát triển. Tính năng này hiện đang trong giai đoạn thử nghiệm trên macOS và Windows sau cờ chrome://flags/#skia-graphite.

Xác nhận

Hình ảnh chính của Daniel Öberg trên Unsplash.