Unity高級開發(fā)-光照系統(tǒng)(二)-Unity的內(nèi)置渲染管線和輕量級渲染管線LWRP下正確烘焙光照

Unity光照系統(tǒng)的發(fā)展

從早期的Enlighten到Progressive CPU 兜喻,再到Progressive GPU泡仗,從發(fā)展軌跡可以看出埋虹,大家對光照還是偏向光線追蹤算法,認(rèn)為這是未來的發(fā)展方向

Enlighten

Enlighten本身不是光線追蹤算法娩怎,它是一種非常復(fù)雜的數(shù)學(xué)模型算法搔课,而且對美術(shù)制作非常不友好,導(dǎo)致很多人使用Enlighten烘焙都效果不佳截亦。


Enlighten渲染效果圖

Enlighten根據(jù)官方所講:2019.4中正式棄用爬泥。

Enlighten核心概念

Systems
Clustering
UV Charts

我們可以把Systems作為Unity讓Enlighten把場景中的部件按照光照和它的距離關(guān)系來構(gòu)建出來一個承接光照的最大單元。我們會看到它的顏色不同崩瓤,代表是不同的System袍啡,這種依存關(guān)系決定Enlighten構(gòu)建的復(fù)雜度。
Enlighten會根據(jù)使用什么材質(zhì)却桶,哪個光照對它有影響境输,它和哪個物體位置比較近,自動構(gòu)建System。構(gòu)建得越復(fù)雜嗅剖,計算量也會越多蛋逾。
Clustering是最核心的Enlighten概念。Enlighten本身光照進(jìn)行照明是不需要計算的窗悯,它計算的是光照環(huán)境。所以構(gòu)建光照環(huán)境時偷拔,才可以創(chuàng)造這些Clustering蒋院。
UV Chart是Lightmap光照貼圖的UV,而構(gòu)建光照環(huán)境最核心的東西是UV Chart莲绰,如果沒有UV Chart欺旧,它就沒有空間可以存儲Clustering作為計算單元。


Enlighten
  • 缺點
    Enlighten不適合用于植被和樹

一個樹蛤签,有多少片樹葉辞友,就有多少UV Charts,每個UV Chart都要進(jìn)行光照計算震肮,光照計算最低代價是4x4称龙,即4個像素乘4個像素的代價去生成整個計算UV Chart的光照空間。
計算Clustering時戳晌,每個至少保留16個像素鲫尊。如果一棵樹還好,如果有500片葉子钳垮,還可以接受叁丧。如果有一片樹林煤蚌,那就使用Enlighten計算不動了,所以不建議使用Enlighten對樹木進(jìn)行間接光照計算搔驼。
我們需要盡可能的縮減單個物體的Lightmap的UV區(qū)塊來降低UV Charts,在分Lightmap UV時一定要注意侈询,盡可能將UV連在一起舌涨,這樣會讓Enlighten計算量降低。
Clustering基本上用每個色塊作為一個計算單元妄荔,它可以發(fā)射低頻光對周圍進(jìn)行影響泼菌,精度越高,塊越小啦租,整體的計算量就會加大哗伯,整個計算間接光的時間就會更長一些。

Unity光照技術(shù)
  • Directional Light篷角、
  • Area Light焊刹、
  • Spot Light、
  • Point Light
  • SkyLight

skyLight是Unity很重要的一個功能,這也是很多人烘焙Unity光照最容易出問題的部分虐块。Unity提供Procedural Skybox俩滥,這個Skybox基本上會貢獻(xiàn)整體光照烘焙Lightmap的80%左右,所以如果不會使用SkyLight贺奠,烘培出來的貼圖將效果很差霜旧。

  • Light Probe
  • Reflection Probe,
    用來提升一些特殊效果和優(yōu)化性能的

Unity的光照,必須要講Unity從Gamma空間過渡到線性空間儡率,以及現(xiàn)在一直保留的Gamma空間的支持
線性空間的優(yōu)點是能夠容納更多亮度細(xì)節(jié)挂据,不需要壓縮亮部來提高暗部的效果,亮部的表現(xiàn)力更強(qiáng)儿普,更接近真實的光照效果崎逃。

