WebGPU'daki yenilikler (Chrome 149-150)

François Beaufort
François Beaufort

Yayınlanma tarihi: 17 Haziran 2026

Immediates

Anlık değerler (push sabitleri veya kök sabitleri olarak da bilinir), sık değişen küçük miktarlardaki verileri doğrudan gölgelendiricilere iletmenize olanak tanır. Bu işlem, GPU arabellekleri oluşturma ve bağlama gruplarını yönetme ek yükünü atlar.

Her çizim çağrısında değişen veriler için (ör. benzersiz bir nesne kimliği veya yüzlerce nesne için 3D dönüşüm matrisi) tek tip arabellek bağlamalarını güncellemek CPU yükü oluşturur. Verilerin belleğe yazılmasını ve GPU aramalarının yönetilmesini önlemek için ham değerleri doğrudan kart kodlayıcıya yerleştirin.

Anlık değişkenler, küçük ve son derece dinamik değişkenler için hızlı bir yol sağlar. Büyük veri dizileri, karmaşık aydınlatma yapıları veya büyük matrisler için tek tip arabellekler ya da depolama arabellekleri kullanın.

WGSL gölgelendiricinizde, <immediate> adres alanı, geçiş kodlayıcıya doğrudan iletilebilen anlık veriler tanımlamanıza olanak tanır. Bir grubu bağlamadan bu verileri sağlamak için JavaScript'te bir çizim çağrısından önce setImmediates() işlevini çağırın. Desteği kontrol etmek için immediate_address_space WGSL dil uzantısını navigator.gpu.wgslLanguageFeatures aracılığıyla özellik algılama yöntemiyle tespit edin. Aşağıdaki örneğe ve gönderme amacına bakın.

if (!navigator.gpu.wgslLanguageFeatures.has('immediate_address_space')) {
   throw new Error(`WGSL immediate address space is not available`);
}

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

const module = device.createShaderModule({ code: `
  requires immediate_address_space;

  var<immediate> color: vec4f;

  @vertex fn vertexMain(@builtin(vertex_index) i : u32) -> @builtin(position) vec4f {
    const pos = array(vec2f(0, 1), vec2f(-1, -1), vec2f(1, -1));
    return vec4f(pos[i], 0, 1);
  }

  @fragment fn fragmentMain() -> @location(0) vec4f {
    return color;
  }`,
});

// Create render pass encoder (omitted)...

// By using layout: 'auto', WebGPU will automatically infer the `immediateSize`
// required by the pipeline layout from the WGSL module.
const pipeline = device.createRenderPipeline({
  layout: 'auto',
  vertex: { module },
  fragment: { module, targets: [{ format }] },
});
myRenderPassEncoder.setPipeline(pipeline);

// Send immediate data to the GPU, then issue a draw call
myRenderPassEncoder.setImmediates(/*rangeOffset=*/0, new Float32Array([255, 0, 0, 255]));
myRenderPassEncoder.draw(3);
myRenderPassEncoder.end();

Bu özellik hakkında daha ayrıntılı bilgi için WebGPUFundamentals Immediates'e göz atın.

Katkılarından dolayı Microsoft ekibini tebrik ederiz.

Geçici ekler için daha katı doğrulama

WebGPU yakın zamanda, geliştiricilerin derinlik-şablon arabellekleri veya çok örnekli hedefler gibi geçici oluşturma ekleri oluşturmasına olanak tanıyan TRANSIENT_ATTACHMENT GPUTextureUsage işaretini kullanıma sundu. Bu ekler, ana VRAM'i tahsis etmeden hızlı, çip üzerinde döşeme belleğinde kalır.

Yakın zamanda yapılan güncellemeler (#6248 ve #6267), bu bellek açısından verimli doku eklerinin kötüye kullanılmasını önlemek için doğrulama kurallarını iyileştiriyor:

  • Platform sınırlamaları nedeniyle geçici dokular oluşturulurken viewFormats boş bir dizi olmalıdır. Geçici dokular yalnızca oluşturma için kullanıldığından alternatif görünüm biçimlerine gerek yoktur.
  • Doku görünümü oluşturmak, kullanım işaretlerini daraltmaz. Geçici bir dokuda createView() çağrıldığında görünüm kullanımını değiştiremez.
  • Geçici ekler, oluşturma geçişinde resolveTarget olarak kullanılamaz.

Dawn ile ilgili güncellemeler

Bu özet yalnızca önemli noktaların bir kısmını kapsar. 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