จำนวนฟีเจอร์ WebGPU อาจดูน้อยไปเล็กน้อยในช่วงนี้ แต่ก็มีความก้าวหน้าที่สำคัญอยู่ใกล้เคียง รุ่นต่อๆ ไปจะมีฟีเจอร์ต่างๆ เช่น การปรับปรุงความเร็วในการคอมไพล์ตัวปรับแสงเงา และการเปลี่ยนแปลงรูปแบบการใช้งานแบบอะซิงโครนัสโดยใช้ WGPUFuture
กลุ่มย่อย (ฟีเจอร์อยู่ระหว่างการพัฒนา)
ฟีเจอร์กลุ่มย่อยจะเปิดใช้การทำงานพร้อมกันในระดับ SIMD ทำให้ชุดข้อความภายในกลุ่มสื่อสารและคำนวณผลรวมได้ (เช่น การคำนวณผลรวมของตัวเลข 16 ตัว) ซึ่งเป็นรูปแบบการแชร์ข้อมูลแบบข้ามชุดข้อความที่มีประสิทธิภาพสูง
GPU API สมัยใหม่รองรับการดำเนินการกลุ่มย่อย แต่การตั้งชื่อและรายละเอียดการใช้งานจะแตกต่างกันไป ทีม Chrome ได้ระบุความแพร่หลายและกำลังดำเนินการทำให้ฟีเจอร์นี้เป็นมาตรฐาน ดูข้อเสนอและความคิดเห็นหากคุณมีคำถาม
การติดตั้งใช้งานกลุ่มย่อยที่อยู่เบื้องหลัง Flag "ฟีเจอร์แพลตฟอร์มเว็บรุ่นทดลอง" ที่ chrome://flags/#enable-experimental-web-platform-features
มีเพียงเล็กน้อยและไม่เป็นไปตามมาตรฐานเพื่อให้นักพัฒนาซอฟต์แวร์ได้ทดลองใช้และแชร์ความคิดเห็น เนื่องจากประโยชน์ในการใช้งานจริงยังไม่ได้รับการยืนยันในบริบทของ WebGPU
เมื่อฟีเจอร์ "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 มิติของพื้นผิว 3 มิติภายในการส่งผ่านการแสดงผลได้โดยตรง ซึ่งมากกว่าการแสดงผลพื้นผิว 2 มิติทั่วไป ด้วยสมาชิกใหม่ของ depthSlice
ใน GPURenderPassColorAttachment
ส่วนที่เพิ่มเข้ามานี้ จะช่วยให้คุณสามารถสร้างฉากและเอฟเฟ็กต์แบบว็อกเซล โดยการแสดงผลเป็นวอลุ่มของพื้นผิว 3 มิติโดยตรง ดูปัญหารุ่งเช้า:1020
ข้อมูลอัปเดตเกี่ยวกับ Dawn
ดูรายการสัญญาผูกมัดอย่างละเอียด
มีอะไรใหม่ใน WebGPU
รายการของทุกอย่างที่มีการพูดถึงในซีรีส์มีอะไรใหม่ใน WebGPU
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 บิตที่กรองได้
- รูปแบบ Verm10-10-10-2
- รูปแบบพื้นผิวของ rgb10a2uint
- ข้อมูลอัปเดตยามเช้า
Chrome 118
- การรองรับ HTMLImageElement และ ImageData ใน
copyExternalImageToTexture()
- การสนับสนุนแบบทดลองสำหรับพื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่านอย่างเดียว
- ข้อมูลอัปเดตยามเช้า
Chrome 117
- ยกเลิกการตั้งค่าบัฟเฟอร์เวอร์เท็กซ์
- ยกเลิกการตั้งค่ากลุ่มการเชื่อมโยง
- ปิดเสียงข้อผิดพลาดจากการสร้างไปป์ไลน์แบบไม่พร้อมกันเมื่ออุปกรณ์สูญหาย
- การอัปเดตการสร้างโมดูลตัวปรับแสงเงา SPIR-V
- การปรับปรุงประสบการณ์ของนักพัฒนาซอฟต์แวร์
- การแคชไปป์ไลน์ด้วยเลย์เอาต์ที่สร้างขึ้นโดยอัตโนมัติ
- ข้อมูลอัปเดตยามเช้า
Chrome 116
- การผสานรวม WebCodecs
- อุปกรณ์ที่สูญหายได้รับคืนโดย GPUAdapter
requestDevice()
- เล่นวิดีโอได้ลื่นไหลแม้เรียกใช้
importExternalTexture()
- ความสอดคล้องของข้อกำหนด
- การปรับปรุงประสบการณ์ของนักพัฒนาซอฟต์แวร์
- ข้อมูลอัปเดตยามเช้า
Chrome 115
- ส่วนขยายภาษา WGSL ที่รองรับ
- การสนับสนุนแบบทดลองสำหรับ Direct3D 11
- รับ GPU แบบแยกกันโดยค่าเริ่มต้นเมื่อใช้ไฟ AC
- การปรับปรุงประสบการณ์ของนักพัฒนาซอฟต์แวร์
- ข้อมูลอัปเดตยามเช้า
Chrome 114
- เพิ่มประสิทธิภาพ JavaScript
- getCurrentTexture() ใน Canvas ที่ไม่ได้กำหนดค่าแสดงข้อผิดพลาด invalidStateError
- ข้อมูลอัปเดตเกี่ยวกับ WGSL
- ข้อมูลอัปเดตยามเช้า