Begin ray marching in unreal engine 4【第五卷:使用偽3D體紋理渲染雲】
來自專欄 虛幻4渲染編程
專欄目錄:
小IVan:專題概述及目錄按照慣例默默膜拜ryan大佬三分鐘。
下面還是先上效果吧(3Dexture)
https://www.zhihu.com/video/983450198164529152
是個非常簡單的體積雲渲染(大佬請直接右上關閉瀏覽器)。
前面一節已經總結了,體渲染現在就大致三種,spherehit快速查找表面,segmenthit對光線方向積分濃度,還有一種就是raytracing。我們要渲染煙霧這種東西的時候,需要對光纖方向進行濃度積分。
煙霧渲染還可以分兩種,一種是使用3Dtexture還有一種是使用公式構建的方式。兩種方式其實都可以渲染出不錯效果的體積煙霧或體積雲。
下面是我拿公式計算的,上面那個視頻是3Dtexture計算的。
可以看到其實都可以得到不錯的效果。兩種方法的主要區別就是距離場的構建方法。剩下的渲染部分的幾乎是一致的。
下面是偽3Dtexture的方法,公式計算的我就不介紹了。
可以看到距離場的獲取方式是采一張偽3Dtexture。
這張偽3Dtexture長這樣。因為虛幻不支持3Dtexture所以這裡使用一張2D的序列貼圖,然後把這張序列貼圖疊成一個體紋理狀,如下圖所示:
這種假3Dtexture的sample函數:
可以看到消除堆疊鋸齒的方法是使用插值:
需要sample一張貼圖,在2D情況下是使用UV坐標,三維體素紋理自然需要一個3D的參數來sample一個3Dtexture,把它叫做UVW吧。因為我們的體素紋理是一個方塊,所以我們用一個3D單位cube來模擬它的UVW。我們獲取這個渲染物體的boundingbox然後把它變成一個單位cube。
虛幻中可以通過這個節點拿到這個UVW坐標
攝像機要轉換到local空間
Enjoy It !
OpenDay見到了虛幻創始人和zak
看了zak 四年教程,他的聲音早已非常熟悉,想想以前拿zak的教程當MP3聽來練習英語聽力的經歷,感覺胸前的紅領巾鮮艷了許多呢。希望有一天能成為他那麼強的TA,Ryan大神沒來有點小失落。
推薦閱讀: