WebGPU genellikle son teknoloji donanım özelliklerini kullanıma sunarak 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, 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'yu yalnızca web teknolojisinden ibaret değildir; çekirdek bir teknolojiye odaklanmış gelişen bir ekosistemdir.
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. Önde gelen tüm web tarayıcıları WebGPU yapmış 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üsü komutlarına çeviren bir C/C++ kitaplığı olan Dawn olarak oluşmuştur. 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.
JavaScript WebGPU kodunuzu, Dawn'a dayalı bir WebGPU modülü içerdiğinden Node.js JavaScript çalışma zamanıyla tarayıcı dışı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 şekilde, aşağıdaki şemada gösterildiği gibi Rust ve C++ arasında paralel bir ekosistem oluşturur.
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 ayrıca Dawn'ı menüler, araç çubukları, geliştirici araçları ve web içeriği de dahil olmak üzere tüm tarayıcı kullanıcı arayüzü öğeleri için varsayılan oluşturma arka ucu olarak kullanmayı 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'da chrome://flags/#skia-graphite
işaretinin arkasında deneysel aşamadadır.