Unity預(yù)計算全局實時GI(九) - Lightmap Parameters

由Unity提供的許多高級光照貼圖控制是通過使用Lightmap Parameters來完成的欣喧。這些設(shè)置存儲在一個Lightmap Parameters的asset中。這允許光照設(shè)置在不同場景間共享柬批,以及在協(xié)作團隊開發(fā)環(huán)境中的版本控制中共享使用嗤形。

* 方法一:打開Project視圖趟大,從Project視圖左上方的Create下拉列表中點擊Create > Lightmap Parameters。

* 方法二:在Project視圖中按右鍵彈出菜單喊积,選擇Create > Lightmap Parameters。

* 方法三:依次點擊編輯器頂部菜單(Asset > Create > Lightmap Parameters)玄妈。


Baked GI 和 Precomputed Realtime GI 都可以通過Light Parameters 進行高級控制

一旦創(chuàng)建完畢乾吻,一個Lightmap Parameters asset可以被指定到一個靜態(tài)MeshRenderer組件中。

* Hierarchy窗口選擇我們想要指定Lightmap Parameters asset的GameObject拟蜻。這個GameObject必須被標(biāo)記為靜態(tài)同時有一個MeshRenderer的組件

* 打開 Lighting 窗口 (Window>Lighting) 然后選擇 Object 標(biāo)簽頁.

* 使用Advanced Parameters下拉菜單去為GameObject指定Lightmap Parameters Asset绎签。Advanced Parameters下拉菜單右邊的 Edit按鈕可以被用做一種快捷方式,去修改指定給所選物體的Lightmap Parameters酝锅。


在Lighting窗口的Object標(biāo)簽頁下使用 Advanced Parameters下拉框來指定Lightmap Parameters诡必。

相同的Lightmap Parameters asset可以被指定給多個對象物體。想要這么做搔扁,在Hierarchy窗口選擇多個對象物體然后遵循以上的步驟爸舒。改變這個Lightmap Parameter asset將會影響到它指定給的所有對象物體。

Lightmap Parameters: 每個實例或者每個Prefab?

和UV展開設(shè)置類似稿蹲,Lightmap Parameters assets也可以被指定給一個Prefab或者應(yīng)用給場景中的單個GameObject實例扭勉。將Lightmap Parameters assets應(yīng)用給一個Prefab的實例將會覆蓋存儲在Prefab中的Lightmap Parameters asset設(shè)置。

這種方法的優(yōu)勢在于场绿,適用于大多數(shù)情形下的默認Lightmap Parameters能夠賦值給Prefab剖效。當(dāng)需要更多細致的控制時,在場景中可以這些默認Lightmap Parameters基礎(chǔ)上進行修改焰盗。

在這個教程中璧尸,我們已經(jīng)為每一個實例應(yīng)用Lightmap Parameters assets。這是因為我們想根據(jù)每個GameObject的具體情況使用不同的Lightmap Parameters assets

Default Parameters

配置場景范圍的默認Lightmap Parameters是可能的熬拒。這些默認的Lightmap Parameters將會指定給場景中所有存在的MeshRenderer但還沒有被指定一個Lightmap Parameters asset的對象物體爷光。任何之后在場景中被創(chuàng)建的MeshRender將會使用默認Lightmap Parameters。當(dāng)需要設(shè)置一個場景的光照時澎粟,可以通過使用這種方法減少需要手動指定的數(shù)量蛀序。

* 打開 Lighting 窗口 (Window>Lighting) 然后 Scene 標(biāo)簽頁.

* 使用Default Parameters下拉菜單去給場景指定Lightmap Parameters asset。

注意盡管這個Default Parameter將會被應(yīng)用給所有新創(chuàng)建的對象物體活烙,但是通過給對象物體制定一個Advanced Parameter仍然可以覆蓋單獨對象物體的Default Parameter徐裸,就像上面所描述的那樣。


Default Parameters 將會被指定給所有新創(chuàng)建的靜態(tài)Mesh Renders

Unity提供了一些預(yù)置的Lightmap Parameters幫助我們快速地設(shè)置場景光照啸盏。它們是:

* Default - HighResolution

* Default - Medium

* Default - LowResolution

* Default - VeryLowResolution

