3-х пиксельный шейдер WPF или Silverlight для эффекта зернистости - PullRequest
2 голосов
/ 20 мая 2009

Кто-нибудь может порекомендовать алгоритм для пиксельного шейдера HLSL (для WPF или Silverlight 3), чтобы сделать эффект зернистости? Вот несколько примеров: http://www.nolinovak.com/, http://sprouls.com/

Ответы [ 2 ]

1 голос
/ 20 мая 2009
0 голосов
/ 16 июня 2009

Ответ ближе, чем вы думаете. Пишите по электронной почте Хьюгу Хоппе (http://hhoppe.com), как он привык к текстурированию штриховой поверхности. Его объяснения и предложения будут более сложными, чем вы хотите, но он знает, как.

Для значительного зернистости, вероятно, требуется преобладающее трехмерное «направление» поверхности в каждой точке (градиент?), Которое может выходить за пределы ограничений ваших моделей шейдеров (двухпроходный рендеринг и несколько целей рендеринга, или большая вершина пикселя). структура данных). Наивная первая версия будет переводить значение серого каждого пикселя в вероятность того, что пиксель будет черным или белым. Это даст вам 1-пиксельные точки, а это не то, что вам нужно.

Вы можете попробовать использовать значение градаций серого в качестве размера стека (Z) в 3D-структуре с наложением, где каждая текстура (X, Y) представляет собой нарисованный от руки случайный вид рисунка с однородной плотностью. Границы между уровнями темноты будут выглядеть странно, но попробуйте выбрать ближайшую точку и линейную выборку для измерения стека.

Я не пишу код для вас ... по крайней мере, не бесплатно.

...