𝗪𝗲𝗯𝗚𝗣𝗨: จำลองอนุภาค 250,000 ตัวบนเบราว์เซอร์ของคุณ
วันนี้คือวันที่ 50 และเป็นวันสุดท้ายของซีรีส์การสร้างเทคโนโลยีใหม่จากศูนย์ในทุกๆ วัน
ผมเลือก WebGPU เพื่อปิดท้ายซีรีส์นี้ WebGPU ช่วยให้คุณสามารถจำลองอนุภาคถึง 250,000 ตัวได้โดยใช้ GPU ทั้งหมดภายในเบราว์เซอร์
CPU ของคุณมีคอร์ที่ทำงานเร็วเพียงไม่กี่คอร์ แต่ GPU ของคุณมีคอร์ขนาดเล็กจำนวนหลายพันคอร์ ในการเคลื่อนที่อนุภาค 250,000 ตัว CPU จะต้องประมวลผลทีละตัว แต่ GPU สามารถทำได้ทีละหลายพันตัวในเวลาเดียวกัน
WebGPU คือผู้สืบทอดสมัยใหม่ของ WebGL โดยใช้ compute shaders ในการรันโปรแกรมทั่วไปบนฮาร์ดแวร์ของคุณ
หลักการทำงาน:
- คุณสร้าง device เพื่อจัดการ GPU
- คุณสร้าง buffer เพื่อเก็บข้อมูลอนุภาค เช่น ตำแหน่งและความเร็ว
- คุณอัปโหลดข้อมูลไปยัง GPU เพียงครั้งเดียว
- คุณเขียน compute shader เพื่อจัดการการเคลื่อนที่
compute shader จะรันตรรกะเดียวกันให้กับอนุภาคทุกตัวพร้อมกัน ข้อมูลจะถูกเก็บไว้ใน GPU และเคลื่อนย้ายจากขั้นตอนการคำนวณ (compute step) ไปยังขั้นตอนการแสดงผล (render step) โดยไม่ต้องออกจากฮาร์ดแวร์ ความเร็วนี้ช่วยให้การจำลองสามารถทำงานได้ที่ 60fps
WebGPU จะกลายเป็นรากฐานสำหรับการทำ machine learning และการคำนวณหนักๆ (heavy computation) ภายในเบราว์เซอร์ มันคือเครื่องมือสำคัญสำหรับอนาคตของการพัฒนาเว็บ
ขอบคุณที่ติดตามซีรีส์นี้ คุณสามารถดูคลังโปรเจกต์ทั้งหมดได้ที่นี่
Full code: https://github.com/dev48v/webgpu-from-zero
Complete post: https://dev.to/dev48v/webgpu-i-simulated-250000-particles-entirely-on-the-gpu-in-the-browser-2o0f