Лично я не знаю, как именно реализовать эти эффекты, но вы могли бы взглянуть на Gimp, который является открытым исходным кодом, и вытащить то, что вам нужно (с уважением к их лицензии, конечно).В общем, эти виды эффектов изображения просто преобразуются из одного набора координат в другой.Таким образом, для каждой позиции пикселя в изображении dest выполните его через преобразование, которое сопоставляется с другой координатой, выберите образец из исходного изображения и выведите пиксель в dest.
Если вы хотите сделать это в реальном времениОдин из методов, который вы могли бы использовать, это нанести текстуру на карту на сетку с высоким разрешением.Для эффекта закрутки можно сделать, вращая вершины вокруг центральной точки, с углом, который обратно пропорционален расстоянию от центральной точки.На самом деле, это отлично подходит для широкого спектра эффектов.Вы можете добиться этого с помощью OpenGL или XNA, если вы используете платформу Microsoft, отличную от OpenGL.