UOD 2021主視覺輸出記錄——如何使用UE5渲染16K超大畫面

先說結(jié)論
UE5 EA有能力渲染16K(15360x8640)級(jí)別的超大圖像。
但UE5 EA的渲染模塊不如UE4穩(wěn)定,需要手動(dòng)計(jì)算調(diào)試。
渲染超過6K的內(nèi)容建議使用MRQ的HighRes模塊進(jìn)行拆分渲染,并將每個(gè)分塊的尺寸控制在4K上下。
不同項(xiàng)目的實(shí)際表現(xiàn)可能非常不同,請(qǐng)適當(dāng)調(diào)整。
實(shí)際渲染參數(shù)如下:



一切的開始
有一天晚上大釗問我,你用的是RTX 8000嗎?我說不是,我用的是RTX A6000,咋了?
大釗說,需要我?guī)兔︿秩疽幌陆衲闡OD的主KV。因?yàn)楣こ桃呀?jīng)準(zhǔn)備好了,但是他自用的RTX 3080顯存不夠(10 GB),沒法渲染打印海報(bào)需要的16K版本……
我說這還不簡(jiǎn)單,不就是點(diǎn)個(gè)Render然后再等1.19秒的事情么,交給我吧!
事實(shí)證明,我太天真了!
第一次渲染
打開工程后我直接沿用UE4的經(jīng)驗(yàn)設(shè)定了16K分辨率進(jìn)行輸出,結(jié)果UE5 EA直接崩了!
但檢查到顯存占用才9.8GB!因此問題顯然不是出在顯卡層面,應(yīng)該從MRQ方面找原因。

第二次渲染
第二次渲染我啟用了高分辨率(HighRes)模塊,使用最基本的2x2拆分方式,將畫面分為4塊;再加上20%的Overlap,最終每個(gè)圖塊的分辨率為10752x6048,如下圖:

結(jié)果這次輸出還是失敗了,但是我得到了一段有價(jià)值的log信息:
通過log可以判斷,渲染進(jìn)程不是憑空掛掉的,而是來自系統(tǒng)層面的主動(dòng)關(guān)閉,且關(guān)閉原因與2D紋理的分辨率有關(guān)(2DTextureDimension)。
一開始我懷疑是不是場(chǎng)景里使用了某種超大貼圖,但簡(jiǎn)單檢查以后就能排除這個(gè)原因,項(xiàng)目里最大的貼圖只有8192x8192分辨率,是標(biāo)準(zhǔn)的Megascans資源,沒有超標(biāo)情況。
于是帶著這個(gè)疑問我又開始了新的測(cè)試:
一次……
一次……
又一次……
3072!
同樣的崩潰出現(xiàn)了一次一次又一次,但是在某次測(cè)試中,我得到了一條關(guān)鍵信息:
渲染設(shè)置如下: Tile Count = 3,Overlap Ratio = 0.3, 最終每個(gè)圖塊的分辨率為8192x4610.如果不考慮Overlap,則實(shí)際分辨率為5120x2880.

上文中的關(guān)鍵信息提到,由于2D紋理的橫向分辨率為18432像素,大于系統(tǒng)允許的16384限制,所以造成了渲染崩潰。
這么大的紋理不可能來自于工程本身,只可能與渲染輸出有關(guān)??紤]到最終圖像的分辨率是15360,是否有可能是因?yàn)樘摶迷诜謪^(qū)計(jì)算時(shí)生成了某張過大的緩存,導(dǎo)致渲染崩潰?
手動(dòng)計(jì)算18432-15360=3072,請(qǐng)記住3072這個(gè)數(shù)字,這是解決問題的關(guān)鍵!
然后讓我們回憶一下HighRes模塊的計(jì)算方法:每個(gè)圖塊的本體分辨率為5120x2880,加上30%的Overlap(雙向),最終分辨率為8192x4610。如果用8192減去5120,將得到Overlap區(qū)域的橫向分辨率:3072!
自此我們已經(jīng)找到了問題的邏輯:渲染圖像從橫向而言被切分成了3塊,每一塊的原始分辨率為5120;加上30%的Overlap區(qū)域,最終計(jì)算的圖像尺寸為5120x3+3072=18432——過大的Overlap區(qū)域?qū)е落秩臼 ?/p>
如下圖所示,一個(gè)圖塊由三部分組成:5120像素寬的本體,以及左右各30%(1536像素寬)的Overlap區(qū)域。三個(gè)區(qū)域的總寬度是8192像素。

在實(shí)際渲染時(shí),三個(gè)圖塊依次拼接,中間的Overlap區(qū)域?qū)?huì)互相融合以消除接縫。但最左邊和最右邊的圖塊各會(huì)有一個(gè)額外的Overlap區(qū)域,當(dāng)它們與主體的15360像素相加以后,就會(huì)得到18432這個(gè)超標(biāo)尺寸。

找到了問題原因,那解決方案就很簡(jiǎn)單了:適當(dāng)降低Overlap,或增加圖塊數(shù)量,保證實(shí)際渲染尺寸不超過16384即可。
后記
后來我又經(jīng)過了幾次測(cè)試,確認(rèn)使用上面的思路都能完成渲染任務(wù)。但最穩(wěn)定兼容性最好的設(shè)置請(qǐng)參考開頭部分。
這應(yīng)該是UE5 EA高分辨率(HighRes)模塊的一個(gè)Bug,相信正式版會(huì)被修復(fù),因?yàn)閁E4沒有出現(xiàn)同樣問題。
?
注釋
場(chǎng)景不是我做的,我只是幫忙做了輸出。這個(gè)場(chǎng)景是大釗和日天做的。
抗鋸齒模塊設(shè)置比較特殊,是因?yàn)楸緳C(jī)內(nèi)存有限(64GB),無法支持更高的時(shí)空采樣,這只是個(gè)臨時(shí)的Trick。
使用開頭提到的參數(shù)進(jìn)行輸出時(shí),實(shí)際顯存占用約為20-30GB,所以大釗的RTX 3080應(yīng)該還是搞不定的,哈哈
HighRes模塊的相關(guān)資料請(qǐng)查看:實(shí)踐課-MRQ-高分辨率
UE4輸出16K視頻的文章請(qǐng)見:使用RTX A6000渲染16K Unreal視頻是一種什么樣的體驗(yàn)?