均值模糊
// 均值模糊
// float2 UV UV
// TextureObject Texture 纹理对象
// float2 TexSize 图片大小,比如float2(512,512)
// float2 BlurCore 模糊大小,比如float2(5,5)
int2 UVOfferBegin = ceil(BlurCore / -2);
float3 OutColor={0.0, 0.0, 0.0};
for(int i = 0; i < BlurCore.y; i++)
for(int j = 0; j < BlurCore.x; j++) {
OutColor += Texture2DSample(Texture, TextureSampler, UV + float2((UVOfferBegin.x + j) / TexSize.x, (UVOfferBegin.y + i) / TexSize.y));
}
return float4(OutColor / BlurCore.x / BlurCore.y, 1.0f);5x5高斯模糊
// 5x5高斯模糊
// float2 UV 贴图UV
// TextureObject Texture 纹理对象
// float2 TexSize 图片大小,比如float2(512,512)
int UVOfferset[] = {-2, -1, 0, 1, 2};
float Weights[] =
{
0.0036,0.0146,0.0256,0.0146,0.0036,
0.0146,0.0586,0.0952,0.0586,0.0146,
0.0256,0.0952,0.1501,0.0952,0.0256,
0.0146,0.0586,0.0952,0.0586,0.0146,
0.0036,0.0146,0.0256,0.0146,0.0036
};
float3 OutColor = {0.0, 0.0, 0.0};
for(int i = 0; i < 5; i++)
for(int j = 0; j < 5; j++)
OutColor += Weights[i * 5 + j] * Texture2DSample(Texture, TextureSampler, UV + float2(UVOfferset[j] / TexSize.x, UVOfferset[i] / TexSize.y));
return float4(OutColor, 1.0f);