W3C, taslak WebGPU standardını açıkladı

W3C, oluşturma ve hesaplama gibi GPU işlemlerini gerçekleştirmek için API'leri ve ayrıca GPU üzerinde çalışan programları yazmak için bir gölgelendirici dilini tanımlayan WebGPU ve WebGPU Gölgeleme Dili (WGSL) spesifikasyonlarının ilk taslaklarını yayınladı. kavramsal olarak Vulkan, Metal ve Direct3D 12 API'lerine benzeyen özellikler, Mozilla, Google, Apple ve Microsoft mühendislerinden oluşan bir çalışma grubu tarafından hazırlandı.

Kavramsal olarak, WebGPU, Vulkan grafik API'sinin OpenGL'den farklı olduğu şekilde WebGL'den farklıdır, ancak belirli bir grafik API'sine dayalı değildir, ancak Vulkan, Metal ve Vulkan'da bulunan aynı düşük seviyeli temelleri kullanan evrensel bir katmandır. Direct3D. WebGPU, JavaScript uygulamalarına, komutların GPU'ya organizasyonu, işlenmesi ve iletilmesi, ilgili kaynakların, belleğin, arabelleklerin, doku nesnelerinin ve derlenmiş grafik gölgelendiricilerin yönetilmesi üzerinde düşük düzeyde kontrol sağlar. Bu yaklaşım, genel giderleri azaltarak ve GPU ile çalışma verimliliğini artırarak grafik uygulamaları için daha yüksek performans elde etmenizi sağlar.

WebGPU, Vulkan, Metal veya Direct3D'ye doğrudan erişen ancak belirli platformlara bağlı olmayan bağımsız programlardan daha kötü çalışmayan, Web için karmaşık 3D projeler oluşturmayı mümkün kılar. WebGPU ayrıca yerel grafik programlarını WebAssembly'de derleme yoluyla web özellikli bir forma taşımak için ek yetenekler sağlar. WebGPU, 3D grafiklere ek olarak hesaplamaların GPU'ya aktarılması ve gölgelendiricilerin çalıştırılmasıyla ilgili yetenekleri de içerir.

WebGPU'nun temel özellikleri:

  • Kaynakların ayrı yönetimi, hazırlık çalışmaları ve komutların GPU'ya iletilmesi (WebGL'de her şeyden aynı anda bir nesne sorumluydu). Üç ayrı bağlam sağlanmıştır: Dokular ve arabellekler gibi kaynaklar oluşturmak için GPUDevice; Oluşturma ve hesaplama aşamaları da dahil olmak üzere bireysel komutları kodlamak için GPUCommandEncoder; GPUCommandBuffer, GPU'da yürütülmek üzere sıraya alınacak. Sonuç, bir veya daha fazla tuval öğesiyle ilişkili bir alanda oluşturulabilir veya çıktı olmadan işlenebilir (örneğin, bilgi işlem görevlerini çalıştırırken). Aşamaları ayırmak, kaynak oluşturma ve hazırlama işlemlerini farklı iş parçacıklarında çalışabilen farklı işleyicilere ayırmayı kolaylaştırır.
  • Durumların işlenmesine farklı bir yaklaşım. WebGPU, geliştirici tarafından önceden tanımlanmış çeşitli durumları birleştirmenize olanak tanıyan GPURenderPipeline ve GPUComputePipeline olmak üzere iki nesne sunar; bu, tarayıcının, gölgelendiricileri yeniden derlemek gibi ek işlerle kaynakları israf etmemesine olanak tanır. Desteklenen durumlar şunları içerir: gölgelendiriciler, köşe arabelleği ve nitelik düzenleri, yapışkan grup düzenleri, karıştırma, derinlik ve desenler ve işleme sonrası çıktı formatları.
  • Vulkan'ın kaynak gruplama özelliklerine çok benzeyen bir bağlama modeli. Kaynakları bir arada gruplamak için WebGPU, komut yazarken gölgelendiricilerde kullanılmak üzere diğer benzer nesnelerle ilişkilendirilebilecek bir GPUBindGroup nesnesi sağlar. Bu tür grupların oluşturulması, sürücünün gerekli hazırlık eylemlerini önceden gerçekleştirmesine olanak tanır ve tarayıcının, çizim çağrıları arasındaki kaynak bağlamalarını çok daha hızlı değiştirmesine olanak tanır. Kaynak bağlamalarının düzeni GPUBindGroupLayout nesnesi kullanılarak önceden tanımlanabilir.

Kaynak: opennet.ru

Yorum ekle