W3C memperkenalkan draf standard WebGPU

W3C telah mengeluarkan draf pertama spesifikasi WebGPU dan WebGPU Shading Language (WGSL), yang mentakrifkan API untuk melaksanakan operasi GPU seperti rendering dan pengkomputeran, serta bahasa shader untuk menulis program yang dijalankan pada GPU. secara konsepnya serupa dengan API Vulkan, Metal dan Direct3D 12. Spesifikasi telah disediakan oleh kumpulan kerja yang termasuk jurutera dari Mozilla, Google, Apple dan Microsoft.

Dari segi konsep, WebGPU berbeza daripada WebGL dengan cara yang sama seperti API grafik Vulkan berbeza daripada OpenGL, tetapi ia tidak berdasarkan API grafik tertentu, tetapi merupakan lapisan universal yang menggunakan primitif peringkat rendah yang sama yang terdapat dalam Vulkan, Metal dan Direct3D. WebGPU menyediakan aplikasi JavaScript dengan kawalan peringkat rendah ke atas organisasi, pemprosesan dan penghantaran arahan kepada GPU, mengurus sumber yang berkaitan, memori, penimbal, objek tekstur dan pelorek grafik yang disusun. Pendekatan ini membolehkan anda mencapai prestasi yang lebih tinggi untuk aplikasi grafik dengan mengurangkan kos overhed dan meningkatkan kecekapan bekerja dengan GPU.

WebGPU memungkinkan untuk mencipta projek 3D yang kompleks untuk Web yang berfungsi tidak lebih buruk daripada program kendiri yang mengakses Vulkan, Metal atau Direct3D secara langsung, tetapi tidak terikat pada platform tertentu. WebGPU juga menyediakan keupayaan tambahan untuk mengalihkan program grafik asli ke dalam bentuk yang didayakan web melalui penyusunan ke dalam WebAssembly. Selain grafik 3D, WebGPU juga termasuk keupayaan yang berkaitan dengan pemuatan pengiraan ke GPU dan melaksanakan shader.

Ciri utama WebGPU:

  • Pengurusan sumber yang berasingan, kerja persediaan dan penghantaran arahan kepada GPU (dalam WebGL satu objek bertanggungjawab untuk semuanya sekaligus). Tiga konteks berasingan disediakan: GPUDevice untuk mencipta sumber seperti tekstur dan penimbal; GPUCommandEncoder untuk pengekodan perintah individu, termasuk peringkat pemaparan dan pengiraan; GPUCommandBuffer akan dibariskan untuk pelaksanaan pada GPU. Hasilnya boleh dipaparkan dalam kawasan yang dikaitkan dengan satu atau lebih elemen kanvas, atau diproses tanpa output (contohnya, semasa menjalankan tugas pengiraan). Mengasingkan peringkat memudahkan untuk mengasingkan penciptaan sumber dan operasi penyediaan kepada pengendali yang berbeza yang boleh dijalankan pada urutan yang berbeza.
  • Pendekatan yang berbeza untuk memproses keadaan. WebGPU menawarkan dua objek - GPURenderPipeline dan GPUComputePipeline, yang membolehkan anda menggabungkan pelbagai keadaan yang dipratakrifkan oleh pembangun, yang membolehkan penyemak imbas tidak membuang sumber untuk kerja tambahan, seperti menyusun semula shader. Keadaan yang disokong termasuk: pelorek, buffer buffer dan reka letak atribut, reka letak kumpulan melekit, pengadunan, kedalaman dan corak serta format output selepas pemaparan.
  • Model yang mengikat sama seperti ciri pengumpulan sumber Vulkan. Untuk mengumpulkan sumber bersama, WebGPU menyediakan objek GPUBindGroup, yang boleh dikaitkan dengan objek lain yang serupa untuk digunakan dalam pelorek semasa menulis arahan. Mencipta kumpulan sedemikian membolehkan pemandu melakukan tindakan persediaan yang diperlukan lebih awal, dan membolehkan penyemak imbas menukar pengikatan sumber antara panggilan cabutan dengan lebih pantas. Reka letak pengikatan sumber boleh dipratentukan menggunakan objek GPUBindGroupLayout.

Sumber: opennet.ru

Tambah komen