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

Консорциум W3C представил первые черновые варианты спецификаций WebGPU и WebGPU Shading Language (WGSL), определяющих API для выполнения операций на GPU, таких как рендеринг и вычисления, а также язык шейдров для написания программ, работающих на стороне GPU. концептуально схожий с API Vulkan, Metal и Direct3D 12. Спецификации подготовлены рабочей группой, в которую вошли инженеры из Mozilla, Google, Apple и Microsoft.

Концептуально WebGPU отличается от WebGL примерно так же, как графический API Vulkan отличается от OpenGL, но при этом не основывается на конкретном графическом API, а представляет собой универсальную прослойку, использующую те же низкоуровневые примитивы, что имеются в Vulkan, Metal и Direct3D. WebGPU предоставляет приложениям на JavaScript средства для низкоуровневого контроля за организацией, обработкой и передачей команд к GPU, управления связанными ресурсами, памятью, буферами, объектами текстур и скомпилированными графическими шейдерами. Подобный подход позволяет добиться более высокой производительности графических приложений за счёт снижения накладных расходов и повышения эффективности работы с GPU.

WebGPU даёт возможность создавать для Web сложные 3D-проекты, работающие не хуже, чем обособленные программы, напрямую обращающиеся с Vulkan, Metal или Direct3D, но не привязанные к конкретным платформам. WebGPU также предоставляет дополнительные возможности при портировании нативных графических программ в форму, способную работать на базе web-технологий, благодаря компиляции в WebAssembly. Кроме 3D-графики WebGPU охватывает и возможности, связанные с выносом вычислений на сторону GPU и выполнением шейдеров.

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