搞了半天才理解水彩化的概念,就是增大图像的色块大小,这叫色块化。颜色周围跑出一些杂色,这就是扩张。制作的过程还需要一个随机噪声图片。我用photoshop的颗粒做了一个噪声图,还加了些杂色。
如下:
然后在读取原先的材质坐标时根据这张图作为噪声进行偏移。根据偏移后的位置采样显示。再降低区块的大小即可。
处理后的图如下:
全部代码如下:
float _quatLevel =6; //量化的bit数 ,取值2-6比较适合
float _waterPower =10; //表示扩展力度,单位为象素
float4 quant(float4 _cl , float n)
{
_cl.x = int(_cl.x * 255 / n) * n /255;
_cl.y = int(_cl.y * 255 / n) * n /255;
_cl.z = int(_cl.z * 255 / n) * n /255;
return _cl;
}
//-----------------------------------
float4 PS_Textured( vertexOutput IN): COLOR
{
//取得随机数,对纹理坐标进行扰动,形成扩散效果
float4 noiseColor = _waterPower * tex2D(TextureSampler2 , IN.texCoordDiffuse);
float2 newUV = float2(IN.texCoordDiffuse.x + noiseColor.x / 256 ,
IN.texCoordDiffuse.y + noiseColor.y / 256);
float4 _fColor = tex2D(TextureSampler , newUV);
//量化图像的颜色值,形成色块
return quant(_fColor , 255/pow(2, _quatLevel) );
}
文章来源:http://songxiaoyu8.blog.163.com/blog/static/20818128200791753242406