在WPF中,OuterGlowBitmapEffect不再被Net4.0支持或渲染。 DropShadow有一点共同点,在我的情况下是不可接受的。我最初的目标是在AeroGlass窗口上为黑色ClearType文本制作一个白色模糊的背景,以便在黑暗场景中使其更易读。我开始玩fx和HLSL。这是相当有趣和强大的,但我仍然无法接近OuterGlowBitmapEffect。如何使用HLSL制作外发光效果?
反映的想法我当前的虚拟版本:
sampler2D Sampler : register(S0);
#define PI 3.14f
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 px = tex2D(Sampler, uv);
/*
if (px.a > 0.9)
{
return px;
}
*/
const float d = 3;
int cnt = 0;
float a = 0;
for (float x = -0.1*d; x < 0.1*d; x += 0.05*d)
{
a += tex2D(Sampler, uv + float2(x, 0)).a;
a += tex2D(Sampler, uv + float2(0, x)).a;
a += tex2D(Sampler, uv + x).a;
cnt += 3;
}
a /= cnt;
float4 s = a;
float4 r = float4(px.rgb*px.a + s.rgb*(1-px.a), max(px.a, a));
return r;
}
BTW:我可以得到一个HLSL源DropShadowEffect使用它作为一个参考?有人可以用任何语言指向我的OuterGlowEffect算法吗?
注意:Windows 7 Aero Glass标题栏具有使标题更具可读性的效果!这正是我想要在窗口的其他部分(DwmExtendFrameIntoClientArea应用)我的文本
听起来不错!但是对于WPF BitmapEffect来说,多通道着色器通常是不可能的:(有一些提示和说明:http://www.codeproject.com/Articles/71617/Getting-Started-with-Shader-Effects-in-WPF 现在性能不是问题,因为有少量的文本和少量的位图来渲染,如果你能帮助创建一个单通道函数来渲染具有背景模糊的文本,那将是非常好的。 –
你没有创建一个多通道着色器,你要做的是: 1.用'PS_BlurHorizontal'模糊原始图像, 2.用'PS_BlurVertical'模糊上一步的结果 如果你需要一次通过,看看这个:http://code.google.com/p/sbip/source/browse/trunk/SBIPFramework/Resources/GaussianBlur.fx?r=76 – miloszmaki