《GTA5》為啥這麼猛?R星開發團隊佛心來的!
此前,本站為大家帶來了《GTA5》開發故事第一講「一幀畫面」和第二講「」,相信大家看完後對R星更佩服了。不過在完成了場景圖案的基礎渲染之後,開發人員還需要對它進行後期製作,譬如修復畫面缺陷,調節整體遊戲環境氛圍等,最終讓畫面看上去更加舒適。
在第一講的部分中其實我們已經提到過了一些後期特效內容,例如Bloom(靜態光影宣染,它和HDR的區別在於後者是動態漸變的),抗鋸齒,貼圖色調的調整,但R星還有許多獨特的後期特效。
鏡頭光暈&光源條紋
喜歡攝影的玩家對這兩個特效一定不會陌生,當光源的光線射入真實鏡頭時,表面的散射和內部的反射有時候會產生一定程度的失真,從而造成了一個個光暈。
最終效果圖
而遊戲中的鏡頭光暈指的是螢幕中的光源直射所造成的明亮光點的集合,而光源條紋指的則是光源所產生的放射效果,這兩種效果在電影中很常見,實際運用到遊戲中是為了讓玩家看到的畫面有一種電影的美感。
這裡有兩種方法來渲染這種失真效果:
基於整體圖像:首先找到螢幕最亮的區域,對這個區域做複製和變形,這種做法適用於螢幕中同時存在大量光源。
基於單個圖形化對象:手動的添加圖形化對象並管理位置,這樣就導致每個光源的失真效果需要手動添加,設計者對於效果的形狀,顏色,強度調節性更強,但如果光源過多將耗時耗力。
《GTA5》中同時使用了這兩種方式,我們以這張圖片為例,其中最明顯的自然是針對太陽進行基於單個物體的失真特效添加,通過在太陽周圍繪製12個旋轉的四邊形加入光源條紋,而沿著這12個四邊形再添加70個單獨的圖形化對象,形成光暈,由近及遠,光源的間隔越來越大,數量越來越少。而基於整體的失真效果在本圖中只有一處,就是左下角最後一個光暈的藍色邊緣。
基礎圖
增加光源條紋
增加鏡頭光暈
線框顯示狀態
引擎使用了幾種圖形化對象來模擬不同的鏡頭效果:
增加耀斑
線框圖
《GTA5》非常注重遊戲細節,鏡頭光暈這一部分自然也不例外: 它的大小是和真實相機光圈大小成比例的。如果你在背對著太陽的時候突然朝向太陽,鏡頭光暈起初很大,然後縮小光圈來降低曝光,從而達到真實光線的效果。(你在背對著太陽的時候突然轉身的一瞬間眼睛肯定會覺得難受)
遊戲中還有一個細節做得非常出色:在第三人稱時你可以體驗到逼真的失真效果,但如果你切換到第一人稱視角,你幾乎就看不到任何光暈了,因為人的肉眼不是相機。
大光圈
小光圈
變形鏡頭
在遊戲夜晚的黑暗地區這個特效尤其明顯,遊戲模擬了相機變形鏡頭的失真效果,產生了水平或是垂直的條紋,通常情況下顯示藍色。近年來通過變形鏡頭產生光源條紋這個特效越來越受到各大廠商的歡迎,這不僅僅局限於遊戲界,好萊塢的科幻電影就非常喜歡這種特效。
在遊戲中變形鏡頭也是針對單個圖形化對象進行的,就如之前的太陽光一樣,只針對面向鏡頭中的強光源使用。
鏡頭變形前
鏡頭變形後
景深
首先讓我們一起來看看下面這張圖,發現什麼奇怪的問題了沒有,是否沒有感受到電影中那種直觀的遠近差異,因為圖像沒有進行失真效果處理,導致整個圖案的各個部分相對相機都處在同一平面,而景深效果就是用來解決這個問題的。
原圖,沒有模糊效果
景深的原理非常簡單,就是通過把圖像中非聚焦的部分進行模糊,但在遊戲中我們應該如何應用?首先通過距離緩衝區生成模糊圈範圍圖(COC),通過這圖告訴我們每個像素相較於鏡頭的距離,換句話說就是確認不同物體各自應該使用的模糊程度。每個像素的CoC值,取決於它與相機的距離和相機的鏡頭參數。
《GTA5》中用1到-1之間數值來定義像素的COC值,距離鏡頭很遠的失真物體標記為1,距離鏡頭很近的物體標記為-1,而標記為0的物體基本上不需要做任何失真效果處理。
創建數值符號是為了方便將各類像素歸類區分,例如0以下的劃分到紅色管道,0以上的則放在綠色管道,因為一個圖像中的圖像層次很多,如果不進行數據劃分單純用像素劃分不易操作。
最後,通過模糊圈範圍圖我們可以得知萊斯特黑色部分是焦點,富蘭克林和拉斯特身後的背景是需要進行失真的內容。
但這裡要注意,並非得到各個物體的COC值就可以直接使用計算著色器進行模糊處理了,因為我們可以看到,富蘭克林的COC值差不多為0.7,而其手臂鏈接的橫椅部分的COC值則為0,直接處理後富蘭克林會變得模糊,橫椅則是完全清晰,二者之間的連接就變得非常突兀,因此在這裡需要下調富蘭克林手臂周圍的COC值,讓它更加接近周圍物體的模糊值。
然後我們需要計算景深了,最傳統的方式在較低的解析度上通過像素著色器來計算模糊效果,並且將畫面內容分為橫向和縱向兩個管道來優化計算過程。但《GTA5》是在原本解析度上進行計算的,因此為了避免影響性能,他們使用了計算著色器來替代像素著色器。這是因為計算著色器更加適合計算大量例子的模糊效果,缺點就是單個像素容易受到周圍像素的模糊效果影響。隨後將兩個管道的內容組合在一起。
最終得到的遊戲畫面非常具有層次感,就像電影中給予一個角色聚焦效果一樣。
總結
關於《GTA5》的特效還有很多,但鑑於篇幅就不再詳細贅述,例如熱源散射,god rays(通過螢幕空間使用亮度溢出,暫時沒有較為官方的中文釋義,但切記不是體積光),動態模糊(通過運動的相機定向產生模糊效果,,並使用模板緩衝標記角色,剔除模糊數據)。
同時,角色死亡時的"Wasted"螢幕是純粹的後期效果處理,把渲染的場景模糊後,進一步轉為灰度圖,再深度暗化螢幕的四個角,接入膠片的顆粒感後再把"wasted"的文字繪製在上面。
希望這三期內容可以揭露一些Rockstar創造出被認為是在視頻遊戲歷史上有里程碑意義遊戲的秘密。震撼人心的場景,絕佳的沉浸感以及對細節的關注,使得GTA V成為了一款非常偉大的遊戲。
|