名詞涵義
即時演算,英文為Real Time Rendering。即所有我們眼中看到的是圖像晶片“即時”生成的,其一系列的程式語言經由API(程式接口)翻譯成圖形晶片可以執行的指令來完成處理工作。
一般來說,即時演算的畫面可以任意變換鏡頭角度,而CG動畫則是固定的。但就畫面的精細程度來說,CG動畫還是強於即時演算的。不過隨著圖形技術的發展,即時演算與CG之間的差距會越來越小,比如《合金裝備4》的那段即時演算的宣傳片就絕對令人印象深刻。
具體解釋
說到即時演算,很多人會以為比較深奧,其實即時演算(尤其是遊戲範疇的)就是圖形技術的一種表現形式。
英文裡面,real time rendering,翻譯成中文就是我們通常說的“即時演算”.
即時演算的主要的工作都是由圖形晶片來完成的,經過指令的指揮和複雜的計算,遊戲中的人物和場景就出現在我們的螢幕上.
其實,提到"即時演算"的時候,我們伴隨著提到最多的還有CG動畫.
我想把"即時演算"和"CG動畫"對比著來說,我們就很明白啦.
先說說“CG動畫”,所謂的CG動畫,大部分工作是由動畫製作人員來完成的,他們把建立好的模型在他們的電腦上渲染成完成的圖,也即相當於經過了一道流水線,只不過流水線上的工作人員是動畫製作人員,渲染結束後呢,我們的遊戲機只需通過識別這些動畫的編碼,進行解碼之後以每秒鐘24幅畫或者30幅畫的速度播放出來就行啦,如果沒有專門對應的晶片(這些晶片一般來說可編譯的晶片,儲存有編解碼信息,解碼時可以很方便的找到對應的輸出),這個時候就要通過軟體的算法來利用CPU的計算能力進行一系列的計算之後產生對應的圖形輸出,這就是我們口中說的“播片能力”。
我下面舉個例子來說明.
比如,遊戲的開場CG動畫部分就是我們非常熟悉的動畫部分,這部分視頻是遊戲製作人事先已經製作好了的,只需播放即可,雖然我們看上去很色彩絢麗,其實並不占系統資源. 我們都有這樣的體會,就是當系統配置不夠的時候,往往能夠順利播發CG動畫,但是CG動畫過後,立即退出了遊戲,要么就黑屏,就是這個道理.
那么為何退出遊戲呢,下面就牽扯到了即時演算.即時演算在遊戲中是最吃系統的,即使非常小一部分的即時演算都會耗費相當大的系統資源.
再舉個即時演算的例子,即時演算的份量最大的就屬歐美製作的大型遊戲,所以我就拿<上古捲軸4>為例吧:
<上古捲軸4>;中有很多這樣的場景,就是在對付敵人的時候,你既可以選擇使用冷兵器攻擊敵人,也可以使用魔法攻擊,還可以互相交替進行攻擊,還可以與對方溝通,還可以放棄戰鬥而逃跑,那么在你瞬間選擇的時候,系統並不知道你將採用哪種方式進行攻擊,當你突然選擇使用冷兵器的時候,渲染系統就要從預留的渲染檔案中調出使用冷兵器的圖形檔案,進行即時渲染,這就是即時演算!!這個瞬間的即時演算完全是有CPU來進行的.而顯示卡和記憶體負責將CPU下達的指令進行合成然後完美還原計算,呈現出來的就是華麗的畫面圖形.
因此,需要系統有足夠的容量儲備來應付瞬間的圖形計算,否則就出現我們經常說的"卡",這就是由於系統配置跟不上,我們說的所謂的"卡" 其實就是丟幀現象,因為系統在計算的時候已經出現了不連貫,反映在螢幕上就是人物定格,一幀一幀往前跳.
因此,即時演算非常考驗系統.
與術語的區別
這裡值得注意的是,以上提及的即時演算(作為Real-time Rendering翻譯),以及CG,只能算作遊戲界俗語,並非計算機術語。在計算機圖形學術語中,Real-time Rendering大陸統譯做“實時渲染”。而演算一詞,作為計算(Computing,準確說是操作Operation)的漢字詞,源於日文;與其相似的日文辭彙還有“演運算元”(Operator)解釋為運算元或操作符,以及中文辭彙“演算法”,常用於港台地區,對應大陸的算法(Algorithm),但這些都沒有Rendering的含義,甚至日文也並不把Real-time Rendering譯作即時演算或實時演算,而用音譯リアルタイム レンダリング。Rendering在英文中原義粉刷牆壁,在計算機術語中衍生為繪製計算,其義:將(矢量)圖形轉化為(柵格)圖像,並施加光照和著色的計算過程。因此,Real-time Rendering(實時渲染)屬於實時計算(即時演算,Real-time Computing)的一種,但即時演算並不能和Real-time Rendering在概念上劃上等號,所謂演算的範疇更大。
CG,Computer Graphics,計算機圖形學,或泛指所有計算機圖形。所以不論所謂即時演算,還是CG動畫,甚至2D動畫,在術語中都算CG。而所謂即時演算和CG動畫真正的術語分別為“實時渲染”(實時CG,Real-time Rendering/CG)與“離線渲染”(離線CG,Off-line Rendering/CG)。