Sokongan WebGPU akan didayakan dalam Chrome

Google telah mengumumkan kemasukan sokongan lalai untuk API grafik WebGPU dan WGSL (WebGPU Shading Language) dalam Chrome 113, yang dijadualkan untuk dikeluarkan pada 2 Mei. WebGPU menyediakan antara muka pengaturcaraan yang serupa dengan Vulkan, Metal dan Direct3D 12 untuk melaksanakan operasi sebelah GPU seperti pemaparan dan pengkomputeran, dan juga membenarkan penggunaan bahasa peneduh untuk menulis atur cara yang dijalankan pada sebelah GPU. Pelaksanaan WebGPU pada mulanya hanya akan didayakan pada binaan ChromeOS, macOS dan Windows. Untuk Linux dan Android, sokongan WebGPU akan diaktifkan kemudian.

Selain Chrome, sokongan percubaan untuk WebGPU telah diuji sejak April 2020 di Firefox dan sejak November 2021 di Safari. Untuk mendayakan WebGPU dalam Firefox, anda harus menetapkan bendera dom.webgpu.enabled dan gfx.webgpu.force-enabled dalam about:config. Belum ada rancangan untuk mendayakan WebGPU secara lalai dalam Firefox dan Safari. Pelaksanaan WebGPU yang dibangunkan untuk Firefox dan Chrome tersedia dalam bentuk perpustakaan berasingan - Dawn (C++) dan wgpu (Rust), yang boleh anda gunakan untuk menyepadukan sokongan WebGPU ke dalam aplikasi anda. Kerja-kerja juga sedang dijalankan untuk menambah sokongan WebGPU pada perpustakaan JavaScript popular yang menggunakan WebGL secara asli. Contohnya, sokongan penuh untuk WebGPU telah pun diumumkan dalam Babylon.js, dan sokongan separa dalam Three.js, PlayCanvas dan TensorFlow.js.

Secara konsep, WebGPU berbeza daripada WebGL dengan cara yang sama seperti API grafik Vulkan berbeza daripada OpenGL, tetapi WebGPU 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 berprestasi tidak lebih buruk daripada program kendiri yang secara langsung menggunakan Vulkan, Metal atau Direct3D, 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