Yang Baru di WebGPU (Chrome 149-150)

François Beaufort
François Beaufort

Dipublikasikan: 17 Juni 2026

Segera

Immediates, yang juga dikenal sebagai push constant atau root constant, memungkinkan Anda meneruskan sejumlah kecil data yang sering berubah langsung ke shader. Proses ini melewati overhead pembuatan buffer GPU dan pengelolaan grup pengikatan.

Memperbarui binding buffer seragam untuk data yang berubah setiap panggilan gambar—seperti ID objek unik atau matriks transformasi 3D untuk ratusan objek—akan menimbulkan overhead CPU. Suntikkan nilai mentah langsung ke encoder kartu untuk menghindari penulisan data ke memori dan pengelolaan pencarian GPU.

Immediates menyediakan jalur cepat untuk variabel kecil yang sangat dinamis. Gunakan buffer seragam atau buffer penyimpanan untuk array data besar, struktur pencahayaan kompleks, atau matriks besar.

Di shader WGSL, ruang alamat <immediate> memungkinkan Anda menentukan data langsung yang dapat diteruskan langsung ke encoder pass. Panggil setImmediates() di JavaScript sebelum panggilan gambar untuk memberikan data ini tanpa mengikat grup. Untuk memeriksa dukungan, deteksi fitur ekstensi bahasa WGSL immediate_address_space melalui navigator.gpu.wgslLanguageFeatures. Lihat contoh berikut dan niat untuk mengirimkan.

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();

Untuk mempelajari fitur ini lebih dalam, lihat WebGPUFundamentals Immediates.

Terima kasih kepada tim di Microsoft atas kontribusi mereka.

Validasi yang lebih ketat untuk lampiran sementara

WebGPU baru-baru ini memperkenalkan flag TRANSIENT_ATTACHMENT GPUTextureUsage, yang memungkinkan developer membuat lampiran render sementara, seperti buffer stensil kedalaman atau target multisampel. Lampiran ini tetap berada di memori tile on-chip yang cepat tanpa mengalokasikan VRAM utama.

Update terbaru (#6248 dan #6267) menyempurnakan aturan validasi untuk mencegah penyalahgunaan lampiran tekstur yang hemat memori ini:

  • Karena keterbatasan platform, viewFormats harus berupa array kosong saat membuat tekstur sementara. Format tampilan alternatif tidak diperlukan karena tekstur sementara hanya untuk rendering.
  • Membuat tampilan tekstur tidak mempersempit tanda penggunaan. Saat memanggil createView() pada tekstur sementara, tampilan tidak dapat mengubah penggunaannya.
  • Lampiran sementara tidak dapat digunakan sebagai resolveTarget di dalam render pass.

Info terbaru Dawn

Ini hanya mencakup beberapa sorotan utama. Lihat daftar commit yang lengkap.

Yang Baru di WebGPU

Daftar semua hal yang telah dibahas dalam seri Yang Baru di WebGPU.

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