Yang Baru di WebGPU (Chrome 135)

François Beaufort
François Beaufort

Dipublikasikan: 26 Maret 2025

Mengizinkan pembuatan tata letak pipeline dengan tata letak grup bind null

Sebelumnya, pembuatan tata letak grup binding kosong memerlukan penambahan grup binding dengan nol binding, yang tidak praktis. Hal ini tidak lagi diperlukan karena tata letak grup bind null kini diizinkan dan diabaikan saat membuat tata letak pipeline. Hal ini akan mempermudah pengembangan.

Misalnya, Anda mungkin ingin membuat pipeline yang hanya menggunakan tata letak bind group 0 dan 2. Anda dapat menetapkan tata letak grup pengikatan 1 ke data fragmen dan tata letak grup pengikatan 2 ke data verteks, lalu merender tanpa shader fragmen. Lihat masalah 377836524.

const bgl0 = myDevice.createBindGroupLayout({ entries: myGlobalEntries });
const bgl1 = myDevice.createBindGroupLayout({ entries: myFragmentEntries });
const bgl2 = myDevice.createBindGroupLayout({ entries: myVertexEntries });

// Create a pipeline layout that will be used to render without a fragment shader.
const myPipelineLayout = myDevice.createPipelineLayout({
  bindGroupLayouts: [bgl0, null, bgl2],
});

Mengizinkan area tampilan melampaui batas target render

Persyaratan untuk validasi area pandang telah dilonggarkan agar area pandang dapat melampaui batas target render. Hal ini sangat berguna untuk menggambar elemen 2D seperti UI yang dapat meluas di luar area tampilan saat ini. Lihat masalah 390162929.

const passEncoder = myCommandEncoder.beginRenderPass({
  colorAttachments: [
    {
      view: myColorTexture.createView(),
      loadOp: "clear",
      storeOp: "store",
    },
  ],
});

// Set a viewport that extends past the render target's bounds by 8 pixels
// in all directions.
passEncoder.setViewport(
  /*x=*/ -8,
  /*y=*/ -8,
  /*width=*/ myColorTexture.width + 16,
  /*height=*/ myColorTexture.height + 16,
  /*minDepth=*/ 0,
  /*maxDepth=*/ 1,
);

// Draw geometry and complete the render pass as usual.

Akses yang lebih mudah ke mode kompatibilitas eksperimental di Android

Bendera chrome://flags/#enable-unsafe-webgpu saja kini mengaktifkan semua kemampuan yang diperlukan untuk mode kompatibilitas WebGPU eksperimental di Android. Dengan begitu, Anda dapat meminta GPUAdapter dalam mode kompatibilitas dengan opsi featureLevel: "compatibility" dan bahkan mendapatkan akses ke backend OpenGL ES di perangkat yang tidak mendukung Vulkan. Lihat contoh berikut dan keluarkan dawn:389876644.

// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
Halaman laporan WebGPU menampilkan GPUAdapter dalam mode kompatibilitas di perangkat Android.
Info adaptor mode kompatibilitas di webgpureport.org.

Menghapus batas maxInterStageShaderComponents

Seperti yang diumumkan sebelumnya, batas maxInterStageShaderComponents dihapus karena kombinasi faktor:

  • Redundansi dengan maxInterStageShaderVariables: Batas ini sudah memiliki tujuan yang serupa, yaitu mengontrol jumlah data yang diteruskan antar-tahap shader.
  • Perbedaan kecil: Meskipun ada sedikit perbedaan dalam cara penghitungan kedua batas tersebut, perbedaan ini kecil dan dapat dikelola secara efektif dalam batas maxInterStageShaderVariables.
  • Penyederhanaan: Menghapus maxInterStageShaderComponents menyederhanakan antarmuka shader dan mengurangi kompleksitas bagi developer. Daripada mengelola dua batas terpisah dengan perbedaan yang tidak terlalu signifikan, mereka dapat berfokus pada maxInterStageShaderVariables yang dinamai dengan lebih tepat dan komprehensif.

Lihat rencana penghapusan dan masalah 364338810.

Update Dawn

Sampler pemfilteran tidak dapat lagi digunakan untuk mengambil sampel tekstur kedalaman. Sebagai pengingat, tekstur kedalaman hanya dapat digunakan dengan sampler perbandingan atau non-filtering. Lihat masalah 379788112.

Struktur WGPURequiredLimits dan WGPUSupportedLimits telah diratakan menjadi WGPULimits. Lihat masalah 374263404.

Struct berikut telah diganti namanya. Lihat masalah 42240793.

  • WGPUImageCopyBuffer sekarang menjadi WGPUTexelCopyBufferInfo
  • WGPUImageCopyTexture sekarang menjadi WGPUTexelCopyTextureInfo
  • WGPUTextureDataLayout sekarang menjadi WGPUTexelCopyBufferLayout

Anggota subgroupMinSize dan subgroupMaxSize telah ditambahkan ke struct WGPUAdapterInfo. Lihat PR webgpu-headers.

Penggunaan Dawn API dalam Metal kini dapat dilacak saat menjalankan program dengan variabel lingkungan DAWN_TRACE_FILE_BASE yang menyimpan file .gputrace yang dapat dimuat nanti ke dalam Metal Debugger XCode. Lihat dokumentasi Men-debug Dawn.

Hal 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 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