ในตอนนี้ จำนวนฟีเจอร์ WebGPU อาจดูไม่สบายใจเล็กน้อย แต่ความก้าวหน้าที่สำคัญบางอย่างก็อยู่แค่เอื้อม รุ่นต่อๆ ไปจะรวมถึงฟีเจอร์ต่างๆ เช่น การปรับปรุงความเร็วในการคอมไพล์ตัวปรับแสงเงา และการเปลี่ยนแปลงโมเดลอะซิงโครนัสของการติดตั้งใช้งานโดยใช้ WGPUFuture
กลุ่มย่อย (ฟีเจอร์อยู่ระหว่างการพัฒนา)
ฟีเจอร์กลุ่มย่อยเปิดใช้การทำงานพร้อมกันระดับ SIMD ทำให้ชุดข้อความภายในกลุ่มสื่อสารและดำเนินการทางคณิตศาสตร์ร่วมกันได้ (เช่น การคำนวณผลรวมของตัวเลข 16 ตัว) ทำให้ได้รูปแบบการแชร์ข้อมูลข้ามชุดข้อความที่มีประสิทธิภาพสูง
GPU API สมัยใหม่รองรับการดำเนินการของกลุ่มย่อย แต่ชื่อและรายละเอียดการใช้งานจะแตกต่างกันไป ทีม Chrome ได้ระบุคุณสมบัติที่พบได้ทั่วไปและกำลังดำเนินการเพื่อให้ฟีเจอร์นี้เป็นมาตรฐาน โปรดดูข้อเสนอและความคิดเห็นหากมีข้อสงสัย
มีการใช้กลุ่มย่อยเบื้องหลัง "ฟีเจอร์แพลตฟอร์มเว็บรุ่นทดลอง" เพียงเล็กน้อยและไม่เป็นไปตามมาตรฐาน แจ้งที่ 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
เป็นจริงสำหรับการเรียกใช้ที่ทำงานอยู่นั้น และจะแสดงผลเป็น 0subgroupBroadcast(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 มิติโดยตรง ดูปัญหา dawn:1020
ข้อมูลอัปเดตรุ่งเช้า
ดูรายการคอมมิตทั้งหมด
มีอะไรใหม่ใน 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
- ข้อมูลอัปเดตเมื่อรุ่งเช้า