การบันทึกระบบนิเวศ WebGPU

François Beaufort
François Beaufort

WebGPU มักถูกมองว่าเป็น API กราฟิกบนเว็บที่ให้สิทธิ์เข้าถึง GPU แบบเป็นหนึ่งเดียวและรวดเร็ว โดยแสดงความสามารถที่ล้ำสมัยของฮาร์ดแวร์ รวมถึงช่วยให้การแสดงผลและการคำนวณใน GPU ทำงานได้ ซึ่งคล้ายกับ Direct3D 12, Metal และ Vulkan

อย่างไรก็ตาม WebGPU ก้าวข้ามขอบเขตของ JavaScript API เพียงตัวเดียว โดยเป็นองค์ประกอบพื้นฐานที่คล้ายกับ WebAssembly โดยมีนัยยะที่ครอบคลุมไปไกลกว่าเว็บเนื่องจากระบบนิเวศที่กำลังเติบโตขึ้นเรื่อยๆ ทีม Chrome ยอมรับว่า WebGPU เป็นมากกว่าเทคโนโลยีบนเว็บ แต่เป็นระบบนิเวศที่เฟื่องฟูโดยมีศูนย์กลางอยู่ที่เทคโนโลยีหลัก

สำรวจระบบนิเวศในปัจจุบัน

เส้นทางนี้จะเริ่มต้นด้วยข้อมูลจำเพาะของ JavaScript ซึ่งเป็นความร่วมมือจากหลายองค์กร เช่น Apple, Google, Intel, Mozilla และ Microsoft เว็บเบราว์เซอร์หลักทั้งหมดใช้งานได้หรือกำลังดำเนินการติดตั้ง WebGPU

ในขณะเดียวกัน Mozilla และ Google ก็ตระหนักถึงศักยภาพของ WebGPU ในแอปพลิเคชันเฉพาะแพลตฟอร์มและแยกการใช้งาน WebGPU ออกจากเบราว์เซอร์ ทำให้สามารถใช้งานได้แบบสแตนด์อโลน

สำหรับ Chrome ตัวเลือกนี้จะแสดงเป็น Dawn ซึ่งเป็นไลบรารี C/C++ ที่แปลการเรียก WebGPU เป็นคำสั่งไดรเวอร์ของ GPU Dawn สนับสนุนให้แอปพลิเคชัน C และ C++ ใช้ WebGPU ตั้งแต่แรก ด้วยการประมวลผล GPU แบบพกพาและที่รองรับการทำงานตามหลักการยศาสตร์โดยใช้ความเชี่ยวชาญของผู้ให้บริการเบราว์เซอร์

ดังที่แสดงในบล็อกโพสต์ WebGPU: API กราฟิกข้ามแพลตฟอร์มในอนาคต การย้ายแอปพลิเคชัน WebGPU เฉพาะแพลตฟอร์มไปยังเว็บนั้นทำได้ง่าย Emscripten ซึ่งเป็น Toolchain ของ C++ WebAssembly รองรับ WebGPU อยู่แล้ว และต้องมีการแก้ไขเพียงเล็กน้อยเพื่อพอร์ตไปยังเว็บ

คุณยังเรียกใช้โค้ด JavaScript WebGPU ของ JavaScript นอกเบราว์เซอร์ด้วยรันไทม์ JavaScript ของ Node.js ได้ เนื่องจากมีโมดูล WebGPU ที่อิงตาม Dawn ซึ่งช่วยให้คุณเรียกใช้โค้ดได้โดยไม่ต้องแก้ไขฝั่งเซิร์ฟเวอร์หรือในบริบทเฉพาะแพลตฟอร์มอื่นๆ

Rust มีระบบนิเวศที่คล้ายกันสำหรับ wgpu ซึ่งเป็นการใช้งาน WebGPU ของ Firefox Wgpu สามารถผสานรวมเข้ากับแอปพลิเคชัน Rust ได้โดยตรง ซึ่งจากนั้นสามารถพอร์ตไปยังเว็บได้โดยใช้ web-sys นอกจากนี้ รันไทม์ของ Deno JavaScript ยังรองรับ WebGPU ผ่าน wgpu อีกด้วย ดูบล็อกโพสต์ของ wgpu alliance with Deno

ซึ่งจะสร้างระบบนิเวศคู่ขนานระหว่าง Rust และ C++ ตามที่แสดงในแผนภาพต่อไปนี้

แผนภาพระบบนิเวศ WebGPU ในปี 2023
ระบบนิเวศของ WebGPU ในปี 2023

เส้นขอบฟ้าเกิดใหม่

ระบบนิเวศ WebGPU ขยายขอบเขตไปไกลกว่าขอบเขต JavaScript, C++ และ Rust

ภาษาโปรแกรมที่คุณต้องการอาจมีการเชื่อมโยง WebGPU อยู่แล้ว ในขณะที่วิศวกรที่ดูแลการใช้งาน WebGPU ก็กำลังพัฒนาส่วนหัว C ทั่วไปสำหรับ WebGPU ด้วยเช่นกัน ซึ่งใช้เพื่อกำหนดเป้าหมาย Dawn, wgpu และอื่นๆ เพื่อช่วยให้สร้างการเชื่อมโยงสำหรับภาษาต่างๆ โดยใช้ C FFI ได้ง่ายขึ้น

ทีม Chrome ยังพิจารณาการใช้ Dawn เป็นแบ็กเอนด์การแสดงผลเริ่มต้นสำหรับองค์ประกอบ UI ทั้งหมดของเบราว์เซอร์ รวมถึงเมนู แถบเครื่องมือ เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ และเนื้อหาเว็บด้วย ทำให้ไม่จำเป็นต้องใช้งานการแสดงผลแยกต่างหากสำหรับ API แบบเนทีฟแต่ละแบบ ทำให้กระบวนการพัฒนาง่ายขึ้น ปัจจุบันฟีเจอร์นี้อยู่ในขั้นทดลองใน macOS และ Windows ที่มีแฟล็ก chrome://flags/#skia-graphite

ข้อความแสดงการยอมรับ

รูปภาพหลักโดย Daniel Öberg ใน Unsplash