虛幻5降臨!再談談它的“黑科技”
該視訊在晚上11點才釋出,短短几個小時就已經刷爆了朋友圈,閱讀量瞬間達到10萬+,那一天可能有不少朋友和我一樣,看的心潮澎湃,久久難以釋懷。
不知不覺,距離這條視訊釋出已經過去一年,虛幻引擎5也如約而至。就在昨晚,Epic釋出了UE5的搶先體驗版,配套了相應的基礎教程、文件連結以及示例Demo。通過下面的視訊,我們可以進一步瞭解虛幻引擎5新的特性以及Nanite、Lumen、WorldPartition等技術的意義。
虛幻5初體驗
虛幻5的搶先體驗版已經發布到了Epic Game Launcher上,對應的原始碼工程也可以在官方的Github網站上拿到。
虛幻引擎5中文技術文件
https://docs.unrealengine.com/5.0/zh-CN/
虛幻引擎5原始碼地址
https://github.com/EpicGames/UnrealEngine/tree/ue5-early-access
虛幻引擎5官方入門課程連結
https://www.unrealengine.com/zh-CN/onlinelearning-courses/ue5-early-access-quickstart
此外,官方還免費給使用者提供了視訊演示中的Demo,方便大家快速體驗新的功能與特性。(備註:工程98GB,最低系統要求為NVIDIA GTX 1080/AMD RX Vega 64或以上顯示卡,8GB視訊記憶體、32GB系統記憶體)
開啟編輯器,會發現虛幻5的介面有了較大的改動。扁平化的設計使介面看起來更為清晰和簡潔,很大程度地改善了使用者的預覽體驗。
當然,虛幻5的重頭戲主要在新發布的兩個核心技術上,Nanite和Lumen。我們可以通過Demo預覽一個擁有數億個三角形的場景,也可以動態調整光源引數來實時預覽全域性光照效果。
除了渲染上的變化,還有很多新的功能:
- 引擎內建整合了Quxiel的Bridge工具,可以直接將掃描的高清資產拖入到引擎中使用
- 提供了全新的關卡載入系統WorldPartition,可以實時靈活地載入地圖資料
- 全新的關卡協作編輯方式,支援多人合作編輯關卡,提供工作效率
- 提供了新的GameplayFeaturePlugin,可以迅速設計玩法原型
- FullBodyIK、Root Motion Warpping等新的動畫系統,可以自適應地形的實時調整骨骼位置
- ControlRig得到完善,可以在編輯器內自定義調整骨骼動畫,動畫工作流程得到進一步優化
- MetaSound,可以在編輯器內對音訊做更為豐富的操作
- Perforce外掛支援Change list版本管理
- 支援Python指令碼
技術
如果有朋友和我一樣一直在關注著虛幻5,就會發現它早已不像最初那般神祕,各路大佬的深挖也讓我們能更客觀地看待這個引擎和相關的技術。
虛幻5最具代表性和影響力的核心技術有兩項 :Nanite和Lumen
Nanite
Nanite,中文翻譯為虛擬微多邊形體幾何體技術,簡單來說就是引擎可以在執行時支援包含幾乎無限個三角面的模型,即美術們可以將擁有數以億計的多邊形的模型直接匯入到虛幻引擎中使用。如果這項技術真的能在工業界廣泛應用,對遊戲和影視行業的影響可以說是顛覆性的。
科普一下,我們常見的三維遊戲世界(或CG場景)一般都是由三角面構成的,計算機通過對三角面逐個渲染從而展示出整個畫面。一個3A遊戲場景往往由數千萬個三角面構成(包括人物、地形、建築等),而一個科幻電影更是誇張到需要對數億甚至數十億的三角面進行渲染。
顯然,三角面的數量越多,渲染的速度就越慢(雖然現在的顯示卡越來越強大),所以對於需要實時渲染的遊戲來說,除了想盡辦法剔除不展示的三角面,減少可見的三角面也是一個不得不做的妥協。
那麼如何減少可見的三角面呢?技術上我們可以採用LOD動態減少三角面的數量(邊坍縮技術)。但工業界常用的手段是在一開始就限制主模型的面數,一般會先在Zbrush裡製作高模,然後烘焙置換貼圖或法線貼圖到低模上(儲存更多的細節資訊用於渲染流程中的光照計算),這樣一個面數很低的模型也能表現出接近高模的效果。
顯然這是為了效能的不得已而為,關注點集中在藝術效果的美術們必然不喜歡這冗餘而繁雜的流程。如果虛幻5真的可以支援近乎無限的三角面數量,那麼一定會大大解放藝術家們的生產力,這套高模烘焙低模的方式也會隨著歷史的推進逐漸被掩埋。
模型製作流程
相比畫面效果,程式們當然更關注技術細節。從名字“虛擬微多邊形”的“虛擬”二字,我們就很容易聯想到作業系統中的虛擬記憶體技術。“虛擬記憶體”技術的核心思想是將硬碟虛擬為記憶體,通過動態替換的方式解決記憶體空間不足的問題(當然還有其他很多方面的意義)。
虛擬記憶體示意(簡化版)
同理,渲染領域也有一個原理類似的技術稱為“虛擬紋理”,由於GPU的視訊記憶體有限,無法將一個複雜大場景的紋理全部儲存,因此可以將這些紋理合成之後再儲存到硬碟中。在渲染時根據螢幕上用到的資源索引進行實時更新,圖形大神卡馬克在2000年左右就成功地將紋理虛擬化技術應用在了遊戲毀滅戰士3(Doom 3)中。
虛擬紋理示意
按照這個思路,幾何模型似乎也可以做“虛擬化”。其實類似的技術很早就出現了,上世紀80年代初,盧卡斯影業圖形學部門幾位大師做出的REYES渲染架構,把引數化曲面動態細分成微多邊形,再用演算法篩選出接近1畫素大小的微表面並進行渲染。卡馬克後來嘗試了這種方案,但是由於幾何體儲存方式特殊、GPU管線效能等原因,該方案在很長一段時間沒有達到預期的效果,畢竟硬體基礎決定上層建築。
Reyes Rendering on the GPU
https://markussteinberger.net/papers/GPUReyes.pdf
不過很快,隨著Computer shader的出現,顯示卡可以做更多通用的計算,原來複雜且效率較低的渲染管線也可以通過Mesh Shader的方式進行優化,Billion級別的三角形繪製似乎變得可能。
Compute Shaders: Optimize your engine using compute,AMD
Epic作為長期研究各種引擎技術(CEO Tim 就曾將REYES和光追定位成為了兩大GPU的發展方向)並不斷落地工業界的領軍者,在Computer shader出現的第一時間就抓住了機會,公開了虛幻5的虛擬微多邊形體幾何體技術的演示Demo,轟動了整個行業。從官方透漏的資訊來看,出於對通用性的考慮,他們並沒有使用英偉達提供的Meshshader技術而是直接利用ComputerShader做軟光柵,同時配合自定義的演算法做畫素級別的三角面剔除,真正的實現了無限制的“LOD”。
Inside Unreal Engine 5: how Epic delivers its generational leap
https://www.eurogamer.net/articles/digitalfoundry-2020-unreal-engine-5-playstation-5-tech-demo-analysis
很巧的是,最近網易雷火工作室在虛幻5正式公佈前釋出了類似Nanite的“無矩渲染技術”,同樣也是採用3D掃描技術+ComputerShader(確切的說是MeshShader,與虛幻5不同)的方式來實現高精度模型的渲染,從而能夠支援面數高達二十一億的遊戲場景。而且他們已經將場景釋出到了逆水寒的周版本更新包,足以看出幾何模型虛擬化技術已經部分應用到實際生產環境中,前景也逐漸明朗起來。
3D掃描建模技術在《逆水寒》端遊中的落地應用
https://zhuanlan.zhihu.com/p/371775421
說了這麼多,Nanite真的能立刻顛覆遊戲行業麼?當然不能。首先從技術上講,Nanite很明顯還有諸多限制,比如目前不支援骨骼模型(即人物模型)的渲染、比如Demo中展示的高精度場景需要用3D掃描技術,而很多物體的材質難以掃描(比如大氣、水體或是非真實感渲染的物件等)。雖然虛幻通過收購Quixel給使用者提供了大量免費高精度資產,但實際生產環境相當複雜,使用過程中必然會暴露出諸多方面的問題。
其次,如此複雜且高精度的模型還有對應的高精度貼圖很快就會將你的硬碟塞滿,匯入匯出操作對機器的頻寬也是一個考驗。經過今天對Demo的測試,我發現不配一臺1T SSD+2080ti顯示卡的機器真的沒辦法流暢地使用。
最後,任何一項技術從出現到廣泛使用都是一個漫長的過程,哪個公司做產品會立刻使用新技術而放棄當前穩定的流水線呢?就算可以,新工作流的磨合是不是也需要一段時間?人員的學習和培養是不是也要時間?所以大家還是要理性看待,根據實際情況決定是否使用Nanite。但是不管怎麼說,單從支援幾乎無限的模型面數這一成果來說已經足夠了,可以預見未來Nanite將促進3D掃描技術在相關行業中的應用,掃描建模和美術資產製作流程的結合也許會逐漸成為業內的主流方案。
Lumen
Lumen,是一個全動態全域性光照解決方案,可以實時對場景和光照變化做出反應而無需專門的光線追蹤硬體。因為光線的反射,在現實環境中你很難看到一個物體沒有任何顏色(即使他處於一個很暗的角落裡)。全域性光照(GI)簡單來說就是模擬真實環境中光線可以近乎無限次反射到各個地方的效果,實現全域性光的核心思想就是光線追蹤,也就是需要正確計算光線會擊中哪些三角面。然而實際情況中我們往往會採用光照貼圖預先烘焙的方式,在避免大量實時計算的同時實現質量相對較高的效果,因此你會發現很多遊戲的場景中光照效果都是幾乎不變的。
cornell box,左邊是照片,右邊是全域性光照的渲染效果
GI技術其實一直在被研究和使用,主要從硬體和軟體兩個方面進行優化。硬體方面主要使用RTX技術做加速計算,軟體方面主要使用各種自定義的加速結構來簡化計算,比如基於體素(voxel)和基於螢幕空間的的全域性光照演算法。Lumen就是一個結合了軟體層面的多個全域性光照演算法的方案,對於遠處的場景使用體素計算,近處的使用螢幕空間的光線追蹤修正。
Lumen的優越之處在於它每次更新光源時不需要等待貼圖的烘焙和頻繁地修改光照貼圖UV,從而大幅度提高美術的工作效率。同時,配合Nanite技術,可以實現非常精細和逼真的反射效果。
說到這裡,發現一個很有意思的點,為了高效地實現理想的渲染效果,人們一直在三維空間著色和螢幕空間著色中反覆橫跳。三維模型太多?那我們拿到螢幕空間去統一處理(Pixel shader)。GPU效能上來了但螢幕空間效果不完美?要不再回去優化一下模型的著色邏輯。擴充一下,其實我們經常遇到類似的問題,執行速度太慢?先把資料快取到記憶體裡。記憶體佔用太大?那我實時去計算結果。很多時候,我們就是在對各種方案做取捨,而且隨著技術(比如硬體)的發展,之前很老的方案可能就會再次被利用起來(實時光追,深度學習等)。
其他相關的技術比如Chaos物理與破壞系統、Niagara、動態IK、卷積混響和環境立體聲渲染等,其實在19年就已經陸續地新增到虛幻4引擎了,不過一直在完善,這裡就不再贅述。
圖片裡面的人物都是由Niagara粒子實現的
談談遊戲引擎
關於虛幻引擎,其實接觸的多了,就會發現Unreal是一個結果導向的引擎,使用者想要什麼功能我們就做什麼。由於Epic的團隊本身也是遊戲開發者,所以他們同時也是虛幻引擎最為忠實的使用者,可以從使用者的角度考慮大家的需求,我想這也是Unreal備受廣大美術和策劃喜愛的原因。相比之下,Unity看起來更追求架構上的完美以及技術上的革新,他們會實時地更新各種前沿的技術和設計(如深度學習框架),不斷調整和優化程式碼框架(DOTS)。雖然也在努力提供各種工具支援,但畢竟精力有限,短期內容易造成各項工具鏈功能不完善、使用體驗差的問題。
當然虛幻引擎的結果導向不代表他們不在意系統架構,Epic的CEO TimSweedey早在2005年就已經構思出了虛幻引擎未來的發展方向,比如引擎的計算架構分層
- 圖形層:利用GPU處理並行資料
- 計算密集層(物理,碰撞檢測,場景遍歷,尋路):執行緒並行 (TaskGraph + ISPC, ISPC為資料並行)
- 業務邏輯層:軟體事務 STM
The Next Mainstream Programming Language: A Game Developer’s Perspective
https://www.st.cs.uni-saarland.de/edu/seminare/2005/advanced-fp/docs/sweeny.pdf
現在的虛幻也確實是這個思路,管線、資料密集計算等已經交給ISPC(物理模擬),也會用類似ECS的思想做一些外掛的設計,這些和Unity的Burst+Job系統是相似的,只不過虛幻引擎以UObject為中心構成的整個系統(特別是Actor)過於臃腫,很多上層系統有點強制使用者使用的意思,這算是歷史遺留問題。
瞭解過二者發展歷史和未來的Roadmap的朋友都可以理解,哪有什麼各方面都無敵的引擎,不過是數十年來無數從業者一點點的積累和優化罷了。
虛幻引擎的RoadMap(發展路線規劃)
未來
目前來看,對於遊戲行業,如果真的能放棄貼圖和UV這種為了提高效能而做出的妥協,那麼高質量遊戲的成本會大大降低(注意,主要針對高品質高畫質的遊戲)。和虛幻4帶來的影響相似,小團隊的作品天花板會不斷提高,更多意想不到的優秀作品會湧現出來。
對於成熟的商業專案來說,渲染只是其中一環,最終的呈現與很多方面有關,因此Nanite和Lumen等技術對專案整體帶來的提升非常有限。不過好在UE5的關注點不是隻在渲染上,動畫、音訊、Gameplay、協作等方面的新功能也會給開發者帶來巨大的幫助。
對於影視行業來說,對其產生最大沖擊的並不是虛幻5本身,而是擁有高質量渲染效果和配套工具流的實時遊戲引擎(包括虛幻4和Unity,以及各個大公司自研的引擎或工具)。鑑於實時渲染技術的不斷革新,現在已經有不少企業使用虛幻引擎了(國內動畫公司用的比較多)。我們可以在Daz裡面找到合適的數字人,在Quixel的Megascan找到合適的掃描模型(UE使用者免費使用),再花錢買點表情捕捉和動作捕捉的方案,而且未來的虛擬影片製作成本一定是會進一步降低,創作影片好像也沒那麼難了。
美劇《曼達洛人》使用虛幻4做場景
技術不斷髮展,畫質仍會提升,但人們可能不會再侷限於對畫質的無限追求了,那渲染技術的盡頭是什麼呢?
期待虛幻5的進一步表現,也期待數字時代的真正到來。我相信我們正身處資訊革命的浪潮,既是歷史的見證者,也是歷史的參與者。
來源:遊戲開發那些事
原文:https://mp.weixin.qq.com/s/EVI2Cvd2aatWynoAX5it9w
相關文章
- 老生常談之再談this
- 再談vbo
- 唯晶科技詹承翰:5年參制35款虛幻作品,它改變了我們
- 淺談紅黑樹
- 《黑神話:悟空》神話再現,虛幻引擎與Unity/C#誰更強?UnityC#
- 《糖豆人》--是時候談談它的未來了
- 所有Unreal網遊開發者都應該看的文章:使用虛幻引擎4年,再談UE的網路架構Unreal架構
- 再談RTS(上):RTS的衰落
- 2020再談跨域跨域
- 再談ERP選型
- Javascript繼承,再談JavaScript繼承
- 再談談這個沉重的話題--程式設計師的出路程式設計師
- 談談虛擬dom和diff演算法演算法
- 《黑神話:悟空》模型渲染師用虛幻5打造場景圖模型
- 再談量化策略失效的問題
- 再談java列舉enumJava
- 再談原始碼閱讀原始碼
- 再談 PHP 未來之路PHP
- 再談記錄超長
- 再談synchronized鎖升級synchronized
- 再談冪等機制
- 碼頭風雲——5G降臨
- 談談阻礙資料建模的5大藉口
- JVM系列之:再談java中的safepointJVMJava
- 【UE5】虛幻引擎入門
- 虛幻引擎5現已釋出!
- 再談Windows訊息迴圈Windows
- 再談小型機:前景黯淡?非也!
- 再談前後端分離後端
- 十年後再談阿爾法城——一座消失的虛擬城市
- 「虛幻引擎5」為何讓開發者們拍手叫好?它到底厲害在哪?
- 談談2023年資料治理的5大趨勢
- 談一談阻礙資料建模的5大藉口
- 恆訊科技談談:雲遊戲的發展以及未來?遊戲
- 小高和剛×橫尾太郎的奇妙對談:《終結降臨》將引領真人遊戲走向何方?遊戲
- 淺談H5音訊處理(更多談談錄音方向的內容)H5音訊
- 敏捷規模化框架的思考-再談Spotify敏捷框架
- 學姐降臨