2012-05-16 42 views
2

我正试图在HLSL中制作类似于Photoshop的斜角效果。
困难的部分是找到距离最近边缘点(其中alpha = 0)的距离
任何人有任何想法如何做到这一点?HLSL中的斜角效果

最佳,
SW

+0

你想对三角形网格或某个2D图片的片段做这个效果吗? – miloszmaki

+0

我有与阿尔法的2D纹理,我正在渲染他们完全在一个四。 –

+0

然后在HLSL中这样做的唯一方法是将每个像素周围的alpha值采样到固定距离(可能是斜角半径)。尽管这可能效率太低(除非半径很小)。 – miloszmaki

回答

0

你可以尝试基于采样的方法。在像素着色器(对于每个像素)中,您需要对半径等于斜角半径的圆中的像素进行采样。如果当前像素点亮(alpha = 1),那么您可以取最小距离作为未点亮样本(alpha = 0)并计算衰落因子:factor = min_dist/bevel_radius。然后你可以根据这个因子计算出一些渐变色。

2

它花了一段时间,但我找出了一个解决方案。正确的方法是使用多通滤波器。第一次通过着色器水平模糊图像,第二次通过垂直,第三次通过使用前两次产生的alpha通道中的渐变渲染斜角。

+0

如果你认为这确实是正确的答案,即使认为它是你的答案,你也可以接受它。 :) –