程序中创建一个移动的云纹理

还是通过我们的Perlin Noise

1. 创建4个纹理,大小分别为256,256,256,256

2. 创建一个临时纹理,大小为32.

3. 向临时纹理中添加随机数,并将其压缩到0-255范围内(相对于D3DFMT_A8R8G8B8格式)

4. 分别使用1步中创建的纹理作为RenderTarget,将3中的纹理渲染到一个大小和RenderTarget相等的矩形上,注意纹理坐标每次在上一次的基础上乘以2。线性过滤,

  环绕模式。

5. 使用一个Shader将4张图合成,并添加动画,即将纹理坐标进行移动,高频率的比低频率的移动得快,高频率的比低频率的振幅大2倍。

6.使用pow(sharpness, c)是云更加蓬松,c为[0,255]

 

                                较小的噪音纹理尺寸

 

                                   较大的噪音纹理尺寸

本来是打算写Game Programming Gems5上的那种云光照渲染,但是始终没把算法搞明白,先把这个弄好在慢慢解决吧。

前面还有一篇,大家可以看看。介绍个网站:http://www.vterrain.org/ 这个网站不错,室外场景渲染,包括了各方面。有很多资源连接。

Reference:

http://freespace.virgin.net/hugo.elias/models/m_clouds.htm

 

下载:

/Files/ttthink/CloudRendering.rar 

 

posted @ 2009-10-28 16:04  ttthinks  阅读(540)  评论(0编辑  收藏  举报