渲染,就是將3D模型轉換成2D圖像,并最終呈現在屏幕上的過程。
常見的渲染類型有以下幾種:
實時渲染
離線渲染
云渲染
混合渲染
它們中間有重疊交叉,也有技術區別。本文嘗試用淺顯易懂的方式來進行解釋,希望大家遇到這些概念,或者一些3D渲染引擎產品的時候,可以按照這些渲染分類,去快速的進行定位和分析,更好的幫助我們理解和學習。
一、實時渲染
實時渲染(Real-time Rendering)從字面的意思非常容易理解,就是我們要實時的看到渲染之后的3D物體或者場景的效果。
實時,用數字怎么理解?至少24FPS:只有達到或者超過1秒鐘播放24張連貫圖像的速度,人眼觀看時就不會形成卡頓的感覺。
一般的實時渲染場景都是帶有強交互屬性的,比如最常見的3D游戲《王者》《吃雞》,或者是一些帶有交互的3D應用,比如智慧城市、智慧園區的可視化項目。實時渲染的場景中,這些應用都會獨立運行在我們的電腦、手機上,通過本地的硬件能力完成實時渲染的過程。因此,玩大型游戲的話,硬件性能一定要好。
實時渲染追求渲染速度,要求比較強的交互體驗。所以即便在客戶端硬件性能較高的情況下,也要做大量的數學算法優化,在不是特別降低渲染效果的同時,減少渲染時間,達到很好的實時性交互。
二、離線渲染
離線渲染(Offline Rendering)這個從字面意思理解,好像就是“斷網”之后在做渲染,但是這種理解是不對的。
離線渲染是跟實時渲染相對應的,簡單說就是我們不需要實時地看到渲染效果的場景。
這種場景最常見的就是我們的家裝效果圖。做過裝修的小伙伴應該都知道,如果讓設計公司出效果圖一般都是要收費的(有些為了吸引客戶當然也會免費),他們其實就是在做離線渲染的工作。
那為什么我們不能實時地去渲染一張效果圖,反而要用離線渲染的機制呢?這就要看最后的渲染效果到底要多高了。
實時渲染,雖然渲染速度快,可以實時生成渲染內容,但是渲染的效果和真實度相對來說是不可能特別高的。對于離線渲染的場景,基本都是對渲染要求非常高的,甚至是完全真實的。
比如剛才提到的家裝效果圖,你可能不需要立刻看到渲染圖,但是如果看到的時候,發現效果不好,就可能要換其他設計公司了。
另外一個最常見的就是好萊塢影視大片、3D動畫等影視場景。他們都需要達到一個非常逼真的渲染效果甚至是完全真實的場景復現,但是對實時性要求不高。
所以,一般的好萊塢大片,尤其是特效非常好的那種,拍攝完成后的制作周期都非常長。比如我們耳熟能詳的《阿凡達》,當時動用了40000顆CPU,104TB內存,10G網絡帶寬,整整離線渲染了1個多月。
說到這大家應該會有一個疑問了,怎么可以用到40000顆CPU來進行渲染呢?什么電腦能有這么多CPU呢?其實這就是離線渲染在概念上,容易讓人誤解的地方:離線渲染大多數情況反而恰恰是在線的。
通常情況,如果我們在做家裝效果圖,是可以用自己的一臺普通電腦去進行渲染制作的,但是自己的電腦硬件配置肯定不會特別好。
因此,完成整套渲染計算的過程到最終出圖是需要很長時間的,當然電腦硬件越好,時間越短。
如果是專業的設計團隊,雖然是需要運用離線渲染達到很高的渲染效果,同時肯定也是希望出圖的時間越短越好。
因此就出現了一種新的離線渲染形態:渲染農場。說到渲染農場相信很多人都不陌生,它就是在云端買了很多渲染服務器,這些服務器可以搭建成千上萬顆CPU或者GPU的集群,來專門服務那些需要快速完成離線渲染的用戶。
這就是為什么《阿凡達》的渲染會用到那么多CPU的原因,當然現在基本都是采用GPU來進行渲染工作了。渲染農場其實就是搭建了渲染服務器集群,那當然就是在線的了。所以說,只要提到渲染農場,它是離線渲染場景中的一種渲染形式,但是實際上它恰恰是在線的。
離線渲染追求渲染質量,不要求實時性和交互性。追求的是極致的渲染效果,達到以假亂真的體驗。因此就用最極致最優秀最貼近真實物理原理的渲染算法,來進行真實度極高的渲染過程。通過渲染農場的云端計算能力,盡量地減少渲染時間。
三、云渲染
云渲染(Cloud Rendering),這個從字面意義理解就是在云端完成渲染的意思。但是為什么上面講到渲染農場的時候,并沒有特意強調它就是云渲染呢?
其實如果按照渲染發生的節點來說,渲染農場這種離線渲染就是屬于云渲染范疇的。
但是,我們通常對于云渲染的理解,一般都是在云端完成實時渲染的場景。
上面我們提到的實時渲染大部分時候都是在我們自己本地的電腦或者手機上完成的,因此對于終端硬件的要求是比較高的,不然“卡頓”肯定是無法避免的。
云渲染的出現就是為了解決這個問題:讓硬件性能不太好的終端也可以實時的渲染效果不錯的3D內容。
云渲染的基本原理是,把所有的3D渲染工作都交給云端。渲染完成后,編碼成為視頻實時地傳送給我們的客戶端,客戶端就變成了一個視頻播放器,對視頻流進行解碼和播放,這個過程中可以監聽一些鼠標和鍵盤操作,來完成交互功能。
這樣大量的三維數據和美術資源不用安裝到我們的手機或者電腦的客戶端,而是全部在云端完成渲染,客戶端只要具備看視頻的性能,就可以體驗具有比較好渲染效果的3D應用。
對于大眾來說,手機設備不用特別高配,就可以體驗效果很好的游戲,而且手機一般也不會發燙了。目前云渲染的場景主要也是體現在游戲場景中,即云游戲。
當然還包括一些對渲染質量要求比較高的3D可視化或者數字孿生項目。
云渲染追求相對較高的渲染質量同時,也要達到實時性要求。所以云端算力的部署和調度的能力要求會更高,讓客戶端配置不高的用戶通過云渲染也能體會到不錯的3D應用。
四、混合渲染
混合渲染(Hybrid Rendering)從字面意思就是非單一方法的渲染機制。這也就使得這個詞,沒有一個完全標準且唯一準確的定義。首先大家需要明白,渲染的最終目的是呈現畫面,不論是圖片,視頻,還是實時交互的場景。那為了這個最終的呈現結果,如果渲染過程中采用了很多種方案來混合實現,就可以說它是混合渲染。
下面從不同的角度,總結了一些混合渲染的形式。
基于管線的混合渲染
基于管線的混合渲染,指的是一條渲染管線中,會用到不同的計算承載方式,最終來完成渲染工作。
① 光柵化(Rasterization)
渲染管線中,這是最基本的計算承載方式。它對于一些光線不是很復雜的場景仍然是可以勝任的,但是如果光線一旦復雜,它就沒有辦法很好地勝任復雜的光線算法了,因此渲染效果也就不盡人意。
②計算著色器(Compute Shader)為了解決光柵化的計算效率低下問題,現代圖形API都提供了計算著色器,即Compute Shader。它本質是一種通用計算的能力(GPGPU),完全運用在Compute Pass中的,是“專一”的計算單元,有了這種通用計算能力,就不再是光柵化中的“模擬”計算了,而是專業級的計算能力。③ 光線追蹤著色器(Ray Tracing Shaders)
就是特意為光線追蹤這種數學算法而設計的,它由很多特殊著色器模塊的組合而成。
這三種計算承載方式之間并不是誰要代替誰,也沒有一種完美的方法。而應該對于不同的場景,運用不同的方法。只要混合使用了不同渲染方法的渲染管線,都可以理解成是混合渲染的一種體現。
基于數據的混合渲染
基于數據的混合渲染,指的就是對一個3D場景中的不同3D資源(模型,場景等)進行分類,相當于對3D資產數據進行拆分,把不同類別的3D數據放到不同的渲染節點進行渲染,最后通過網絡通信技術,把數據合并到一個需要顯示輸出的節點上,進行最終的呈現。
基于硬件的混合渲染
基于硬件的混合渲染,指的就是CPU和GPU可以同時參與渲染任務的一種混合渲染模式。
- 基于框架的混合渲染
基于框架的混合渲染,指的是渲染過程可以從之前的框架轉移到另外一個全新的框架上實現。
總結下就是,混合渲染沒有一個固定的定義,只要把“渲染”混合使用,都可以叫混合渲染。
目前,我們已經介紹了離線渲染、實時渲染、云渲染、混合渲染。要強調的是,它們之間所用到的技術和場景,有很多都是相互交疊在一起的,并沒有一個標準唯一的準則。其實渲染本身,就是一個數學算法在計算機上的運算過程,它們都有各自的優劣和使用場景,大家可以按照渲染分類,去快速的進行定位和分析,更好解決我們遇到的問題!
本文來源:Orillusion
-
gpu
+關注
關注
28文章
4729瀏覽量
128890 -
模型
+關注
關注
1文章
3226瀏覽量
48809
發布評論請先 登錄
相關推薦
評論