WebGPU'daki (Chrome {7}125) Yenilikler

François Beaufort
François Beaufort

WebGPU özelliklerinin sayısı bu sefer biraz yetersiz gelebilir, ancak önemli gelişmelere çok az kaldı! Gelecekteki sürümlerde gölgelendirici derleme hızı iyileştirmeleri ve WGPUFuture kullanılarak uygulamanın eşzamansız modelinde yapılan değişiklikler gibi özellikler yer alacaktır.

Alt gruplar (özellik geliştirilme aşamasındadır)

Alt gruplar özelliği, bir grup içindeki iş parçacıklarının iletişim kurmasına ve toplu matematik işlemleri (örneğin, 16 sayının toplamını hesaplama) gerçekleştirmesine olanak tanıyarak SIMD düzeyinde paralelliği etkinleştirir. Bu, ileti dizileri arası veri paylaşımı için son derece verimli bir biçim sağlar.

Alt grup işlemleri modern GPU API'leri tarafından desteklenir ancak adlandırma ve uygulama ayrıntıları değişiklik gösterir. Chrome ekibi ortak özellikleri belirledi ve şimdi bu özelliği standart hale getirmek için çalışıyor. Teklife göz atın ve sorularınız varsa yorum yapın.

chrome://flags/#enable-experimental-web-platform-features adresinde, "Deneysel Web Platformu Özellikleri" işaretinin arkasında minimum düzeyde ve standart olmayan bir alt grup uygulaması bulunmaktadır. Bu sayede geliştiriciler, webGPU bağlamında gerçek dünyadan sağlanan avantajlar henüz kanıtlanmadığından bu özelliği deneyip geri bildirim paylaşabilirler.

"chromium-experimental-subgroups" özelliği GPUAdapter öğesinde kullanıma sunulduğunda, WGSL'de deneysel alt grup desteği almak ve minSubgroupSize ile maxSubgroupSize sınırlarını kontrol etmek için bu özellikle birlikte bir GPUDevice isteyin.

Ayrıca, enable chromium_experimental_subgroups ile WGSL kodunuzda bu uzantıyı açıkça etkinleştirmeniz gerekir. Etkinleştirildiğinde, aşağıdaki eklemelere erişim elde edersiniz:

  • subgroup_invocation_id: Alt grup içindeki ileti dizisinin dizini için yerleşik bir değer.
  • subgroup_size: Alt grup boyutu erişimi için yerleşik bir değerdir.
  • subgroupBallot(value): Bir bit alanları grubu döndürür. Bu durumda, subgroup_invocation_id değerine karşılık gelen bit 1 (value true) etkin çağrı için 0, değilse 0 olur.
  • subgroupBroadcast(value, id): Çağrıdaki value öğesini, id ile eşleşen subgroup_invocation_id ile alt grup içindeki tüm çağrılara yayınlar. Not: id, derleme zamanı sabiti olmalıdır.

Aşağıdaki kod snippet'i, alt grupların potansiyelini incelemek ve keşfetmek için bir temel sağlar.

const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("chromium-experimental-subgroups")) {
  throw new Error("Experimental subgroups support is not available");
}
// Explicitly request experimental subgroups support.
const device = await adapter.requestDevice({
  requiredFeatures: ["chromium-experimental-subgroups"],
});

const shaderModule = device.createShaderModule({ code: `
  enable chromium_experimental_subgroups;

  @compute @workgroup_size(64) fn main(
      @builtin(global_invocation_id) global_id : vec3u,
      @builtin(subgroup_size) sg_size : u32,
      @builtin(subgroup_invocation_id) sg_id : u32) {
    // TODO: Use subgroupBallot() and subgroupBroadcast().
  }`,
});

3D doku dilimi olarak oluştur

Yeni depthSlice üyesiyle GPURenderPassColorAttachment içinde artık doğrudan oluşturma geçişlerinde bulunan 3D doku dilimlerine içerik oluşturabilir ve bu sayede yaygın 2D doku oluşturmanın ötesine geçerek özelliklerini genişletebilirsiniz. Bu ekleme, örneğin doğrudan 3D doku hacimlerinde oluşturma yoluyla voksel bazlı sahneler ve efektler oluşturmanıza olanak tanır. issue dawn:1020'i inceleyin.

Dawn ile ilgili güncellemeler

Kayıtların kapsamlı listesine göz atın.

WebGPU'daki Yenilikler

WebGPU'daki Yenilikler serisinde ele alınan her şeyin listesi.

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113