3d HLSL中的斜面效应

3d HLSL中的斜面效应,3d,xna,directx,pixel-shader,3d,Xna,Directx,Pixel Shader,我正在尝试在HLSL中制作一个类似photoshop的斜面效果。 最难的部分是找到一个点到最近边的距离(其中alpha=0) 有人知道怎么做吗 最佳, SW您可以尝试基于采样的方法。在“像素着色器”(pixel shader)(针对每个像素)中,需要对半径等于倒角半径的圆中的像素进行采样。如果当前像素点亮(alpha=1),则可以获取到未点亮采样的最小距离(alpha=0)并计算衰减因子:因子=最小距离/倒角半径。然后你可以根据这个因子计算一些渐变颜色。花了一些时间,但我找到了一个解决方案。正确

我正在尝试在HLSL中制作一个类似photoshop的斜面效果。
最难的部分是找到一个点到最近边的距离(其中alpha=0)
有人知道怎么做吗

最佳,

SW

您可以尝试基于采样的方法。在“像素着色器”(pixel shader)(针对每个像素)中,需要对半径等于倒角半径的圆中的像素进行采样。如果当前像素点亮(alpha=1),则可以获取到未点亮采样的最小距离(alpha=0)并计算衰减因子:
因子=最小距离/倒角半径
。然后你可以根据这个因子计算一些渐变颜色。

花了一些时间,但我找到了一个解决方案。正确的方法是使用多通滤波器。第一遍a着色器水平模糊图像,第二遍垂直模糊图像,第三遍使用前两遍生成的alpha通道中的渐变渲染斜面。

要在三角形网格或某个2D图片片段上执行此效果吗?我有带alpha的2D纹理,然后在HLSL中实现这一点的唯一方法是对每个像素周围的alpha值采样到一个固定的距离(可能是斜面半径)。但这可能效率太低(除非半径很小)。alpha值一致吗?我的意思是:它们是形成有边缘的形状还是随机的?阿尔法形状是平滑的,但它可以是任何形状。圆形、长方形或章鱼形。如果你觉得这确实是正确答案,即使这是你的答案,你也可以接受。:)