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 hardware mutakhir dan memungkinkan operasi rendering dan komputasi pada GPU, yang analog dengan Direct3D 12, Metal, dan Vulkan.

Namun, WebGPU melampaui batas API JavaScript semata; ini adalah elemen penyusun dasar yang mirip dengan WebAssembly, dengan implikasi yang meluas jauh di luar web karena ekosistemnya yang berkembang pesat. Tim Chrome mengakui WebGPU sebagai lebih dari sekadar teknologi web; ini adalah ekosistem yang berkembang pesat yang berpusat pada teknologi inti.

Menjelajahi ekosistem saat ini

Perjalanan ini dimulai dengan spesifikasi JavaScript, sebuah upaya kolaboratif yang melibatkan banyak organisasi seperti Apple, Google, Intel, Mozilla, dan Microsoft. Semua browser web utama telah menerapkan atau sedang dalam proses menerapkan WebGPU.

Pada saat yang sama, Mozilla dan Google mengakui 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 memungkinkan aplikasi C dan C++ menggunakan WebGPU secara native, yang menyediakan abstraksi GPU portabel dan ergonomis menggunakan keahlian vendor browser.

Seperti yang ditunjukkan dalam postingan blog WebGPU: API grafis lintas platform masa depan, memindahkan aplikasi WebGPU khusus platform ke web sangatlah mudah. Emscripten, toolchain WebAssembly C++, sudah mendukung WebGPU, yang 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 menyertakan modul WebGPU berdasarkan Dawn. Hal ini memungkinkan Anda menjalankan kode tanpa modifikasi sisi server atau dalam konteks khusus platform lainnya.

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

Hal 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.

Cakrawala baru

Ekosistem WebGPU meluas di luar wilayah 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. Hal ini dapat digunakan untuk menargetkan Dawn, wgpu, dan lainnya, sehingga memudahkan pembuatan binding untuk bahasa yang menggunakan FFI C.

Tim Chrome juga mempertimbangkan untuk menggunakan Dawn sebagai backend rendering default untuk semua elemen UI browser, termasuk menu, toolbar, alat developer, dan konten web. Hal ini akan menghilangkan kebutuhan untuk implementasi rendering terpisah untuk setiap API native, sehingga menyederhanakan proses pengembangan. Fitur ini masih dalam tahap eksperimental di macOS dan Windows dengan tanda chrome://flags/#skia-graphite.