為何遊戲里的3d渲染速度非常快,而三維軟體實時渲染非常慢?
12-24
遊戲為了提高速度省略了非常多的細節。
對於反射的渲染本質上是計算一個積分,對粗糙的表面來說,每個方向的入射光都有可能產生反射,所以我們需要把這些光線產生的反射都加起來,用方程表示就是一個積分:
離線渲染中我們有大堆的 CPU 可以用,所以可以用比較精確的方式去計算這個積分;而遊戲……特么你只有 1/30s 的時間去算啊,所以這個積分都是被大幅度的簡化了,反正「好看就行」。
這還只是一次反射。
對於全局光照來說,離線渲染可以慢慢把整個場景裡面每個點的入射、出射光分布都解出來,你遊戲裡面能這麼干?於是又得近似,細節就是這麼丟掉的。上個 @叛逆者 博文裡面的兩張圖:
這是一般離線渲染的做法,使用 Importance sampling 去計算渲染方程里的積分
這是遊戲中的做法,把積分拆解了,可以看到最左邊的幾個球有了明顯區別,但是幀數提高 60 倍
遊戲里的渲染是用了各種的hack,利用一些心理效應做的障眼法,如人眼對高光的敏感,只對主要場景精細建模.在特定場景下採用各種近似演算法,如SSAO.還有一些預計算的大量光照貼圖.而不是真正的基於物理的渲染.
更多的可以參考這個問題下的答案遊戲特效為什麼做不到像電影特效里的那樣真實? - 計算機圖形學
一個是各種近似處理+偷工減料+障眼法+模擬
一個是基於真實物理原理的渲染
大量的法線貼圖 高光貼圖 ao貼圖騙過了你的眼睛 而且有很多場景完全使用了預渲染的光子貼圖 根本不用現場計算。 如果你仔細觀察你會發現 一般只有主角或者離的近的物體會非常精細 雜兵 觀眾 一類的打醬油型角色是非常糙的 遠層場景甚至可以直接用一張圖來替代。當遊戲運行起來 快節奏加上攝影機引導觀眾的視角 你根本察覺不到這些問題。其實同樣的東西導回3d製作軟體之後 也不會很慢。只是如果你想實打實的製作,不用如上所示的一些視覺騙術來達到跟遊戲里一樣甚至超過某些遊戲本身的效果 必然會比較吃機器。這樣運行起來 卡是必然的。
遊戲裡面屬於實時渲染,使用3d api(OpenGL ,或者D3d) 調用顯卡加速 像素的渲染和光柵化。
三維軟體裡面都是用cpu 做光線跟蹤。。一般不會利用顯卡做加速處理。本身光線跟蹤的演算法不適合gpu並行加速處理。
提高速度的代價是犧牲了質量。。。
三維軟體里硬體渲染也很快啊 遊戲畫面就是靠硬體渲染的
要畫的三角形不一樣多吧。
推薦閱讀:
※為什麼計算機圖形不用四面體做基本圖元?
※如何學習計算機圖形學?
※如何看待電影《爵跡》於3月28日曝光的渲染序列及其技術水平?
※計算機中的圖片為什麼都是矩形的?顯示圓形也只能周圍透明?
※在 Cg 的逐像素著色的最後,每一個顏色值相加和每一個顏色相乘從數學角度有什麼差別?