指定這些Lightmap Parameters參數(shù)為其中的一種將會配置一些設(shè)置重贺,而這些設(shè)置決定了所選對象物體的整體光照性能的開銷。這些設(shè)置包括lightmap resolution,global illumination parameters气笙,Cluster resolution次企,以及其它一些高級設(shè)置。當(dāng)試著去平衡整個場景的光照表現(xiàn)性能時潜圃,這些設(shè)置是很重要的因素缸棵。

關(guān)于Lightmap Parameters參數(shù)的介紹

Unity存在默認參數(shù)目的是為了包含一些常用的使用情況,一般來這些默認設(shè)置對很多光照場景來說是足夠了的谭期。對于PRGI系統(tǒng)來說更細致的控制可以通過創(chuàng)建我們自己的Lightmap Parameters assets來實現(xiàn)堵第。

在Unity 用戶手冊關(guān)于Lightmap Parameters的頁面提供了Lightmap Parameters asset所有設(shè)置的整體概覽,然而在本教程中崇堵,我們只關(guān)注對于光照優(yōu)化最有用的設(shè)置型诚。

Resolution

Resolution的值決定了使用了Lightmap Parameter的對象物體所需的光照貼圖的分辨率。Resolution是一個乘數(shù)鸳劳,與在Lighting窗口Scene標(biāo)簽頁中的場景范圍的Realtime Resolution值相乘狰贯。例如,如果場景實時分辨率設(shè)為2赏廓,這里的Resolution屬性設(shè)為0.5涵紊,那所有帶有這個Lightmap Parameter asset的對象都會采用每個單位1紋素來計算光照貼圖紋理。

由于預(yù)計算實時全局光照只會呈現(xiàn)一個場景中的漫反射和間接光照幔摸,我們不需要使用傳統(tǒng)烘焙光照貼圖方法所需的分辨率摸柄。PRGI所需的光照貼圖分辨率通常最多是每個單位2-3個紋素,與我們在傳統(tǒng)烘焙的光照貼圖中每個單位20-30個紋素相反既忆。在大多數(shù)情況驱负,尤其對于大型的戶外對象物體,例如地形患雇,可以降低很多倍跃脊。這里,一個光照貼圖的分辨率降低為每個單位0.1個紋素可能會提供足夠的細節(jié)表現(xiàn)苛吱。

通過提高Irradiance Budget的值酪术,可以緩解使用高分辨率光照貼圖所產(chǎn)生的斑紋影子。

需要注意翠储,使用高分辨率光照貼圖時绘雁,可能會出現(xiàn)使用低分辨率時不能發(fā)現(xiàn)的缺陷挚币。這些陰影在最終的光照貼圖紋理中可能看起來像是斑點或污跡搅荞。如果出現(xiàn)這種情況香璃,可以試著調(diào)高Irradiance Budget參數(shù)來減少這種問題的出現(xiàn)漓概。

Cluster Resolution

Cluster Resolution指定預(yù)計算實時GI產(chǎn)生的光照貼圖中的一個紋素包含集群的數(shù)量。例如贮懈,如果Cluster Resolution被設(shè)置為最大值1办龄,那么在光照貼圖中每個紋素將會有1個集群呐伞。Cluster Resolution的值設(shè)置為0.5代表在光照貼圖的每個紋素只有0.5個集群废酷。換句話說瘟檩,集群的大小將會是一個光照貼圖紋素的兩倍。

進一步延伸這個想法澈蟆,可以想象我們場景的全局實時分辨率被設(shè)置為1.我們創(chuàng)建一個尺寸大小為1x1x1的單位立方體墨辛,之后給這個對象物體指定一個Lightmap Parameters asset。如果我們的Lightmap Parameters asset指定分辨率為1并且Cluster Resolution也為1趴俘,我們將會看到立方體的每一側(cè)都有一個集群睹簇。如果我們之后將我們的分辨率設(shè)置為2,結(jié)果立方體每一邊的集群數(shù)量就會變?yōu)?倍(1x1)寥闪,每面的集群會變成4個太惠。

圖片展示了一個1x1x1的單位立方體,存在于一個實時分辨率為1的場景中疲憋。指定的Lightmap Parameters的Cluster Resolution值為每個紋素1個集群凿渊。因此在一個分辨率為每單位2個紋素的光照貼圖上,每一面有4個集群缚柳。

