顯示卡開光線追蹤之後 FPS 跌點算?RT 反射/陰影/全域光照成本、去噪同組合取捨指南
重點摘要
開光追之後幀率跌,唔使即刻全關;反射、陰影、全域光照成本各異,配合去噪同升級技術取捨,先至搵到最划算組合。
光線追蹤做緊乜,同傳統畫法有乜唔同
傳統光柵化畫法,係將三維物件投影到二維畫面,再用各種技巧去估光影應該點:陰影用陰影圖去估,倒影用屏幕空間或者環境貼圖去估,間接光用預先計算或者近似方法去估。估嘅好處係快,壞處係估唔到嘅情況就會穿幫,例如畫面以外嘅物件照理應該照到出嚟,但屏幕空間方法睇唔到佢,倒影就會缺一忽。
光線追蹤反轉成個思路:由每一個像素反向射出一條光線,去問呢條光線撞到邊個物件,再由撞擊點繼續追問光線嚟自邊度、會唔會被遮擋、會唔會再反射或者折射。因為係逐條光線去問,結果理論上更貼近真實光學,但代價就係工作量:像素有幾多,光線就有幾多倍,仲未計每條光線要行過嘅加速結構同埋多次反彈。
遊戲入面嘅光線追蹤,實際上係混合式,唔係成格畫面全部用光線追蹤。主幾何通常仍然用光柵化畫,反射、陰影、全域光照呢啲最難估嘅部分,先至交畀光線追蹤去做。理解呢一點好重要:開光追唔係開咗一個總開關,而係開咗幾組獨立嘅光線追蹤工作,每組成本同回報都唔同,逐組開關先至係正確嘅調校單位。
加速結構同光線數量:成本嘅源頭
光線追蹤要快,唔可以逐個三角形去問有冇撞到,一定要靠加速結構,最常見嘅就係層級包圍盒。場景嘅幾何會事先整理成一棵樹,粗糙嘅大盒包住細盒,細盒再包住三角形,光線由大盒開始問,唔撞到嘅大枝可以直接跳過,唔使逐個三角形檢查。加速結構建得好,光線查詢就快;場景幾何成日郁、成日變形,加速結構就要成日更新,更新本身都係成本。
光線數量係第二個成本源頭。每像素一條主光線已經好多,再加反射光線、陰影光線、間接光取樣,光線總數可以係像素數嘅幾倍。光線愈多、反彈次數愈多,成本就愈高,而且係近乎線性咁高。品質檔位好多時就係喺度做手腳:低檔位每像素取樣少啲、反彈少啲、解析度低啲;高檔位就反過嚟。所以光追品質檔位唔係抽象嘅靚啲,而係具體嘅光線數量同取樣密度,調檔位之前要明白自己調緊乜。
仲有一個成本位好容易被忽略,就係光線追蹤通常唔係用全解析度去做。為咗慳成本,好多遊戲會用較低解析度去追蹤,再靠去噪同放大去還原成全解析度畫面。追蹤解析度低,成本低,但細節同穩定性就要靠去噪去補,呢個取捨就係下一大節去噪機制嘅舞台。
反射:最睇得見,亦最受場景影響
光追反射做嘅嘢好直觀:光滑表面應該照到周圍環境,包括畫面以外嘅物件、玩家背後嘅嘢、轉角後面嘅光源。傳統屏幕空間反射做唔到呢啲,因為佢只能用已經畫好嘅畫面去估;光追反射因為真係射光線去問場景,所以畫面以外嘅物件都照得到,倒影完整好多。
反射嘅成本好受場景影響。有水面、玻璃幕牆、光滑地板、鏡面嘅場景,反射工作量大;冇乜反光面嘅泥路、草地場景,反射開幾高都冇乜嘢好做,成本自然低。所以測反射,一定要去有反光面嘅場景測,喺室內泥牆前面測反射係冇意義嘅。
反射嘅品質檔位通常控制三樣嘢:追蹤解析度、最大反彈次數、同埋粗糙表面嘅處理。完全光滑嘅鏡面,一條光線已經夠;粗糙表面例如磨砂金屬、微濕地面,反射方向會散開,要多條光線先至估得準,成本就高好多。有啲遊戲會將粗糙反射降級去用較便宜嘅近似方法,或者減少取樣,畫面睇落可能仍然可以接受,但近睇就會見到倒影朦咗、雜訊多咗。調反射嗰陣,要分清楚自己睇緊嘅係光滑面定粗糙面,兩者成本同回報完全唔同。
實務取捨上,反射係光追三組入面最容易令人覺得值嘅一組,因為效果一眼就睇到:水面有倒影、玻璃有街景,畫面即刻生動咗。但亦正因為咁,反射好容易令人一開就開到最高,忽略咗粗糙面同多次反彈嘅成本。建議由中檔開始,先睇光滑面效果滿唔滿意,再決定粗糙面值唔值得加碼。
陰影:準確,但唔一定係你最需要嗰組
光追陰影做嘅嘢,係由表面逐點去問光源方向有冇被遮擋,遮擋物嘅形狀、距離、光源大細,全部都會影響陰影邊緣應該有幾柔和。傳統陰影圖方法,陰影邊緣嘅柔和程度好受陰影圖解析度同距離限制,遠處陰影容易起格或者閃爍;光追陰影因為逐點問,邊緣柔和程度可以跟住遮擋物距離自然變化,近處實、遠處柔,理論上更自然。
不過,陰影嘅畫面回報有個特點,就係好多時要停低細睇先至察覺。打機嗰陣快速移動,陰影邊緣柔和定硬淨,分別遠遠冇反射咁明顯。加上傳統陰影圖喺好多遊戲已經做得唔差,光追陰影由傳統陰影升級上嚟嘅邊際改善,未必對得住佢嘅成本。特別係室外日光場景,陰影範圍大、光源強,光追陰影要問嘅光線又多又密,成本可以好高。
光追陰影嘅取樣數量同光源數量亦直接影響成本。場景入面光源愈多,每個表面要問嘅方向就愈多;光源愈大、邊緣要求愈柔和,取樣就要愈多先至唔會起雜訊。所以陰影檔位由低去高,唔止係靚啲咁簡單,而係取樣密度同光源處理嘅提升。如果預算有限,陰影往往係三組入面最值得先降嘅一組:降返去傳統陰影,畫面損失相對細,慳返嘅成本可以用返去反射或者全域光照嗰啲更睇得見嘅地方。
全域光照:最貴,亦最影響氣氛
全域光照講嘅係間接光:光打到牆身再彈去另一面牆,紅色牆身會將紅色間接光帶去隔離白色天花,呢啲反彈先至令室內空間睇落有氣氛、有深度,唔會只得直接照到嘅地方光、其他地方死黑。傳統方法要用預先計算或者近似手段去估間接光,預先計算嘅方法喺靜態場景好準,但物件一郁就唔準;近似方法就成日估錯顏色同強度。
光追全域光照就係真係追蹤光線反彈:由表面射出取樣光線,睇下撞到邊度、嗰度嘅顏色同亮度會帶返幾多間接光返嚟。反彈次數愈多,間接光就愈完整,但成本亦愈高,而且每多一次反彈,取樣嘅不確定性就愈大,雜訊問題就愈嚴重。室內場景、夜景、霓虹燈多嘅街道,全域光照嘅效果最明顯,因為間接光佔成個畫面光線比例高;烈日下嘅空曠野外,直接光已經主導一切,全域光照嘅邊際改善就細好多。
全域光照仲有一個特性,就係佢嘅成本同場景複雜度綁得好緊。物件多、顏色雜、光源多嘅室內,取樣要夠密先至估得準;物件少、顏色單一嘅空間,取樣少啲都夠。所以全域光照檔位唔好一刀切:室內劇情場景值得開高啲,空曠野外就可以降返低啲,慳返嚟嘅成本去第二組。成隻遊戲用同一個全域光照檔位,往往係浪費同唔夠嘅混合體。
去噪:點解光追畫面唔係成日起沙
光追取樣有限,逐像素嘅結果本身一定有雜訊,就好似用好少樣本去估一個平均值,估出嚟嘅數一定上落好大。如果直接將呢啲有雜訊嘅結果出畫面,畫面就會成格起沙、閃爍,完全冇法睇。去噪就係為咗解決呢個問題而存在嘅,冇去噪就冇實用嘅即時光追。
去噪主要有兩招。第一招係時間累積:借用之前幾格嘅結果,同而家呢格平均埋一齊。靜止畫面,之前幾格同而家呢格睇緊同一樣嘢,平均之後雜訊自然細咗;畫面一郁,之前幾格嘅資訊就要跟住物件移動去對齊,對齊錯咗就會留低殘影,即係快速移動嘅物件後面拖住一條淡淡嘅影。第二招係空間濾波:用附近像素嘅結果去幫手平均,假設附近像素睇緊差唔多嘅嘢。平面牆身,附近像素確實差唔多,濾波效果好;幼細紋理、邊緣位,附近像素其實差好遠,濾波一用力就會將細節抹走,畫面變朦。
現代去噪通常兩招一齊用,再加埋物件移動向量去幫手對齊。移動向量講嘅係每個像素喺上一格去咗邊度,有咗呢個資訊,去噪先至知之前幾格邊啲像素先至對得上而家呢格。不過移動向量本身都有局限:半透明物件例如玻璃、水面、煙霧,移動向量未必準;光影本身嘅變化例如燈光閃爍、反射面郁動,移動向量亦幫唔到手。呢啲就係點解去噪喺某啲場景特別容易穿幫:快速轉鏡頭、半透明物件多、燈光成日閃嘅場景,殘影同朦嘅機會都高啲。
去噪品質檔位調緊嘅,通常係時間累積嘅格數、空間濾波嘅強度、同埋對邊緣同移動嘅保護程度。濾波愈強,雜訊愈少,但細節損失同殘影風險愈高;濾波愈弱,細節保留得好啲,但雜訊就明顯啲。調去噪唔好淨係企定定睇一格靜止畫面,因為靜止畫面時間累積最有利,一定要郁鏡頭、行過去、打一場,先至睇到殘影同朦嘅代價。好多玩家覺得光追畫面朦,其實唔係光追本身朦,而係去噪濾波抹走咗細節。
三類成本對照表
| 光追組別 | 做緊乜 | 主要成本來源 | 畫面回報最明顯嘅場景 | 降檔位先損失乜 |
|---|---|---|---|---|
| 反射 | 射光線問光滑面應該照到乜 | 光線數量、反彈次數、粗糙面取樣 | 水面、玻璃、光滑地板、鏡面 | 倒影缺畫面外物件、粗糙面倒影朦咗 |
| 陰影 | 逐點問光源方向有冇遮擋 | 光源數量、取樣密度、陰影範圍 | 近處物件交接位、光源大細變化明顯嘅場景 | 陰影邊緣變硬、遠處陰影閃爍 |
| 全域光照 | 追蹤間接光反彈,帶顏色同亮度返嚟 | 反彈次數、取樣密度、場景複雜度 | 室內、夜景、霓虹街道、顏色豐富嘅空間 | 間接光變暗、顏色滲透消失、角落死黑 |
| 去噪 | 時間累積+空間濾波,壓低取樣雜訊 | 累積格數、濾波強度、移動對齊計算 | 所有開光追嘅場景,尤其動態場景 | 濾波太強會抹細節、留殘影;太弱會起沙閃爍 |
呢張表嘅重點,係三組唔可以當成同一個開關。反射貴喺反光面多嘅場景,陰影貴喺光源多同範圍大嘅場景,全域光照貴喺室內同顏色複雜嘅場景。同一檔位,唔同場景嘅成本同回報可以完全唔同,調校一定要分組、分場景。
光追同升級技術、幀生成點配
光追成本高,升級技術就成日被攞嚟同光追一齊用,思路好直接:用較低內部分辨率去渲染同追蹤,再重建成高解析度畫面,像素少咗,光線總數就少咗。呢個組合本身合理,但有幾點要講清楚。第一,升級技術嘅品質檔位會影響光追去噪嘅輸入:內部分辨率愈低,光追取樣嘅基礎就愈粗,去噪要補嘅嘢就愈多,畫面朦同殘影嘅風險亦愈高。第二,升級技術本身有自己嘅時間累積同邊緣處理,同光追去噪嘅時間累積疊加嗰陣,兩層累積有機會互相放大殘影,特別係快速移動場景。升級技術嘅詳細機制同檔位,見 162,本文唔重寫,呢度只講組合層面嘅互動。
幀生成嘅思路又唔同:佢唔係減低渲染成本,而係喺兩格真實渲染出嚟嘅畫面中間,插入一格合成畫面,令顯示出嚟嘅幀率數字高咗。光追場景用幀生成,表面上幀率會好睇啲,但要注意兩點:第一,遊戲本身嘅渲染幀率冇變,操作反應仍然跟住真實渲染幀率走,唔好將顯示幀率當成反應速度;第二,合成畫面要估中間嗰格應該點,光追場景入面反射同間接光變化快,估錯嘅機會亦高啲,快速轉鏡頭嗰陣容易見到合成痕跡。幀生成嘅詳細取捨同適用條件,見 175。
組合取捨嘅實務次序,應該係先將光追三組逐組調到自己接受嘅水平,再決定升級技術檔位去補返幀率,最後先至考慮幀生成係咪需要。次序調轉,即係先開幀生成去掩蓋光追成本,結果好容易係數字好睇、但畫面同反應都唔對路。仲有一點,動態解析度同光追一齊用嗰陣,內部分辨率會跟住幀率自動浮動,光追取樣密度同去噪輸入都會跟住浮動,畫面穩定性會差啲,測試光追組合嗰陣,應該先將動態解析度關閉,詳細做法見 174。
組合取捨表:預算有限嗰陣點揀
| 取捨方向 | 慳到嘅成本 | 畫面損失 | 適合邊種玩家 |
|---|---|---|---|
| 反射中檔+陰影傳統+全域光照中檔 | 中等,保留最睇得見嘅反射 | 陰影邊緣硬啲,間接光稍弱 | 想一眼見到光追效果,又唔想成本爆煲 |
| 反射高檔+陰影傳統+全域光照低檔 | 中等偏高,集中火力去反射 | 室內氣氛弱啲,角落暗啲 | 主要玩水面、城市、反光面多嘅場景 |
| 反射中檔+陰影光追+全域光照高檔 | 高,成本集中喺室內氣氛 | 反射細節稍弱,野外改善有限 | 主要玩室內劇情、夜景、氣氛行先 |
| 三組全開高檔+升級技術補幀率 | 成本最高,靠升級技術去抵銷 | 升級檔位低嗰陣畫面朦、殘影風險高 | 願意接受升級技術代價去換全開光追 |
| 三組全關,留返傳統光影 | 成本歸零 | 完全冇光追效果 | 幀率同反應行先,畫面用傳統方法已經夠 |
呢張表唔係話邊行最好,而係話預算有限嗰陣,點樣將有限成本擺去自己最睇重嘅效果。冇一組組合係全贏,全部都係取捨。
逐組調校流程
調光追同調一般畫質設定一樣,都係一次改一組。第一步,先將三組全部關閉,記低傳統光影下嘅基線感覺同場景路線。第二步,只開反射,行一次有水面同玻璃嘅路線,判斷反射中檔同高檔嘅分別自己睇唔睇得出,睇得出先至留高檔,睇唔出就留中檔。第三步,關返反射、只開陰影,行一次近處物件多、光源變化明顯嘅路線,判斷光追陰影相對傳統陰影值唔值。第四步,關返陰影、只開全域光照,行一次室內同夜景路線,判斷間接光同顏色滲透係咪自己最介意嘅氣氛。
做完四步,腦入面已經有三組各自嘅價值排序。第五步,先至將三組一齊開,用自己排好嘅檔位去行一次綜合路線,睇下合併之後有冇新問題:去噪殘影係咪嚴重咗、快速轉鏡頭有冇拖影、半透明物件有冇異常。第六步,先至加入升級技術,由較高品質檔位開始試,檔位一路降,留意畫面朦同殘影係咪去到自己接受唔到嘅位,嗰個位就係自己嘅底線。第七步,如果仍然唔夠,先至考慮幀生成,而且要分開測試:開幀生成前後,操作反應同畫面痕跡要分開判斷,唔好淨係睇幀率數字。
測試嗰陣有幾個陷阱要避。第一,企定定睇靜止畫面會高估去噪效果,因為時間累積喺靜止畫面最有利,一定要郁。第二,只用一個場景去調三組,會得出偏頗結論,因為三組各自最貴嘅場景根本唔同。第三,一次過開晒三組再逐組降,降嗰陣好難分清邊組先係令畫面變差嘅原因,逐組開先至分得清。
常見誤區
第一個誤區,係以為光追開晒先至叫用緊光追。其實混合式光追本身就係逐組計,開一組反射已經係用緊光追,唔使三組全開先至算數。全開嘅代價係三組成本疊加,畫面回報卻係遞減,特別係陰影同全域光照喺某啲場景嘅邊際改善好細。
第二個誤區,係以為光追開咗,其他光影設定就唔使理。實際上傳統陰影、環境光遮蔽、屏幕空間反射呢啲設定,同光追組別係會互相影響或者互相取代嘅,開咗光追反射又留返高檔屏幕空間反射,可能係重複做緊同一樣嘢;開咗光追全域光照又留返高檔環境光遮蔽,亦可能係重複。調光追嗰陣,傳統光影設定要一併檢視,唔好兩邊都開到最高然後話成本太高。
第三個誤區,係以為去噪開到最強就冇雜訊又冇代價。去噪濾波愈強,細節損失同殘影風險愈高,快速移動、半透明物件、燈光閃爍嘅場景,強濾波嘅代價隨時比雜訊本身更礙眼。去噪唔係免費,佢係用細節同動態準確度去換平滑。
第四個誤區,係以為升級技術可以無限抵銷光追成本。內部分辨率降得太低,光追取樣基礎太粗,去噪同升級兩層重建疊加,畫面朦同殘影會一齊出現,嗰陣再降升級檔位只會愈嚟愈差,正確做法係返去降光追檔位,唔係再降升級檔位。
第五個誤區,係將顯示幀率當成操作反應。幀生成拉高嘅係顯示幀率,遊戲本身渲染同反應仍然跟住真實幀率,操作感覺冇跟住顯示數字一齊變快。判斷光追組合好唔好,要將幀率數字、畫面穩定性、操作反應分開睇,三樣都過關先至算係好組合。
調完都唔對路點分流
如果逐組都試過,組合亦試過,問題仍然係開光追就成程唔對路,但關晒光追就正常,咁問題範圍已經好清楚:光追相關。但仲要分多一層,係成本問題定係異常問題。成本問題嘅特徵,係逐組降檔位就會逐步改善,降到某個組合就回到可接受水平;異常問題嘅特徵,係開某一組就成程崩潰、閃爍、畫面錯亂,點降檔位都冇用,或者問題只出現喺某個驅動版本、某個遊戲版本。異常問題要先檢查驅動同遊戲係咪最新穩定組合、設定檔有冇殘留,再按症狀去分流,唔好繼續喺檔位度兜圈。
如果關晒光追都仲有問題,問題就唔喺光追,而係其他畫質設定、驅動、散熱或者硬件層面,應該返去一般畫質對照流程,或者 137 嘅分辨方法。如需送檢,網站公開三級收費為 HK$400–2,800,實際以檢查後報價為準。地址為石門達利廣場 1209 室,電話 2186 8010,WhatsApp 6558 6806。冇旺角門市,冇上門服務。送檢嗰陣講清楚邊組光追開咗先出事、邊組降咗有改善,檢查可以慳返好多重複排查嘅時間。
常見問題
問題:開光追之後幀率跌,係咪一定要全關先至有救?
答案:唔使。光追係三組獨立工作,反射、陰影、全域光照可以逐組開關。逐組試,先降回報最細嗰組,好多時留低一兩組已經夠睇,成本亦回到可接受水平。
問題:點解光追畫面有時會起沙或者閃爍?
答案:因為每像素取樣有限,結果本身有雜訊,要靠去噪去壓低。取樣愈少、場景郁得愈快、燈光變化愈多,雜訊同去噪穿幫嘅機會就愈高。降光追檔位或者調去噪強度,都會影響呢個平衡。
問題:點解光追畫面睇落朦,唔似預期咁銳利?
答案:好多時唔係光追本身朦,而係去噪濾波抹走咗細節,或者升級技術內部分辨率太低,兩層重建疊加之後變朦。要分開試:關升級技術睇下仲朦唔朦,再睇去噪強度,唔好一口咬定係光追問題。
問題:快速轉鏡頭嗰陣拖住殘影,係咪顯示卡有問題?
答案:多數唔係,而係去噪時間累積對齊出錯。快速移動嗰陣,之前幾格嘅資訊對唔返而家呢格,就會留低殘影。試下喺動態場景比較唔同去噪強度同升級檔位,睇下殘影係咪跟住呢啲設定走。
問題:反射、陰影、全域光照,預算有限先保邊組?
答案:睇你玩乜場景多。反光面多就保反射,室內夜景多就保全域光照,陰影通常係三組入面邊際改善最細嘅一組,預算有限嗰陣可以先降返去傳統陰影。冇一個放諸四海皆準嘅答案,要用自己常玩嘅場景去試。
問題:升級技術同光追一齊開,點解有時反而更差?
答案:因為內部分辨率太低,光追取樣基礎變粗,去噪同升級兩層重建疊加,朦同殘影一齊出現。呢個時候應該返去降光追檔位,唔係再降升級檔位,詳細升級機制見 162。
問題:幀生成開咗之後數字好睇咗,點解操作感覺冇變快?
答案:因為幀生成拉高嘅係顯示幀率,遊戲本身渲染同反應仍然跟住真實渲染幀率。操作反應要分開判斷,唔好淨係睇顯示數字,詳細取捨見 175。
問題:開咗光追反射,仲使唔使留返屏幕空間反射?
答案:好多時唔使,因為兩者做緊類似嘅事,重複開住只會浪費成本。調光追嗰陣,傳統光影設定要一併檢視,邊啲已經被光追取代就應該降返低,避免兩邊都開到最高。