WebGPU'daki (Chrome {7}125) Yenilikler

François Beaufort
François Beaufort

Bu seferki WebGPU özelliklerinin sayısı biraz az gibi görünse de önemli gelişmeler yakında kullanıma sunulacak. Gelecekteki sürümlerde gölgelendirici derleme hızı iyileştirmeleri ve WGPUFuture kullanılarak uygulamanın asenkron modelinde yapılan değişiklikler gibi özellikler yer alacak.

Alt gruplar (geliştirilmekte olan özellik)

Alt gruplar özelliği, SIMD düzeyinde paralellik sağlar. Bu sayede, bir gruptaki iş parçacıkları iletişim kurabilir ve toplu matematik işlemleri (ör. 16 sayının toplamını hesaplama) gerçekleştirebilir. Bu, mesaj dizileri arasında son derece verimli bir veri paylaşımı şekli 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. Sorularınız varsa teklifi ve yorumları inceleyin.

WebGPU bağlamında gerçek dünyadaki avantajları henüz kanıtlanmadığı için geliştiricilerin denemesi ve geri bildirim paylaşması amacıyla chrome://flags/#enable-experimental-web-platform-features adresindeki "Deneysel Web Platformu Özellikleri" işaretinin arkasında alt grupların minimum düzeyde ve standartlaştırılmamış bir uygulaması vardır.

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

Ayrıca, bu uzantıyı enable chromium_experimental_subgroups kullanarak WGSL kodunuzda açıkça etkinleştirmeniz gerekir. Bu ayar etkinleştirildiğinde aşağıdaki eklemelere erişebilirsiniz:

  • subgroup_invocation_id: Alt gruptaki ileti dizisinin dizini için yerleşik bir değerdir.
  • subgroup_size: Alt grup boyutu erişimi için yerleşik bir değerdir.
  • subgroupBallot(value):, value etkin çağrı için doğruysa subgroup_invocation_id'a karşılık gelen biti 1, aksi takdirde 0 olan bir bit alanı kümesi döndürür.
  • subgroupBroadcast(value, id): Alt gruptaki tüm çağrılara id ile eşleşen subgroup_invocation_id içeren çağrıdan value'ü yayınlar. Not: id, derleme zamanı sabiti olmalıdır.

Aşağıdaki kod snippet'i, alt grupların potansiyelini keşfetmek ve denemeler yapmak 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 diliminde oluşturma

Artık GPURenderPassColorAttachment içindeki yeni depthSlice üyesiyle, oluşturma geçişlerinde doğrudan 3D dokuların dilimlerine oluşturma işlemi uygulayabilir ve bu özelliğin yeteneklerini yaygın 2D doku oluşturmanın ötesine taşıyabilirsiniz. Bu ekleme, örneğin doğrudan 3D doku hacimlerine oluşturma işlemi uygulayarak voksel tabanlı sahneler ve efektler oluşturmanıza olanak tanır. issue dawn:1020 konusuna bakın.

Şafak güncellemeleri

Kapsamlı commit listesine göz atın.

WebGPU'daki Yenilikler

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

Chrome 130

Chrome 129

Chrome 128 sürümü

Chrome 127 sürümü

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119 sürümü

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113