WebGPU: ۲۵۰,۰۰۰ ذره در مرورگر شما

این روز پنجاهم است. این آخرین روز از مجموعه من است که در آن هر روز یک فناوری جدید را از صفر می‌سازم. می‌خواستم این مجموعه را با WebGPU به پایان برسانم.

من ۲۵۰,۰۰۰ ذره را کاملاً روی GPU در داخل یک مرورگر شبیه‌سازی کردم.

CPU شما چند هسته سریع دارد. GPU شما هزاران هسته ساده دارد. یک CPU ذرات را یکی یکی حرکت می‌دهد. یک GPU هزاران ذره را به طور همزمان حرکت می‌دهد.

WebGPU جانشین مدرن WebGL است. این فناوری از طریق compute shaderها به مرورگر شما اجازه دسترسی به سخت‌افزار را می‌دهد. این shaderها به GPU اجازه می‌دهند تا علاوه بر ترسیم گرافیک، محاسبات ریاضی نیز انجام دهد.

نحوه عملکرد:

• شما یک device برای مدیریت GPU ایجاد می‌کنید. • شما یک buffer برای نگهداری داده‌های ذره مانند موقعیت و سرعت ایجاد می‌کنید. • شما داده‌ها را یک بار آپلود می‌کنید و آن‌ها را روی GPU نگه می‌دارید. • شما یک compute shader برای یک ذره می‌نویسید. • GPU آن shader را به طور همزمان روی تمام ۲۵۰,۰۰۰ ذره اجرا می‌کند.

داده‌ها روی GPU باقی می‌مانند. آن‌ها بدون بازگشت به CPU، از مرحله محاسبات (compute step) به مرحله رندر (render step) منتقل می‌شوند. این سرعت اجازه می‌دهد که شبیه‌سازی با نرخ ۶۰fps اجرا شود.

WebGPU زیربنای جدیدی برای محاسبات درون‌مرگر و یادگیری ماشین محلی است. این بهترین راه برای پایان دادن به این مجموعه بود.

ممنون که این مسیر را دنبال کردید. می‌توانید آرشیو کامل تمام پروژه‌ها را اینجا پیدا کنید.

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

Optional learning community: https://dev48v.infy.uk/techfromzero.php