Unity实现两种图片马赛克效果

引言

  需要在选中图片的局部区域时打上马赛克,网上常用的马赛克方式是像素化风格的马赛克,由于选中区域的像素颜色很相近,使用这种马赛克方法达不到需要的效果。最后使用另一种方法——黑白马赛克达到了想要的效果,本文将讲述这两种马赛克的区别。

内容

  主要内容:本文讲述的两种马赛克方式分为:黑白马赛克(实现了想要的效果)和像素化风格的马赛克。

黑白马赛克

// Shader的片元着色器代码
fixed4 frag (v2f i) : SV_Target
{
    uint normalizedU = i.uv.x * 99.0;
    uint normalizedV = i.uv.y * 99.0;
    if ((normalizedU + normalizedV) % 2 == 0)
    {
        return fixed4(0.8, 0.8, 0.8, 1.0);
    }
    else
    {
        return fixed4(0.5, 0.5, 0.5, 1.0);
    }
}

效果如下:
image

像素化风格的马赛克

// Shader的片元着色器代码
fixed4 frag (v2f i) : SV_Target
{
    float2 uv = i.uv * _MosaicSize;
    uv = floor(uv) / _MosaicSize;
    fixed4 col = tex2D(_MainTex, uv);
    UNITY_APPLY_FOG(i.fogCoord, col);
    return col;
}

效果如下:
image

image

使用方式:

  shader代码如上,只需用上面片元着色器代码替换原本的默认片元着色器代码即可。

小结

  黑白马赛克适用于遮挡原图的时候使用,像素化风格的马赛克适用于保留原图大致纹理的时候使用。当然,当这两种方式都不能满足实际需要时,需要想办法实现其他马赛克效果。

posted @ 2025-11-12 11:00  游侠某  阅读(20)  评论(0)    收藏  举报