มีอะไรใหม่ใน WebGPU (Chrome 139)

François Beaufort
François Beaufort

เผยแพร่: 30 กรกฎาคม 2025

รองรับพื้นผิว 3 มิติสำหรับรูปแบบที่บีบอัด BC และ ASTC

ฟีเจอร์ "texture-compression-bc-sliced-3d" และ "texture-compression-astc-sliced-3d" WebGPU เพิ่มการรองรับเท็กซ์เจอร์ 3 มิติโดยใช้รูปแบบการบีบอัดแบบบล็อก (BC) และการบีบอัดเท็กซ์เจอร์ที่ปรับขนาดได้ (ASTC) ซึ่งจะช่วยให้คุณใช้ประโยชน์จากความสามารถในการบีบอัดที่มีประสิทธิภาพของรูปแบบ BC และ ASTC สำหรับข้อมูลพื้นผิวเชิงปริมาตรได้ ทำให้ลดการใช้หน่วยความจำและแบนด์วิดท์ได้อย่างมากโดยไม่สูญเสียคุณภาพของภาพมากนัก ซึ่งมีประโยชน์อย่างยิ่งในสาขาต่างๆ เช่น การแสดงภาพทางวิทยาศาสตร์ การถ่ายภาพทางการแพทย์ และเทคนิคการแสดงผลขั้นสูง

ข้อมูลโค้ดต่อไปนี้จะตรวจสอบว่าอแดปเตอร์รองรับเท็กซ์เจอร์ 3 มิติที่มีรูปแบบที่บีบอัด BC และ ASTC หรือไม่ และขออุปกรณ์ที่มีฟีเจอร์เหล่านี้หากมี

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

const requiredFeatures = [];
if (adapter?.features.has("texture-compression-bc-sliced-3d")) {
  requiredFeatures.push(
    "texture-compression-bc",
    "texture-compression-bc-sliced-3d",
  );
}
if (adapter?.features.has("texture-compression-astc-sliced-3d")) {
  requiredFeatures.push(
    "texture-compression-astc",
    "texture-compression-astc-sliced-3d",
  );
}
const device = await adapter?.requestDevice({ requiredFeatures });

// Later on...
if (device.features.has("texture-compression-astc-sliced-3d")) {
  // Create a 3D texture using ASTC compression
} else if (device.features.has("texture-compression-bc-sliced-3d")) {
  // Create a 3D texture using BC compression
} else {
  // Fallback: Create an uncompressed 3D texture
}

สำรวจการสแกนสมองแบบ 3 มิติโดยดูการแสดงผลแบบวอลุ่ม - ตัวอย่าง WebGPU แบบ 3 มิติของพื้นผิว และดูรายการใน Chrome Status

ภาพสแกนสมองแบบ 3 มิติที่แสดงผลโดยใช้ WebGPU
ภาพสแกนสมองจากพื้นผิว 3 มิติที่มีรูปแบบ ASTC ที่บีบอัด

ฟีเจอร์ใหม่ "core-features-and-limits"

เราจะเปิดตัว"core-features-and-limits"ฟีเจอร์ใหม่สำหรับโหมดความเข้ากันได้ของ WebGPU ที่กำลังจะมาถึง ฟีเจอร์นี้บ่งบอกว่าอแดปเตอร์หรืออุปกรณ์รองรับฟีเจอร์หลักและข้อจำกัดของข้อกำหนด WebGPU "หลัก" WebGPU เป็นเวอร์ชันเดียวที่พร้อมใช้งานในขณะนี้ ดังนั้นการติดตั้งใช้งาน WebGPU ทั้งหมดจึงต้องมี "core-features-and-limits" ในฟีเจอร์ที่รองรับ

ในอนาคตเมื่อเปิดตัวโหมดความเข้ากันได้ของ WebGPU อะแดปเตอร์หรืออุปกรณ์อาจไม่มีฟีเจอร์นี้เพื่อระบุว่าเป็นอะแดปเตอร์หรืออุปกรณ์โหมดความเข้ากันได้ ไม่ใช่อะแดปเตอร์หรืออุปกรณ์หลัก เมื่อเปิดใช้ในอุปกรณ์ ระบบจะยกเลิกข้อจำกัดทั้งหมดของโหมดความเข้ากันได้ (ฟีเจอร์และขีดจำกัด)

ดูคำอธิบายและการใช้งานโดยละเอียดในโหมดความเข้ากันได้ของ WebGPU ได้ที่คำอธิบายและส่วนต่อไปนี้ ดูปัญหา 418025721

ช่วงทดลองใช้จากต้นทางสำหรับโหมดความเข้ากันได้ของ WebGPU

WebGPU เป็น API ที่มีประสิทธิภาพซึ่งออกแบบมาสำหรับกราฟิกสมัยใหม่ โดยสอดคล้องกับเทคโนโลยีต่างๆ เช่น Vulkan, Metal และ Direct3D 12 อย่างไรก็ตาม อุปกรณ์จำนวนมากยังไม่รองรับ API ใหม่กว่าเหล่านี้ ตัวอย่างเช่น ใน Windows ผู้ใช้ Chrome 31% ไม่มี Direct3D 11.1 ขึ้นไป ใน Android ผู้ใช้ Android 15% ไม่มี Vulkan 1.1 ซึ่งรวมถึงผู้ใช้ 10% ที่ไม่มี Vulkan เลย