Procedural Skybox,它重要在哪兒呢眉孩?
因為它提供了光照个绍。我們自然界中光照有兩個非常重要的概念,一個概念是它有大氣的厚度浪汪,大氣厚度決定色散的情況巴柿,對光線的反映。
Sky Tint主要用來計算天空的染色情況吟宦,如果空氣密度很高篮洁,整個天空又染上一些色,它對光線的反應(yīng)情況殃姓。正常情況下袁波,對地球的Sky Tint,只有沙塵暴時才會出現(xiàn)比較奇怪的效果蜗侈,如果沒有沙塵暴的情況下篷牌,地球的Sky Tint值比較接近灰度的顏色。
如果在制作異星題材的游戲的話踏幻,情況就不太一樣枷颊,你可能要根據(jù)顏色的調(diào)整,讓大氣做一些吸收该面,這樣折算出來的Sky Light會發(fā)生一些改變夭苗。
Ground基本上是Skybox在模擬地面對物體的影響,如果值很強(qiáng)會讓地面失去立體感隔缀,計算時底部的光照會很強(qiáng)题造,導(dǎo)致天花板的區(qū)域變亮。所以這個值不要調(diào)得特別的高猾瘸,基本上以灰度為主界赔。
Exposure曝光度的值非常重要丢习,它是天光的強(qiáng)度,基本上可以達(dá)到8或更高的倍數(shù)淮悼,它可以讓整個天光變得更強(qiáng)咐低,更強(qiáng)的結(jié)果是整個Skybox會非常強(qiáng)。好處是帶來更多間接光的強(qiáng)度袜腥,但也會帶來讓受光比較多的地方產(chǎn)生過曝的問題见擦,這是大家需要控制的。
關(guān)于Exposure曝光度羹令,建議大家可以跟Atmosphere厚度的值一起調(diào)整锡宋。如果曝光度增強(qiáng)的時候,可以將大氣密度提高特恬,它會形成比較奇怪的現(xiàn)象。在大氣足夠密的情況下徐钠,曝光度很強(qiáng)癌刽,大氣密度底部會對光線的吸收特別的強(qiáng),會發(fā)生右側(cè)圖片發(fā)紅的情況尝丐,這樣會計算出一些接近于早晨显拜、晚上的效果。
像左側(cè)這張圖爹袁,基本上它的大氣密度值在1远荠,Exposure值在3,而值在2是另一種效果失息,它的厚度值在2時譬淳,產(chǎn)生了色彩上的變化,這個變化是在模擬物理的效果盹兢。

Directional Light在移動游戲開發(fā)中常常用作太陽和月亮的首選光源邻梆,因為它能夠覆蓋整個場景,計算的時候非常節(jié)省性能绎秒。
直接光強(qiáng)度在線性空間下浦妄,我們建議白天為1.5-2.0,夜晚為0.4-1.0见芹。Indirect Multiplier值剂娄,白天為0.6-1.0,夜晚為0.3-0.7玄呛。白天獲得的直接光照比晚上的要強(qiáng)阅懦,這樣白天會產(chǎn)生更好的間接光亮度。

白天的設(shè)置參數(shù)

我們看一看烘焙的效果把鉴。如上圖所示故黑,在白天的設(shè)置下儿咱,Intensity是1.8,Indirect Multiplier是1场晶,Atmosphere Thickness是1混埠,Exposure是3,這樣我們獲得了白天光照很好的房間诗轻。
如果設(shè)置正確钳宪,它應(yīng)該會出現(xiàn)很好的GI效果,而且不會之前認(rèn)為扳炬,在Unity光照中吏颖,有些暗部和間接光不是很好,缺乏全局照明的層次感恨樟。

夜晚設(shè)置

上圖就是夜晚的設(shè)置效果半醉。在設(shè)置中,Intensity是0.4劝术,Indirect Multiplier是0.25,Atmosphere Thickness是1养晋,Exposure是0.1衬吆,基本上設(shè)置的數(shù)值都會往下降灯谣。特別是降低曝光度后,我們會得到月光的效果蛔琅,但是它也有間接照明胎许。

image.png

上圖是人造光源的效果。Unity提供的除了常用的Point Light罗售、Spot Light辜窑,還有一個就是Emissive自照明。Unity支持物體的像素照明寨躁,可以將物體的Emissve HDR值提高穆碎,提高以后就形成一個光源。
像燈管基本上就是一個Emissve照明的效果职恳,它對房間進(jìn)行了增強(qiáng)和補(bǔ)亮所禀。為了體現(xiàn)夜晚效果的疊加方面,上圖設(shè)置沒有調(diào)得特別強(qiáng),如果你希望更亮一些色徘,可以在上面增加Area Light恭金,進(jìn)行補(bǔ)光。
如下圖所示褂策,我們可以看到Area Light關(guān)掉和開啟的效果對比横腿。

iArea Light關(guān)掉和開啟

