Извините, если я сделаю этот звук немного упрощенным, я не уверен, сколько вы знаете о программировании на gfx или даже о том, какие методы вы используете (я бы сам сделал это с HLSL).
Способ, которым я бы подошел к этой проблеме, состоит в том, чтобы сгенерировать текстуру, которая содержит смещения координат x / y в каналах r / g. Тогда выходной цвет пикселя будет:
Ввод текстуры изображения
Искажение текстурыКарта
color (x, y) = inputImage (x + distortionMap (x, y) .R, y + distortionMap (x, y) .G)
(По правде говоря, это не совсем правильно, использование цветов в качестве смещений напрямую означает, что вы можете представлять только положительные векторы, достаточно просто вычесть 0,5, чтобы можно было представить отрицательные векторы)
Теперь единственная проблема, которая остается, состоит в том, как сгенерировать эту карту искажения, что является совершенно другим вопросом (любое изображение может вызвать искажение какого-либо рода, очевидно, что работа над правильным эффектом измельчения довольно сложна, и я оставлю это кому-то более квалифицированному).