ซึ่งเป็นความท้าทายสำหรับนักพัฒนาแอปที่ต้องการเพิ่มการเข้าถึงแอปพลิเคชันของตนให้สูงสุด โดยมักจะต้องพัฒนาการติดตั้งใช้งานหลายรายการ (เช่น WebGPU และ WebGL) ยอมรับกลุ่มเป้าหมายที่จำกัดมากขึ้นด้วย WebGPU หลัก หรือใช้ WebGL ต่อไป ซึ่งทำให้พลาดฟีเจอร์ขั้นสูงของ WebGPU เช่น การคำนวณ GPU

ภาพแสดงโหมดความเข้ากันได้ของ WebGPU
ขยายการเข้าถึงโหมดความเข้ากันได้ของ WebGPU

โหมดความเข้ากันได้ของ WebGPU มีโซลูชันโดยการให้ API ของ WebGPU เวอร์ชันที่จำกัดเล็กน้อยซึ่งต้องเลือกใช้ โหมดนี้ออกแบบมาเพื่อเรียกใช้กราฟิก API รุ่นเก่า เช่น OpenGL ES 3.1 และ Direct3D11 ซึ่งจะช่วยขยายการเข้าถึงแอปพลิเคชันของคุณไปยังอุปกรณ์ที่ไม่รองรับกราฟิก API ที่ทันสมัยและชัดเจนซึ่ง WebGPU หลักกำหนดไว้อย่างมาก

เนื่องจากโหมดความเข้ากันได้เป็นส่วนย่อยของ WebGPU แอปพลิเคชันที่สร้างด้วยโหมดนี้จึงเป็นแอปพลิเคชัน "หลัก" ของ WebGPU ที่ถูกต้องด้วย ซึ่งหมายความว่าแอปจะทำงานได้อย่างราบรื่นแม้ในเบราว์เซอร์ที่ไม่รองรับโหมดความเข้ากันได้โดยเฉพาะ

สำหรับการใช้งานพื้นฐานหลายอย่าง การเปิดใช้โหมดความเข้ากันได้นั้นง่ายเพียงแค่ส่ง featureLevel: "compatibility" เมื่อเรียกใช้ requestAdapter() ส่วนการใช้งานที่ซับซ้อนกว่าอาจต้องมีการปรับเปลี่ยนเล็กน้อยเพื่อให้เป็นไปตามข้อจำกัดของโหมด ตัวอย่างการสร้าง Mipmap WebGPU เป็นตัวอย่างที่ดี

// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({
  featureLevel: "compatibility",
});

const hasCore = adapter?.features.has("core-features-and-limits");
const device = await adapter?.requestDevice({
  requiredFeatures: (hasCore ? ["core-features-and-limits"] : []),
});

if (device?.features.has("core-features-and-limits")) {
  // Compatibility mode restrictions will apply
}

เปิดใช้ฟีเจอร์

โดยค่าเริ่มต้น โหมดความเข้ากันได้ของ WebGPU จะไม่ได้เปิดใช้ใน Chrome แต่คุณสามารถทดลองใช้ใน Chrome 139 ได้โดยการเปิดใช้ฟังก์ชันการทำงานอย่างชัดเจน คุณเปิดใช้งานได้ในเครื่องโดยเปิดใช้Flag "ฟีเจอร์แพลตฟอร์มเว็บเวอร์ชันทดลอง" ที่ chrome://flags/#enable-experimental-web-platform-features

เรากำลังดำเนินการช่วงทดลองใช้จากต้นทางเพื่อเปิดใช้ฟีเจอร์นี้สำหรับผู้เข้าชมแอปทั้งหมด โดยจะสิ้นสุดใน Chrome 145 (21 เม.ย. 2026) หากต้องการเข้าร่วมการทดลองใช้ โปรดดูโพสต์เริ่มต้นใช้งานการทดลองใช้จากต้นทาง

ข้อมูลอัปเดตเกี่ยวกับ Dawn

มีการเพิ่มอาร์กิวเมนต์ message ลงในฟังก์ชัน WGPUQueueWorkDoneCallback เพื่อให้สอดคล้องกับฟังก์ชันเรียกกลับอื่นๆ ที่ใช้สถานะด้วย ดูคำขอส่งการเปลี่ยนแปลง webgpu-headers

เมื่อลิงก์ emdawnwebgpu กับ -sSHARED_MEMORY ระบบจะคอมไพล์ไฟล์ webgpu.cpp ด้วยแฟล็กนี้ด้วย ดู Dawn CL 244075

นี่เป็นเพียงไฮไลต์สำคัญบางส่วนเท่านั้น ดูรายการคอมมิตทั้งหมด

มีอะไรใหม่ใน WebGPU

รายการทุกอย่างที่ครอบคลุมในซีรีส์มีอะไรใหม่ใน WebGPU

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