จำนวนฟีเจอร์ WebGPU อาจดูน้อยไปหน่อยในตอนนี้ แต่เรากำลังจะมีการพัฒนาที่สำคัญบางอย่างในเร็วๆ นี้ เวอร์ชันในอนาคตจะมีฟีเจอร์ต่างๆ เช่น การปรับปรุงความเร็วในการคอมไพล์ Shader และการเปลี่ยนแปลงรูปแบบการทำงานแบบแอซิงค์ของการติดตั้งใช้งานโดยใช้ WGPUFuture
กลุ่มย่อย (ฟีเจอร์ที่อยู่ระหว่างการพัฒนา)
ฟีเจอร์กลุ่มย่อยจะเปิดใช้การทำงานแบบขนานระดับ SIMD ซึ่งช่วยให้เธรดภายในกลุ่มสื่อสารและดำเนินการทางคณิตศาสตร์แบบรวมได้ (เช่น การคำนวณผลรวมของตัวเลข 16 รายการ) ซึ่งถือเป็นรูปแบบการแชร์ข้อมูลข้ามเธรดที่มีประสิทธิภาพสูง
GPU API สมัยใหม่รองรับการดำเนินการของกลุ่มย่อย แต่รายละเอียดการตั้งชื่อและการใช้งานจะแตกต่างกันไป ทีม Chrome ได้ระบุคุณสมบัติที่พบได้ทั่วไปและกำลังดำเนินการเพื่อให้ฟีเจอร์นี้เป็นมาตรฐาน โปรดดูข้อเสนอและความคิดเห็นหากมีคำถาม
มีการนํากลุ่มย่อยไปใช้ในบริบทของ WebGPU เพียงเล็กน้อยและไม่เป็นไปตามมาตรฐานภายใต้ Flag "ฟีเจอร์แพลตฟอร์มเว็บเวอร์ชันทดลอง" ที่ chrome://flags/#enable-experimental-web-platform-features
เพื่อให้นักพัฒนาซอฟต์แวร์ได้ลองใช้และแชร์ความคิดเห็น เนื่องจากยังไม่ทราบประโยชน์ในชีวิตจริง
เมื่อฟีเจอร์ "chromium-experimental-subgroups"
พร้อมใช้งานใน GPUAdapter
ให้ขอ GPUDevice
ที่มีฟีเจอร์นี้เพื่อรับการสนับสนุนกลุ่มย่อยทดลองใน WGSL และตรวจสอบขีดจำกัด minSubgroupSize
และ maxSubgroupSize
นอกจากนี้ คุณยังต้องเปิดใช้ส่วนขยายนี้ในโค้ด WGSL อย่างชัดแจ้งด้วย enable chromium_experimental_subgroups
เมื่อเปิดใช้แล้ว คุณจะได้รับสิทธิ์เข้าถึงฟีเจอร์เพิ่มเติมต่อไปนี้
subgroup_invocation_id
: ค่าในตัวสำหรับดัชนีของชุดข้อความภายในกลุ่มย่อยsubgroup_size
: ค่าในตัวสำหรับการเข้าถึงขนาดกลุ่มย่อยsubgroupBallot(value):
แสดงผลชุดช่องบิตที่บิตที่สอดคล้องกับsubgroup_invocation_id
เป็น 1 หากvalue
เป็นจริงสําหรับการเรียกใช้ที่ใช้งานอยู่นั้น และแสดงผลเป็น 0 ในกรณีอื่นsubgroupBroadcast(value, id)
: ออกอากาศvalue
จากคําเรียกที่มีsubgroup_invocation_id
ตรงกับid
ไปยังคําเรียกทั้งหมดภายในกลุ่มย่อย หมายเหตุ:id
ต้องเป็นค่าคงที่เวลาคอมไพล์
ข้อมูลโค้ดต่อไปนี้เป็นพื้นฐานในการทดลองและค้นพบศักยภาพของกลุ่มย่อย
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("chromium-experimental-subgroups")) {
throw new Error("Experimental subgroups support is not available");
}
// Explicitly request experimental subgroups support.
const device = await adapter.requestDevice({
requiredFeatures: ["chromium-experimental-subgroups"],
});
const shaderModule = device.createShaderModule({ code: `
enable chromium_experimental_subgroups;
@compute @workgroup_size(64) fn main(
@builtin(global_invocation_id) global_id : vec3u,
@builtin(subgroup_size) sg_size : u32,
@builtin(subgroup_invocation_id) sg_id : u32) {
// TODO: Use subgroupBallot() and subgroupBroadcast().
}`,
});
แสดงผลเป็นพื้นผิว 3 มิติแบบบางๆ
ตอนนี้คุณเรนเดอร์ไปยังส่วนต่างๆ ของพื้นผิว 3 มิติภายในการผ่านข้อมูลเรนเดอร์ได้โดยตรง ซึ่งจะขยายความสามารถนอกเหนือจากการเรนเดอร์พื้นผิว 2 มิติทั่วไปด้วยสมาชิก depthSlice
ใหม่ใน GPURenderPassColorAttachment
นอกจากนี้คุณยังสามารถใช้สร้างฉากและเอฟเฟกต์แบบว็อกเซลได้โดยการแสดงผลเป็นวอลุ่มพื้นผิว 3 มิติโดยตรง ดู issue dawn:1020
ข้อมูลอัปเดตรุ่งเช้า
ดูรายการคอมมิตทั้งหมด
มีอะไรใหม่ใน WebGPU
รายการทุกอย่างที่ครอบคลุมในชุดมีอะไรใหม่ใน WebGPU
Chrome 131
- ตัดระยะทางใน WGSL
- GPUCanvasContext getConfiguration()
- องค์ประกอบพื้นฐานของจุดและเส้นต้องไม่มีอคติด้านความลึก
- ฟังก์ชันการสแกนแบบรวมในตัวสำหรับกลุ่มย่อย
- การรองรับการดึงข้อมูลแบบหลายดึงข้อมูลโดยอ้อมในขั้นทดลอง
- ตัวเลือกการรวบรวมโมดูล Shader คณิตศาสตร์แบบเข้มงวด
- นำ GPUAdapterRequestAdapterInfo() ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 130
- การผสมผสานแหล่งที่มาแบบคู่
- การปรับปรุงเวลาคอมไพล์ Shader ใน Metal
- การเลิกใช้งาน requestAdapterInfo() ของ GPUAdapter
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 129
Chrome 128
- การทดสอบกลุ่มย่อย
- เลิกใช้งานการตั้งค่าความเอียงของภาพสำหรับเส้นและจุด
- ซ่อนคำเตือนข้อผิดพลาดที่ไม่ได้บันทึกไว้สำหรับ DevTools หาก preventDefault
- การสุ่มตัวอย่างแบบสอดแทรกของ WGSL ก่อนหรือแบบใดแบบหนึ่ง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 127
- การรองรับ OpenGL ES ใน Android แบบทดลอง
- แอตทริบิวต์ข้อมูล GPUAdapter
- การปรับปรุงการทำงานร่วมกันของ WebAssembly
- ข้อผิดพลาดของโปรแกรมเปลี่ยนไฟล์คำสั่งที่ปรับปรุงใหม่
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 126
- เพิ่มขีดจํากัด maxTextureArrayLayers
- การเพิ่มประสิทธิภาพการอัปโหลดบัฟเฟอร์สําหรับแบ็กเอนด์ Vulkan
- การปรับปรุงเวลาคอมไพล์ Shader
- บัฟเฟอร์คำสั่งที่ส่งต้องไม่ซ้ำกัน
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 125
Chrome 124
- พื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและแบบอ่านและเขียน
- การรองรับ Service Worker และ Shared Worker
- แอตทริบิวต์ข้อมูลอะแดปเตอร์ใหม่
- แก้ไขข้อบกพร่อง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 123
- การรองรับฟังก์ชันในตัวของ DP4a ใน WGSL
- พารามิเตอร์พอยน์เตอร์ที่ไม่จํากัดใน WGSL
- Syntax sugar สำหรับการนำคอมโพสิทมาอ้างอิงใน WGSL
- แยกสถานะอ่านอย่างเดียวสำหรับแสตนซิลและมิติความลึก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 122
- ขยายการเข้าถึงด้วยโหมดความเข้ากันได้ (ฟีเจอร์ที่อยู่ระหว่างการพัฒนา)
- เพิ่มขีดจํากัด maxVertexAttributes
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 121
- รองรับ WebGPU ใน Android
- ใช้ DXC แทน FXC สำหรับการคอมไพล์ shader ใน Windows
- การค้นหาการประทับเวลาในการคำนวณและผ่านการแสดงผล
- จุดแรกเข้าเริ่มต้นสำหรับโมดูลตัวปรับเฉดสี
- รองรับ display-p3 เป็นพื้นที่สี GPUExternalTexture
- ข้อมูลฮีปหน่วยความจำ
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 120
- การรองรับค่าทศนิยม 16 บิตใน WGSL
- ก้าวข้ามขีดจำกัด
- การเปลี่ยนแปลงสถานะความลึกของสเตนซิล
- การอัปเดตข้อมูลอะแดปเตอร์
- การแปลงค่าการค้นหาการประทับเวลา
- ฟีเจอร์ทำความสะอาดช่วงฤดูใบไม้ผลิ
Chrome 119
- พื้นผิวแบบจำนวนลอยตัว 32 บิตที่กรองได้
- รูปแบบเวิร์กเท็กซ์ unorm10-10-10-2
- รูปแบบพื้นผิว rgb10a2uint
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 118
- การรองรับ HTMLImageElement และ ImageData ใน
copyExternalImageToTexture()
- การทดสอบการรองรับพื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่านอย่างเดียว
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 117
- ยกเลิกการตั้งค่าบัฟเฟอร์เวิร์กเทกซ์
- ยกเลิกการตั้งค่ากลุ่มการเชื่อมโยง
- ปิดข้อผิดพลาดจากการสร้างไปป์ไลน์แบบไม่พร้อมกันเมื่ออุปกรณ์สูญหาย
- การอัปเดตการสร้างโมดูล Shader ของ SPIR-V
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- ไปป์ไลน์การแคชที่มีเลย์เอาต์ที่สร้างขึ้นโดยอัตโนมัติ
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 116
- การผสานรวม WebCodecs
- อุปกรณ์ที่สูญหายส่งคืนโดย GPUAdapter
requestDevice()
- เล่นวิดีโอได้อย่างราบรื่นหากมีการเรียกใช้
importExternalTexture()
- การปฏิบัติตามข้อกำหนด
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 115
- ส่วนขยายภาษา WGSL ที่รองรับ
- การรองรับ Direct3D 11 แบบทดลอง
- รับ GPU แบบแยกกันโดยค่าเริ่มต้นเมื่อใช้พลังงานจากไฟฟ้า AC
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- ข้อมูลอัปเดตเมื่อรุ่งเช้า
Chrome 114
- เพิ่มประสิทธิภาพ JavaScript
- getCurrentTexture() ในผืนผ้าใบที่ไม่ได้กำหนดค่าไว้แสดงข้อผิดพลาดที่ไม่ถูกต้อง
- ข้อมูลอัปเดตเกี่ยวกับ WGSL
- ข้อมูลอัปเดตเมื่อรุ่งเช้า