ในตอนนี้ จำนวนฟีเจอร์ WebGPU อาจดูเหมือนเล็กน้อย แต่ความก้าวหน้าหลักๆ ก็อยู่แค่เอื้อม รุ่นถัดไปจะมีฟีเจอร์ต่างๆ เช่น พื้นผิวพื้นที่เก็บข้อมูล DP4a, แบบอ่านอย่างเดียวและอ่านอย่างเดียว การควบคุมภาพลายฉลุและความลึกที่แยกต่างหาก การแสดงภาพชิ้นส่วนพื้นผิว 3 มิติ และการปรับปรุงการคอมไพล์ตัวปรับแสงเงา
ในระหว่างนี้ โปรดดูวิธีเพิ่มประสิทธิภาพการทดสอบโมเดล Web AI ด้วยการรองรับ WebGPU และ WebGL ใน Chrome แบบ Headless และสาเหตุที่ WebGPU ถูกปิดใช้หรือไม่ทำงานใน Chrome
ขยายการเข้าถึงด้วยโหมดความเข้ากันได้ (ฟีเจอร์อยู่ระหว่างการพัฒนา)
WebGPU สอดคล้องกับ API กราฟิกสมัยใหม่ (Vulkan, Metal และ D3D12) เป็นอย่างดี แต่อุปกรณ์บางรุ่นไม่รองรับ API ดังกล่าว ซึ่งจะจำกัดความสามารถเข้าถึงได้ง่ายของ WebGPU โดยเฉพาะบนแพลตฟอร์มอย่าง Windows (31% ของผู้ใช้ Chrome ไม่มี D3D11.1 ขึ้นไป), Android (23% ไม่มี Vulkan 1.1 ขึ้นไป) และ ChromeOS (มีการใช้ Vulkan เพิ่มขึ้น)
ทีมงาน Chrome กำลังปรับปรุงโหมดความเข้ากันได้ใน WebGPU เพื่อแก้ปัญหานี้โดยเสนอ WebGPU เวอร์ชันที่จำกัดเล็กน้อยซึ่งทำงานได้กับ API รุ่นเก่า เช่น D3D11 และ OpenGL ES วิธีนี้จะขยายฐานผู้ใช้ที่เป็นไปได้ของ WebGPU
ที่สำคัญ แอปพลิเคชันที่ใช้โหมดความเข้ากันได้ยังคงเป็นแอปพลิเคชัน WebGPU ที่ถูกต้องอย่างสมบูรณ์แบบ อุปกรณ์ที่ไม่รองรับโหมดความเข้ากันได้จะใช้ค่าเริ่มต้นเป็นอะแดปเตอร์ WebGPU หลักได้อย่างราบรื่น จึงช่วยรับประกันความสามารถในการใช้งานในวงกว้าง
โปรดดูข้อเสนอและความคิดเห็นหากมีข้อสงสัย
เพิ่มขีดจำกัด maxVertexAttributes
โดยค่าเริ่มต้น จำนวนแอตทริบิวต์รวมสูงสุดในบัฟเฟอร์เมื่อสร้าง GPURenderPipeline คือ 16 ตอนนี้คุณจะส่งคำขอได้สูงสุด 30 รายการโดยใช้ขีดจำกัด maxVertexAttributes หากรองรับ ดูตัวอย่างและปัญหา dawn:2223 ต่อไปนี้
const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxVertexAttributes < 30) {
// When the desired limit isn't supported, take action to either fall back to
// a code path that does not require the higher limit or notify the user that
// their device does not meet minimum requirements.
}
// Request highest limit of max vertex attributes.
const device = await adapter.requestDevice({
requiredLimits: { maxVertexAttributes: 30 },
});
ข้อมูลอัปเดตรุ่งเช้า
ปุ่มสลับอินสแตนซ์ใหม่ชื่อ "expose_wgsl_experimental_features" มีการเพิ่มเพื่อกำหนดให้อินสแตนซ์แสดงเฉพาะฟีเจอร์ WGSL เวอร์ชันทดลองแต่ไม่ใช่ฟีเจอร์ที่ไม่ปลอดภัย เพื่อให้สามารถใช้ฟีเจอร์ WGSL เวอร์ชันทดลองที่ปลอดภัยได้โดยไม่ต้องเปิดใช้ "allow_unsafe_apis" เปิด/ปิด ดูปัญหา dawn:2260
การปรับปรุงการเชื่อมโยง Dawn สำหรับ Node.js เมื่อเร็วๆ นี้มีดังนี้
- เพิ่ม
GPUSupportedFeatures::getSize()
แล้ว - มีการใช้การไม่มีอัปเดต
GPUAdapter
แล้ว - รายงาน
GPUInternalError
สำหรับอุปกรณ์อย่างถูกต้องแล้ว - แอตทริบิวต์สามารถแจกแจงได้แล้วในขณะนี้
ซึ่งกล่าวถึงไฮไลต์สำคัญเพียงบางส่วนเท่านั้น ดูรายการคอมมิตทั้งหมด
มีอะไรใหม่ใน WebGPU
รายการทั้งหมดที่กล่าวถึงในซีรีส์ What's New in WebGPU
Chrome 128
- การทดสอบกับกลุ่มย่อย
- ลดการให้น้ำหนักพิเศษในการตั้งค่าสำหรับเส้นและจุด
- ซ่อนคำเตือนข้อผิดพลาดที่ไม่ได้บันทึกไว้สำหรับ DevTools หาก preventDefault
- การสุ่มตัวอย่างแบบสอดแทรกของ WGSL ก่อนหรือแบบใดแบบหนึ่ง
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 127
- การทดสอบการรองรับ OpenGL ES บน Android
- แอตทริบิวต์ข้อมูลของ GPU
- การปรับปรุงการทำงานร่วมกันของ WebAssembly
- ข้อผิดพลาดของโปรแกรมเปลี่ยนไฟล์คำสั่งที่ปรับปรุงใหม่
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 126
- เพิ่มขีดจำกัด maxTextureArraydataLayer
- การเพิ่มประสิทธิภาพการอัปโหลดบัฟเฟอร์สำหรับแบ็กเอนด์ Vulkan
- ปรับปรุงเวลาคอมไพล์ Shader
- บัฟเฟอร์คำสั่งที่ส่งต้องไม่ซ้ำกัน
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 125
Chrome 124
- พื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่านอย่างเดียว
- การสนับสนุนของ Service Worker และผู้ปฏิบัติงานที่แชร์
- แอตทริบิวต์ข้อมูลอะแดปเตอร์ใหม่
- แก้ไขข้อบกพร่อง
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 123
- รองรับฟังก์ชัน DP4a ในตัวของ WGSL
- พารามิเตอร์ตัวชี้แบบไม่จำกัดใน WGSL
- น้ำตาลทางไวยากรณ์สำหรับลดการอ้างอิงองค์ประกอบใน WGSL
- แยกสถานะอ่านอย่างเดียวสำหรับลายฉลุและความลึก
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 122
- ขยายการเข้าถึงด้วยโหมดความเข้ากันได้ (ฟีเจอร์ที่กำลังพัฒนา)
- เพิ่มขีดจำกัด maxVertexAttributes
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 121
- รองรับ WebGPU บน Android
- ใช้ DXC แทน FXC สำหรับการคอมไพล์ตัวปรับแสงเงาใน Windows
- การค้นหาการประทับเวลาในการประมวลผลและแสดงผลบัตรผ่าน
- จุดแรกเข้าเริ่มต้นสำหรับโมดูลตัวปรับเฉดสี
- รองรับ display-p3 เป็นพื้นที่สี GPUExternalTexture
- ข้อมูลฮีปหน่วยความจำ
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 120
- การรองรับค่าทศนิยม 16 บิตใน WGSL
- ก้าวข้ามขีดจำกัด
- การเปลี่ยนแปลงสถานะความลึกของลายฉลุ
- การอัปเดตข้อมูลอะแดปเตอร์
- การวัดปริมาณการค้นหาการประทับเวลา
- ฟีเจอร์ทำความสะอาดในฤดูใบไม้ผลิ
Chrome 119
- พื้นผิวแบบลอย 32 บิตที่กรองได้
- รูปแบบเวอร์เท็กซ์ unorm10-10-10-2
- รูปแบบพื้นผิวของrgb10a2uint
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 118
- การรองรับ HTMLImageElement และ ImageData ใน
copyExternalImageToTexture()
- เวอร์ชันทดลองสำหรับพื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่านอย่างเดียว
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 117
- ยกเลิกการตั้งค่าบัฟเฟอร์ Vertex
- ยกเลิกการตั้งค่ากลุ่มการเชื่อมโยง
- ปิดข้อผิดพลาดจากการสร้างไปป์ไลน์แบบไม่พร้อมกันเมื่ออุปกรณ์สูญหาย
- การอัปเดตการสร้างโมดูลตัวปรับแสงเงา SPIR-V
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- ไปป์ไลน์การแคชที่มีเลย์เอาต์ที่สร้างขึ้นโดยอัตโนมัติ
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 116
- การผสานรวม WebCodecs
- อุปกรณ์ที่สูญหายส่งคืนโดย GPUAdapter
requestDevice()
- เล่นวิดีโอได้อย่างราบรื่นหากมีการเรียกใช้
importExternalTexture()
- ความสอดคล้องตามข้อกำหนด
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 115
- ส่วนขยายภาษา WGSL ที่รองรับ
- การสนับสนุนรุ่นทดลองสำหรับ Direct3D 11
- รับ GPU แบบแยกกันโดยค่าเริ่มต้นเมื่อใช้พลังงานจากไฟฟ้า AC
- การปรับปรุงประสบการณ์ของนักพัฒนาแอป
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 114
- เพิ่มประสิทธิภาพ JavaScript
- getCurrentTexture() ในผืนผ้าใบที่ไม่ได้กำหนดค่าไว้แสดงข้อผิดพลาดที่ไม่ถูกต้อง
- ข้อมูลอัปเดตเกี่ยวกับ WGSL
- ข้อมูลอัปเดตเมื่อรุ่งเช้า