稻草人的麦田

图形技术
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

[导入]水彩化

Posted on 2007-10-17 17:33  稻草人的麦田  阅读(182)  评论(0编辑  收藏  举报

搞了半天才理解水彩化的概念,就是增大图像的色块大小,这叫色块化。颜色周围跑出一些杂色,这就是扩张。制作的过程还需要一个随机噪声图片。我用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