版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mansir123/article/details/78665613
模糊的原理:像周围的借取颜色,放到本像素。不同的模糊效果是采用不同的去颜色位置和算法。径向模糊原理是沿着某方向取颜色,而扇形径向则是沿着扇形的切线方向取色。
sampler2D RT : register(s0);
///////////////////////////////////入口函数
float4 Distortion_ps(//in float4 pos : POSITION,
float2 iTexCoord : TEXCOORD0,
) : COLOR
{
float4 co=float4(0);
///////径向模糊
float2 dir=float2(0.5,0)-iTexCoord;
float dist=length(dir);
dir/=dist;
float3 dirDot=cross(float3(0.5,0,1),float3(dir.x,dir.y,0));
//normalize(dirDot);
dir=float2(dirDot.x,dirDot.y);
dir=dir/(length(dir));
dir*=0.35*dist;//模糊程度与距离中心的长度相关
float4 sum =float4(0);
sum= tex2D(RT, iTexCoord);
sum +=tex2D(RT, iTexCoord - dir*0.01)*0.8;
sum += tex2D(RT, iTexCoord - dir*0.02)*0.6;
sum += tex2D(RT, iTexCoord - dir*0.03)*0.5;
sum += tex2D(RT, iTexCoord - dir*0.04)*0.3;
sum += tex2D(RT, iTexCoord - dir*0.05)*0.1;
sum += tex2D(RT, iTexCoord + dir*0.01)*0.8;
sum += tex2D(RT, iTexCoord + dir*0.02)*0.6;
sum += tex2D(RT, iTexCoord + dir*0.03)*0.5;
sum += tex2D(RT, iTexCoord + dir*0.04)*0.3;
sum += tex2D(RT, iTexCoord + dir*0.05)*0.1;
sum /= 5.6;
co=sum;
co.a=1;
return co;
}