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 kullanıma sunulacak. Gelecekteki sürümlerde, gölgelendirici derleme hızında iyileştirmeler 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 etkili 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 bu özelliği standartlaştırmak için çalışıyor. Sorularınız varsa öneri ve yoruma göz atın.

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, WebGPU bağlamında gerçek dünyadaki faydaları henüz kanıtlanmamış olan alt grupların minimum ve standartlaştırılmamış bir uygulaması vardı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 isteğinde bulunun.

Ayrıca, bu uzantıyı enable chromium_experimental_subgroups ile WGSL kodunuzda açıkça etkinleştirmeniz gerekir. Bu ayar etkinleştirildiğinde 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 boyutu erişimi için yerleşik bir değer.
  • subgroupBallot(value): value, etkin çağırma için doğruysa subgroup_invocation_id değerine karşılık gelen bitin 1 olduğu, aksi takdirde 0 olduğu bir bit alanı kümesi döndürür.
  • subgroupBroadcast(value, id): subgroup_invocation_id ile çağırmadan id eşleşen value değerini alt gruptaki tüm çağırmalara yayınlar. Not: id derleme zamanında sabit 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().
  }`,
});

3D dokunun dilimine oluşturma

Artık GPURenderPassColorAttachment içinde yeni depthSlice üyesiyle, 3D dokuların dilimlerine doğrudan oluşturma geçişlerinde oluşturma yapabilir, böylece özelliklerini yaygın 2D doku oluşturmanın ötesine taşıyabilirsiniz. Bu ekleme sayesinde, örneğin doğrudan 3D doku hacimlerine işleyerek voksel tabanlı sahneler ve efektler oluşturabilirsiniz. dawn:1020 sorununa bakın.

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 155-156

Chrome 153-154

Chrome 151-152

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