在大多數(shù)情況下埃脏,Cluster Resolution只需要我們光照紋素的一小部分。例如秋忙,參數(shù)設(shè)置為Default - HighResolution的Lightmap Parameters asset的Cluster Resolution值為0.6.

一個場景中集群太多的話會加長預(yù)計算時間彩掐,還會影響到運行時場景的全局光照。因此必須要確保增加的集群數(shù)量可以顯著提高光照貼圖的品質(zhì)灰追,如果減少集群數(shù)量對光照貼圖并沒有太大影響堵幽,那就盡可能地減少集群數(shù)量。

將分辨率與集群分辨率指定為一個比率弹澎,這意味著我們可以與場景范圍的實時分辨率值建立一種相對的關(guān)聯(lián)朴下。我們可以將定義在Lighting窗口中的實時分辨率作為為整個場景的高等級的分辨率值。Lightmap Parameters之后可以對單個對象物體或者對象物體組進行細微的調(diào)控裁奇。Unity采用這種分層法可以為開發(fā)者提供更方便的全局控制桐猬,不然對每個對象都手動設(shè)置Lightmap Parameters的值會很麻煩。

Irradiance Budget

我們在前面的教程中討論了Unity是如何通過使用集群生成一個模擬場景靜態(tài)幾何物體的模擬物刽肠,然后去計算PRGI的溃肪。在預(yù)計算期間,這些集群之間的關(guān)系已經(jīng)被計算好音五,以便光照可以快速地被傳遍整個層級網(wǎng)絡(luò)惫撰。

本質(zhì)上,光照貼圖的一個紋素值取決于從該紋素的位置能“看到”場景集群的數(shù)量躺涝,這使我們可以在集群之間快速地計算光照反彈厨钻,以便全局光照的效果。在最終被渲染之前,這些集群被采樣進光照貼圖中夯膀。

Irradiance Budget決定了對集群網(wǎng)絡(luò)進行采樣時每張光照貼圖紋素所使用的內(nèi)存的大小诗充。這決定了光照結(jié)果的精確度。Irradiance Budge的值越低意味著每個紋素所使用的內(nèi)存越少诱建,當(dāng)記錄場景視角的時候蝴蜓。這不但減少了內(nèi)存的使用而且降低了CPU在運行時的開銷,但是代價就是損失光照的保真度俺猿。Irradiance Budgets越低將會導(dǎo)致越低頻率(模糊)的光照結(jié)果茎匠。相反,Irradiance Budget越高將會將會傳遞更精確的GI押袍,但是增大了內(nèi)存的使用量并且使CPU在游戲運行時產(chǎn)生了額外的開銷诵冒。

如果我們的PRGI在游戲運行期間更新的不夠快(滯后),將Irradiance Budget調(diào)低將會得到改善谊惭。這個設(shè)置比較適用于不太注意到的需要高保真度的對象物體汽馋,如很大、模糊或遙遠的幾何體午笛。

Irradiance Quality

當(dāng)在預(yù)計算期間PRGI光照貼圖被生成時惭蟋,光照貼圖的每個紋素都向場景發(fā)射射線,以便反饋附近集群的可見度药磺。然后計算紋素可以看見的每個集群的百分比告组。這個值定義了可見集群對光照貼圖中每個紋素的光照貢獻。Irradiance Quality用來指定1個紋素在這個過程中能對場景投射的射線數(shù)量癌佩。

如果對象物體與其周圍的光照環(huán)境不是很匹配時可以考慮加大Irradiance Quality的值木缝。有時會出現(xiàn)光照貼圖的紋素出現(xiàn)過亮的情形,這可能是因為投射到場景中射線不足围辙,因此導(dǎo)致沒有檢測到遮擋了光照貼圖紋素的集群我碟。相似地,如果更亮的集群沒有被檢測到姚建,這里光照貼圖的紋素將會出現(xiàn)過暗的結(jié)果矫俺。

發(fā)射更多的射線增加了解決類似問題的可能,這提高了光照貼圖輸出結(jié)果的準(zhǔn)確性掸冤,同時以增加了預(yù)計算時間為代價厘托。為了優(yōu)化預(yù)計算時間,我們應(yīng)該使用需要達到想要的光照結(jié)果的最小的Irradiance Quality值稿湿,請注意铅匹,這個值不會影響到游戲運行時的性能。

Backface Tolerance

