Я реализую простой эффект молнии для своей 3D-игры, что-то вроде этого:
http://www.krazydad.com/bestiary/bestiary_lightning.html
Я использую opengl ES 2.0.Я размышляю над тем, какой самый лучший и эффективный способ визуализации этого в трехмерной среде, так как линии, составляющие электрический болт, должны выглядеть «сплошными» при взгляде под любым углом.
Я думал создать две плоскости для каждого отрезка линии в крестообразном направлении Х, чтобы создать эффект толщины линии.Рендеринг с отключением записи в буфер глубины, с использованием какого-либо режима аддитивного смешивания.Текстурирование каждого отрезка линии с использованием электрической текстуры с альфа-каналом.
Я немного беспокоюсь о снижении производительности при создании необходимых списков треугольников с использованием этого метода, поскольку моя игра потенциально может иметь многомолния генерируется одновременно.Но так как длина и толщина молнии сильно различаются, я сомневаюсь, что было бы неплохо просто использовать анимированный 3D-объект молнии, растянутый и указывающий в нужное место, что и было моей первоначальной идеей.
Я думал об альтернативном подходе, в котором я отрисовываю молнии, используя 2D линии между спроецированными конечными точками в проходе постобработки.Это должно работать хорошо, так как эффект перспективы в моем случае незначителен, за исключением того, что было бы сложно, чтобы линии появлялись за окклюзирующими объектами.
Есть какие-нибудь хорошие идеи по поводу лучшего подхода здесь?
Изменить: я нашел эту белую бумагу от nVidia:
http://developer.download.nvidia.com/SDK/10/direct3d/Source/Lightning/doc/lightning_doc.pdf
, которая использует подход с наличием рекламных щитов для каждого сегмента линии, а затем применить некоторую фильтрацию, чтобы сгладить результирующие пробелы и перекрытия от каждогоbillboard.
Кажется, он дает довольно хорошие визуальные результаты, однако я не слишком рад дополнительному проходу фильтрации, поскольку игра предназначена для мобильных телефонов, где такой шаг довольно дорог.И, как выясняется, билбординг также довольно дорогой процессор из-за дополнительных затрат на вычисление матриц, что является медленным на мобильных устройствах.