Как я могу сделать эффект шейдера, который выглядит как слегка затененный рисунок карандаша?

Я хочу создать эффект шейдера с помощью OpenGL ES 2.0, который выглядит как это изображение:

слегка затененный рисунок карандаша

Я не уверен, было ли это изображение окрашено или это результат какого-то фильтра, но я хочу создать шейдер, который создает похожие изображения. Я хочу знать алгоритм Shader для создания такого вывода!

5 голосов | спросил Voda Ion 15 Jpm1000000pmTue, 15 Jan 2013 20:04:59 +040013 2013, 20:04:59

3 ответа


18

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

Пост-обработка по краям часто выполняется с помощью реализации фильтра Собела . Например, как показано здесь (CPU- сторонняя реализация). Эффект может быть достигнут и в шейдерах ( вот пример HLSL , который тривиально адаптируется).

ответил Josh 15 Jpm1000000pmTue, 15 Jan 2013 20:13:37 +040013 2013, 20:13:37
7

Чтобы завершить то, что сказал Джош, Матрица свертки - это то, что вы хотите:

Свертка в Gimp
Другая ссылка

Что вы, вероятно, ищете:
ядра свертки в OpenGL

ответил Sidar 16 Jam1000000amWed, 16 Jan 2013 00:14:05 +040013 2013, 00:14:05
1

Если вы не против иметь немного более дорогой шейдер (но он имеет такое же количество выборки текстур, как фильтр sobel), вы можете реализовать детектор края frei-chen.

Он обеспечивает более плавное изображение, чем фильтр sobel.

Отличная статья с примером реализации: http://rastergrid.com/blog/2011/01/frei- чен-кр-детектор /

ответил Notabene 2 FebruaryEurope/MoscowbSat, 02 Feb 2013 09:47:59 +0400000000amSat, 02 Feb 2013 09:47:59 +040013 2013, 09:47:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132