從光照貼圖紋素發(fā)射出來的射線饺藤,在從場景集群中收集光照信息時可能會打到幾何物的背面(backface)包斑。當(dāng)生成全局光照時我們只考慮對世界可見那一面的反彈光照流礁。從幾何物體背面來的光總是被認為是無效的。這些射線打到背面對光照結(jié)果可能有潛在的危害甚至對光照結(jié)果產(chǎn)生破壞罗丰。通過修改Backface Tolerance的值可以阻止出現(xiàn)這種情況神帅。

這里地板上光照貼圖上黑暗的紋素是由于Unity在計算輻射度時,射線投射到物體無效的背面所生成的丸卷,加Backface Tolerance的值能改善這個問題枕稀。

Backface Tolerance指定了必須從幾何體正面來的光照百分比,以便一個紋素被認為是有效的谜嫉。如果光照貼圖的紋素沒能通過這種測試,Unity將會使用鄰近紋素的值去估算一個正確的光照結(jié)果凹联。

調(diào)整Backface Tolerance并不會影響PRGI的優(yōu)化沐兰,也不會對預(yù)計算時長有太大影響或者影響游戲運行時的性能。當(dāng)增加Irradiance Budget的值后蔽挠,你的光照貼圖仍然存在錯誤的黑暗或者明亮的紋素住闯,Backface Tolerance將會是一種解決這種情形錯誤的很好工具。

Modelling Tolerance

有時在場景靜態(tài)物體中存在小間隙的區(qū)域會產(chǎn)生黑色的光暈或預(yù)期外的殘像澳淑,這種情況會出現(xiàn)在旁邊有相反幾何體的區(qū)域比原,像是地板上的組件,如下圖所示杠巡。


可以通過提高Modelling Tolerance的值來解決物體黑色的邊緣

在這些情形下中量窘,對象物體之間存在小的縫隙并且相對的表面之間很少甚至根本沒有光線能夠進入。很暗的紋素可能被位于下方的光照貼圖所記錄氢拥。在更低光照貼圖分辨率的情況下蚌铜,這些黑暗紋素的大小可能會導(dǎo)致它們超出遮擋物的邊界并生成本不期望的黑色邊緣。在光照的背景下嫩海,這些小物體產(chǎn)生的陰影可能是不期望的或者說被當(dāng)成是污染物冬殃。

Modelling Tolerance用于忽略比Threshold值還小的細節(jié),提高Modelling Tolerance值可以確保Unity在計算GI時忽略掉非橙郑靠近其它物體表面的幾何面审葬,增加Modelling Tolerance值代表預(yù)計算的Light Transport階段將忽視這些小于光照貼圖紋素百分比的間隙,調(diào)低Modelling Tolerance可以確保小物體不被GI計算遺漏奕谭。

Modelling Tolerance不會影響PRGI的優(yōu)化涣觉,對預(yù)計算時間和運行時性能也沒什么負面影響,然而它可以被用在一些除錯流程上展箱,解決連調(diào)整Irradiance Budget或Irradiance Quality都無法改善的殘影問題旨枯。

創(chuàng)建我們的 Lightmap Parameters assets

就提供的功能來說,我們已經(jīng)探索了各種不同的Lightmap Parameters 設(shè)置』斐郏現(xiàn)在已經(jīng)到了開始應(yīng)用這些知識的時候了攀隔,通過創(chuàng)建我們自己的Lightmap Parameters assets并且在教學(xué)場景中去使用它們皂贩。

* 打開LightingTutorialStart場景.

* 在 Project 窗口下, 找到LightmapParameters文件夾 :Assets>LightmapParameters.

* 在Project 的坐上窗口中, 選擇 Create>Lightmap Parameters.

* 將這個新建的Lightmap Parameters asset命名為TutorialTerrainLow

對于尺寸非常大并且離Camera距離很遠的GameObject來說,這是一個選擇Lightmap Parameters而不是場景默認設(shè)置的很好例子昆汹。

接下來明刷,我們將要在場景中的對象物體指定這個Lightmap Parameters asset。

* 在Scene 視圖, 選擇離可玩區(qū)域最近的兩個山形GameObject满粗,它們的名字都叫MountainPeak辈末。注意目前我們將會忽略最遠的山形GameObject。

* 通過使用Inspector面板映皆,確保兩個MountainPeak游戲?qū)ο笪矬w被標(biāo)記為Static挤聘。這是由標(biāo)記為Static的選項框所指示 。

