W3C công bố dự thảo tiêu chuẩn WebGPU

W3C đã phát hành bản thảo đầu tiên của thông số kỹ thuật WebGPU và WebGPU Shading Language (WGSL), xác định các API để thực hiện các hoạt động GPU như kết xuất và tính toán, cũng như ngôn ngữ đổ bóng để viết các chương trình chạy trên GPU. về mặt khái niệm tương tự như các API Vulkan, Metal và Direct3D 12. Các thông số kỹ thuật được chuẩn bị bởi một nhóm làm việc bao gồm các kỹ sư từ Mozilla, Google, Apple và Microsoft.

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 nó 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 truy cập trực tiếp vào 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