Hỗ trợ WebGPU sẽ được bật trong Chrome

Google đã công bố hỗ trợ mặc định cho API đồ họa WebGPU và WGSL (Ngôn ngữ tạo bóng WebGPU) trong Chrome 113, dự kiến ​​phát hành vào ngày 2 tháng 3. WebGPU cung cấp giao diện lập trình tương tự như Vulkan, Metal và Direct12D XNUMX để thực hiện các hoạt động phía GPU như kết xuất và tính toán, đồng thời cho phép sử dụng ngôn ngữ đổ bóng để viết các chương trình chạy trên phía GPU. Việc triển khai WebGPU ban đầu sẽ chỉ được bật trên các bản dựng ChromeOS, macOS và Windows. Đối với Linux và Android, hỗ trợ WebGPU sẽ được kích hoạt sau.

Ngoài Chrome, hỗ trợ thử nghiệm cho WebGPU đã được thử nghiệm kể từ tháng 2020 năm 2021 trên Firefox và kể từ tháng XNUMX năm XNUMX trên Safari. Để bật WebGPU trong Firefox, bạn nên đặt cờ kích hoạt dom.webgpu.enabled và gfx.webgpu.force trong about:config. Hiện chưa có kế hoạch kích hoạt WebGPU theo mặc định trong Firefox và Safari. Việc triển khai WebGPU được phát triển cho Firefox và Chrome có sẵn ở dạng thư viện riêng biệt - Dawn (C++) và wgpu (Rust), mà bạn có thể sử dụng để tích hợp hỗ trợ WebGPU vào ứng dụng của mình. Công việc cũng đang được tiến hành để bổ sung khả năng hỗ trợ WebGPU cho các thư viện JavaScript phổ biến vốn sử dụng WebGL. Ví dụ: hỗ trợ đầy đủ cho WebGPU đã được công bố trong Babylon.js và hỗ trợ một phần trong Three.js, PlayCanvas và TensorFlow.js.

Về mặt khái niệm, WebGPU khác với WebGL giống như API đồ họa Vulkan khác với OpenGL, nhưng WebGPU không dựa trên một API đồ họa cụ thể mà là một lớp phổ quát sử dụng cùng các nguyên hàm cấp thấp được tìm thấy trong Vulkan, Metal và Direct3D. WebGPU cung cấp cho các ứng dụng JavaScript khả năng kiểm soát cấp thấp đối với việc tổ chức, xử lý và truyền lệnh tới GPU, quản lý các tài nguyên liên quan, bộ nhớ, bộ đệm, đối tượng kết cấu và trình đổ bóng đồ họa được biên dịch. Cách tiếp cận này cho phép bạn đạt được hiệu suất cao hơn cho các ứng dụng đồ họa bằng cách giảm chi phí chung và tăng hiệu quả làm việc với GPU.

WebGPU cho phép tạo các dự án 3D phức tạp cho Web hoạt động không thua kém các chương trình độc lập sử dụng trực tiếp Vulkan, Metal hoặc Direct3D nhưng không bị ràng buộc với các nền tảng cụ thể. WebGPU cũng cung cấp các khả năng bổ sung để chuyển các chương trình đồ họa gốc sang dạng hỗ trợ web thông qua việc biên dịch vào WebAssembly. Ngoài đồ họa 3D, WebGPU còn bao gồm các khả năng liên quan đến việc giảm tải các phép tính cho GPU và thực thi các trình đổ bóng.

Các tính năng chính của WebGPU:

  • Quản lý tài nguyên riêng biệt, công việc chuẩn bị và truyền lệnh tới GPU (trong WebGL, một đối tượng chịu trách nhiệm cho mọi việc cùng một lúc). Ba bối cảnh riêng biệt được cung cấp: GPUDevice để tạo các tài nguyên như kết cấu và bộ đệm; GPUCommandEncode để mã hóa các lệnh riêng lẻ, bao gồm các giai đoạn kết xuất và tính toán; GPUCommandBuffer được xếp hàng đợi để thực thi trên GPU. Kết quả có thể được hiển thị trong một khu vực được liên kết với một hoặc nhiều phần tử canvas hoặc được xử lý mà không xuất ra (ví dụ: khi chạy các tác vụ điện toán). Việc tách các giai đoạn giúp dễ dàng tách các hoạt động tạo và chuẩn bị tài nguyên thành các trình xử lý khác nhau có thể chạy trên các luồng khác nhau.
  • Một cách tiếp cận khác với các trạng thái xử lý. WebGPU cung cấp hai đối tượng - GPURenderPipeline và GPUComputePipeline, cho phép bạn kết hợp nhiều trạng thái khác nhau được nhà phát triển xác định trước, cho phép trình duyệt không lãng phí tài nguyên cho công việc bổ sung, chẳng hạn như biên dịch lại trình đổ bóng. Các trạng thái được hỗ trợ bao gồm: trình đổ bóng, bộ đệm đỉnh và bố cục thuộc tính, bố cục nhóm cố định, hòa trộn, độ sâu và mẫu cũng như các định dạng đầu ra sau kết xuất.
  • Một mô hình liên kết giống như các tính năng nhóm tài nguyên của Vulkan. Để nhóm các tài nguyên lại với nhau, WebGPU cung cấp đối tượng GPUBindGroup, đối tượng này có thể được liên kết với các đối tượng tương tự khác để sử dụng trong trình đổ bóng khi viết lệnh. Việc tạo các nhóm như vậy cho phép trình điều khiển thực hiện trước các hành động chuẩn bị cần thiết và cho phép trình duyệt thay đổi các ràng buộc tài nguyên giữa các lệnh gọi vẽ nhanh hơn nhiều. Bố cục của các liên kết tài nguyên có thể được xác định trước bằng cách sử dụng đối tượng GPUBindGroupLayout.

Nguồn: opennet.ru

Thêm một lời nhận xét