* 打開 Lighting 窗口 (Window>Lighting) 然后選擇 Scene 標(biāo)簽頁捅彻。

* 確保開啟了Auto mode. 這是由標(biāo)記為Auto的選項框所指示 组去。

* 現(xiàn)在選擇Object 標(biāo)簽頁。

* 從Advanced Parameters下拉菜單中, 選擇新創(chuàng)建的TutorialTerrainLowLightmap Parameters asset. 這將會為選中的GameObject 指定Lightmap Parameters asset步淹。

*點擊Advanced Parameters 下拉菜單右邊的Edit按鈕,開始編輯這些設(shè)置从隆。

當(dāng)我們創(chuàng)建一個新的Lightmap Parameter時的默認設(shè)置。

第一個參數(shù)是分辨率缭裆。減少光照貼圖的分辨率不但會減少預(yù)計算時間而且會提升游戲運行時的表現(xiàn)性能键闺,所以我們應(yīng)該在不影響光照品質(zhì)的情況下,使用最低分辨率值澈驼。

對于離相機鏡頭很近的物體可以設(shè)置比較高的分辨率辛燥,但這里兩座山距離鏡頭都非常遠,因此本例中將該值設(shè)低一點更合適盅藻。 這些大物體表面材質(zhì)的反射率相當(dāng)一致购桑。另外,從camera的角度來看氏淑,就這些對象物體的尺寸而言勃蜘,它們接收的光在顏色方面變化不大。由于沒有很多光照細節(jié)需要被捕捉假残,我們在不影響最終結(jié)果品質(zhì)的情況下缭贡,減少這些對象物體光照貼圖的分辨率。

對于場景中的大物體例如山峰/地形辉懒,默認的光照貼圖設(shè)置將會是一種浪費


使用低分辨率可以對光照結(jié)果品質(zhì)的影響不大阳惹,但是可以大大節(jié)省預(yù)計算時間并且提高運行時的表現(xiàn)性能

* 試著慢慢地減少TutorialTerrainLowLightmap Parameters asset的Resolution參數(shù),同時在Scene視圖觀察光照貼圖分辨率的變化眶俩。

記住莹汤,分辨率的值是一個乘數(shù),它與定義在Lighting窗口中Scene標(biāo)簽頁中的場景范圍的場景分辨率相乘颠印。在我們的場景中纲岭,我們?yōu)閷崟r分辨率設(shè)置為1.因此抹竹,如果之后我們在Lightmap Parameters中選擇一個分辨率的值,那么結(jié)果光照貼圖的輸出將會是少于每個單位1個紋素止潮。

兩座山和其它物體距離非常遠窃判,所以它們不可能接受任何細節(jié)很高或是頻率很高的光照。

這意味著我們選擇一種低分辨率盡管會有一點視覺上的丟失喇闸。在我們的教學(xué)場景中袄琳,我們發(fā)現(xiàn)分辨率的值為0.05時,是足以捕獲由這些對象物體接受的間接漫反射光照燃乍。

* 在Project窗口選擇TutorialTerrainLowLightmap Parameters asset唆樊。

* 在 Inspector 面板, 將Resolution的值設(shè)置0.05.

接下來,我們將會觀察Cluster Resolution的值橘沥。像早期描述的那樣窗轩,Cluster Resolution是一個乘數(shù),與為那個對象物體生成的任何光照貼圖的紋素大小相反座咆。當(dāng)值為1時,一個單一的集群與一個光照貼圖的紋素大小相同仓洼。因此低于1會比較好介陶。記住,集群本質(zhì)上是一個體素色建,是為了計算PRGI所生成的類似靜態(tài)場景的模擬體哺呜。當(dāng)這些體素的大小不足以捕捉光照顏色的變化時,我們才考慮加大這個值

這兩座山的集群分辨率與光照貼圖分辨率類似箕戳,也可以設(shè)為很低的值某残,如果將其設(shè)為場景默認的分辨率來設(shè)置集群數(shù)量,就表示可能會需要幾百個小場景的集群量來覆蓋這兩座山陵吸。

