遊戲畫面是實時渲染的嗎?

正常出一張1080p抗鋸齒的圖怎麼也得好幾分鐘 而遊戲要達到每秒30幀以上 他是每一幀都實時渲染的嗎?那要怎麼做到這麼快的渲染速度?


首先遊戲畫面,當然是實時渲染的。

但是如果深究一下的話,就會牽扯到實時渲染與離線渲染的定義和區別了。實時渲染最大的要求就是realtime,也就是快。要有多快呢,只有每秒24幀以上了,我們才不至於覺得『哇,這個PPT翻得真快』。也就是說,渲染一屏幕的遊戲場景的圖像,至少也要在1/24秒以內(實際遊戲當中幀率要求高得多)。

離線渲染就不一樣了。『離線』也就是『不在線』,也就是不一定要馬上給出結果。像是Pixar,Dreamworks或者Industrial Light Magic之類的電影製作公司要渲染電影特效的時候,那就放一堆渲染農場在那邊跑就可以了。一幀畫面就算跑一天才跑出結果來,也是值得的。

所以對時間上的需求的差異,也就使得實時渲染和離線渲染有了截然不同的解決方案。像是《怪獸大學》裡面動畫人物的每一根毛髮,它的顏色,材質,物理效果以及反射情況我們都可以通過計算機很好地模擬出來。並且使用各種類似光線追蹤的辦法,模擬每個光子從光源出發,擊中物體表面之後,被吸收,被散射/反射/折射,並且能量減少的整個過程。這個運算量可想而知也是非常大的;但是與此同時的,這種盡量嚴格服從物理規則的渲染辦法,也會渲染出相當真實的效果。

而遊戲畫面的渲染,也就是實時渲染的話,則在時間上的資源尤其地珍貴。我們簡單地以Adrian的這篇講述GTA V的遊戲畫面渲染方式的文章,GTA V - Graphics Study為例,看看GTA當中是如何完成一幀遊戲畫面的渲染的。

GTA V使用了一種號稱deferred rendering pipeline的技術。這種技術並不是一口氣渲染出最後的圖像,而是將場景當中的散射、法向、高光、輻照、深度、陰影、反射等信息逐一渲染到緩衝區當中。最後合併這些個緩衝區來渲染最後的圖像。GTA V中的渲染引擎將一幀要渲染的圖像,分解為Diffuse map,Normal map,Specular map,Irradiance map,Depth map,Stencil,SSAO和Reflection這八個不同的圖層,存儲在G-Buffer當中。最後依照某種方法去合併這八個圖層,得到一個大致的圖像。

當然,這一幀當中還缺少例如天空、反射物體(游泳池,大海)、透明物體(眼鏡)等使用defered shading沒有辦法渲染得到的東西。這些物體需要另外的渲染辦法。

所以可以很明顯的發現,實時渲染並不是真實地去模擬物理世界,而是像畫畫一樣,一層一層地拉近視覺上對真實世界的模擬。所以我們簡單對比來看,就會發現上面《怪獸大學》裡面的截圖更接近真實的世界,而下面的GTA的遊戲截圖會在細節上更加缺失一些。

但從來也沒有人說過,實時渲染就不可以光線追蹤;而且,離線渲染也充斥了各種只為滿足視覺體驗的hack渲染手段。所以孤立地區分開這兩種渲染辦法也不太有建設意義。

我相信啊,隨著計算機硬體技術的發展,GPU越來越牛逼,完全意義上的實時光線追蹤遲早也會被搞出來的,不是么?

想了解實時渲染,請參閱Real-Time Rendering Portal,這裡面包含了很多有用的東西。

還有SIGGRAPH里的關於實時渲染開展的course: Advances in Real-Time Rendering in 3D Graphics and Games

想了解離線渲染/基於物理的渲染/光線追蹤渲染等,請看看大名鼎鼎的PBR Physically Based Rendering: From Theory to Implementation

歡迎關註:

http://weixin.qq.com/r/2zlDW1XEWwgkrRE492zJ (二維碼自動識別)


是實時渲染

渲染技術不同

如果是電影動畫CG,那通常是CPU負責,一幀一幀的渲。一張圖要很長時間。當然,你得到的圖在光感、質感等各方面都是非常優秀的。因為一般這樣的渲染是基於計算機對光的模擬運算,實打實算出來的。比較費事。

3D遊戲里的場景也會有光,然而和CPU渲染有本質區別。首先3D遊戲里的光運算依靠的是GPU,也就是你的顯卡完成。通常情況下,遊戲引擎不會像渲染器一樣去追蹤光線多次的反彈。

一道光照射到物體上,光再反彈到其他地方,在其他地方繼續反彈。是一個非常複雜且幾乎是無限次的運算過程。

遊戲引擎最終光反彈的次數很少。所以你可以看到遊戲里的場景光影細節是嚴重不足的(相比CPU渲染),至少目前還無法做到很好。而且遊戲里的很多技術,是為了方便遊戲能在穩定幀數下運行的。所以有些效果,並非光運算。而是用一些更快的方式去模擬光感,甚至直接使用一些已經預渲染之後的貼圖,使得場景看上去像那麼回事就可以了。

而且人在觀察運動的場景,對這些細節的處理其實並不是特別敏感。但一旦靜幀,差別就很大了。

所以,如果截圖迪士尼這些3D動畫電影,你會得到一張非常高清且光感自然的圖像。而遊戲截圖(3D實時運算)就差很多。然而,當你在玩遊戲的時候,實際上對這些細節並不是十分在意。技術越是成熟,帶來的提升感就會越來越小。

你想像一下從PS進化到PS2的畫面,提升非常高,然而PS2進化到PS3就不如之前這麼強的對比,現在PS3進化到PS4在變化上也是有,但遠不如PS2進化到PS3那種感覺了。

遊戲引擎的進步在縮小CPU渲染和GPU渲染的感官差距

如果要簡明扼要的說CPU渲染和GPU渲染的不同

CPU渲染追求更加真實的渲染效果,通常是真實光運算

GPU渲染追求更快的渲染結果,通常是模擬光感


是實時渲染的。

你先拿離線渲染的數據,提出一張1080p抗鋸齒的圖要好幾分鐘,然後又套到遊戲的語境,顯然是邏輯混亂。實時渲染1080p抗鋸齒的1/30秒之內完成太正常了。


實時渲染可以不擇手段

只要看來大體像那麼一回事就行了

並不要求物理上是精確的

甚至都不要求物理上是正確的

並且大多是局部模擬

就像畫畫一樣

而非實時的為了達到真實性

就是實打實的去做全局的物理模擬

為的是達到物理真實

就像攝影一樣

兩者的目的不同

側重點也不一樣

計算量也不在一個數量級上


所以 3D 遊戲不會用 Raytracing 啊。


演算法不同,CPU渲染光線跟蹤可以很多次,引擎基本上2-3次,還要預先烘焙,光照陰影這塊,基本是假演算法,當然GPU並行運算能力也算是解決方案,但是依照現在GPU能力,實時計算這些依然不現實,只能用假的咯


推薦閱讀:

某些非線性建築屋面如何排水?
學建築的比學景觀的逼格高嗎?
環藝 建築 室內 景觀該如何抉擇??
怎樣才能設計一座「好」的監獄?
學建築設計的就業前景如何?

TAG:遊戲 | 遊戲引擎 | 渲染 | 建築設計 |