Chrome akan menyertakan dukungan WebGPU

Google telah mengumumkan penyertaan dukungan default untuk API grafis WebGPU dan WGSL (WebGPU Shading Language) di Chrome 113, yang dijadwalkan dirilis pada 2 Mei. WebGPU menyediakan antarmuka pemrograman yang mirip dengan Vulkan, Metal, dan Direct3D 12 untuk melakukan operasi sisi GPU seperti rendering dan komputasi, dan juga memungkinkan penggunaan bahasa shader untuk menulis program yang berjalan di sisi GPU. Implementasi WebGPU awalnya hanya akan diaktifkan di ChromeOS, macOS, dan Windows build. Untuk Linux dan Android, dukungan WebGPU akan diaktifkan di kemudian hari.

Selain Chrome, dukungan eksperimental untuk WebGPU telah diuji sejak April 2020 di Firefox dan sejak November 2021 di Safari. Untuk mengaktifkan WebGPU di Firefox, Anda harus menyetel tanda dom.webgpu.enabled dan gfx.webgpu.force-enabled di about:config. Belum ada rencana untuk mengaktifkan WebGPU secara default di Firefox dan Safari. Implementasi WebGPU yang dikembangkan untuk Firefox dan Chrome tersedia dalam bentuk perpustakaan terpisah - Dawn (C++) dan wgpu (Rust), yang dapat Anda gunakan untuk mengintegrasikan dukungan WebGPU ke dalam aplikasi Anda. Pekerjaan juga sedang dilakukan untuk menambahkan dukungan WebGPU ke perpustakaan JavaScript populer yang secara asli menggunakan WebGL. Misalnya, dukungan penuh untuk WebGPU telah diumumkan di Babylon.js, dan dukungan parsial di Three.js, PlayCanvas, dan TensorFlow.js.

Secara konseptual, WebGPU berbeda dari WebGL dengan cara yang sama seperti API grafis Vulkan berbeda dari OpenGL, namun WebGPU tidak didasarkan pada API grafis tertentu, namun merupakan lapisan universal yang menggunakan primitif tingkat rendah yang sama seperti yang ditemukan di Vulkan, Metal dan Langsung3D. WebGPU memberi aplikasi JavaScript kontrol tingkat rendah atas organisasi, pemrosesan dan transmisi perintah ke GPU, pengelolaan sumber daya terkait, memori, buffer, objek tekstur, dan shader grafis yang dikompilasi. Pendekatan ini memungkinkan Anda mencapai kinerja yang lebih tinggi untuk aplikasi grafis dengan mengurangi biaya overhead dan meningkatkan efisiensi kerja dengan GPU.

WebGPU memungkinkan pembuatan proyek 3D kompleks untuk Web yang kinerjanya tidak lebih buruk daripada program mandiri yang secara langsung menggunakan Vulkan, Metal, atau Direct3D, tetapi tidak terikat pada platform tertentu. WebGPU juga menyediakan kemampuan tambahan untuk mem-porting program grafis asli ke dalam bentuk yang mendukung web melalui kompilasi ke WebAssembly. Selain grafis 3D, WebGPU juga menyertakan kemampuan yang terkait dengan pembongkaran kalkulasi ke GPU dan mengeksekusi shader.

Fitur utama WebGPU:

  • Manajemen sumber daya yang terpisah, pekerjaan persiapan, dan transmisi perintah ke GPU (di WebGL, satu objek bertanggung jawab atas semuanya sekaligus). Tiga konteks terpisah disediakan: GPUDevice untuk membuat sumber daya seperti tekstur dan buffer; GPUCommandEncoder untuk menyandikan perintah individual, termasuk tahap rendering dan komputasi; GPUCommandBuffer untuk dimasukkan ke dalam antrean untuk dieksekusi pada GPU. Hasilnya dapat dirender di area yang terkait dengan satu atau beberapa elemen kanvas, atau diproses tanpa output (misalnya, saat menjalankan tugas komputasi). Memisahkan tahapan memudahkan untuk memisahkan operasi pembuatan dan persiapan sumber daya ke dalam penangan berbeda yang dapat berjalan di thread berbeda.
  • Pendekatan berbeda terhadap status pemrosesan. WebGPU menawarkan dua objek - GURenderPipeline dan GPUComputePipeline, yang memungkinkan Anda menggabungkan berbagai status yang telah ditentukan sebelumnya oleh pengembang, sehingga browser tidak menyia-nyiakan sumber daya untuk pekerjaan tambahan, seperti mengkompilasi ulang shader. Status yang didukung meliputi: shader, buffer vertex dan tata letak atribut, tata letak grup tempel, pencampuran, kedalaman dan pola, serta format keluaran pasca-render.
  • Model yang mengikat seperti fitur pengelompokan sumber daya Vulkan. Untuk mengelompokkan sumber daya, WebGPU menyediakan objek GPUBindGroup, yang dapat dikaitkan dengan objek serupa lainnya untuk digunakan dalam shader saat menulis perintah. Membuat grup seperti itu memungkinkan pengemudi untuk melakukan tindakan persiapan yang diperlukan terlebih dahulu, dan memungkinkan browser mengubah pengikatan sumber daya di antara panggilan undian dengan lebih cepat. Tata letak pengikatan sumber daya dapat ditentukan sebelumnya menggunakan objek GPUBindGroupLayout.

Sumber: opennet.ru

Tambah komentar