遊戲畫面是實時渲染的嗎?
正常出一張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的遊戲截圖會在細節上更加缺失一些。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能力,實時計算這些依然不現實,只能用假的咯
推薦閱讀:
※某些非線性建築屋面如何排水?
※學建築的比學景觀的逼格高嗎?
※環藝 建築 室內 景觀該如何抉擇??
※怎樣才能設計一座「好」的監獄?
※學建築設計的就業前景如何?