Эффект деформации OpenGL со слишком малым количеством полигонов

Я работаю над небольшой 2D-игрой, в которой мои волшебники произносят заклинание. Я хочу создать эффект, при котором мир искажается, как будто заклинание изгибает Свет так же, как горячий воздух вокруг огня. Прямо сейчас у меня есть вершинный шейдер, искажающий точки прямоугольников, которые я использую для рисования мира. Есть две проблемы. Во-первых, в моей простой 2d-игре не хватает полигонов, чтобы это работало без нареканий. Во-вторых, мой ландшафт состоит из гексагональных тайлов, как гексагональная сетка. Поскольку прямоугольные многоугольники с 4 точками не представляют собой место соединения 6 точек гексагональной сетки, искривление многоугольников приводит к тому, что мир распадается на части, и внизу появляются пробелы. Теперь я могу изменить мир, чтобы использовать шестигранные полигоны с 6 точками вместо прямоугольников с шестигранными текстурами, но это выходит за рамки.

Можно ли будет отрендерить мой мир где-нибудь за кадром, затем взять закадровый кадр в виде текстуры, а затем снова отрендерить его с большим количеством полигонов? В этот момент я бы использовал свой вершинный шейдер деформации.

Также есть ли другой способ сделать это?


person SpecialEd    schedule 24.10.2017    source источник


Ответы (1)


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

Руководство по рендерингу в текстуру http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-14-render-to-texture/

Огонь делает преломление, но я бы узнал из кода об этом завихрении и изменил его, чтобы экран больше походил на то, как вы этого хотите. Сделать преломление немного сложнее, но вы можете подражать ему с идеями, изложенными здесь, и манипулируя тем, как вы сэмплируете uv с шумом.

http://www.geeks3d.com/20110428/shader-library-swirl-post-processing-filter-in-glsl/

Это должно направить вас в правильном направлении.

person Chase R Lewis    schedule 24.10.2017
comment
Спасибо за ответ, я изучу приведенные ссылки и обновлю ответ, когда у меня будет возможность попробовать это. К сожалению, это всего лишь личный проект, поэтому я не уверен, когда у меня будет возможность попробовать его. - person SpecialEd; 26.10.2017