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 canggih serta memungkinkan operasi rendering dan komputasi di 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 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, memindahkan aplikasi WebGPU khusus platform ke web sangatlah mudah. Emscripten, toolchain WebAssembly C++, sudah mendukung WebGPU, hanya memerlukan modifikasi minimal untuk mem-portnya ke web.

Anda juga dapat menjalankan kode WebGPU JavaScript di luar browser dengan runtime JavaScript Node.js karena mencakup modul WebGPU berbasis Dawn. API 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 membangun 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 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. Dengan cara ini, Anda tidak perlu lagi menerapkan rendering terpisah untuk setiap API native, sehingga proses pengembangan menjadi sederhana. Fitur ini masih dalam tahap eksperimental di macOS dan Windows di balik flag chrome://flags/#skia-graphite.