Порядок з хаосу прямо в браузері. Розробник виклав 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, хоча її продуктивність, ймовірно, була б суттєво нижчою. На його думку, цей стандарт обмежив би симуляцію
За цим посиланням лежить репозиторій, а за цим лінком — демоверсія на сайті. З її налаштуваннями можна погратися, поспостерігати за змінами в симуляції, або спробувати створити своє «життя».
Немає коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів