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 yakında bazı önemli gelişmeler olacak. 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 dizisi arası veri paylaşımı için son derece verimli bir yöntemdir.

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 noktaları belirledi ve şu anda bu özelliği standartlaştırmak 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, WGSL kodunuzda bu uzantıyı enable chromium_experimental_subgroups ile açıkça etkinleştirmeniz gerekir. Bu özelliği etkinleştirdiğinizde aşağıdaki ek özelliklere erişebilirsiniz:

  • subgroup_invocation_id: Alt gruptaki ileti dizisinin dizini için yerleşik bir değer.
  • subgroup_size: Alt grup boyutuna erişim için yerleşik bir değer.
  • subgroupBallot(value):, value bu etkin çağrı için doğruysa subgroup_invocation_id'e 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ı sabit 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 sayede oluşturma işleminin özelliklerini yaygın 2D doku oluşturmanın ötesine taşıyabilirsiniz. Bu ekleme, örneğin doğrudan 3D doku hacimlerine oluşturma yaparak voxel 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 tüm konuların listesi.

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

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