2012-05-16 2 views
2

Я пытаюсь сделать эффект кисти, подобный фотошопу, в HLSL.
Жесткая часть находится на расстоянии точки от ближайшего края (где alpha = 0)
У кого-нибудь есть идеи, как это сделать?Эффект скоса в HLSL

Бест,
SW

+0

Вы хотите сделать это на треугольной сетке или на фрагменте какого-либо 2D-изображения? – miloszmaki

+0

У меня есть 2D-текстуры с Alpha, и я полностью их рисую на квад. –

+0

Тогда единственным способом сделать это в HLSL является выборка альфа-значений вокруг каждого пикселя на фиксированное расстояние (возможно, радиус скоса). Это может быть слишком неэффективным, хотя (если радиус невелик). – miloszmaki

ответ

0

Вы можете попробовать выборочный метод на основе. В пиксельном шейдере (для каждого пикселя) вам нужно пробовать пиксели в круге с радиусом, равным радиусу скоса. Если текущий пиксель горит (альфа = 1), вы можете взять минимальное расстояние для снятия сэмплов (альфа = 0) и вычислить коэффициент замирания: factor = min_dist/bevel_radius. Затем вы можете рассчитать некоторый градиентный цвет, основанный на этом коэффициенте.

2

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

+0

Если вы чувствуете, что это действительно правильный ответ, вы можете принять его, даже подумав, что это ваш ответ. :) –

Смежные вопросы