Render water-paint в iOS

Я работаю с OpenGL в iOS и устанавливаю цвета с помощью glColor4f(r,g,b,a), а затем рисую собственный цвет на белом UIImageView. У меня в основном есть кисть, которая затем перемещается вокруг моего касания пользователя, а затем она окрашивает цвет на холст. Но этот цвет должен быть водяной краской (например, пятнистый цвет)

Кто-нибудь понимает/знает, как получить водяной цвет, как это делает приложение, и как фон UIImageView имеет текстуру на нем?

https://itunes.apple.com/us/app/hello-watercolor/id539414526?mt=8

или выпить водяную краску. http://www.fiftythree.com/paper

Я создал щедрость на этом, так как мне действительно трудно понять, как вывести такие плавные цвета из обычных цветов. Даже если вы, ребята, указываете мне в правильном направлении или на какой-то примерный код о том, как я могу получить эффект water-paint, было бы очень полезно ^ _ ^

И в качестве бонуса было бы также полезно, если бы вы могли указать мне, как получить холст, на котором он нарисован, выглядит реалистично и смешивается с краской? Имеет ли Blending/GLSL какое-либо из этого?

Есть ли какой-нибудь пример проекта?

Ответ 1

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

http://www.zoepiel.com/tutorials/watercolor/ показывает некоторые очень эффективные трюки для создания акварельных изображений с помощью простых инструментов.

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

Каждый слой остается "мокрым" в том смысле, что цвета внутри него смешиваются, но слои "сухие" относительно друг друга.

Она также объясняет некоторые настройки ее кисти и размытия и показывает, что они делают.

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

Ответ 2

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