ข้อมูลเกี่ยวกับการรวมข้อกำหนดวิธีใช้ WebGPU ที่เผยแพร่ ใน Firefox สร้างทุกคืนซึ่งตอนนี้ มีอินเทอร์เฟซการเขียนโปรแกรมสำหรับการประมวลผลกราฟิก 3 มิติ และการประมวลผลในฝั่ง GPU ซึ่งมีแนวคิดคล้ายกับ Vulkan API โลหะและ Direct3D 12 ข้อมูลจำเพาะกำลังได้รับการพัฒนาโดย Mozilla, Google, Apple, Microsoft และตัวแทนชุมชนในกลุ่มทำงานที่สร้างโดยองค์กร W3C
เป้าหมายหลักของ WebGPU คือการสร้างอินเทอร์เฟซซอฟต์แวร์ที่ปลอดภัยสะดวกพกพาและมีประสิทธิภาพสูง สำหรับการใช้งานบนแพลตฟอร์มเว็บที่มีเทคโนโลยีกราฟิก 3 มิติและความสามารถที่จัดทำโดย API กราฟิกระบบสมัยใหม่เช่น Direct3D 12 บน Windows, Metal บน macOS และ Vulkan บน Linux
ตามแนวคิด WebGPU แตกต่างจาก WebGL ในลักษณะเดียวกับ Vulkan แตกต่างจาก OpenGL และไม่ได้ใช้ API กราฟิกที่เฉพาะเจาะจง แต่เป็นเลเยอร์สากลโดยทั่วไปโดยใช้ไพรมารีระดับต่ำแบบเดียวกับที่มีอยู่ใน Vulkan, Metal และ Direct3D
ใน Firefox การตั้งค่า "dom.webgpu.enabled" มีไว้เพื่อเปิดใช้งาน WebGPU ใน about: config. นอกเหนือจากการแสดงผล CanvasContext แล้วยังต้องมีการรวมระบบการจัดองค์ประกอบ WebRender ("gfx.webrender.all" ใน about: config)
การใช้งาน WebGPU นั้นขึ้นอยู่กับรหัสโปรเจ็กต์ wgpu ที่เขียนด้วย Rust และสามารถทำงานบน API ของ DX12, Vulkan และ Metal บน Linux, Android, Windows และ macOS (DX11 และ OpenGL ES 3.0 ยังอยู่ในการพัฒนา)
เกี่ยวกับ WebGPU
เว็บGPU ให้แอปพลิเคชัน JavaScript พร้อมเครื่องมือสำหรับการควบคุมระดับล่าง เกี่ยวกับองค์กร การประมวลผลและการส่งคำสั่งไปยัง GPU การจัดการทรัพยากรหน่วยความจำบัฟเฟอร์วัตถุพื้นผิวและเฉดสีกราฟิกที่คอมไพล์ แนวทางนี้จะ เปิดใช้งานแอพพลิเคชั่นกราฟิกที่มีประสิทธิภาพสูงขึ้น โดยการลดค่าใช้จ่ายและเพิ่มประสิทธิภาพในการทำงานกับ GPU
เว็บGPU ทำให้สามารถสร้างโปรเจ็กต์ 3 มิติที่ซับซ้อนสำหรับเว็บได้ ที่ไม่ได้ทำงานแย่กว่าโปรแกรมแบบสแตนด์อโลนที่สื่อสารโดยตรงกับ Vulkan, Metal หรือ Direct3D แต่ไม่ได้เชื่อมโยงกับแพลตฟอร์มเฉพาะ
ด้วย ให้ความสามารถเพิ่มเติมโดยการพอร์ตโปรแกรมกราฟิกเนทีฟ เป็นรูปแบบที่สามารถทำงานบนพื้นฐานของเทคโนโลยีบนเว็บ โดยใช้เทคโนโลยี WebAssembly
นอกจากกราฟิก 3 มิติแล้ว WebGPU ยังครอบคลุมถึงความเป็นไปได้ที่เกี่ยวข้องกับการกำจัดการประมวลผลที่อยู่ถัดจาก GPU และการสนับสนุนสำหรับการพัฒนา shader สามารถสร้าง Shaders ในภาษา WebGPU shader หรือระบุในรูปแบบกลาง SPIR-V จากนั้นแปลเป็นภาษา shader ที่ไดรเวอร์ปัจจุบันรองรับ
เว็บGPU ใช้การจัดการทรัพยากรที่แยกจากกันงานเตรียมการและการถ่ายโอนคำสั่ง ไปยัง GPU (ใน WebGL ออบเจ็กต์หนึ่งรับผิดชอบทุกอย่างพร้อมกัน) มีบริบทที่แยกจากกันสามแบบ: GPUDevice สำหรับสร้างทรัพยากรเช่นพื้นผิวและบัฟเฟอร์ GPUCommandEncoder เพื่อเข้ารหัสคำสั่งแต่ละคำสั่งรวมถึงขั้นตอนการเรนเดอร์และการคำนวณ GPUCommandBuffer เพื่อจัดคิวสำหรับการดำเนินการบน GPU
ข้อแตกต่างประการที่สองระหว่าง WebGPU และ WebGL คือวิธีการจัดการสถานะที่แตกต่างกัน มีการเสนอออบเจ็กต์สองรายการใน WebGPU: GPURenderPipeline และ GPUComputePipeline ซึ่งอนุญาตให้รวมหลายสถานะที่กำหนดไว้ล่วงหน้าโดยนักพัฒนาซึ่งช่วยให้เบราว์เซอร์ไม่ต้องเสียทรัพยากรในการทำงานเพิ่มเติมเช่นการคอมไพล์เฉดสีใหม่ สถานะที่รองรับ ได้แก่ : เฉดสีบัฟเฟอร์จุดยอดและเลย์เอาต์แอตทริบิวต์โครงร่างกลุ่มที่แนบมาการผสมความลึกและรูปแบบรูปแบบผลลัพธ์หลังการแสดงผล
คุณลักษณะที่สามของ WebGPU คือรูปแบบการผูกซึ่งในหลาย ๆ ประการ มันคล้ายกับวิธีการรวมทรัพยากรที่มีอยู่ในวัลแคน ในการจัดกลุ่มทรัพยากรเป็นกลุ่ม WebGPU จัดเตรียมอ็อบเจ็กต์ GPUBindGroup ที่โดยการพิมพ์คำสั่งสามารถเชื่อมโยงกับอ็อบเจ็กต์อื่นที่คล้ายคลึงกันเพื่อใช้ในเฉดสี
การสร้างกลุ่มดังกล่าวช่วยให้ผู้ขับขี่สามารถดำเนินการเตรียมการที่จำเป็นล่วงหน้าและเบราว์เซอร์ช่วยให้เขาสามารถสลับการเชื่อมโยงทรัพยากรระหว่างการโทรแบบดึงได้เร็วขึ้นมาก
Fuente: https://hacks.mozilla.org/