日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unity 删除子节点_【Unity文档】Realtime GI介绍(一)

發(fā)布時(shí)間:2025/3/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unity 删除子节点_【Unity文档】Realtime GI介绍(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

* 介紹

Unity中,有兩種GI的技術(shù):烘焙(Baked)和預(yù)計(jì)算實(shí)時(shí)(Precomputed Realtime)全局光照,這篇是講預(yù)計(jì)算實(shí)時(shí)部分的

目錄

  • 如何決定光圖分辨率
  • 光圖中的Charts是如何影響預(yù)計(jì)算時(shí)間的
  • 如何開始預(yù)計(jì)算
  • 使用光照探針(Light Probes)減小預(yù)計(jì)算時(shí)間
  • 預(yù)計(jì)算生成自動(dòng)展UV的優(yōu)化
  • 簇(Clusters)是什么以及它們?nèi)绾斡糜谌终彰鞯恼彰?/li>
  • 使用Lightmap Parameters來做物件粒度的光照調(diào)整

(文章說通過優(yōu)化將幾個(gè)小時(shí)的預(yù)計(jì)算時(shí)間縮短到了幾分鐘)

* 實(shí)時(shí)分辨率(Realtime Resolution)

當(dāng)搭建完場景,準(zhǔn)備預(yù)計(jì)算時(shí),第一件要做的事情就是決定光圖的分辨率,它的單位是紋素(texel)/單位(unit),Window>Lighting>Scene設(shè)置目錄是這個(gè)

具體設(shè)置如圖,先在Realtime打上勾,然后修改尺寸

** 選擇合適的分辨率

demo場景的比例是1unit=1m,更方便模擬現(xiàn)實(shí)。這個(gè)比例會(huì)影響光圖的細(xì)節(jié),如果比例比較大,比如1unit=5m,或者比例小5unit=1m那么場景物件的精度就會(huì)發(fā)生變化。另一個(gè)影響因素是室內(nèi)和室外,室內(nèi)的物件更多,更精細(xì),而室外或地形則精度要求沒這么高,所以精度高反而浪費(fèi)了內(nèi)存和計(jì)算開銷,下面是一個(gè)1unit=1m比例的參考值

參考值

預(yù)計(jì)算需要的實(shí)時(shí)分辨率值比傳統(tǒng)烘焙光圖的低上許多,因?yàn)轭A(yù)計(jì)算只需要捕捉間接光,間接光都是低強(qiáng)度、低頻。在預(yù)計(jì)算時(shí),清晰的陰影都是由實(shí)時(shí)光提供的

傳統(tǒng)烘焙光在1unit=1m的比例下推薦值是30texels/unit,如果用這個(gè)值

** 理解Charts

unity預(yù)計(jì)算中,一個(gè)chart就是物體映射到光圖上對應(yīng)uv大小的一塊區(qū)域。用于計(jì)算的光照信息儲(chǔ)存在這個(gè)小塊里,信息由輻照(irradiance)和方向(directionality)組成

當(dāng)預(yù)計(jì)算生成后,每一個(gè)紋素的光照信息就被包含在Chart中。所以Chart的大小和數(shù)量是決定預(yù)計(jì)算時(shí)間的重要因素

圖示是一個(gè)4x4紋素大小的Chart,Lightmap UV強(qiáng)制擴(kuò)大了半個(gè)紋素,以防止顏色滲透(Bleeding) https://docs.unity3d.com/Manual/ProgressiveLightmapper-UVOverlap.html?docs.unity3d.com

無論物體有多小,Chart默認(rèn)的最小值是4x4。Unity在圖表邊緣至少需要4個(gè)紋素,以便在找到相應(yīng)的縫合伙伴之前對其進(jìn)行唯一標(biāo)識(shí)

注意預(yù)計(jì)算不需要padding,因?yàn)閁nity強(qiáng)制在導(dǎo)入Mesh階段給了Chart一個(gè)半紋素的邊界。也就是說Chart可以緊挨著彼此并且仍然是雙線性插值而沒有疊加滲色,從而節(jié)省了寶貴的光照貼圖空間

如果我們有1個(gè)物體,擁有50個(gè)Chart,800個(gè)紋素。所以數(shù)量對于紋素的增加是個(gè)致命傷,更多的紋素?cái)?shù)量就意味著更多的光照計(jì)算和數(shù)據(jù)壓縮、存儲(chǔ),這大大增加了預(yù)計(jì)算時(shí)間開銷。所以減少Charts是縮短預(yù)計(jì)算時(shí)間的重要手段(特別是小物件造成很多自動(dòng)生成的邊界,十分浪費(fèi))

* 開始預(yù)計(jì)算過程

開始條件是場景中必須有物體標(biāo)記為Lightmap Static,物件右上角的Static打上勾,里面有很多的類別。GameObjects的層級結(jié)構(gòu)可以更快更好的選中和調(diào)整整體類別。demo中的場景部分層次結(jié)構(gòu)

可以對相同類型的對象進(jìn)行分組

標(biāo)記整個(gè)Environment節(jié)點(diǎn)下所有子節(jié)點(diǎn)都為Static,然后在Lighting Window窗口開始預(yù)計(jì)算(快速迭代過程中建議勾上Auto按鈕)

* 光照探針(Probe Lighting)

減少charts數(shù)量可以減少預(yù)計(jì)算時(shí)間,使用探針就是一種可以去掉部分物件的方式。這些物件會(huì)使用探針來接收間接光信息。適用的類型是小物件,它們對場景中的間接光作用不大

** 探針是什么

