siggraph15上,advances in real-time rendering in games courses的一篇(http://advances.realtimerendering.com/s2015/index.html).
由killzone的开发商guerrila带来,guerrila一直作为ps平台上的,甚至业界图形技术的开拓者,这次出品的horizon dawn zero,概念和效果非常吸引人:
这个presentation里面,他们讲的是云的渲染。
在做云的时候,guerrila开始使用真实的照片作为参照来努力(这也是这一代console上面的标准做法了):
那么在入手研究实现的时候,就会偏向于physicallly based,研究其中的真实物理特点是必经的一步。
modeling
目前的通常做法是使用FBM(fractal brownian motion),也就是多层的,每层不同频率,perlin noise,然后结合ray marching来生成云,这种云也不错:
但是如果想做这样的,就需要额外一些工作:
可以看到图中的云在形状上更加的真实和明显,表面充满了细节,最后guerrila使用的办法是voxel+ray marching和前面提到的FBM并没有本质的不同,但是在modeling的细节上确有一手,使用了2个3d texture,1个2d texture,
第一个3d texture里面放的是perlin noise和worley noise的结合体
perlin noise大家都熟悉了,worley noise是steven worley在1996年提出的,一般用于做caustics(焦散)效果的,worley noise以及和perlin noise结合之后是这样的:
分辨率是128x128,4个channel存放的perlin-worley不同频率的noise。
它用于定义云的大体形状。
第二个3d texture,32x32,3 channel,放不同频率的worley noise。
用于定义云的表面细节。
一个2d texture,128x128,放不同频率的curl noise(可以用于procedural fluid flow的一种noise),用于扭曲云的形状,以及加上一些turbulence的感觉。
局部的云定义好了之后,天气系统还有回一个大的coverage map来定义那里有云那里没有:
Lighting
光照部分,对云的建模,需要考虑到这些因素:
- 作为透明介质--使用beer law
- 云的散射不是均匀地,有更大的几率来向前散射,所以要加一个heney-greenstein function来矫正
- 云的内层比表面更容易受到散射影响,作者称这个为powder effect
都结合到一起:
版权声明:本文为博主原创文章,未经博主允许不得转载。