Area Light主要用途是什么呢?
如果大家比較觀察細(xì)節(jié)斤寂,可以發(fā)現(xiàn)窗戶的采光耿焊,除了太陽光照,有可能窗戶外面世界亮的東西遍搞,都會發(fā)射光線進(jìn)入房間罗侯。但是在計算機(jī)不會這樣計算。因此溪猿,我們需要在窗戶邊上做一個同樣大小的Area Light歇父,往房間里面補(bǔ)光。
在補(bǔ)光之后再愈,你會看到,尤其是在光照貼圖的一側(cè)护戳,Area Light關(guān)掉和開啟會有明顯的視覺效果差異翎冲。這是因為右側(cè)的區(qū)域沒有Area Light,它不是非常仿真物理效果媳荒,如果加了Area Light抗悍,它會很仿真物理。

image.png

光照貼圖的一個問題是钳枕,它們做的都是間接光缴渊,間接光一定不能將光照貼圖曝掉,或者曝光度嚴(yán)重不足鱼炒。所以我們需要一個間接光的空間去存儲這些間接光信息衔沼。
如上圖所示,如果間接光非常的亮昔瞧,會導(dǎo)致我們看到的最右側(cè)的圖像效果指蚁。曝光那么多的時候,間接光貼圖就損失掉了自晰。
我們建議把Light Intensity設(shè)為1.8凝化,HDR Exposure為16,或者Intensity等于3酬荞,HDR Exposure為16的曝光度效果搓劫。這樣既能保證場景的亮度瞧哟,又能讓整體光照沒什么問題。

烘焙

烘焙
  • 什么是烘焙
  • 該如何烘焙
    你設(shè)置了很多烘培枪向,但基于性能考慮可能不需要那么多物體需要烘培勤揩,不優(yōu)化會導(dǎo)致場景中很多不需要烘培的物體烘培了光照貼圖。
    烘培完成后遣疯,光照貼圖可能會非常大雄可,特別對于一些移動游戲,沒辦法使用那么多貼圖缠犀,所以正確的烘培也是非常重要的数苫。
烘焙
  • Enlighten系統(tǒng)
    首先說一下Unity的Enlighten系統(tǒng),它的一個優(yōu)點是支持實時光GI辨液。在構(gòu)建過程中虐急,構(gòu)建光照條件后,我們可以調(diào)節(jié)光照的強(qiáng)度和方向滔迈,還可以移動光源止吁。
    但是它不能移動物體。如果靜態(tài)模型要移動燎悍,Enlighten實時GI是不支持的敬惦,因為它需要構(gòu)建光照環(huán)境,這就限制了Enlighten不是一個純實時的GI谈山,它是半實時的俄删。
    如果Enlighten使用不好,烘培速度會非常慢奏路,我們通常會發(fā)現(xiàn)烘培卡在一個地方不動畴椰,慢到都想把電腦砸了,這種情況非常常見鸽粉。所以大家必須按照Enlighten正確的方法去烘培才會比較快斜脂。
    Enlighten好處是噪點控制非常好,如上圖所示触机,畫面的邊緣沒有太多的噪點帚戳,因為Enlighten的計算方式是不太會出現(xiàn)噪點的,它不是光線追蹤算法儡首,也不依賴于光子彈射销斟。
    Unity 5開始集成Enlighten,但Unity 2020 LTS版將是在內(nèi)置渲染器包含Enlighten系統(tǒng)的最后一個版本椒舵,Unity 2021.1將完全移除Enlighten蚂踊。
Unity光照系統(tǒng)
  • Progressive烘焙
    Progressive烘焙基于光線追蹤,發(fā)射的一個光子彈射了多少次笔宿,彈射時分裂多少光子犁钟,再進(jìn)行彈射棱诱。
    Progressive的優(yōu)點是:真實、GPU烘焙涝动、烘培速度快迈勋。在同等的模型數(shù)量下,Progressive的計算速度比Enlighten快很多醋粟。Progressive的缺點是噪點控制比較差靡菇,當(dāng)光子發(fā)射量不夠時,它無法充滿整個場景米愿,因此無法計算出正確的光照厦凤。
  • Progressive和Enlighten區(qū)別


    image.png

    Progressive和Enlighten的烘培時間基本上是相等的。Progressive會有一些斑點育苟,Enlighten幾乎沒有斑點较鼓。但Enlighten的問題的缺乏細(xì)節(jié),效果過于程序化违柏。如果這是一個深邃的洞穴博烂,過渡到最后面畫面會變成黑色,幾乎沒有了漱竖。


    立體感效果對比

    我們提高Progressive的計算光子時烘培效果對比禽篱。Progressive會更加立體,更真實一些馍惹,Enlighten比較輕一些躺率,或者說立體感不是那么足。
