WebGPU'daki yenilikler (Chrome 142)

François Beaufort
François Beaufort

Yayınlanma tarihi: 22 Ekim 2025

Doku biçimi desteği özellikleri genişletildi

Yeni "texture-formats-tier1" GPU özelliği, geliştiricilerin mevcut içerikleri WebGPU'nun daha düşük özelliklerine göre yeniden yazmalarına gerek kalmadan web'e aktarmasına olanak tanır. Bu sürümde, oluşturma eki, harmanlanabilir, çoklu örnekleme özellikleri ve "read-only" veya "write-only" depolama dokusu erişimi ile yeni "r16unorm", "r16snorm", "rg16unorm", "rg16snorm", "rgba16unorm" ve "rgba16snorm" doku biçimleri desteklenir. Ayrıca, oluşturma eki, karıştırılabilir, çoklu örnekleme ve çözme özelliklerine sahip mevcut "r8snorm", "rg8snorm", "rgba8snorm" doku biçimlerine de izin verir. "read-only" veya "write-only" depolama alanı doku erişimiyle daha fazla doku biçimi de kullanılabilir.

Yeni "texture-formats-tier2" GPU özelliği, belirli biçimler için "read-write" depolama dokusu erişimini etkinleştirir. Bu, Unreal Engine'i web'e taşıma gibi projeler için çok önemlidir. Cihaz oluşturulurken "texture-formats-tier2" seçeneğinin etkinleştirilmesiyle "texture-formats-tier1" seçeneğinin de otomatik olarak etkinleştirileceğini unutmayın.

Aşağıdaki snippet'i ve chromestatus girişini inceleyin.

const adapter = await navigator.gpu.requestAdapter();

const requiredFeatures = [];
if (adapter.features.has("texture-format-tier1")) {
  requiredFeatures.push("texture-format-tier1");
}
if (adapter.features.has("texture-format-tier2")) {
  requiredFeatures.push("texture-format-tier2");
}
const device = await adapter.requestDevice({ requiredFeatures });

// Later on, when dealing with "r8unorm" texture formats for example...
if (device.features.has("texture-format-tier2")) {
  // Use "read-write" storage texture access...
} else if (device.features.has("texture-format-tier1")) {
  // Use "read-only" or "write-only" storage texture access...
} else {
  // Fallback: Use another texture format...
}

Bu konudaki çalışmaları için Intel ekibine teşekkür ederiz.

WGSL'deki temel dizin

primitive_index, bir parça gölgelendirici tarafından işlenen mevcut öğeyi (örneğin, nokta, çizgi veya üçgen) benzersiz şekilde tanımlayan yerleşik bir WGSL değeridir. 0'dan başlar, her ilkel işlendikten sonra 1 artar ve çizilen her örnek arasında 0'a sıfırlanır.

"primitive-index" özelliği bir GPUAdapter'da kullanılabildiğinde, WGSL'de temel dizin desteği almak için bu özelliği içeren bir GPUDevice isteyin ve enable primitive_index; ile bu uzantıyı WGSL kodunuzda açıkça etkinleştirin. Etkinleştirildikten sonra, ilkel başına verilere erişmek veya örneğin, oluşturulan her bir farklı geometrik şekil için değişen mantık yürütmek üzere parça gölgelendiricinizdeki primitive_index yerleşik tam sayı değerini kullanın.

Aşağıdaki kod snippet'inde, ikinci öğeyi kırmızı, diğer tüm öğeleri mavi renkte oluşturacak bir parça gölgelendirici gösterilmektedir.

const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("primitive-index")) {
  throw new Error("Primitive index support is not available");
}
// Explicitly request primitive index support.
const device = await adapter.requestDevice({
  requiredFeatures: ["primitive-index"],
});

const fragmentShaderModule = device.createShaderModule({ code: `
  enable primitive_index;

  @fragment
  fn main(@builtin(primitive_index) i : u32) -> @location(0) vec4f {
    if (i == 1) {
      return vec4f(1, 0, 0, 1);
    }
    return vec4f(0, 1, 0, 1);
  }`,
});
// Send the appropriate commands to the GPU...

Primitive Picking örneğine göz atarak daha fazla bilgi edinebilir ve chromestatus girişini inceleyebilirsiniz.

3D çaydanlık modelindeki üçgenler, temel dizin değerlerine göre renklendirilir.
"İlkel dizinler" modundaki Primitive Picking örneği.

Dawn güncellemeleri

Oluşturulacak monolitik kitaplığın türünü işlemek için kullanılan DAWN_BUILD_MONOLITHIC_LIBRARY CMake değişkeninin varsayılan değeri OFF'ten STATIC'ye değiştirildi. Böylece, varsayılan olarak libwebgpu* dosyaları oluşturulacak.

Dawn artık wgpu::Surface yapılandırılırken wgpu::PresentMode::Undefined varsayılan değerini doğru şekilde işliyor. 441410668 numaralı soruna bakın.

Bu özet yalnızca önemli noktalardan bazılarını kapsar. Kapsamlı işleme listesine göz atın.

WebGPU'daki yenilikler

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

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