光照探針是一種用于實(shí)時(shí)渲染中類似光照計(jì)算的快速的技術(shù)。它通常用于在游戲世界中照明角色和其他非靜態(tài)(動(dòng)態(tài))對象。 探頭照明在運(yùn)行時(shí)非常高效,并且可以快速預(yù)計(jì)算

探針的原理是對空間中某點(diǎn)的入射光進(jìn)行采樣,并使用球諧(Sphere harmonics)函數(shù)對此信息進(jìn)行編碼。它的系數(shù)存儲(chǔ)占用很少,并且可以在游戲中快速的解碼用于shader中的近似表面光照的計(jì)算

使用限制

  • 是很難在不增加階數(shù)的情況下表現(xiàn)出高頻或者變化頻繁的光照,而增加的代價(jià)又太大了,所以我們只會(huì)使用低階的球諧函數(shù)
  • 由于僅有一個(gè)球形表示光照,所以不適合用于大型物體,大型物體上有太多的光照變化
  • 球諧編碼不適合大型平面物體或具有明顯凹度的物體

選擇使用探針的物體

最適合物體的特征是小,凸,demo中Environment/Props節(jié)點(diǎn)及其子節(jié)點(diǎn)都是一些小、作為裝飾物的物體,并且數(shù)量很大,對場景中的間接光作用不大。它們在光圖中作uv展開十分的浪費(fèi)邊界,所以全部取消Static選項(xiàng),使用探針來處理

這么做以后,等預(yù)計(jì)算結(jié)束會(huì)發(fā)現(xiàn)場景中沒有進(jìn)行預(yù)計(jì)算的非靜態(tài)物體跟場景中的其他物體有很大的區(qū)別,因?yàn)槲覀冞€沒放上探針,這時(shí)候他們表面只有環(huán)境光(Ambient Probe)。用戶不可見,但是會(huì)采樣Lighting Window中設(shè)置的環(huán)境光源

探針的放置

非靜態(tài)物體接收光基于與附近探針的距離。探針直接相互連接組成四面體,物體從哪一個(gè)探針讀取光照信息決定于它落在哪個(gè)四面體中。為了形成四面體,探針放置時(shí)需要注意位置,要包圍住物體

雖然探針在運(yùn)行時(shí)相對低耗和快速,但出于性能優(yōu)化的考慮,還是有值得注意的地方的。密集網(wǎng)格排布雖然快速,但是很多的探測器采樣出來的差異不是很大,很浪費(fèi)。更好的辦法是在光線明顯變化的區(qū)域更大密度的放置探針,比如從光到陰影的過渡區(qū)域,或者可能存在由光反射形成的強(qiáng)烈色差的區(qū)域

步驟1

  • 創(chuàng)建Light Probe Group (GameObject > Light > Light Probe Group)
  • 選中新創(chuàng)建的Group,點(diǎn)擊Edit Light Probes
  • 留下一個(gè)探針,其他的都刪掉,并把它放在Terrian上方,然后ctrl+D復(fù)制兩份
  • 按W移動(dòng),一個(gè)y坐標(biāo)增加2,另一個(gè)增加5

創(chuàng)建一個(gè)垂直排列的原因是我們可以采樣從地面彈射的間接光照,在頭部高度附近以及在空中的光照。當(dāng)我們在場景周圍復(fù)制這些探針來創(chuàng)建包圍體的時(shí)候,我們想確保任何位置的物體都會(huì)落在四面體中,探針之間有品紅色的線可以看到

步驟2

  • 選中剛剛創(chuàng)建的三個(gè)探針,然后ctrl+D復(fù)制,并移動(dòng)到附近合適的區(qū)域

合適的區(qū)域就是比如陰影區(qū)域,或者有明顯地表材質(zhì)變化的區(qū)域附近。為了保證增加探針而造成的消耗是有價(jià)值的,我們要確保它在采樣一些有明顯光線變化的區(qū)域。我們需要保證包含進(jìn)項(xiàng)目的每一個(gè)項(xiàng)都能有收益

步驟3

  • 重復(fù)步驟2,在變化大的區(qū)域以更大密度放置探針,直到創(chuàng)建了一個(gè)稀疏的牢籠布局包含了所有的區(qū)域
  • 在擺放探針時(shí),確認(rèn)最靠近地面的是否在地面之上

demo中有兩組探針組,一組用于人口密度大的村莊區(qū)域,另一個(gè)用于村外的稀疏區(qū)域。離開第一組區(qū)域后依舊會(huì)被第二組區(qū)域包圍,稀疏區(qū)域不需要跟村內(nèi)相同的密度,垂直方向只需要兩個(gè)即可

拆分探針組更有利于定位探針,可以啟用或者禁用單個(gè)組,用于清晰的調(diào)整。這些組在運(yùn)行時(shí)自動(dòng)合并到一塊兒,并會(huì)刪除重疊的探針

結(jié)束之后再次Lighting Build,現(xiàn)在場景中Props節(jié)點(diǎn)下在場景下看起來更加和諧了。在場景中不要看見探針,只要不選中探針組就行了。這就是擺放探針來獲得間接光,并且節(jié)約了很多的光圖Charts和計(jì)算、內(nèi)存的消耗。

最后附上文章鏈接:

https://learn.unity.com/tutorial/precomputed-realtime-gi-global-illumination#5c7f8528edbc2a002053b557?learn.unity.com

(其實(shí)翻譯了這么多里面具體怎么算的卻一點(diǎn)沒看!啊啊啊啊啊啊啊)

總結(jié)

以上是生活随笔為你收集整理的unity 删除子节点_【Unity文档】Realtime GI介绍(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。