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 (yapım aşamasındaki özellik)

Alt gruplar özelliği, SIMD düzeyinde paralellik sağlayarak bir grup içindeki ileti dizilerinin iletişim kurmasını ve toplu matematik işlemleri gerçekleştirmesini sağlar (örneğin, 16 sayının toplamını hesaplama). Bu, iş parçacıkları arasında veri paylaşımının son derece verimli bir biçimini 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 noktaları belirledi ve bu özelliği standartlaştırmak için çalışıyor. Sorularınız varsa teklifi ve yorumları inceleyin.

chrome://flags/#enable-experimental-web-platform-features adresindeki "Deneysel Web Platformu Özellikleri" işaretinin altında, alt gruplar minimum düzeyde ve standartlaştırılmamış şekilde uygulanmaktadır. Bu sayede geliştiriciler, gerçek hayattaki faydalar henüz WebGPU bağlamında kanıtlanmadığı için bu özelliği deneyip geri bildirim paylaşabilir.

"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 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ı sabit olmalıdır.

Aşağıdaki kod snippet'i, alt grupların potansiyelini ortaya çıkarmak ve üzerinde denemeler yapmak için temel oluşturur.

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 dilimini oluştur

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 131

Chrome 130

Chrome 129 sürümü

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