Я шукаю будь-який внесок на моделювання води в 2D, проти досить великого (називаємо його) заблокованого / не заблокованого масиву (розглядається з боку). Я придумав такі ідеї:
Автомати клітини
Зробіть масове паралельне моделювання на процесорі, використовуючи мобільні автомати . З простими правилами, як:
- Якщо клітина відкрита донизу, перейдіть до неї.
- Перевірте ліву і праву комірки, виберіть випадкову з двох і перейдіть до неї.
Плюси
- Простий у виконанні.
- Значущий / детермінований у багатокористувацькій системі.
Мінуси
- Напевно, справді повільно.
- Не переконливо.
Fluid Dynamics на графічному процесорі
Виконайте грубе наближення динаміки рідини на графічному процесорі щодо такої текстури:
+------+-----+-----+-------+
|R |G |B |A |
+------+-----+-----+-------+
|vX |vY |NULL |Density|
+------+-----+-----+-------+
Плюси
- Напевно, дуже швидко.
- Може бути досить переконливим.
- Наступний піксельний шейдер міг би зробити його безпосередньо.
Мінуси
- Складно реалізувати.
- Складно налаштувати.
- Я не можу виділити одну текстуру за розміром мого рівня.
- Я міг би перекривати ділянки сітки, але це додало б додаткової складності.
Частинки
Використовуйте частинки для імітації води. Під час візуалізації використовуйте добавку для змішування, а потім застосуйте функцію множення до альфа-каналу, щоб надати води чіткі краї.
Плюси
- Напевно буде виглядати приємно.
- Легкий у виконанні.
- Легко відтворити.
- Має значення в мультиплеєрній системі, хоча для передачі знадобиться зовсім небагато пропускної здатності.
Мінуси
- Ефекти міжчастинок, ймовірно, будуть повільними (пошук поблизу).
- Це може призвести до «протікання» води через тверді простори (оскільки об'єм твердого простору невеликий, наприклад, 1 px).
- Це може призвести до дивних дірок у воді залежно від розміру частинок.
- Обидва вищесказані можна пом'якшити, дозволяючи частинкам плисти ближче один до одного, ніж їх реальна величина, однак це спричинить проблеми з роботою між частинками та частинками / ландшафтами.
Якісь подальші ідеї?
Примітка: Це наближення, я не шукаю тут фізично правильної води - просто щось, що "досить добре" (бонусні бали за швидку і брудну). Гра багатокористувацька, тому на жаль весь рівень потрібно моделювати постійно.