Unity場景渲染中那些意想不到的細節(2)

2021-08-15 16:48:11 字數 1103 閱讀 9228

在室內場景烘焙中,一般分為以下兩種情況,人工照明和自然光照明,人工照明的主要難點在於燈光的強度與範圍的平衡,而自然光照明的難點在於「增強」陽光,所謂增強,在我們的生活中太陽光的表現絕不僅僅是乙個平行光,除了單純的亮度以外,還有陽光瀉下百葉窗時造成的丁達爾效應,陽光穿過天空時留下的低波長光線,如呈藍色的天空,白色的雲對屋內光照的影響。

在這個場景中,人工照明較少,只有書房的檯燈,客廳裡的乙個壁燈,以及可以忽略不計的幾根蠟燭,這時的環境設定應該是下午,多雲,陽光較強但又不是特別強,環境光較強(因為多雲):

這裡吸頂燈的光線較暗,而百葉窗也阻擋了大部分的陽光,為了讓整個畫面看起來溫暖一些,需要人為加area light(畢竟unity的渲染還是真實為主,而我們有時並不希望遊戲場景過於真實以至於失去美感),這裡在窗戶上新增了area light,讓屋內畫風明亮一些(審美實在捉急,這裡只是實現以下過程)。

第二張圖則是在室內,完全使用人工照明,室內照明的處理簡單直接,加非平行光就可以,然而需要格外注意的有兩點,首先是自發光物體與燈光的輝映,在unity的烘焙中,自發光物體會通過光照引擎的光線追蹤計算,形成一張對周圍物體有影響的光照貼圖,使周圍物體隨之被照亮,再加上reflection probe與screen space reflection的存在,烘焙結束後的畫面要比烘焙前要亮的多。這裡有經驗的技術美術和圖形開發者可以自定義shader中的meta pass以增強或改變烘焙後的自發光效果,實現一些或迷幻或真實的效果,為了體諒缺乏shader編寫經驗的開發者,我們這裡通過在烘焙前改變shader的自發光(emission)值,改變自發光對周圍物體的影響,同時自發光物體應選擇mesh renderer中的該項以增加unity光線追蹤時從物體射出的射線的數量並提高射線優先順序,使自發光物體的運算更為精準:

左側廚房使用了燈帶,unity是不支援實時的燈帶,除非使用者使用g buffer實現(無法實現陰影),area light與自發光物體原理相似,建議開發者使用效能較高的工作站,進行多次烘焙並調整亮度,最後獲得乙個亮度適中的室內光照。

Unity中的幾種渲染佇列

在渲染階段,引擎所做的工作是把所有場景中的物件按照一定的策略 順序 進行渲染。最早的是畫家演算法,顧名思義,就是像畫家畫畫一樣,先畫後面的物體,如果前面還有物體,那麼就用前面的物體把物體覆蓋掉,不過這種方式由於排序是針對物體來排序的,而物體之間也可能有重疊,所以效果並不好。所以目前更加常用的方式是z...

Unity中的前向渲染路徑和延遲渲染路徑

渲染路徑核心 光照處理。unity中光照 逐頂點 逐畫素 球諧光照。逐畫素光照 按照每個畫素的顏色被計算,看起來比較平滑 逐頂點光照 每個頂點上做光照,其他地方插值,效果粗糙。但是逐畫素光照中,每個光源會使每個光源光照範圍內的物體增加乙個渲染批次。延遲渲染可以解決逐畫素光照對光源造成的效能影響。延遲...

unity獲取場景中物體的幾種方式

在編輯 時,需要獲取場景中的物體和元件,對於不同的情況有不同的方法 當 在物體上時,可以直接使用gameobject和transform等方法,獲取該物體的元件為 使用或者不使用 this gameobject.getcomponent 元件名字 獲取子物體和子物體可以使用的有下面幾種 1,使用ge...