码迷,mamicode.com
首页 > 其他好文 > 详细

[sig15]HorizonZeroDawn的云渲染技术

时间:2015-10-01 10:24:40      阅读:760      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

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
都结合到一起:
技术分享


版权声明:本文为博主原创文章,未经博主允许不得转载。

[sig15]HorizonZeroDawn的云渲染技术

标签:

原文地址:http://blog.csdn.net/toughbro/article/details/48844649

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!