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

François Beaufort
François Beaufort

Published: Oct 22, 2025

ขยายความสามารถในการรองรับรูปแบบพื้นผิว

ฟีเจอร์ GPU ใหม่ "texture-formats-tier1" ช่วยให้นักพัฒนาแอปย้ายเนื้อหาที่มีอยู่ไปยังเว็บได้โดยไม่ต้องเขียนใหม่สำหรับความสามารถที่ต่ำกว่าของ WebGPU โดยรองรับรูปแบบพื้นผิวใหม่ "r16unorm", "r16snorm", "rg16unorm", "rg16snorm", "rgba16unorm" และ "rgba16snorm" ที่มีฟีเจอร์ render attachment, blendable, multisampling และการเข้าถึงพื้นผิวพื้นที่เก็บข้อมูล "read-only" หรือ "write-only" นอกจากนี้ยังรองรับรูปแบบพื้นผิว "r8snorm", "rg8snorm", "rgba8snorm" ที่มีฟีเจอร์ render attachment, blendable, multisampling และ resolve และยังใช้รูปแบบพื้นผิวอื่นๆ ได้ด้วยการเข้าถึงพื้นผิวพื้นที่เก็บข้อมูล "read-only" หรือ "write-only"

ฟีเจอร์ GPU ใหม่ "texture-formats-tier2" ช่วยให้เข้าถึงพื้นผิวพื้นที่เก็บข้อมูล "read-write" สำหรับบางรูปแบบ ซึ่งมีความสำคัญอย่างยิ่งสำหรับโปรเจ็กต์ต่างๆ เช่น การย้าย Unreal Engine ไปยังเว็บ โปรดทราบว่าการเปิดใช้ "texture-formats-tier2" เมื่อสร้างอุปกรณ์จะเปิดใช้ "texture-formats-tier1" โดยอัตโนมัติ

ดูข้อมูลโค้ดและรายการ chromestatus ต่อไปนี้

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...
}

ขอขอบคุณทีมงาน Intel ที่ทุ่มเททำงาน

ดัชนีดั้งเดิมใน WGSL

primitive_index เป็นค่า WGSL บิวท์อินที่ระบุองค์ประกอบดั้งเดิมปัจจุบัน (เช่น จุด เส้น หรือสามเหลี่ยม) ที่กำลังประมวลผลโดย Fragment Shader ได้อย่างไม่ซ้ำกัน โดยจะเริ่มต้นที่ 0 เพิ่มขึ้นทีละ 1 หลังจากประมวลผลองค์ประกอบดั้งเดิมแต่ละรายการ และรีเซ็ตเป็น 0 ระหว่างแต่ละอินสแตนซ์ที่วาด

เมื่อฟีเจอร์ "primitive-index" พร้อมใช้งานใน GPUAdapter ให้ขอ GPUDevice ที่มีฟีเจอร์นี้เพื่อรับการรองรับดัชนีดั้งเดิมใน WGSL และเปิดใช้ส่วนขยายนี้อย่างชัดเจนในโค้ด WGSL ด้วย enable primitive_index; เมื่อเปิดใช้แล้ว ให้ใช้ค่าจำนวนเต็มบิวท์อิน primitive_index ใน Fragment Shader เพื่อเข้าถึงข้อมูลต่อองค์ประกอบดั้งเดิมหรือใช้ตรรกะที่แตกต่างกันสำหรับรูปร่างทางเรขาคณิตที่แตกต่างกันแต่ละรายการที่แสดงผล เช่น

ข้อมูลโค้ดต่อไปนี้แสดง Fragment Shader ที่แสดงผลองค์ประกอบดั้งเดิมที่ 2 เป็นสีแดง และองค์ประกอบดั้งเดิมอื่นๆ ทั้งหมดเป็นสีน้ำเงิน

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

สำรวจเพิ่มเติมได้ที่ตัวอย่างการเลือกองค์ประกอบดั้งเดิม และดูรายการchromestatus

สามเหลี่ยมของโมเดลกาน้ำชา 3 มิติจะมีสีตามค่าดัชนีดั้งเดิม
ตัวอย่างการเลือกองค์ประกอบดั้งเดิมในโหมด "ดัชนีองค์ประกอบดั้งเดิม"

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

ตัวแปร CMake DAWN_BUILD_MONOLITHIC_LIBRARY ที่ใช้จัดการประเภทไลบรารี Monolithic ที่จะสร้างมีการเปลี่ยนค่าเริ่มต้นจาก OFF เป็น STATIC เพื่อให้ระบบสร้างไฟล์ libwebgpu* โดยค่าเริ่มต้น

ตอนนี้ Dawn จัดการ wgpu::PresentMode::Undefined ได้อย่างถูกต้องโดยค่าเริ่มต้นเมื่อกำหนดค่า wgpu::Surface ดู ปัญหา 441410668

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

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

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

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