Mozilla đã quyết định kích hoạt hỗ trợ cho API WebGPU và WGSL (Ngôn ngữ đổ bóng WebGPU) trong Firefox. Đối với nền tảng này, Windows Tính năng hỗ trợ WebGPU sẽ được bật mặc định trong Firefox 141, dự kiến ra mắt vào ngày 22 tháng 7. Sau đó, tính năng hỗ trợ WebGPU dự kiến sẽ được bật trong các bản dựng của những tháng tiếp theo: Linux и macOS, а через некоторое время и в версии для платформы Android. Для ручного включения WebGPU можно использовать параметры «dom.webgpu.enabled» и «gfx.webrender.all» на странице about:config.
Trong Chrome, hỗ trợ WebGPU được mặc định cung cấp trong phiên bản 113, phát hành vào tháng 2023 năm 2021. Trong Safari, hỗ trợ WebGPU dự kiến sẽ được bật mặc định vào mùa thu năm nay (hỗ trợ thử nghiệm đã có từ tháng 2020 năm 3). Trong Firefox, hỗ trợ WebGPU thử nghiệm đã có từ năm 12, nhưng chỉ được bật mặc định trong các bản dựng Firefox hàng đêm. Việc triển khai WebGPU của Firefox dựa trên mã dự án WGPU, được viết bằng Rust và có khả năng chạy trên các API đồ họa DirectXNUMXD XNUMX, Vulkan, OpenGL và Metal.
WebGPU cung cấp một API tương tự như Vulkan, Metal và Direct3D 12 để thực hiện các thao tác trên GPU. Ngoài đồ họa 3D, WebGPU còn bao gồm các khả năng liên quan đến việc chuyển tải các phép tính sang GPU và thực thi các shader. Về mặt khái niệm, WebGPU khác với đặc tả WebGL cũ theo cùng cách mà API đồ họa Vulkan khác với OpenGL. Đồng thời, 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ó sẵn trong Vulkan, Metal và Direct3D.
WebGPU cho phép các ứng dụng JavaScript kiểm soát việc tổ chức, xử lý và truyền lệnh đến GPU, đồng thời quản lý các tài nguyên, bộ nhớ, bộ đệm, đối tượng kết cấu và trình đổ bóng đồ họa đã biên dịch liên quan. Phương pháp này giúp tăng hiệu suất của các ứng dụng đồ họa bằng cách giảm thiểu chi phí và tăng hiệu quả làm việc với GPU.
Với WebGPU, bạn có thể tạo các dự án 3D phức tạp, không phụ thuộc nền tảng, hoạt động tốt như các chương trình độc lập sử dụng trực tiếp Vulkan, Metal hoặc Direct3D. 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 một dạng có thể chạy trên trình duyệt, nhờ khả năng biên dịch sang WebAssembly.
Các tính năng chính của WebGPU và sự khác biệt so với WebGL:
- 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
