Menangkap ekosistem WebGPU

François Beaufort
François Beaufort
Corentin Wallez
Corentin Wallez

WebGPU sering kali dianggap sebagai API grafis web yang memberikan akses terpadu dan cepat ke GPU dengan mengekspos kemampuan perangkat keras yang canggih dan memungkinkan operasi rendering dan komputasi pada GPU, serupa dengan Direct3D 12, Metal, dan Vulkan.

Namun, WebGPU melampaui batasan JavaScript API belaka; ini adalah elemen dasar yang mirip dengan WebAssembly, dengan implikasi yang meluas melampaui web karena ekosistemnya yang terus berkembang. Tim Chrome mengakui WebGPU lebih dari sekadar teknologi web; ini adalah ekosistem berkembang yang berpusat pada teknologi inti.

Menjelajahi ekosistem saat ini

Perjalanannya dimulai dengan spesifikasi JavaScript, sebuah upaya kolaboratif yang melibatkan banyak organisasi seperti Apple, Google, Intel, Mozilla, dan Microsoft. Saat ini, semua browser web besar telah mengimplementasikan atau sedang dalam proses mengimplementasikan WebGPU.

Pada saat yang sama, Mozilla dan Google mengenali potensi WebGPU dalam aplikasi khusus platform dan memisahkan implementasi WebGPU dari browser, sehingga memungkinkan penggunaan mandiri.

Untuk Chrome, hal ini terwujud sebagai Dawn, library C/C++ yang menerjemahkan panggilan WebGPU menjadi perintah driver GPU. Dawn memberdayakan aplikasi C dan C++ untuk menggunakan WebGPU secara native, menyediakan abstraksi GPU yang portabel dan ergonomis menggunakan keahlian vendor browser.

Seperti yang ditunjukkan dalam postingan blog WebGPU: API grafis lintas platform masa depan, melakukan porting aplikasi WebGPU khusus platform ke web sangatlah mudah. Emscripten, toolchain C++ WebAssembly, sudah mendukung WebGPU, dan hanya memerlukan sedikit modifikasi untuk mem-port-nya ke web.

Anda juga dapat menjalankan kode WebGPU JavaScript di luar browser dengan runtime JavaScript Node.js karena mencakup modul WebGPU berdasarkan Dawn. Hal ini memungkinkan Anda untuk menjalankan kode tanpa modifikasi di sisi server atau dalam konteks khusus platform lainnya.

Ekosistem serupa ada untuk Rust dengan wgpu, implementasi WebGPU Firefox. Wgpu dapat langsung diintegrasikan ke dalam aplikasi Rust, yang kemudian dapat ditransfer ke web menggunakan web-sys. Selain itu, runtime Deno JavaScript mendukung WebGPU melalui wgpu. Lihat postingan blog wgpu alliance dengan Deno.

Tindakan ini akan membentuk ekosistem paralel antara Rust dan C++ seperti yang ditunjukkan dalam diagram berikut.

Diagram ekosistem WebGPU pada tahun 2023.
Ekosistem WebGPU pada tahun 2023.

Horizon baru

Ekosistem WebGPU melampaui lingkup JavaScript, C++, dan Rust.

Bahasa pemrograman pilihan Anda mungkin sudah memiliki binding untuk WebGPU karena engineer yang mengerjakan implementasi WebGPU juga mengembangkan header C umum untuk WebGPU. Ini dapat digunakan untuk menargetkan Dawn, wgpu, dan lainnya, sehingga memudahkan pembuatan binding untuk bahasa menggunakan C FFI.

Tim Chrome juga mempertimbangkan penggunaan Fajar sebagai backend rendering default untuk semua elemen UI browser, termasuk menu, toolbar, alat developer, dan konten web. Dengan demikian, Anda tidak perlu melakukan implementasi rendering terpisah untuk setiap API native, sehingga menyederhanakan proses pengembangan. Fitur ini masih dalam tahap eksperimental di macOS dan Windows di belakang tanda chrome://flags/#skia-graphite.

Ucapan terima kasih

Banner besar oleh Daniel Öberg di Unsplash.