考慮到MountainPeak對象物體有一個反射率相當(dāng)一致的材質(zhì)玻墅,并且這個對象物體離Camera相對較遠,我們可以通過選擇性地減少這個對象物體的分辨率來做出重要的節(jié)省壮虫。盡管當(dāng)使用更高的分辨率時會與光照解決方案的精度不一樣澳厢,對于我們場景中使用的物體來說,我們不可能注意到任何視覺上的差別囚似。


* 集群分辨率(Cluster Resolution)對于離Camera較遠的大型對象物體可以相對的低一些.

* 在Scene 視圖的左上角, 使用Draw Mode下拉菜單去選擇Clustering剩拢。

* 在Project 窗口下選擇TutorialTerrainLowLightmap Parameters asset。

* 在Inspector 面板, 減少Cluster Resolution的值. 觀察值被改低后色塊的大小是如何增加的饶唤。

另外徐伐,Lit Clustering繪制模式可以評估集群最終的分辨率是否足以捕獲場景中細微的表現(xiàn)。

* Scene視圖的左上角募狂,用Draw Mode下拉菜單選擇Lit Clustering办素。

* 在 Project 窗口選擇T utorialTerrainLowLightmap Parameters asset角雷。

* 在 Inspector 面板, 減少Cluster Resolution的值. 觀察值被修改后視圖是如何變化的 。

當(dāng)調(diào)整這個值時摸屠,明確一下使用較低的Cluster Resolutions值是否會丟失一些光照細節(jié)谓罗。如果使用較高的分辨率對視覺效果沒有提升,那么就應(yīng)該去使用較少的集群季二。記住場景中的集群數(shù)量將會對預(yù)計算時間以及運行時與GI的交互產(chǎn)生很大影響檩咱。在這里,對于這兩個MountainPeak實例胯舷,我們發(fā)現(xiàn)將Cluster Resolution設(shè)置為0.4是比較合適的刻蚯。

* 在Project 窗口下選擇TutorialTerrainLowLightmap Parameters asset.

* 在 Inspector 面板, 將Cluster Resolution的值設(shè)置為 0.4.


Lit Clustering場景繪制模式用于評估是否擁有足夠的集群分辨率去捕捉場景中的光照表現(xiàn)

在許多情況下,降低光照貼圖的分辨率以及集群的大小將會使光照性能獲得很大的提升桑嘶。然而炊汹,我們也可以通過修改用于計算輻射度的值:Irradiance Budget 和 Irradiance Quality 做出額外細節(jié)上的提升。

首先我們來看一下Irradiance Budget逃顶,這個值決定了為每個光照貼圖紋素分配多少內(nèi)存讨便。為了游戲運行時的性能,我們應(yīng)該使用最低的Irradiance Budget值以政,這對光照表現(xiàn)不會產(chǎn)生負面的影響霸褒。

如果預(yù)計算實時全局光照的表現(xiàn)結(jié)果是比較柔和的或者說是比較模糊的,這時我們可能希望增加Irradiance Budget的值盈蛮。特別是場景中高對比度光照的區(qū)域沒有被精確的呈現(xiàn)的時候废菱。

Irradiance場景繪制模式用來對Irradiance Budget或Irradiance Quality值的改變造成的結(jié)果進行評估。

在有兩個MountainPeak 游戲?qū)ο笪矬w的例子中抖誉,這里的光照一般是低頻率的殊轴。我們不需要去捕獲任何斑駁的或者高對比度的光照,這表示在對我們光照沒有明顯負面影響的情況下袒炉,可以降低Irradiance Budget的值旁理,它原來的默認值是128bytes。

* 在Scene 視圖的左上角, 使用 Draw Mode 下拉菜單選擇Irradiance.

* 在Project窗口中選擇TutorialTerrainLowLightmap Parameters asset 梳杏。

* 在 Inspector 面板, 減少rradiance Budget的值.

* 當(dāng)我們減少這個值時韧拒,注意MountainPeak游戲?qū)ο笪矬w上的光照是怎么變得稍微柔和的。

進行了一些實驗后十性,我們將Irradiance Budget降低到64Bytes時發(fā)現(xiàn)對光照的品質(zhì)沒有產(chǎn)生顯著的影響叛溢。

* 在Project窗口選擇TutorialTerrainLowLightmap Parameters asset.

* 在Inspector 面板, 將Irradiance Budget的值設(shè)置為 64.

