D5渲染器:D5 GI|保持實時性的同時,不斷追逐離線級別的品質
D5 全局光照方案詳解
前言
要得到照片級的渲染圖,廣大用戶的第一印象就是要使用離線渲染器。從定義上來說,“離線渲染”(或“預計算渲染”)對時間的要求沒有那么嚴格,用戶不需要瞬間看到渲染結果,而是會讓渲染器根據設定好的模型,燈光,材質,充分計算數分鐘甚至數小時。離線渲染器為了質量可以不計時間成本,所使用的渲染策略更側重真實準確,因此能得到高質量的成果圖。
那么照片級的圖片可否實時渲染?這就完全是另外一個故事了,“實時渲染”對渲染時間提出了要求,它要每秒輸出幾十幀的畫面才能保證流暢,每幀的渲染時間只有十幾毫秒到幾十毫秒的預算(每秒30幀的話,就是 33毫秒/幀)。在如此嚴苛的時間限制下,要得到逼真的渲染圖,最大挑戰就是:巨大的計算量。
我們來算一筆賬:假設是 1920×1080 分辨率的畫面,使用路徑追蹤的算法,每個路徑計算3次反射,這就是 6,220,800 根光線,然而此時僅僅是每像素一個樣本(1 spp:1 sample per pixel),畫面看起來通常會是這樣,充滿噪點:
而要讓畫面“收斂”(“收斂”是術語,不學術的說法就是“渲染完成了,沒什么噪點了”),則可能需要每個像素采上千個樣本,畫面會變成這樣:
UE4 Path Tracer
渲染時間:3分45秒
樣本數:2048樣本/像素
顯卡:英偉達 RTX 3060
此時如果觀察畫面局部,仍然會看到噪點:
以上這張圖一共投射了 12,740,198,400 (120億)根光線,渲染花費了超過3分鐘,這樣巨大的樣本量,以目前的硬件速度,無論怎樣優化,都無法讓渲染時間縮短到“實時”的標準(數十毫秒/幀)。
RTX 技術能否帶來改變?
RTX 技術已經極大地加快了顯卡投射射線的速度,但以目前的數據來看,仍然不足以達到上文所述的采樣數量要求。
我們來看英偉達官方的數據:英偉達 RTX 2080 Ti 顯卡理論上可以每秒投射 10 Giga(100億)的射線,但這個數據是在極其簡單的場景下跑出來的:
放大看圖中最下方的一排場景:單一模型,沒有背景,只考察首次射線。
在實戰中,用戶的場景要遠遠復雜得多。而且除去求交點的射線,還要有大量的著色計算,這每秒100億射線的測試數據在實際的渲染場景中要進一步打折扣。簡單來說:RTX 并不能神奇地解決樣本不足的問題。
降噪技術
在如此巨大的樣本計算量面前,“傻算”是不可取的。事實上,沒有人愿意“傻算”,所有渲染器(對,是所有)總會或多或少地使用一些小技巧(限制反彈次數,鉗制高亮,自適應采樣等),加快出圖的速度,離線渲染器如此,實時渲染更是如此?,F在的問題變成了:我們如何避免“傻算”,使用一些“作弊”或“小聰明”的技術,在實時情況下,渲染出看起來真實的畫面。
這就要說到「降噪技術」了,近幾年來不斷進步的降噪技術至少讓我們看到了實時照片級渲染的可能性。很多離線渲染器都在使用降噪技術加快出圖速度,并且效果非常好,以往可能需要繼續跑1個小時才能消除的噪點,使用降噪在幾分鐘內就能消除,呈現出完美平滑的最終圖片。但這依然不能滿足實時渲染的速度需求。
對于實時渲染來說,每一幀的降噪樣本預算可能只有幾樣本/像素,留給降噪的時間預算可能只有1毫秒左右。這意味著降噪的效果不可能達到完美,但是要盡可能滿足人眼的感知,看起來可信。
英偉達的實時降噪技術和 Open Image Denoiser 都可以在實時條件下達到不錯的降噪效果,在只輸入少量樣本的情況下,瞬間得到平滑的圖片:
Crytek Sponza 場景,使用 Intel? Open Image Denoiser 降噪, 16 spp, 輸入有噪點的 albedo 和法線信息
圖片來源:https://www.openimagedenoise.org/gallery.html
D5 GI 解析
簡單總結一下,渲染要處理好兩部分工作:采樣和降噪,了解這個前提以后,D5 渲染研發團隊努力的目標是比較明確的:
1.如何在圖片降噪前,在短時間內得到更高質量的樣本,特別是 Diffuse GI 樣本。
2.如何在不同的應用場景(實時預覽、靜幀渲染、視頻幀序列渲染)使用最合適的降噪技術。
GI 采樣
相比于直接光照產生的陰影,間接光細節其實容易被觀眾所忽略,但是它對于場景畫面是否真實可信起到了至關重要的作用。GI 差,則畫面“假”,物體會有“漂浮感”,光感“不真實”。
高質量 GI vs 低質量 GI
在游戲等需要實時畫面的應用中,傳統的 GI 方案是使用純光柵化,但渲染的效果不理想,對于靜態的場景,通常要預先烘焙 lightmap。對于動態場景,則會使用到基于光照探針的 GI、VXGI、預計算 GI 等,上述的方法要么漏光,要么需要使用者對場景做一些人工處理(比如繁瑣的展 UV、手動調整光照探針位置),或者預計算,總之需要制作者花費很多時間和精力,才能得到一個可用的實時場景。
而 D5 想要的是無論是動態場景還是靜態場景,無需用戶做過多處理,模型直接導入即可渲染。故此,我們嘗試了有別于游戲實時渲染的做法,混合了多種渲染技術的優勢,針對直接光照,多光源,大場景光照等不同的應用場景,分別做了優化,緩解性能壓力,提升幀數,消除漏光和噪點。
混合的 GI 策略
為了高效取得樣本,D5 GI 使用了混合的策略,結合使用了光線追蹤和基于光照探針的 GI,在準確和效率之間尋找平衡點。
光照探針(Light Probe)是一種在實時渲染中使用得較多的 GI 采樣方法,它運行效率高,而且能夠處理動態場景的 GI。在讀取場景的同時,無數的光照探針已經均勻地分布于整個場景的范圍內,隨著實時渲染的運行,每個光照探針都會動態更新其采集到的光照信息,并且會根據其重要性,改變更新頻率,一些對場景影響不大的探針信息更新會變慢,以節約計算資源。
在純光照探針 GI 方案中,當我們需要給模型上的某個點著色時,只需要找到鄰近的幾個光照探針,插值求得光照信息即可。由于是插值取樣,這種 GI 計算結果往往體現為低頻的亮度變化,平滑無噪點,在視覺上更容易被觀眾接受,相應地,會缺乏細節,而且會在模型邊角產生“漏光”“漏陰影”,這是因為在插值取樣時,讀取到了過亮或過暗的探針信息:
如上圖,墻角漏光是因為取值到了室外的探針,地板過暗是因為取值到了地下的探針。
為了增加 GI 的細節和準確性,D5渲染器在前幾次 GI 反彈時使用了光線追蹤采樣,隨后才會使用光照探針的信息,由于 Brute Force 反彈的準確性,D5 有效地改善了純探針方案帶來的漏光現象:
這種混合計算 GI 的策略既保證采樣的速度,又保留了 GI 的細節,其效果是非常優秀的:
圖為視頻幀序列 GI 質量對比,左側為路徑追蹤采樣(通常作為標準參照),右側為 D5 混合 GI 采樣策略的計算結果。
左右采樣時間相同,且左右均無降噪。
可見在相同采樣時間下,D5 GI 迅速取得了較為真實可信的效果。
2.1 版增加反彈次數
在最新的 2.1 版中,D5 渲染器進一步增加了實時預覽以及渲染輸出中 Brute Force 光線反彈的次數,這會有效提高 GI 的準確性,對畫面的真實感有更進一步的提升。
實時預覽,只有直接光
實時預覽,直接光+1次反彈(無降噪)
實時預覽,直接光+2次反彈(無降噪)
植被 GI 優化
?
由于場景的光照探針數量是固定的,對于較大的場景,光照探針有可能過于稀疏,GI 的精度不足,這個問題在大場景的植被上會體現得比較明顯,植物影子可能會偏亮,顯出“漂浮感”。
針對這個問題,D5 專門對植物的 GI 采樣做了調整,消除漂浮感,讓影子更實,植物更加有落地感。
2.1 版 GI 采樣算法優化
D5 研發團隊認為先前版本實時渲染的體驗依然不夠好,在一些復雜場景中噪點依然多,導致降噪后在屏幕上留下了抖動的斑點?;诖耍覀冄邪l了更高效率的算法,進一步提升實時預覽的性能。
先前版本 D5 在發射線時,受限于射線數量,首次反彈還是會有較大采樣方差,在某些區域內可能只有少量采集到 GI,降噪后會看到斑塊,以下是 GI 計算較為困難的場景,只打開了一扇門,室內完全由門口的反彈光照亮,先前D5實時 GI 結果如下:
新版 D5 GI 使用了 RestirGI 復用樣本的思路,復用前幀和鄰近位置的樣本,盡量降低了一塊區域內只有少量采到 GI 的問題,降低了采樣噪斑,在平坦區域效果尤其明顯。通過這樣的優化,在 GI 采樣的效率方面,較之于先前版本有大約近四倍的效率提升。這意味著實時預覽效果更好,幀率更高,相同渲染時間下,圖片 GI 質量更高。
D5 2.1 版 GI 算法改進后:
以上兩圖均為 1 spp(1樣本每像素)
降噪
在不同的應用場景中,D5 渲染器使用了不同的降噪技術,以便在實時預覽,靜幀渲染和視頻渲染三種不同的情況下,達到最好的效果。
實時預覽
在高質量的實時預覽中,D5 使用屏幕空間降噪(SSD),使用這種算法,每一幀 1920×1080 畫面的降噪開銷大約在 1-2ms 左右,保證了實時預覽的幀率,讓用戶在創作場景的過程中能有所見即所得的交互體驗,這是 D5 渲染器的核心價值所在。
實時預覽屏幕空間降噪效果
靜幀渲染
在輸出靜幀圖片的時候,D5 采用的是 Open Image Denoiser,在進入降噪之前,每個像素已經有上百個天光采樣和數十個 GI 采樣,結合上文所述的 D5 GI 策略,得到了足夠高質量的樣本信息,將這些信息輸入 AI 降噪器后,可以“瞬間”得到平滑的結果:
Open Image Denoise 降噪前 VS 降噪后
為了得到更好的降噪效果,Open Image Denoiser 還允許輸入 Albedo 通道和法線通道,這樣一來,就可以保證成果圖邊角和紋理的清晰。D5 使用了這個流程為靜幀圖片降噪。
Albedo
法線
上圖:輸入 Albedo 和法線信息后,AI 降噪結果細節更多,可見墻角的轉折和木紋理更加清晰了。
視頻幀序列渲染
Open Image Denoiser 缺乏前后幀的連貫性,這意味著在降噪視頻后會造成視頻畫面的抖動和閃爍。
而屏幕空間降噪(SSD)可能會丟失一些畫面的高頻細節,為了緩解這個問題,我們使用了 World Space Denoiser(WSD),改變了降噪取樣的方式:
左圖紅圈為屏幕空間降噪采樣范圍示意,
右圖紅圈為世界空間降噪采樣范圍示意。
根據場景的空間信息,決定降噪的強度,就可以保留更多的高頻細節:
更多相關內容推薦
評論(0)