WebGPU'daki (Chrome {7}125) Yenilikler

François Beaufort
François Beaufort

WebGPU özelliklerinin sayısı bu sefer biraz az olabilir ancak bazı önemli gelişmeler çok yakında! Gelecekteki sürümlerde, gölgelendirici derleme hızında iyileşmeler ve WGPUFuture kullanılarak uygulamanın eş zamansız modelinde değişiklikler gibi özellikler yer alacak.

Alt gruplar (geliştirme aşamasındaki özellik)

Alt gruplar özelliği, SIMD düzeyinde paralelliği etkinleştirerek bir gruptaki iş parçacıklarının iletişim kurmasına ve toplu matematik işlemleri (ör. 16 sayının toplamını hesaplama) gerçekleştirmesine olanak tanır. Bu, iş parçacıkları arası veri paylaşımının son derece verimli bir biçimidir.

Alt grup işlemleri modern GPU API'leri tarafından desteklenir ancak adlandırma ve uygulama ayrıntıları farklılık gösterir. Chrome Ekibi, ortak noktaları belirledi ve şimdi bu özelliği standartlaştırmak için çalışıyor. Sorularınız varsa teklifi ve yorumu inceleyin.

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

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

Ayrıca, enable chromium_experimental_subgroups ile bu uzantıyı WGSL kodunuzda açıkça etkinleştirmeniz gerekir. Etkinleştirildiğinde aşağıdaki ek özelliklere erişebilirsiniz:

  • subgroup_invocation_id: Alt gruptaki mesaj 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): subgroup_invocation_id değerine karşılık gelen bitin, söz konusu etkin çağırma için value doğruysa 1, aksi takdirde 0 olduğu bir bit alanı kümesi döndürür.
  • subgroupBroadcast(value, id): subgroup_invocation_id ile çağırmadan value, alt gruptaki tüm çağırmalara id ile eşleşen şekilde yayınlar. Not: id, derleme zamanı sabiti olmalıdır.

Aşağıdaki kod snippet'i, alt grupların potansiyelini keşfetmek ve üzerinde 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().
  }`,
});

3B dokunun dilimine göre oluşturma

Artık GPURenderPassColorAttachment içinde yeni depthSlice üyesiyle, oluşturma geçişlerinde doğrudan 3D dokuların dilimlerine oluşturma yapabilirsiniz. Bu sayede, özelliklerini yaygın 2D doku oluşturmanın ötesine taşıyabilirsiniz. Bu ekleme, örneğin doğrudan 3D doku hacimlerine oluşturma yaparak voksel tabanlı sahneler ve efektler oluşturmanıza olanak tanır. issue dawn:1020 başlıklı makaleyi inceleyin.

Dawn ile ilgili güncellemeler

Kapsamlı commit listesine göz atın.

WebGPU'daki yenilikler

WebGPU'daki Yenilikler serisinde ele alınan tüm konuların listesi.

Chrome 149-150

Chrome 147-148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

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