Chrome จะรวมการรองรับ WebGPU

Google ได้ประกาศรวมการสนับสนุนเริ่มต้นสำหรับ WebGPU กราฟิก API และ WGSL (WebGPU Shading Language) ใน Chrome 113 ซึ่งมีกำหนดเปิดตัวในวันที่ 2 พฤษภาคม WebGPU มีอินเทอร์เฟซการเขียนโปรแกรมคล้ายกับ Vulkan, Metal และ Direct3D 12 สำหรับการดำเนินการด้าน GPU เช่น การเรนเดอร์และการประมวลผล และยังอนุญาตให้ใช้ภาษาเชเดอร์เพื่อเขียนโปรแกรมที่ทำงานบนฝั่ง GPU ในตอนแรกการใช้งาน WebGPU จะเปิดใช้งานบน ChromeOS, macOS และ Windows บิลด์เท่านั้น สำหรับ Linux และ Android การสนับสนุน WebGPU จะเปิดใช้งานในภายหลัง

นอกจาก Chrome แล้ว การสนับสนุนรุ่นทดลองสำหรับ WebGPU ยังได้รับการทดสอบตั้งแต่เดือนเมษายน 2020 ใน Firefox และตั้งแต่เดือนพฤศจิกายน 2021 ใน Safari หากต้องการเปิดใช้งาน WebGPU ใน Firefox คุณควรตั้งค่าสถานะ dom.webgpu.enabled และ gfx.webgpu.force-enabled ใน about:config ยังไม่มีแผนที่จะเปิดใช้งาน WebGPU เป็นค่าเริ่มต้นใน Firefox และ Safari การใช้งาน WebGPU ที่พัฒนาขึ้นสำหรับ Firefox และ Chrome นั้นมีให้ใช้งานในรูปแบบของไลบรารีที่แยกกัน - Dawn (C++) และ wgpu (Rust) ซึ่งคุณสามารถใช้เพื่อผสานรวมการรองรับ WebGPU เข้ากับแอปพลิเคชันของคุณได้ งานอยู่ระหว่างดำเนินการเพื่อเพิ่มการรองรับ WebGPU ให้กับไลบรารี JavaScript ยอดนิยมที่ใช้ WebGL โดยกำเนิด ตัวอย่างเช่น มีการประกาศการสนับสนุนเต็มรูปแบบสำหรับ WebGPU ใน Babylon.js และการสนับสนุนบางส่วนใน Three.js, PlayCanvas และ TensorFlow.js

ตามหลักการแล้ว WebGPU แตกต่างจาก WebGL ในลักษณะเดียวกับที่ Vulkan กราฟิก API แตกต่างจาก OpenGL แต่ WebGPU ไม่ได้ขึ้นอยู่กับ API กราฟิกเฉพาะ แต่เป็นเลเยอร์สากลที่ใช้พื้นฐานระดับต่ำแบบเดียวกับที่พบใน Vulkan, Metal และ ไดเร็ค3ดี. WebGPU ให้แอปพลิเคชัน JavaScript ที่มีการควบคุมระดับต่ำเหนือองค์กร การประมวลผลและการส่งคำสั่งไปยัง GPU การจัดการทรัพยากรที่เกี่ยวข้อง หน่วยความจำ บัฟเฟอร์ อ็อบเจ็กต์พื้นผิว และเชเดอร์กราฟิกที่คอมไพล์แล้ว แนวทางนี้ช่วยให้คุณได้รับประสิทธิภาพที่สูงขึ้นสำหรับแอปพลิเคชันกราฟิกโดยลดต้นทุนค่าใช้จ่ายและเพิ่มประสิทธิภาพในการทำงานกับ GPU

