Unity2018照明流程最佳實(shí)踐(上)

目前 Unity 提供了多種渲染管道茁影,兩種全局照明系統(tǒng),四種照明模式阅束,三種燈光模式呼胚,以及兩種 Shadowmask 模式,為開發(fā)者在創(chuàng)建面向高配PC息裸、主機(jī)、移動和XR設(shè)備項(xiàng)目的過程中提供了高度靈活性沪编。但是呼盆,作為 Unity 新手,如果不熟悉渲染的話蚁廓,面對這些選擇不免感到茫然访圃,本文來自 Unity Spotlight Team 的分享,XR技術(shù)研習(xí)社對此進(jìn)行了編譯相嵌。

定義

首先看幾個重要的圖形渲染概念的定義腿时。

渲染管線決定對象如何在場景中呈現(xiàn)出來况脆,分以下三個階段:

第一階段:剔除(Culling)。在此階段列出需要被渲染的對象批糟,優(yōu)先呈現(xiàn)攝像機(jī)可見的范圍格了,以及未被其它物體遮擋的對象。

第二階段:渲染(rendering)徽鼎。 在此階段盛末,根據(jù)光照設(shè)置以及相關(guān)的燈光屬性,將對象繪制到基于像素的緩沖區(qū)中否淤。

第三階段:后處理(post-processing )悄但。一般在緩沖區(qū)上執(zhí)行操作,比如應(yīng)用 Color Grading石抡、Bloom檐嚣、Depth of Field 等效果,將最終輸出到每一幀啰扛。


著色器(Shader)是在GPU上運(yùn)行的程序或程序集合的統(tǒng)稱净嘀。比如,在剔除階段完成之后侠讯,頂點(diǎn)著色器(vertext shader)將可見對象的頂點(diǎn)坐標(biāo)從對象空間(object space)變換為剪輯空間(clip space)挖藏,GPU使用新坐標(biāo)對場景進(jìn)行光柵化,即將矢量信息轉(zhuǎn)換為實(shí)際像素厢漩。然后膜眠,像素(或片段)著色器將這些像素進(jìn)行著色,像素顏色由材質(zhì)屬性和光照環(huán)境決定溜嗜。另一種常見的著色器類型被稱為計(jì)算著色器(compute shader)宵膨,這種著色器使開發(fā)者能夠利用GPU強(qiáng)大的并行處理能力進(jìn)行任何類型的數(shù)學(xué)運(yùn)算,比如光剔除炸宵、粒子物理辟躏、體積模擬等。

直接照明指的是來自光源(比如燈泡)的照明土全,并非光線從物體表面反射的結(jié)果捎琐。根據(jù)光源的大小及其與被照射物體的距離,這種照明通常會產(chǎn)生清晰且明顯的陰影裹匙。需要注意以下兩點(diǎn):

不要將直接照明與定向照明(directional lighting)混淆瑞凑,定向照明是由無限遠(yuǎn)的光源(例如Unity中的平行光)發(fā)出的光,定向光的顯著特性是能夠使用平行光線覆蓋整個場景概页,并且沒有距離衰減(或光衰減)籽御,也就是說,隨著到光源距離的增加,物體接收的照明強(qiáng)度不會衰減技掏。

在現(xiàn)實(shí)世界中铃将,太陽光與任何其他光源一樣,光照強(qiáng)度與距離成反比哑梳。例如劲阎,水星上日光的照射強(qiáng)度幾乎是地球的7倍,而火星接收的日光照射是地球的1/2涧衙,而冥王星只有地球的0.06%哪工。然而,鑒于地球上有限的海拔高度弧哎,相較以上的距離雁比,日光在地球上的衰減是微不足道的。因此撤嫩,平行光完全能夠模擬Unity場景中的陽光偎捎,包括大型的,以行星為中心的開放世界序攘。另外茴她,對于其他類型的光源(比如點(diǎn)光源和聚光燈),Unity 在高清渲染管線(HDRP)中能夠提供基于物理的衰減程奠。

間接照明是由光線從物體表面反射然后通過介質(zhì)(比如如大氣或半透明材料)傳播和散射而產(chǎn)生的照明丈牢。在這種情況下,光線通常通過遮擋物形成相對柔和的陰影瞄沙。