現(xiàn)在我們繼續(xù)講解Irradiance Quality。Irradiance Quality決定了每個集群發(fā)射的射線數(shù)量劲适,當(dāng)計算一個光照貼圖紋素的值的時候楷掉。它和Irradiance Budget不一樣,Irradiance Quality不會對運行時的性能產(chǎn)生影響霞势,只會影響光照預(yù)計算時間烹植。

由于發(fā)射射線數(shù)量的不足而導(dǎo)致丟失了小型但卻很重要的集群斑鸦,對于種情況增加Irradiance Quality將是很有用的。例如草雕,對于一塊幾何物體有很突出顏色的效果最終沒有在光照貼圖上呈現(xiàn)出來的情況巷屿。

對于我們這兩個MountainPeak 游戲?qū)ο笪矬w來說,場景中尺寸很大的對象物體意味著我們不希望丟失附近的集群墩虹。

這表示我們可以通過在沒有對光照結(jié)果造成負面影響的情況下嘱巾,降低Irradiance Quality能夠減少預(yù)計算時間。

* Scene視圖的左上角诫钓,使用Draw Mode下拉菜單選擇Irradiance旬昭。

* 在Project窗口選擇 theTutorialTerrainLowLightmap Parameters asset.

* 在Inspector 面板, 減少rradiance Quality的值.

* 注意隨著值的減少最終的光照貼圖是如何稍微變得不那么銳利。

已經(jīng)測試了一些結(jié)果菌湃,我們已經(jīng)發(fā)現(xiàn)Irradiance Quality值等于2048時问拘,可以在GI光照的品質(zhì)和預(yù)計算時間之間找到比較好的平衡。盡管丟失了一些精度惧所,但是對于這個距離較遠的對象物體的整體光照效果來說是足夠了的骤坐。

* 在Project窗口選擇TutorialTerrainLowLightmap Parameters asset.

*在Inspector 面板,將Irradiance Quality的值設(shè)置為 2048.

為整個場景指定Lightmap Parameters assets

為距離比較遠的場景配置Lightmap Parameters asset,我們現(xiàn)在可以應(yīng)用已經(jīng)學(xué)到的技術(shù)并且為LightingTutorialStart場景中剩余的靜態(tài)幾何物體創(chuàng)建Lighting Parameters assets下愈。

我們在前面的教程中討論過或油,在我們的場景中對對象物體進行分類管理是一種好的方法〕刍#基于對象物體的特性,例如尺寸大小或者離攝像機的遠近程度腔彰,將場景劃分為對象組將會使你更容易的進行選擇叫编,當(dāng)應(yīng)用Lightmap Parameters assets去微調(diào)光照的表現(xiàn)性能時。

當(dāng)調(diào)節(jié)位于Environment游戲?qū)ο笪矬w下面的靜態(tài)對象物體時霹抛,為了指定同一個Lightmap Parameters asset搓逾,去為對象物體進行不同的分類。例如杯拐,對象物體離可玩區(qū)域是否很接近可玩區(qū)域或者離攝像機很近霞篡。在這種情況下,為整個對象物體提高分辨率可能會對光照結(jié)果產(chǎn)生顯著的提升端逼。對象物體是否離的比較遠或者看起來是否比較模糊朗兵?這里你不太可能使用相同的分辨率由于視覺上不會看到明顯好的效果。相似地顶滩,如果對象物體的材質(zhì)在反射率方面沒有發(fā)生大量的變化余掖,提高分辨率可能不會產(chǎn)生更好的效果。

當(dāng)指定Lightmap Parameters assets時過于細致是沒有必要的礁鲁。對于大多數(shù)場景盐欺,少數(shù)不同的變化是足夠了的赁豆。許多細微的變化很難去調(diào)節(jié),就像多次應(yīng)用不同的Lightmap Parameters assets冗美。

在我們完成了的教學(xué)場景LightingTutorialOptimal中魔种,我們已經(jīng)基于對象物體的復(fù)雜度以及所需的分辨率將場景劃分為以下的歸類:

* RockLow:光滑外凸類型的石頭,它們的mesh距離Camera比較遠粉洼,所以只需要較低的分辨率并且減少它們Cluster Resolution的值

* RockMedium:光滑外凸類型的石頭节预,它們的mesh離可玩區(qū)域和Camera比較近,因此它們更容易被看到漆改,由于這個原因我們將分辨率以及Cluster Resolution的值稍微調(diào)高心铃,同樣將Irradiance Budget 以及IrradianceQuality的值調(diào)高。