WebGPU ช่วยให้สามารถสร้างโปรเจ็กต์ 3D ที่ซับซ้อนสำหรับเว็บซึ่งทำงานได้ไม่แย่ไปกว่าโปรแกรมสแตนด์อโลนที่ใช้ Vulkan, Metal หรือ Direct3D โดยตรง แต่ไม่ได้เชื่อมโยงกับแพลตฟอร์มเฉพาะ WebGPU ยังมอบความสามารถเพิ่มเติมสำหรับการย้ายโปรแกรมกราฟิกเนทิฟไปเป็นรูปแบบที่เปิดใช้งานเว็บผ่านการคอมไพล์ลงใน WebAssembly นอกเหนือจากกราฟิก 3D แล้ว WebGPU ยังมีความสามารถที่เกี่ยวข้องกับการลดการโหลดการคำนวณไปยัง GPU และการดำเนินการเชเดอร์

คุณสมบัติที่สำคัญของ WebGPU:

  • แยกการจัดการทรัพยากร งานเตรียมการ และการส่งคำสั่งไปยัง GPU (ใน WebGL วัตถุเดียวรับผิดชอบทุกอย่างในคราวเดียว) มีบริบทที่แยกจากกันสามแบบ: GPUDevice สำหรับการสร้างทรัพยากร เช่น พื้นผิวและบัฟเฟอร์; GPUCommandEncoder สำหรับการเข้ารหัสคำสั่งแต่ละคำสั่ง รวมถึงขั้นตอนการเรนเดอร์และการคำนวณ GPUCommandBuffer ที่จะเข้าคิวเพื่อดำเนินการบน GPU ผลลัพธ์สามารถแสดงผลในพื้นที่ที่เกี่ยวข้องกับองค์ประกอบแคนวาสตั้งแต่หนึ่งองค์ประกอบขึ้นไป หรือประมวลผลโดยไม่มีเอาต์พุต (เช่น เมื่อรันงานคำนวณ) การแยกขั้นตอนช่วยให้แยกการดำเนินการสร้างทรัพยากรและการเตรียมการออกเป็นตัวจัดการต่างๆ ที่สามารถทำงานบนเธรดที่ต่างกันได้ง่ายขึ้น
  • แนวทางที่แตกต่างในการประมวลผลสถานะ WebGPU นำเสนอสองออบเจ็กต์ - GPURenderPipeline และ GPUComputePipeline ซึ่งช่วยให้คุณสามารถรวมสถานะต่างๆ ที่กำหนดไว้ล่วงหน้าโดยนักพัฒนา ซึ่งช่วยให้เบราว์เซอร์ไม่เปลืองทรัพยากรไปกับงานเพิ่มเติม เช่น การคอมไพล์เชเดอร์ใหม่ สถานะที่รองรับได้แก่: เชเดอร์ บัฟเฟอร์จุดยอดและเค้าโครงแอตทริบิวต์ เค้าโครงกลุ่มแบบติดหนึบ การผสมผสาน ความลึกและรูปแบบ และรูปแบบเอาต์พุตหลังการเรนเดอร์
  • โมเดลการเชื่อมโยงคล้ายกับฟีเจอร์การจัดกลุ่มทรัพยากรของ Vulkan ในการจัดกลุ่มทรัพยากรเข้าด้วยกัน WebGPU จะจัดเตรียมออบเจ็กต์ GPUBindGroup ซึ่งสามารถเชื่อมโยงกับออบเจ็กต์อื่นที่คล้ายคลึงกันเพื่อใช้ในเชเดอร์ขณะเขียนคำสั่ง การสร้างกลุ่มดังกล่าวช่วยให้ผู้ขับขี่สามารถดำเนินการเตรียมการที่จำเป็นล่วงหน้า และช่วยให้เบราว์เซอร์เปลี่ยนการเชื่อมโยงทรัพยากรระหว่างการโทรออกได้เร็วยิ่งขึ้น เค้าโครงของการผูกทรัพยากรสามารถกำหนดไว้ล่วงหน้าได้โดยใช้ออบเจ็กต์ GPUBindGroupLayout

ที่มา: opennet.ru

เพิ่มความคิดเห็น