WebGPU'daki (Chrome {7}125) Yenilikler

François Beaufort
François Beaufort

WebGPU özelliklerinin sayısı bu sefer biraz seyrek olabilir, ancak önemli gelişmelere çok az kaldı. Gelecekteki sürümler, gölgelendirici derleme hızı iyileştirmeleri gibi özellikler ve WGPUFuture kullanarak uygulamanın eş zamansız modelinde yapılan değişiklikler içerecektir.

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 özellikleri belirledi ve şimdi bu özelliği standartlaştırmak için çalışıyor. Teklife göz atın ve sorularınız varsa yorum yapın.

"Deneysel Web Platformu Özellikleri"nin altında, alt grupların minimum düzeyde ve standartlaştırılmamış bir şekilde uygulanması vardır. WebGPU bağlamında gerçek avantajların henüz kanıtlanmadığı için geliştiricilerin deneyip geri bildirim paylaşabilmeleri için chrome://flags/#enable-experimental-web-platform-features adresinde işaretleyin.

"chromium-experimental-subgroups" özelliği GPUAdapter içinde 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, 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ğer.
  • subgroup_size: Alt grup boyutu erişimi için yerleşik bir değer.
  • subgroupBallot(value): Bu etkin çağrı için value doğru, aksi halde 0 ise subgroup_invocation_id öğesine karşılık gelen bitin 1 olduğu bir bit alanları grubunu döndürür.
  • subgroupBroadcast(value, id): Çağrıdaki value öğesini subgroup_invocation_id ile eşleşen id ile alt gruptaki tüm çağrılarda yayınlar. Not: id, derleme zamanı sabiti 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 oluşturma geçişlerinde doğrudan 3D doku dilimlerinde görüntü oluşturabilirsiniz. Böylece GPURenderPassColorAttachment içindeki yeni depthSlice üyesiyle bu özelliğin yeteneklerini yaygın 2D doku oluşturmanın ötesine taşıyabilirsiniz. Bu ekleme, örneğin, doğrudan 3D doku hacimlerinde görüntü oluşturarak voksel tabanlı sahneler ve efektler oluşturmanıza olanak tanır. issues dawn:1020 sayfasına göz atın.

Şafak güncellemeleri

Taahhütlerin kapsamlı listesini inceleyin.

WebGPU'daki Yenilikler

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

Chrome 127 sürümü

Chrome 126

Chrome 125 sürümü

Chrome 124 sürümü

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119 sürümü

Chrome 118 sürümü

Chrome 117 sürümü

Chrome 116

Chrome 115 sürümü

Chrome 114 sürümü

Chrome 113