* StructuresHigh:適用于高分辨率以及Cluster Resolution的重要建筑物挫剑,因此它們需要的Irradiance Quality 和Irradiance budget的值也會更高去扣。

* StructuresLow:離Camera比較遠的建筑物,只需要較低分辨率的值

* TerrainLow:大型樊破,距離比較遠的mesh比如山峰愉棱,不需要高分辨率。

* TerrainPlayable:離攝像機比較近的大型地形對象物體哲戚,需要一個lightmap resolution來平衡奔滑,以便Camera更近的檢查,降低大地形的Cluster Resolutions也較為合理顺少。

* TerrainVeryLow:距離非常遠并且部分比較模糊的地形對象物體只需要較低的分辨率以及Cluster Resolution的值朋其。它們的Irradiance Quality和Irradiance Budget的設(shè)置也同樣如此。


除了使用這些自定義的Lightmap Parameters assets脆炎,在已經(jīng)完成的教程場景中LightingTutorialOptimal梅猿,我們也有一些使用默認參數(shù)的結(jié)構(gòu),這些默認參數(shù)在Lighting窗口中的Scene標(biāo)簽頁中秒裕。在這里我們使用Unity標(biāo)準(zhǔn)的值袱蚓,將Lightmap Parameters設(shè)置為Default-Medium。

為場景中大多數(shù)的靜態(tài)對象物體使用默認的參數(shù)几蜻,減少了需要手動指定操作的數(shù)量喇潘。為大多數(shù)對象物體將要使用的設(shè)置指定默認的參數(shù)是很有用的。為了我們的目的梭稚,Default-Medium設(shè)置結(jié)合每個單位1個紋素的實時分辨率為我們場景中的大多數(shù)物體得到了優(yōu)化的結(jié)果颖低。

Irradiance Scene 繪制模式是一種很有用的工具,因為它只會顯示對PRGI過程中靜態(tài)物體光照結(jié)果哨毁。

當(dāng)決定指定并且配置你的光照的時候?qū)ightingTutorialOptimal場景作為指南枫甲。為場景中的剩余靜態(tài)對象物體指定Lightmap Parameters應(yīng)該不會花費太長的時間。記住當(dāng)你為這些剩余的對象物體進行設(shè)置時,要明確將設(shè)置提高是否對結(jié)果產(chǎn)生實際的提升效果想幻。在不會對視覺輸出效果產(chǎn)生負面影響的情況下粱栖,降低設(shè)置將會是一種很好的選擇。


下一篇:Unity預(yù)計算全局實時GI(十)- 總結(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脏毯,一起剝皮案震驚了整個濱河市闹究,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌食店,老刑警劉巖渣淤,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吉嫩,居然都是意外死亡价认,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門自娩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來用踩,“玉大人,你說我怎么就攤上這事忙迁∑瓴剩” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵姊扔,是天一觀的道長惠奸。 經(jīng)常有香客問我,道長恰梢,這世上最難降的妖魔是什么佛南? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮嵌言,結(jié)果婚禮上共虑,老公的妹妹穿的比我還像新娘。我一直安慰自己呀页,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布拥坛。 她就那樣靜靜地躺著蓬蝶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪猜惋。 梳的紋絲不亂的頭發(fā)上丸氛,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音著摔,去河邊找鬼缓窜。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的禾锤。 我是一名探鬼主播私股,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼恩掷!你這毒婦竟也來了倡鲸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤黄娘,失蹤者是張志新(化名)和其女友劉穎峭状,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逼争,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡优床,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了誓焦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胆敞。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖罩阵,靈堂內(nèi)的尸體忽然破棺而出竿秆,到底是詐尸還是另有隱情,我是刑警寧澤稿壁,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布幽钢,位于F島的核電站,受9級特大地震影響傅是,放射性物質(zhì)發(fā)生泄漏匪燕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一喧笔、第九天 我趴在偏房一處隱蔽的房頂上張望帽驯。 院中可真熱鬧,春花似錦书闸、人聲如沸尼变。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嫌术。三九已至,卻和暖如春牌借,著一層夾襖步出監(jiān)牢的瞬間度气,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工膨报, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留磷籍,地道東北人适荣。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像院领,于是被迫代替她去往敵國和親弛矛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

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