整體性

這是Progressive和Enlighten烘培后整體的預(yù)覽效果讼积,差異還是比較明顯的

效果差異

這是一些烘培參數(shù),當(dāng)Direct Samples=40和Indirect Samples=400脚仔,對比Direct Samples=100和Indirect Samples=800勤众,我們可以看到效果差異明顯。
Direct Samples和Indirect Samples等同于直接光的采樣數(shù)量和間接光的采樣數(shù)量鲤脏。如果采樣越多们颜,光子出現(xiàn)得越多,它就會將整個環(huán)境填得更加均勻猎醇,更加符合真實的世界窥突。
真實世界的光子是無限的,在計算機(jī)模擬的時候是靠光子的數(shù)量來模擬的硫嘶,所以我們盡可能在烘培的時候要把光子數(shù)量提高阻问,這樣會得到較好的效果。
使用Progressive時最大的問題是:在室內(nèi)的情況下沦疾,要盡可能把整個烘培的精度提高称近,因為室內(nèi)低頻光比較多第队,間接光受到的影響比較多,室外可以稍微降低該值刨秆,提高烘焙效率凳谦。

Unity光照方案

移動平臺

移動游戲方面,建議大家使用混合光照技術(shù)衡未,效率更高和更為逼真尸执。近景可以使用動態(tài)陰影,遠(yuǎn)景使用Shadow Mask缓醋,這樣可以降低Shadow Pass的壓力如失。
例如:5-20米是使用動態(tài)陰影,遠(yuǎn)景全部使用Shadow Mask改衩,這樣手機(jī)平臺上既可以獲得動態(tài)陰影岖常,又可以獲得高的性能,不至于手機(jī)玩一會兒就會很燙的情況發(fā)生葫督。
我們看一看混合光照的拆分情況竭鞍。


光照細(xì)節(jié)

如上圖所示,Baked Lightmap和Shadow Mask在烘培后橄镜,一個是RGB通道的圖偎快,另一個是單通道。如果大家有能力修改洽胶,我們可以將單通道的圖變成四通道來進(jìn)行變化晒夹。
我們烘焙一個Lightmap的時候,Shadow Mask可以烘培四個時間段姊氓,例如:8點丐怯、11點、15點翔横、17點读跷。烘培完成后,我就可以通過Lit的方式把它Lit成變化禾唁,使它有間接光照效览。
Lightmap只使用一套,但我們可以對它進(jìn)行擴(kuò)展荡短。Shadow Mask根據(jù)晝夜變化的時間丐枉,做成四套帶有間接光照的,這樣便可以根據(jù)項目進(jìn)行深度的改進(jìn)掘托。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瘦锹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沼本,老刑警劉巖噩峦,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異抽兆,居然都是意外死亡识补,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門辫红,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凭涂,“玉大人,你說我怎么就攤上這事贴妻∏杏停” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵名惩,是天一觀的道長澎胡。 經(jīng)常有香客問我,道長娩鹉,這世上最難降的妖魔是什么攻谁? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮弯予,結(jié)果婚禮上戚宦,老公的妹妹穿的比我還像新娘。我一直安慰自己锈嫩,他們只是感情好受楼,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著呼寸,像睡著了一般艳汽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上对雪,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天河狐,我揣著相機(jī)與錄音,去河邊找鬼慌植。 笑死甚牲,一個胖子當(dāng)著我的面吹牛义郑,可吹牛的內(nèi)容都是我干的蝶柿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼非驮,長吁一口氣:“原來是場噩夢啊……” “哼交汤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤芙扎,失蹤者是張志新(化名)和其女友劉穎星岗,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戒洼,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡俏橘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了圈浇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寥掐。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖磷蜀,靈堂內(nèi)的尸體忽然破棺而出召耘,到底是詐尸還是另有隱情,我是刑警寧澤褐隆,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布污它,位于F島的核電站,受9級特大地震影響庶弃,放射性物質(zhì)發(fā)生泄漏衫贬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一虫埂、第九天 我趴在偏房一處隱蔽的房頂上張望祥山。 院中可真熱鬧,春花似錦掉伏、人聲如沸缝呕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽供常。三九已至,卻和暖如春鸡捐,著一層夾襖步出監(jiān)牢的瞬間栈暇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工箍镜, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留源祈,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓色迂,卻偏偏與公主長得像香缺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子歇僧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345