WebGPU genellikle en gelişmiş donanım özelliklerini göstererek ve Direct3D 12, Metal ve Vulkan'a benzer şekilde GPU'da oluşturma ve hesaplama işlemleri sağlayarak GPU'lara birleşik ve hızlı erişim sağlayan bir web grafiği API'si olarak algılanır.
Ancak WebGPU sadece JavaScript API'sinin sınırlarını aşar. Gelişen ekosistemi nedeniyle web'in çok ötesine uzanan etkileri olan WebAssembly'ye benzer temel bir yapı taşıdır. Chrome ekibi, WebGPU'nun yalnızca web teknolojisi olmadığını, temel bir teknoloji etrafında şekillenen gelişen bir ekosistem olduğunu kabul ediyor.
Mevcut ekosistemi keşfetme
Bu yolculuk JavaScript spesifikasyonu ile başlar. Bu, Apple, Google, Intel, Mozilla ve Microsoft gibi sayısız kuruluşun dahil olduğu ortak çalışma çalışmalarıdır. Şu anda, önde gelen tüm web tarayıcıları WebGPU'yu uygulamış veya uygulama sürecindedir.
Aynı zamanda, Mozilla ve Google WebGPU'nun platforma özgü uygulamalardaki potansiyelini tanıdı ve WebGPU uygulamalarını tarayıcılardan ayırarak bağımsız kullanıma olanak tanıdı.
Chrome için bu, WebGPU çağrılarını GPU sürücü komutlarına dönüştüren bir C/C++ kitaplığı olan Dawn olarak somutlaştırıldı. Dawn, WebGPU'yu yerel olarak kullanma konusunda C ve C++ uygulamalarını destekliyor ve tarayıcı tedarikçi uzmanlığından yararlanarak taşınabilir ve ergonomik bir GPU soyutlaması sağlıyor.
WebGPU: Yarının platformlar arası grafik API'si başlıklı blog yayınında gösterildiği gibi, platforma özgü WebGPU uygulamalarının web'e taşınması oldukça kolaydır. C++ WebAssembly araç zinciri olan Emscripten, halihazırda WebGPU'yu desteklemektedir, web'e taşımak için çok az değişiklik yapılması yeterlidir.
Dawn tabanlı bir WebGPU modülü içerdiğinden, JavaScript WebGPU kodunuzu, Node.js JavaScript çalışma zamanı ile tarayıcının dışında da çalıştırabilirsiniz. Kodunuzu, sunucu tarafında veya diğer platforma özgü bağlamlarda değişiklik yapmadan çalıştırmanızı sağlar.
Firefox'un WebGPU uygulaması olan wgpu ile Rust için de benzer bir ekosistem mevcuttur. Wgpu, Rust uygulamalarına doğrudan entegre edilebilir ve ardından web-sys ile web'e taşınabilir. Ayrıca Deno JavaScript çalışma zamanı, wgpu üzerinden WebGPU'yu destekler. wgpu alliance with Deno blog yayınına göz atın.
Bu, aşağıdaki diyagramda gösterildiği gibi Rust ve C++ arasında paralel bir ekosistem oluşturur.
![2023'teki WebGPU ekosisteminin şeması.](https://developer.chrome.google.cn/static/blog/webgpu-ecosystem/image/diagram-the-webgpu-ecosy-384594168a61.png?authuser=5&hl=tr)
Yeni ufuklar
WebGPU ekosistemi JavaScript, C++ ve Rust alanlarından ibaret değildir.
WebGPU uygulamaları üzerinde çalışan mühendisler ayrıca WebGPU için ortak bir C üstbilgisi de geliştirdiğinden, tercih ettiğiniz programlama dilinin WebGPU için bağlantıları zaten olabilir. Bu; Dawn, wgpu ve diğerlerini hedeflemek için kullanılabilir ve C FFI kullanan diller için bağlama oluşturma işlemini kolaylaştırır.
Chrome ekibi ayrıca Dawn'ı menüler, araç çubukları, geliştirici araçları ve web içeriği dahil tüm tarayıcı kullanıcı arayüzü öğeleri için varsayılan oluşturma arka ucu olarak kullanmayı düşünüyor. Bu, her yerel API için ayrı oluşturma uygulamaları ihtiyacını ortadan kaldırarak geliştirme sürecini basitleştirir. Bu özellik şu anda macOS ve Windows'da deneysel aşamada olan chrome://flags/#skia-graphite
işaretinin arkasındadır.
Teşekkür
Daniel Öberg'in Unsplash'teki lokomotif resmi.