全局照明(GI)用于在場景中產(chǎn)生間接照明己沛,主要作為直接照明的功能。 在業(yè)內(nèi)距境,目前實(shí)現(xiàn)全局照明存在幾種技術(shù)申尼,比如光照貼圖(lightmaps)、Irradiance Volumes垫桂、Light Propagation Volumes师幕、光照探頭(light probes)、基于體素的GI和基于距離場的GI等诬滩,它們被廣泛應(yīng)用在像Unity霹粥、UE4、CryEngine碱呼、COD 等引擎中蒙挑,對于Unity來說,使用光照貼圖和光照探頭來實(shí)現(xiàn)愚臀。

光照貼圖技術(shù)通過發(fā)射光線計(jì)算光線反射,然后將生成的光照效果應(yīng)用到紋理中,以此來生成光照貼圖和光照探頭的數(shù)據(jù)姑裂。因此馋袜,使用不同的光照貼圖技術(shù)會呈現(xiàn)不同的照明效果。目前舶斧,Unity 使用兩種光照貼圖技術(shù):Enlighten 和 Progressive Lightmapper欣鳖。

概述

以下流程圖從內(nèi)容創(chuàng)作者的角度展示了在Unity中設(shè)置照明的過程。


在整個流程中茴厉,首先需要選擇渲染管線泽台,然后決定如何生成間接照明并選擇相應(yīng)的全局照明系統(tǒng)。在確保所有全局照明設(shè)置都對項(xiàng)目進(jìn)行了相應(yīng)調(diào)整后矾缓,可以繼續(xù)在場景中添加燈光怀酷、自發(fā)光表面、反射探頭嗜闻,光照探頭以及Light Probe Proxy Volumes (LPPVs)蜕依。詳細(xì)介紹所有這些照明對象的用法和功能超出了本文的討論范圍,因此建議讀者閱讀Unity手冊中關(guān)于光照部分的相關(guān)介紹琉雳,以了解如何在項(xiàng)目中正確使用它們样眠。

渲染管線

在 Unity 2018 之前,只有一種渲染管線翠肘,現(xiàn)在稱之為“內(nèi)置渲染管線(Built-In Render Pipeline)”檐束,該管線提供前向(forward)和延遲(deferred)兩種渲染模式供用戶選擇。

? ? ? ? ?1.在(多通道)前向渲染模式中束倍,場景中的所有對象按照一個統(tǒng)一的順序逐個渲染被丧,在多通道渲染過程中,當(dāng)多個光源照亮對象時肌幽,渲染成本會顯著增加晚碾,具體取決于影響每個對象的光源數(shù)量。這種類型的渲染器通常提供多種著色器喂急,并且能夠輕松處理透明度格嘁。

? ? ? ? ?2.在延遲渲染模式下,所有(包括不透明)幾何體首先渲染到存儲有關(guān)其材質(zhì)信息(顏色廊移、反射糕簿、平滑度等)的緩沖區(qū)中。稍后(在此體現(xiàn)延遲)狡孔,每個像素被順序著色懂诗,同時,渲染時間主要取決于影響每個像素的光源數(shù)量苗膝。透明對象和具有復(fù)雜著色器的對象仍需要額外的前向渲染通道進(jìn)行渲染殃恒。在處理包含很多動態(tài)燈光的場景時,建議使用延遲渲染,例如人工照明的室內(nèi)場景离唐,或需要室內(nèi)外組合照明的項(xiàng)目病附。

????在2018年1月,Unity 推出了 Scriptable Render Pipeline(SRP)亥鬓,允許開發(fā)者通過C#腳本自定義渲染流程完沪。這實(shí)際上是游戲引擎領(lǐng)域的一次變革——用戶能夠自由控制對象的剔除、繪制和后處理嵌戈,而無需使用像C ++這樣的底層編程語言覆积。

Unity提供了兩種SRP,目前為預(yù)覽版熟呛,其設(shè)計(jì)充分考慮了硬件規(guī)格及性能:


高清渲染管線(以下簡稱 HDRP)是一個綜合了Deferred/Forward宽档、Tile/Cluster 渲染方式的渲染器,提供高級渲染和著色功能惰拱,適用于需要展示高品質(zhì)視覺效果的PC和主機(jī)項(xiàng)目雌贱。Tile渲染和Cluster渲染如下圖所示:

