地平線:黎明時分中的雲渲染技術
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/781eb99d5a1ea9a5a2458600f50b551b013e6a363d77ccf7508fb55f61a2f3f1.jpg)
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/eb99d9a95b7cda0686d45d8377f76d40c0fe7f6fec2446354efdfc337cc8748b.jpg)
最簡單的辦法是採用raymarching,噪聲可以簡單的採用fbm,但是程式感嚴重
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/db288c9c76afa658a3965b57b5420fba27994c2a47a74cb13ce4bf45053133a7.jpg)
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/a7f54a0cad0d786ee5cca3b93c05c0a473f0fedf846bab5be297e167ed0c41d6.jpg)
兩種噪聲疊加,Perlin-Worley noise,連續感減弱不少
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/04f92632697f73cc0da7f850fa4b9c0f5f95075c7555ad21a8274b0467820fa9.jpg)
一張基礎的3d紋理,控制大體形狀,一個通道存Perlin - Worley noise,其他三個存不同頻率的Worley noise
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/c202ea8336c3d3e95f2b730b66c97b350df9c39a2add72b637b973bf22e98ae5.jpg)
一張細節3d紋理,不同頻率的Worley noise
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/f3cdb6732a24db0176e1e679ff7e0e0441c421f9f5a015a914ea0144d9fd6bb0.jpg)
一張2d紋理,curl noise,一般用於流體模擬,可以對雲進行distort,增加湍流感
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/639318e861b0803da8e9dcfc6242c08c865b9875fe9d6e275eba6ba404060a22.jpg)
在高度上使用紋理控制密度,可以表現層雲,積雲,積雨雲
此外,在高度上整體設定一個0-1的漸變,因為低空沒雲
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/48f039dd69dbae58ba5651bb788499a7893d1642d54c375849ee36f61d1e4e0d.jpg)
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/3dbbba3e304cc85c5cb475027a26eeb62c174b36b27131ae12af267c2b80817e.jpg)
在雲的邊界處減去第二個3d紋理,能夠得到侵蝕效果
小貼士,如果你把基礎雲層的Worley noise倒置,會得到一些不錯的形狀。
使用2d紋理去distort第二個3d紋理,可以模擬大氣湍流造成的旋渦扭曲
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/573ab866270f957d4880c87e72ba7bcca9079faf4ec833a3de3204ddf144e40e.jpg)
用一張圖去整體上控制雲層,能夠模擬不同天氣下的表現,r通道表示密度,g通道表示降雨量,b為雲形。天氣系統通過在遊戲過程中進行的模擬來調節這些通道。積雨雲直接在頭頂(白色),遠處是規則的積雲。我們可以讓藝術家去控制這些模擬。
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/262ee2c9a4a88e3767536264cf1a4c071b1415cd0851b7112a7017b6559c30af.jpg)
預設天氣是積雲和層雲的組合。大部分是層雲。
降水量達到0.7將會產生積雲。
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/d798fe8fc4f27f950e71e8a87daee04cc24f46685445f9a0d10a11c97638d2a2.jpg)
使用天氣系統來確保地平線上的雲層總是有趣的,並在山上分開。
從15000米的距離開始…在玩家周圍35000米半徑範圍內繪製雲景
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/f9a150915863a635c014abd1d4eca20884b3fba3a353827d8301fa48ef570e35.jpg)
渲染採用Beer’s law
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/e34cfe3e448b5f576345de35910f9dca85945da2773fd2c43efc744f507b957b.jpg)
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/b7a526a153ea76e16ebbbd3f73eb0b8d4e66f80a8cd103acca74b19625fa966e.jpg)
前向散射機率更大,使用henyey greenstein function來矯正
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/f7bc9886fbb8967f03219561efd9b85aeecc684d37bbeb81c7008f991227738b.jpg)
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/e8db39fb843c0a0536e469566a1f254ceee8ecd25ed306d6327e02fe34b1220e.jpg)
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/31f3859c3302b60e421a1e4020acf49d7ad66eb3913a906690264dfb56ee5fc3.jpg)
此外,雲層厚的地方in-scattered light更多,導致邊緣會暗一些
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/a580d9e835bd0440fd46099b1c710b57bcfdb0c82442c3bf2a426b2b5be3b5b7.jpg)
加入powder函式,兩個公式疊加去模擬這個效果
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/d5de89667e74e5cff4b6ebb06a1a792c5e32d44398132af1af173ac2da9b2086.jpg)
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/578f244de507e70fbb5ac9e23519cee8b7cf5b8322bb40fc6f43723eb8e54c0e.jpg)
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/0ed7417a37d5b1f978af3a6158d477a929c02f1fa9018fe2df47fe26a1133ef2.jpg)
注意這個效果和方向光方向及視角方向有關
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/54f87f86f3b3cf964f87270dd7cea2422126c1381b8edacfb09b323da547395b.jpg)
在有雨的地方增加光吸收率,來使其變暗
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/c42c817ce29e67482638cce928dec28a7364132e364b56c73eae0473690a14f8.jpg)
最終公式
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/20d441cefb081dd392941acf8bc1cbbe9cc4681eff8839920ab4b068f374d578.jpg)
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/a79472c323e98ae38f2f3a1767f14b18fa9debfd2524390d20c2c870dbfded17.jpg)
地球是圓的,所以遠處地平線會和雲接在一起
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/e578fd851449e5f519568c2f11decc0429421b6d55649adf9f9364108824866f.jpg)
1500米到4000米之間是體積雲
海拔4000米以上是alto和捲雲。上層雲不是很厚,可以通過動畫紋理模擬
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/87a4fa8cc5935bed13f8824d4c9843c610c2771b58c1be2fcb341f3be4aeaa8a.jpg)
由於存在基礎噪聲和細節噪聲,只有在基礎噪聲返回非0時才需要檢測細節噪聲
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/3c7a8b1890c4d87829372664be901bb5f3d53528ccb6cba4d9f9f1d6868c9d27.jpg)
為了不"錯過",切換到高細節樣本之前要向後退一步
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/35d462924cc1d1c41e3f165d15a523be4eccadbff54c62f9602a5b09ec888f24.jpg)
當到達alpha為1時,也就是到最高點了,停止Raymarching
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/8e9c1136a1e9064c86f4fa14f224ca20c82759d72ac7f16b4ffdb89f1951747e.jpg)
如果連續返回非0,切換到基礎噪聲,直到再次返回0
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/c93ab6dfb6efb318d6566c5159828b298c75564437f836f348975c731f7a15e3.jpg)
取樣點數量和視角相關
注意密度會隨高度衰減,也就是上面提到的0-1漸變
但是這樣還不夠
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/d1543192e098e52a702613d5d585c682eb33a0f4eec41c6d19be184512589e87.jpg)
在朝向光的圓錐上取樣6個點模擬陰影,最後一點距離要遠一點
為了提高取樣的效能,當alpha達到0.3時,切換到簡單版本的著色器版本進行取樣。這使著色器速度提高了2倍
6點取樣在低空的貢獻大於比爾定律,而隨著高度上升,又會回到標準的體渲染方式
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/e7550d3c5eb2262bf8f137cede01f84350307811f80c30bb08911457d039b062.jpg)
最後一步,取樣最高層的二維紋理
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/0e2e0fb5db1057c2cb106f2abdcb5b2cfc2409cb7bc6dd8b313c5e0d3892c7a7.jpg)
以上是高空雲層的幾種形態
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/5110161f44f75f72cb09cc944ebc8d20b16f4dd673460ae3c4d15519c30d3329.jpg)
現實中,不同頻率的光線在雲中混合,會產生非常美麗的色彩效果。所以我們要根據以下模型為雲上色:
- 環境光貢獻隨高度增加而增加
- 直接照明將以陽光顏色為主
- 大氣散射會隨高度增加去替代雲層顏色
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/7bdb03f637ad219d75002273336426008cec4376c06d304b61ad64485560261c.jpg)
優化:每幀渲染1/4
前一幀要reproject,如果是邊緣,無法reproject,則從一個低解析度buffer上取樣
![地平線:黎明時分中的雲渲染技術](https://i.iter01.com/images/7b4c49737c7281a6217f6b230f0dbe20c2c8500c9fb8e46deaad053b6fb4bbc7.jpg)
在half res下渲染,最後upscal
相關閱讀:
作者:風和雨林
相關文章
- 視覺爆炸的藝術 | 《地平線:黎明時分》藝術賞析視覺
- 《地平線:黎明時分》資深製作人去世 享年44歲
- 資料加密新技術-實時雲渲染技術應用加密
- 開發者談《地平線:零之黎明》的遊戲音樂幕後遊戲
- 實時雲渲染關鍵技術-低延遲詳解
- 低延時音影片技術在OPPO雲渲染場景的應用
- 大規模即時雲渲染技術,追求體驗與成本的最佳均衡
- 實時&離線皮膚渲染技術(Real-time&Offline Skin Rendering)
- unity程式使用雲渲染技術是否要修改?Unity
- 移動 VR 開發時要避免的 PC 渲染技術VR
- 雲原生技術在離線交付場景中的實踐
- 雲渲染技術的兩種場景還在傻傻分不清?
- 直播系統聊天技術(六):百萬人線上的直播間實時聊天訊息分發技術實踐
- 雲渲染技術會給BIM雲端協作帶來哪些改變?
- 實時渲染技術在VR/AR眼鏡中檢視CATIA3D模型VR3D模型
- 智雲通CRM:與高層交流時切不可過多渲染產品技術點?
- 《孤島驚魂5》中的地形渲染技術-網格生成
- 【併發技術02】傳統執行緒技術中的定時器技術執行緒定時器
- vue:服務端渲染技術Vue服務端
- Vue 服務端渲染技術Vue服務端
- 前後端分離技術路線圖後端
- 雲技術將開啟Netflix般的雲遊戲時代遊戲
- 技術沙龍 | 雲時代下的架構演進—企業雲及雲原生技術落地實踐架構
- 簡述大前端技術棧的渲染原理前端
- 絕不掉線的雲課堂:教育的戰疫時刻,百度的技術護旗
- 同時渲染兩個世界:恐怖遊戲《靈媒》背後的尖端技術遊戲
- 雲原生技術學習路線圖 初階+中階+高階
- 技術路線應該會的技術
- 詳解TF雲原生技術路線圖
- 點量雲實時雲渲染革新雲看車
- 人工智慧優先時代的黎明人工智慧
- 恆訊科技技術分享:雲端計算中的核心技術有哪些?
- 關於雲流化系統-實時雲渲染延時性的討論
- 剖析Unreal Engine超真實人類的渲染技術Part 2 - 眼球渲染Unreal
- 分表技術
- 《樂高地平線大冒險》:如何製作一款老少咸宜的“地平線”遊戲?遊戲
- 3DCAT實時渲染雲在虛擬展會中的應用3D
- 物聯網6類技術無線連線技術的分析