WebGPU thường được coi là một API đồ hoạ web cấp quyền truy cập hợp nhất và nhanh vào GPU bằng cách hiển thị các tính năng phần cứng tiên tiến, đồng thời cho phép các thao tác 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 qua ranh giới của một API JavaScript đơn thuần; đây là một khối xây dựng cơ bản tương tự như WebAssembly, với những tác động vượt xa phạm vi web nhờ hệ sinh thái đang phát triển của nó. Nhóm Chrome thừa nhận rằng WebGPU không chỉ là công nghệ web; đó là một hệ sinh thái đang phát triển xoay quanh một 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 bằng quy cách JavaScript, một nỗ lực cộng tác liên quan đến nhiều tổ chức như Apple, Google, Intel, Mozilla và Microsoft. Tất cả các trình duyệt web chính đã hoặc đang trong quá trình triển khai WebGPU.
Đồng thời, Mozilla và Google đã nhận ra 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 việc triển khai WebGPU khỏi trình duyệt, cho phép sử dụng độc lập.
Đối với Chrome, điều này được thể hiện dưới dạng Dawn, một thư viện C/C++ dịch các lệnh gọi WebGPU thành lệnh trình điều khiển GPU. Dawn hỗ trợ các ứng dụng C và C++ sử dụng WebGPU gốc, cung cấp một bản tóm tắt GPU di động và tiện lợi bằng cách sử dụng chuyên môn 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 tương lai, việc chuyển một ứng dụng WebGPU dành riêng cho nền tảng sang web rất đơn giản. Emscripten, chuỗi công cụ WebAssembly C++, đã hỗ trợ WebGPU, chỉ cần sửa đổi tối thiểu để chuyển sang web.
Bạn cũng có thể chạy mã WebGPU JavaScript bên ngoài trình duyệt bằng môi trường thời gian chạy JavaScript Node.js vì môi trường này bao gồm mô-đun WebGPU dựa trên Dawn. API 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 bối cảnh khác dành riêng cho nền tảng.
Một hệ sinh thái tương tự tồn tại cho 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 đó chuyển các ứng dụng này sang web bằng web-sys. Ngoài ra, môi trường thời gian chạy JavaScript Deno hỗ trợ WebGPU thông qua wgpu. Xem bài đăng trên blog liên minh wgpu với Deno.
Thao tá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.
Chân trời mới
Hệ sinh thái WebGPU vượt ra ngoài các lĩnh vực JavaScript, C++ và Rust.
Ngôn ngữ lập trình mà bạn ưu tiên có thể đã có các liên kết cho WebGPU vì các kỹ sư đang 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 đến Dawn, wgpu và các tính năng khác, giúp dễ dàng tạo liên kết cho các ngôn ngữ bằng cách sử dụng FFI của C.
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ụ dành cho nhà phát triển và nội dung web. Điều này sẽ giúp bạn không cần triển khai hiển thị 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 đang trong giai đoạn thử nghiệm trên macOS và Windows, sử dụng cờ chrome://flags/#skia-graphite
.