其中,一個 Tile 代表幀中一小塊二維正方形區(qū)域中的像素偿短,一個 Cluster 代表攝像機(jī)兩個截平面之間的三維空間欣孤。Tile 和 Cluster 渲染技術(shù)均依賴于影響每個Tile或Cluster的燈光,然后在一個通道中中根據(jù)與其相關(guān)燈光來計(jì)算照明昔逗。不透明對象最有可能使用Tile系統(tǒng)進(jìn)行著色降传,而透明對象則依靠Cluster系統(tǒng)。與內(nèi)置渲染管道(延遲模式)相比勾怒,HDRP 的主要優(yōu)勢是更快的照明處理和更低的帶寬使用婆排。

輕量級渲染管線(LWRP)是一種快速單通道前向渲染器,適用于具有較低實(shí)時照明要求的設(shè)備笔链,例如智能手機(jī)段只、平板電腦和VR/AR設(shè)備。在該渲染管線中鉴扫,會對燈光進(jìn)行逐對象剔除赞枕,并在一個通道中進(jìn)行光照計(jì)算。與內(nèi)置渲染管線相比坪创,該管線能夠減少繪制調(diào)用的次數(shù)炕婶。

通過使用以下決策樹,讀者可以使用幾個關(guān)鍵條件判斷決定使用何種渲染管線莱预。


模板

可以通過 Unity 的 Package Manager (Window > Package Manager) 下載最新版本的 HDRP 和 LWRP應(yīng)用到項(xiàng)目中柠掂。在項(xiàng)目中應(yīng)用某個 SRP 比較快捷的方式是,在使用Unity Hub創(chuàng)建一個新項(xiàng)目時依沮,選擇相應(yīng)的模板(Template)涯贞,如下圖所示枪狂。


手動設(shè)置

如果要手動設(shè)置HDRP或LWRP項(xiàng)目,請確保已安裝所需的 package肩狂。以使用HDRP為例摘完,可通過 Create > Rendering > High Definition Render Pipeline Asset 命令在 Project 面板中新建對應(yīng)的資源姥饰,然后將此資源拖到 Graphics Settings 面板的 Scriptable Render Pipeline Settings 屬性中傻谁,如果此處不指定任何資源,Unity 將默認(rèn)使用內(nèi)置渲染管線列粪。如果使用 HDRP审磁,需要確保在 Player Settings 中選擇了線性(linear)色彩空間,并使用 Rendering > Scene Settings 命令在場景中添加一個場景設(shè)置游戲?qū)ο蟆?/p>


可擴(kuò)展性

對于理解渲染技術(shù)并熟悉C#的開發(fā)者岂座,如果需要為項(xiàng)目完全定制渲染器态蒂,建議嘗試使用SRP的相關(guān)概念創(chuàng)建自己的渲染管線。鑒于LWRP擁有較小的著色器庫且易于注入费什、移除钾恢、切換渲染通道,使得LWRP具有極強(qiáng)的可擴(kuò)展性鸳址。

兼容性

在Unity中將項(xiàng)目中的材質(zhì)從內(nèi)置渲染管線切換到HDRP或LWRP比較容易瘩蚪,使用 Edit > Render Pipeline > Upgrade xxx 相關(guān)命令即可完成,如下圖所示稿黍。需要注意的是疹瘦,此操作不可逆种吸,建議事先做好項(xiàng)目備份米奸。


盡管如此乙埃,自定義著色器需要進(jìn)行手動移植巷查,此過程相對比較耗時艺糜,具體取決于自定義著色器的數(shù)量羔杨。由于LWRP 和 HDRP 在物理表現(xiàn)上比內(nèi)置渲染管道更加準(zhǔn)確磨德,尤其是在光衰減和分布方面屯援,所以切換前后的項(xiàng)目看上去會有一些不同矿筝。此外起便,HDRP和LWRP之間互不兼容,因?yàn)樗鼈儧]有相同的渲染特性跋涣,兩者可以相互轉(zhuǎn)換缨睡,但不是一鍵操作,需要手動重新設(shè)置照明陈辱、材質(zhì)和著色器奖年。

