Вы можете использовать преобразование обратной связи для расчета физики частиц в вершинном шейдере и установление , если вы хотите использовать трехмерные снежинки. Точечные спрайты должны сделать рекламные щиты быстрее и использовать меньше памяти для хранения вершин. (Вам нужен только один на снежинку.)
Запуск системы частиц в вершинном шейдере сделает ее в несколько раз быстрее, в то время как математика практически не изменится.
Вы также можете использовать 3D-текстуру, чтобы компенсировать расчет демпфирования, чтобы иметь видимые турбулентности.
Если вы используете карту высот для земли, вы можете использовать эти данные для сброса снежинок, которые больше не видны.
Обратная связь и создание экземпляров преобразования описаны в OpenGL SuperBible (пятое издание) в главе 12, точечные спрайты - в главе 7. Исходный код для всех примеров доступен в Интернете. Пример кода для Mac OS X подходит только к главе 7, , но большая часть его должна работать.
Я не смог найти хороших онлайн-учебников, но код хорошо прокомментирован. Пример обратной связи с преобразованием называется «флокирование». Для симуляции снежинки одного вершинного шейдера должно быть достаточно как для обновления, так и для рендеринга частиц за один проход.
Если вам нужно много быстро движущегося снега, частицы воды из демонстрации каскадов Nvidia (начиная со страницы 114) демонстрируют интересный подход к подделке большого количества частиц.