WebGPU ekosistemini yakalama

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

WebGPU, genellikle Direct3D 12, Metal ve Vulkan'a benzer şekilde en son donanım özelliklerini sunarak ve GPU'da oluşturma ve hesaplama işlemlerini etkinleştirerek GPU'lara birleşik ve hızlı erişim sağlayan bir web grafik API'si olarak algılanır.

Ancak WebGPU, basit bir JavaScript API'sinin sınırlarını aşar. WebAssembly'e benzer temel bir yapı taşıdır ve gelişen ekosistemi sayesinde web'in çok ötesine uzanan etkileri vardır. Chrome Ekibi, WebGPU'nin yalnızca bir web teknolojisinden daha fazlası olduğunu, temel bir teknolojinin etrafında gelişen bir ekosistem olduğunu kabul ediyor.

Mevcut ekosistemi keşfetme

Yolculuğumuz, Apple, Google, Intel, Mozilla ve Microsoft gibi çok sayıda kuruluşun yer aldığı ortak bir çalışma olan JavaScript spesifikasyonu ile başlar. Tüm büyük web tarayıcıları WebGPU'yu uyguladı veya uygulama sürecindedir.

Aynı zamanda Mozilla ve Google, platforma özel uygulamalarda WebGPU'nun potansiyelini fark etti ve WebGPU uygulamalarını tarayıcılardan ayırarak bağımsız kullanımı etkinleştirdi.

Chrome için bu, WebGPU çağrılarını GPU sürücü komutlarına çeviren bir C/C++ kitaplığı olan Dawn olarak hayata geçirildi. Dawn, C ve C++ uygulamalarının WebGPU'yu yerel olarak kullanmasına olanak tanır. Tarayıcı tedarikçisinin uzmanlığını kullanarak taşınabilir ve ergonomik bir GPU soyutlaması sağlar.

WebGPU: Geleceğin platformlar arası grafik API'si blog yayınında gösterildiği gibi, platforma özel bir WebGPU uygulamasını web'e taşımak oldukça kolaydır. C++ WebAssembly araç zinciri olan Emscripten, WebGPU'yu zaten desteklemektedir. WebGPU'yu web'e taşımak için yalnızca minimum düzeyde değişiklik yapılması gerekir.

Dawn'a dayalı bir WebGPU modülü içerdiğinden JavaScript WebGPU kodunuzu tarayıcı dışında Node.js JavaScript çalışma zamanında da çalıştırabilirsiniz. Bu, kodunuzu sunucu tarafında veya platforma özgü diğer bağlamlarda değişiklik yapmadan çalıştırmanıza olanak tanır.

Rust için, Firefox'un WebGPU uygulaması olan wgpu ile benzer bir ekosistem mevcuttur. Wgpu, doğrudan Rust uygulamalarına entegre edilebilir. Bu uygulamalar daha sonra web-sys kullanılarak web'e taşınabilir. Ayrıca Deno JavaScript çalışma zamanı, wgpu aracılığıyla WebGPU'yu destekler. Deno ile wgpu ittifakı blog yayınını inceleyin.

Bu, aşağıdaki şemada gösterildiği gibi Rust ile C++ arasında paralel bir ekosistem oluşturur.

2023'teki WebGPU ekosisteminin şeması.
2023'te WebGPU ekosistemi.

Yeni ufuklar

WebGPU ekosistemi, JavaScript, C++ ve Rust alanlarının ötesine geçer.

WebGPU uygulamalarında çalışan mühendisler WebGPU için ortak bir C başlığı da geliştirdiğinden, tercih ettiğiniz programlama dilinde zaten WebGPU için bağlamalar mevcut olabilir. Bu, Dawn, wgpu ve diğerlerini hedeflemek için kullanılabilir. Böylece C FFI kullanan diller için bağlama oluşturma işlemi kolaylaştırılır.

Chrome ekibi, menüler, araç çubukları, geliştirici araçları ve web içeriği dahil olmak üzere tüm tarayıcı kullanıcı arayüzü öğeleri için varsayılan oluşturma arka ucu olarak Dawn'u kullanmayı da düşünüyor. Bu sayede, her yerel API için ayrı oluşturma uygulamalarına gerek kalmaz ve geliştirme süreci basitleştirilir. Bu özellik, macOS ve Windows'ta chrome://flags/#skia-graphite işaretiyle deneysel aşamadadır.