最后需要說明的是,HDRP和LWRP目前仍處于預(yù)覽中沛贪,并非所有功能都已針對兩種管線實(shí)現(xiàn)陋守。比如震贵,某些照明模式尚未完全適用于LWRP,并且HDRP目前尚不支持VR/AR水评,但是在未來版本中將逐步實(shí)現(xiàn)猩系。

全局光照系統(tǒng)

Unity 提供兩種全局照明系統(tǒng),可在 Window > Rendering > Lighting Settings 中啟用它們中燥。

實(shí)時全局光照(以下簡稱實(shí)時GI):該系統(tǒng)完全依賴于第三方照明中間件Enlighten寇甸。在Unity的預(yù)計(jì)算過程中,Enlighten先后經(jīng)過兩個階段疗涉,包括:集群化和光傳輸拿霉。第一階段將場景分解簡化為以“集群”為單位進(jìn)行組織的集合,在第二階段計(jì)算集群與集群之間的可見性咱扣。預(yù)計(jì)算后的數(shù)據(jù)在運(yùn)行時用于交互性地生成場景的間接照明绽淘。 Enlighten的優(yōu)勢在于能夠?qū)崟r改變間接照明效果,因?yàn)轭A(yù)計(jì)算的數(shù)據(jù)依賴于集群之間的關(guān)系闹伪。但是沪铭,與其他光照貼圖技術(shù)一樣,改變場景中的靜態(tài)幾何體將觸發(fā)新的預(yù)計(jì)算偏瓤。

烘焙全局光照(以下簡稱烘焙GI): 照明信息被烘焙到光照貼圖和光照探頭中杀怠,Baked GI 系統(tǒng)可以使用以下兩種技術(shù)之一:

1.Progressive Lightmapper

2.Enlighten

????????Progressive Lightmapper 優(yōu)先計(jì)算對于攝像機(jī)可見物體的照明,并大大提高的照明計(jì)算速度硼补,但代價是增加整個場景的總體烘焙時間驮肉。 該技術(shù)使用CPU通過路徑追蹤算法計(jì)算間接照明∫押В基于GPU加速的 Progressive Lightmapper 能夠大幅縮短場景的烘焙時間离钝,目前正在處在研發(fā)中,在 Unity 2018.3.05b 中集成了該技術(shù)測試版褪储。由于Enlighten 和Progressive Lightmapper 使用了不同的技術(shù)計(jì)算光照卵渴,所以兩者產(chǎn)生的光照效果會有不同。

下圖列出了各全局光照系統(tǒng)的主要優(yōu)缺點(diǎn)鲤竹,可根據(jù)決策樹選擇項(xiàng)目需要使用的全局光照系統(tǒng)浪读。


靜態(tài) VS. 動態(tài)

無論您使用哪種全局照明系統(tǒng),Unity 都只會考慮標(biāo)記為“Lightmap Static”的游戲?qū)ο笮猎濉討B(tài)游戲?qū)ο笮枰柚鷪鼍爸蟹胖玫墓庹仗筋^來接收間接照明碘橘。

由于全局光照計(jì)算是一個相對緩慢的過程,因此只有具有明顯光照變化的大型復(fù)雜資源才需要應(yīng)標(biāo)記為“Lightmap Static”吱肌。接收均勻光照的較小網(wǎng)格可保持為動態(tài)設(shè)置痘拆,然后通過使用 Light Probes 為其提供近似效果的間接照明效果。較大的動態(tài)游戲?qū)ο罂梢允褂?Light Probe Proxy Volume(LPPV)氮墨,以便在局部接收更好的間接照明纺蛆。限制場景中靜態(tài)游戲?qū)ο蟮臄?shù)量對于提高烘焙時間同時保持足夠照明品質(zhì)至關(guān)重要吐葵。

警告

