Порядок з хаосу прямо в браузері. Розробник виклав WebGPU-симуляцію Particle Life на 100 тисяч часточок

Привіт, спільното! Не зміг пройти повз цей проєкт — розробник з Австралії виклав на GitHub симуляцію Particle Life на WebGPU з використанням обчислювальних шейдерів. Вона підтримує до сотні тисяч часточок безпосередньо в браузері.

«Вона може обробляти близько 20 тисяч частинок з прийнятним радіусом взаємодії. Однак, якщо зменшити радіус взаємодії, кількість частинок може зрости до понад 100 тисяч при роботі з сортуванням за підрахунком/атомарно-зв’язаними списками. Для оптимізації продуктивності частинки розміщуються в просторові комірки та розділяються. Реалізація та код досить грубі, але з певною доробкою вони потенційно можуть стати зразком для WebGPU», — зазначив у своєму пості на Reddit користувач SilverSpace707.

Це австралійський розробник, що працює над експериментами з симуляціями, графікою, мережами та невеличкими іграми на itch.io. В описі до репозиторію він додав:

«Алгоритм руху частинок повністю базується на Particle Life. Його лише перенесено на обчислювальний шейдер, щоб можна було обробляти більшу кількість частинок. Рух частинок реалізовано через дві «ping-pong» буферні області, що проходять через compute-шейдер. Після цього відбувається рендеринг за допомогою базових вершинного та фрагментного шейдерів у кожному кадрі.

Існує три рушії, що змінюють спосіб обробки частинок:

  • NSquared — кожна частинка перевіряє кожну іншу, що є дуже неефективним.
  • Atomic Linked Lists — частинки розміщуються в комірках, де додаються до зв’язаних списків; після цього кожна частинка перевіряє лише частинки в сусідніх комірках, що покращує продуктивність у більших середовищах.
  • Counting Sort — після розміщення частинок у комірках масив з ідентифікаторами цих комірок сортується напряму. Такий підхід пришвидшує читання сусідніх частинок, але робить побудову структури повільнішою

SilverSpace707 в коментарях додає, що технічно симуляція могла б працювати і на WebGL, хоча її продуктивність, ймовірно, була б суттєво нижчою. На його думку, цей стандарт обмежив би симуляцію 10–20 тисячами частинками в ідеальному сценарії.

За цим посиланням лежить репозиторій, а за цим лінком — демоверсія на сайті. З її налаштуваннями можна погратися, поспостерігати за змінами в симуляції, або спробувати створити своє «життя».

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини про геймдев

👍ПодобаєтьсяСподобалось2
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі