Создание движков частиц в вершинных шейдерах

Хорошо, вы знали, что кто-то должен был создать их! На самом деле существует способ создать движок частиц, который бы полностью выполнялся внутри вершинного шейдера. Вы можете найти этот вершинный шейдер на сайте Nvidia http://developer.nvidia.com/view.asp?IO=Particle_System.

В основе работы этого вершинного шейдера лежит то, что вы определяете структуру вершин, содержащую скорость частицы; используя эту скорость, вы определяете, на сколько переместить частицу, основываясь на прошедшем времени. Для визуализации частицы используются точечные спрайты, т. е. вы можете представить каждую частицу одной вершиной (находящейся в буфере вершин).

Я не хочу изобретать колесо, но при помощи информации, полученной в этой главе, вы должны понять, что происходит в вершинном шейдере частиц. Для каждой частицы, которую получает для визуализации шейдер (точечный спрайт), вычисляются положение, цвет и размер. Эти вычисления основываются на переменной прошедшего времени, устанавливаемой через константы шейдера. Вы уже видели, как перемещать частицы, основываясь на их скорости - это простое умножение вектора скорости на величину прошедшего времени. То же самое происходит для цвета и размера - они вычисляются умножением соответствующих величин на количество прошедшего времени.

Посмотрите демонстрационные программы

На компакт-диске этой книги вы обнаружите три проекта, которые я создал для иллюстрации управления частицами. Эти проекты содержат код для добавления, удаления, визуализации частиц разнообразных типов, который вы можете использовать в собственных проектах для получения привлекательных эффектов частиц.

Результат выполнения всех трех программ одинаков (см. рис 12.8). Вертолет пролетает над лесом и группой людей. В этой демонстрационной программе используются частицы: пучки дыма, выдуваемые с земли перед вертолетом, деревья и люди. На самом деле используются три различных типа деревьев и два типа людей. Излучатель частиц имеет несколько дополнительных функций, которые добавляют частицы дыма и изменяют внешний вид людей во время выполнения демонстрационной программы. Как только вертолет пролетает над человеком, частица, представляющая человека, меняет свой тип. Когда вертолет отлетает отчеловека, частица опять меняется на другую. Посмотрите демонстрационную программу, чтобы понять, что я имею ввиду.

Как вы можете видеть, использование частиц зависит от проекта. То, что подходит для одного проекта, может не сработать для другого. По этой причине в этой главе было дано не так много, за исключением основной теории и основных знаний. Небольшое пожелание: убедитесь, что посмотрели демонстрационные программы, содержащиеся на компакт-диске.

Рис. 12.8. Apache пикирует над головами любителей деревьев

Программы на компакт диске

В директории главы 12 компакт-диска книги, вы обнаружите три проекта, которые иллюстрируют использование трех методов рисования частиц, показанных в этой главе. Этими проектами являются:

• Particles. Этот проект иллюстрирует рисование частиц, использующих квадраты, основанное на первой рассмотренной в этой главе технологии. Он расположен в \BookCode\Chap12\Particles.

• ParticlesPS. Этот проект иллюстрирует использование точечных спрайтов для рисования частиц. Он расположен в \BookCode\Chap12\ParticlesPS.

• ParticlesVS. Этот последний проект иллюстрирует использование вершинного шейдера для визуализации частиц. Он расположен в \BookCode\Chap12\ParticlesVS.

Создание движков частиц в вершинных шейдерах

Глава 13

Имитирование одежды и анимация мешей мягких тел

Анимация в ваших проектах не должна быть такой жесткой и предопределенной. Персонажи, встречающиеся в игре (вы знаете, о чем я говорю), должны выглядеть более реалистично. Их одежда такая жесткая, их тела такие твердые. Что программисту делать с этими проблемами? Как их устранить?

Я скажу, что вам нужно - анимация одежды и мешей мягких тел! Дайте вашим персонажам реалистичную одежду, которая облегает их тела и развевается на ветру, или пышные волосы, развевающиеся во время бега за новой добычей. Позвольте вашим персонажам принимать удар за ударом противника, заставляя их тела сгибаться, а потом распрямляться вновь. Правильно, вы можете использовать реалистичную одежду и меши мягких тел. Все, что вам нужно, находится в этой главе!

В этой главе вы научитесь:

Работать с имитацией одежды и мешей мягких тел;

• Создавать одежду и меши мягких тел при помощи точек, масс и пружин;

• Накладывать силы и столкновения;

• Интегрировать движение во времени;

• Деформировать и восстанавливать форму мешей мягких тел;

• Создавать классы управления одеждой и мешами мягких тел.

Использование излучателей в проектах || Оглавление || Имитация одежды в ваших проектах