在Unity中可以同時使用烘焙和實(shí)時GI技術(shù),但是桥氏,必須注意温峭,同時使用會大大增加烘焙時間和程序運(yùn)行時的內(nèi)存消耗,因?yàn)檫@兩個系統(tǒng)不使用相同的數(shù)據(jù)字支。此外凤藏,間接照明在運(yùn)行時的交互式更新將給CPU帶來額外的壓力,并且在視覺上祥款,烘焙和實(shí)時GI提供的間接照明效果會有差異清笨,因?yàn)樗鼈兪褂昧瞬煌募夹g(shù)來模擬間接照明,并且通常在完全不同的分辨率下執(zhí)行刃跛。若同時使用這兩種技術(shù),建議將使用范圍限制在高端平臺或具有可預(yù)測性能成本且嚴(yán)格把控場景的項(xiàng)目中苛萎,同時桨昙,建議由對所有照明設(shè)置有很好理解的團(tuán)隊(duì)成員負(fù)責(zé),因?yàn)楣芾磉@兩個系統(tǒng)相對復(fù)雜腌歉。

因此蛙酪,對于大多數(shù)項(xiàng)目而言,盡量避免同時使用兩種GI技術(shù)翘盖,選擇其一是相對比較穩(wěn)妥的做法桂塞。

---------------------

作者:XR技術(shù)研習(xí)社

原文:https://blog.csdn.net/sovida/article/details/84351391

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市馍驯,隨后出現(xiàn)的幾起案子阁危,更是在濱河造成了極大的恐慌,老刑警劉巖汰瘫,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狂打,死亡現(xiàn)場離奇詭異,居然都是意外死亡混弥,警方通過查閱死者的電腦和手機(jī)趴乡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝗拿,“玉大人晾捏,你說我怎么就攤上這事“校” “怎么了惦辛?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長萤捆。 經(jīng)常有香客問我裙品,道長俗批,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任市怎,我火速辦了婚禮岁忘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘区匠。我一直安慰自己干像,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布驰弄。 她就那樣靜靜地躺著麻汰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戚篙。 梳的紋絲不亂的頭發(fā)上五鲫,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機(jī)與錄音岔擂,去河邊找鬼位喂。 笑死,一個胖子當(dāng)著我的面吹牛乱灵,可吹牛的內(nèi)容都是我干的塑崖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼痛倚,長吁一口氣:“原來是場噩夢啊……” “哼规婆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蝉稳,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤抒蚜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后颠区,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體削锰,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年毕莱,在試婚紗的時候發(fā)現(xiàn)自己被綠了器贩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡朋截,死狀恐怖蛹稍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情部服,我是刑警寧澤唆姐,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站廓八,受9級特大地震影響奉芦,放射性物質(zhì)發(fā)生泄漏赵抢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一声功、第九天 我趴在偏房一處隱蔽的房頂上張望烦却。 院中可真熱鬧,春花似錦先巴、人聲如沸其爵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽摩渺。三九已至,卻和暖如春剂邮,著一層夾襖步出監(jiān)牢的瞬間摇幻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工抗斤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留囚企,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓瑞眼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親棵逊。 傳聞我的和親對象是個殘疾皇子伤疙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 目前 Unity 提供了多種渲染管道,兩種全局照明系統(tǒng)辆影,四種照明模式徒像,三種燈光模式,以及兩種 Shadowmask...
    XR技術(shù)研習(xí)社閱讀 1,977評論 2 51
  • 前言:最近在做一個美術(shù)館的場景蛙讥,對于燈光的要求非常高锯蛀,經(jīng)過幾天的調(diào)試和在網(wǎng)上查閱一些資料,總結(jié)一下次慢。全局光照旁涤,簡稱...
    Tang7閱讀 2,410評論 0 9
  • 鋪天蓋地都是“偽精致”和“隱形貧困”的輿論,就連人民日報(bào)都加入了討論大軍迫像。 所有人眼里劈愚,此等用花唄、信用卡支撐的生...
    竄天兒兒閱讀 159評論 0 0
  • 教育孩子是個不得不提的話題,最近很多的報(bào)道在報(bào)道明星的孩子的眼界和普通孩子的眼界的思辨由缆,都認(rèn)為孩子有了觀世界的閱歷...
    國棟愛讀書閱讀 311評論 0 0
  • 與第一次路線一致注祖,先在尖沙咀出站猾蒂。 為數(shù)不多的雪糕車 出色的地陪 維港的小天星游輪,碼頭工人真的會穿水手服哦~港英...
    Phryne_S閱讀 173評論 0 0