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