Unity預計算全域性實時GI(二) 實時解析度

2021-08-11 08:17:12 字數 2401 閱讀 4551

當使用預計算實時全域性光照(prgi)為乙個場景設定光照時,首先要決定的是設定場景預設的實時解析度(realtime resolution)。realtime resolution是每個世界單位所使用的實時光照貼圖紋素(貼圖畫素)的數量。

realtime resolution設定可以在lighting視窗中找到並調整,方法如下:

* 開啟 lighting 視窗 (window>lighting) 然後選擇  scene 標籤頁。

* 通過勾選 precomputed realtime gi 選項 以確保 開啟precomputed realtime gi 功能。

* 在precomputed realtime gi選項框下面,可以看到 realtime resolution 屬性。

unity的lighting視窗顯示了場景的全域性realtime resolution的設定

當設定乙個場景時了解你工程的單位比例是很重要的。可能在你的專案裡乙個單位等於現實世界的1公尺、一英呎或一公分。unity中的單位沒有預設設成真實世界的比例單位,所以要由開發者自行決定。

在我們的工程中我們已經決定讓乙個單位等於一公尺。一些物理概念假設一樣,例如在unity中重力的預設就是以每秒多少單位來表示的。假設乙個單位等於一公尺,對於乙個真實世界的場景來說是乙個很好的設定。

realtime resolution的值通常可以由遊戲世界的規模來制定。例如,如果你的場景是乙個小型但擁有豐富光照變化的室內環境,為了捕捉這種更詳細或者「高頻率的」光照,更高解析度的光照貼圖比如每個單位2-3個紋素可能比較合適。

如果你的場景是乙個規模較大的戶外環境,可能覆蓋了幾百甚至上千單位(平方公尺)的表面,而這些表面並不會劇烈地改變反射光的顏色。在這樣的情況下,使用這種適合捕捉在室內場景中錯綜複雜的光照細節的解析度是一種浪費。我們會浪費寶貴的cpu時間和記憶體去更新那些對整體外觀貢獻不大的光照貼圖。為了本教程的目的,我們會提高在光照預計算期間必須被考慮的光照貼圖的紋素數量。這會對預計算時間產生很大的影響。

針對室外環境,對於場景中的比較大的物件物體,一種合理的光照貼圖解析度設定可能在每單位0.5-1個紋素之間,或者對於terrain來說,那麼每個單位0.1-0.5個紋素比較合適。

unity prgi所需要的realtime resolution值比傳統光照貼圖密度要小好幾個等級,這是因為我們只從這些光照圖里獲取間接光照的資料,且這些資料通常解析度都很低。所以使用prgi時,清晰的陰影通常都是通過提供實時陰影而不是高解析度的光照貼圖。

在傳統光照貼圖技術中,使用每個單位30個紋素這樣的設定,可能會導致預計算失敗或無法完成計算。

對於室內場景更合適的設定是每個單位2-3個紋素,而對於室外環境則為每個單位0.5-1個紋素。

這種假設是以在真實世界場景中1單位 = 1公尺的情況為前提,如果世界單位的大小發生改變,這些設定的值響應地就需要被調整

乙個單位代表1公尺

當初次設定我們場景的實時解析度,我們為我們場景中的靜態物件物體指定了預設的解析度。新建的帶有mesh renderer且標記為靜態光照(lightmap static)的物件,會使用這個值一直到它被修改。

除了為整個場景選擇實時解析度,我們還能針對每個物件調整光照貼圖的解析度。在需要高解析度來提供更高真實感的情況下,我們可以選擇性的提高這個值。通常是將場景裡最多的物件解析度設為預設值,然後手動調高需要更多照明細節物件的值。之後我們會討論修改每個物件物體解析度的方法。

如果你想跟著我們一直學習下去,我們將會在lightingtutorialstart場景中展開教學,這個場景位於本頁頁頂的鏈結lighting optimisation tutorial中。

在我們的示例場景中,我們有乙個戶外場景,這個場景具有乙個擁有顏色一致的中等大小的地形。為此,乙個每個單位0.5紋素的低實時解析度對於捕捉場景中從其他物件反射的光照是足夠了的。然而,在場景中有一些細節很高的木質房子,它們的數量比地形物件還多,我們應該為房子設定合適的實時解析度。然後我們可以單獨修改地形物件的解析度,這樣可以降低場景準備的工作量。考慮到這一點,我們將要對預設實時解析度使用每個世界單位1個紋素的設定。操作步驟如下:

* 開啟 lighting 視窗 (window>lighting) 然後選擇scene 標籤頁.

* 設定 realtime resolution 的值為1.

由於我們的世界單位設定為1單位 = 1公尺,這表示一張由unity中prgi生成的光照貼圖將會是1x1公尺的大小,這可能看起來畫素很低,請記住我們只捕捉間接光照。清晰地陰影以及鏡面高光將會在場景中由實時光所計算提供 。

unity預計算全域性實時gi(三)- 光照圖表(charts)

Unity預計算全域性實時GI(一) 介紹

在unity中,對於預計算的全域性光照 gi 或反射光照有兩種可用但區別很大的技術可被使用 它們是烘焙全域性光照 baked gi 和預計算實時全域性光照precomputed realtime gi。本教程主要講解預計算實時全域性光照 prgi 當啟用prgi時,光照預計算過程指的是在unity ...

Unity實時GI與烘焙GI

在unity2019.3.8中,當我們新建乙個場景時,預設的燈光設定為 自帶的主平行光 realtime 燈光面板 baked gi light mode為shadowmask 不是distance shadowmask 新建物體的contribute gi預設是關閉的 該預設設定有乙個不足,即不能...

Unity5 新功能解析 GI 全域性光

面積光的光源有形狀,是乙個矩形區域,有位置,有方向,方向是超矩形的一面,矩形的背面沒有光,並且隨距離衰減直到沒有。它用於模擬大量的光源和在一起的效果,如街道,但是因為計算複雜,所以只用於烘焙 構成 可實時更新的lightmap 可實時更新的光照探頭 light probe 可實時更新的cubemap...