Skip to content

Instantly share code, notes, and snippets.

@CoderJackLiu
Last active June 14, 2022 09:27
Show Gist options
  • Save CoderJackLiu/5c4c9cc3b4bcf69a1db3e63668e8881e to your computer and use it in GitHub Desktop.
Save CoderJackLiu/5c4c9cc3b4bcf69a1db3e63668e8881e to your computer and use it in GitHub Desktop.
Blender:FeatherY
//思路
//1.0 当前像素Alpha值>0
//2.0 横向羽化;
//2.1 做好uv范围限制
//参数需要
//1.羽化像素个数;
//2.图片像素
//图片尺寸
float2 TexSize=0;
Tex.GetDimensions(TexSize.x, TexSize.y);
//临界Alpha
float InEdgeAlpha=clamp(EdgeAlpha,0,1);
//
float CurrentAlpha=Texture2DSample(Tex,TexSampler,uv).r;
//最终Alpha
float EndAlpha=CurrentAlpha;
//启示UV值
float2 StartUV=float2(uv.x,clamp(uv.y-PixelSize/TexSize.y,0,1));
//当前ALpha如果小于边缘alpha,则返回初始值,不做变化
if (CurrentAlpha<=InEdgeAlpha)
{
return CurrentAlpha;
}
if (PixelSize<1)
{
return CurrentAlpha;
}
EndAlpha=CurrentAlpha;
[unroll(17)]for (int i = 1; i < 2*PixelSize+1; i++)
{
float2 NewUV=float2(uv.x,clamp(StartUV.y+i/TexSize.y,0,1));
EndAlpha+=Texture2DSample(Tex,TexSampler,NewUV).r;
}
EndAlpha/=(2*PixelSize+1);
return EndAlpha;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment