標籤:
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的雲渲染技術