? ? ? Unity5中的光照可以用整本書來說明症副,此文是過去幾個月使用Unity5的簡單匯總。下面主要分6個部分來講解。
Forward(前向)與Deferred(延遲)渲染
Realtime(實時)與Baked(烘焙)光照
引擎的光照工具
光照場景
性能技巧
后期處理
上述的大部分對于Unity制作的內容都是適用的,并不局限于虛擬現實應用帽蝶。這是非常高級的內容介紹,需要讀者具備基礎的圖形和光照的概念是越。下面開始吧冀惭!
前向與延遲渲染通道
如果心懷疑慮,請使用前向渲染通道羹应。前向渲染通道對VR應用來說很理想揽碘,有以下幾點原因。前向渲染在前期的性能開銷較低,DrawCall較少更宜在CPU運行雳刺,在移動VR設備上也同樣運行的很好劫灶,它還支持抗鋸齒和半透明材質。以下是能幫助你決定應用適用渲染管線的簡單指南掖桦。
延遲渲染
延遲渲染前期的性能開銷很大本昏,但它是一個固定的性能開銷,添加再多的幾何體和燈光也不會產生過多的額外開銷枪汪。你有幾百個實時燈光涌穆?那就使用延遲光照吧。延遲光照的開銷是與燈光照亮的像素數量成正比的雀久。場景復雜度(燈光照亮的物體數量)并不會影響性能宿稀。旁注:UE4 只有延遲渲染管線,這就是UE4制作的Demo在較老的PC上運行緩慢的一個原因赖捌。
優(yōu)點
延遲渲染最適用于包含大量小體積實時燈光的場景祝沸。
每個光照都可以當作一個逐像素燈光來渲染,以便在法線和深度貼圖中可以精確著色越庇。
每個光照都有一個實時陰影罩锐。
權衡
延遲渲染器無法渲染半透明材質。你需要為半透明材質添加一個額外的前向通道卤唉。
平行光在延遲渲染器中開銷很大涩惑。它們影響整個場景,且光照體積無限大搬味。
產生大量Draw Call(場景中每個物體產生的兩個Draw Call乘以每個燈光產生的兩個Draw Call境氢。)
不能抗鋸齒(這對于VR非常不利,因為VR極度依賴MSAA來減少閃爍和忽隱忽現的線)碰纬。
前向渲染
前向渲染的前期固定開銷較小萍聊,因而最適合復雜度較低的場景,但其性能開銷與場景復雜度成正比悦析。如果你的場景中只有一對實時燈光寿桨,那就使用前向渲染吧。前向渲染器的成本與場景中燈光的數目成正比强戴。像素燈越少則性能越高亭螟。
權衡
在每個渲染通道中,每個被像素燈光照到的對象都會被渲染骑歹。如果一個對象被10盞不同的燈光照亮预烙,那它將被渲染十次(每個光照通道一次)。這就是前向渲染通道中被燈光照亮的物體越少越好的原因道媚。
從設計上限制燈光數量扁掸。
基本通道用實時陰影渲染一個方向光翘县,并用額外的通道來渲染其余的燈光。然而谴分,這些額外的燈光不會有陰影锈麸。
像素光照數量有限,其余的都是頂點光照牺蹄。和逐像素光照對象相比忘伞,頂點光照提供的效果較簡單。
好處
Draw Call較少沙兰。每次像素光照射到物體氓奈,就會產生一次Draw Call。最壞的繪制調用計數情況是(場景中對象數量*照射到對象的像素光數量)僧凰。有很多降低Draw Call的方法(批處理等)
鋸齒(8XMSAA探颈,非常適合VR)
支持半透明材質
如果你的目標平臺是移動端(如GearVR),使用前向渲染通道训措,限制像素光數量為1~2個
當在前向和延遲渲染間猶豫不決時伪节,別忘了我們這里只討論實時燈光。場景中有多少烘焙光照都是可以的绩鸣。烘焙光照貼圖怀大,并在運行之前禁用它們。運行時渲染器只會考慮場景中的實時燈光呀闻。
實時和烘焙光照
如果你在乎陰影的真實化借,那就烘焙燈光。硬陰影或者軟陰影在一些情況下已足夠捡多,但在很多情況下仍不能接受蓖康。(比如桌子上的點光源)。在實時光照下垒手,你可以在地面上看到塊狀陰影蒜焊。在烘焙光照下,你看見的是一個柔和的科贬,散布在桌下的陰影泳梆。實時燈光只在光照有變化(顏色,位置等等)的情況下是必要的榜掌。烘焙光照和陰影不會隨著實時移動的對象而改變优妙,但可以用小技巧來彌補。(見下面的“光照探針”)憎账。
提高烘焙光照貼圖質量
在烘焙時套硼,你可以通過增大烘焙分辨率滑動條(合理的紋理像素分辨率是40~100)來提高光照貼圖質量。啟用環(huán)境光遮蔽(Ambient Occlusion)和最終聚集(Final Gather)胞皱。在烘焙之前熟菲,檢查工程的Quality 和Player 設置看政。在Quality選項卡中朴恳,使用高分辨率的硬陰影和軟陰影抄罕。在Player選項卡中,選擇延遲渲染器于颖。在烘焙前禁用GI預計算呆贿。即使使用質量較低的陰影,在運行時采用前向渲染森渐,采用這些設置會使烘焙期間效果達到最好做入。你可以在烘焙完成后切回前向渲染或低圖形質量。
引擎燈光工具
區(qū)域光源
可以改變位置和旋轉同衣。必須烘焙竟块。
注意:鏡面反射顯示在表面的單一區(qū)域,與該區(qū)域光的大小和形狀無關耐齐。
用于窗口和盒狀的燈光(壁頂燈或燈管)浪秘。
點光源
可以調整位置,但旋轉無效埠况。
一個光禿禿的燈泡耸携,會向各個方向散射光線。用于普通的燈泡環(huán)境辕翰。
聚光燈
·可以設置位置和旋轉夺衍。
·用于手電筒,泛光燈喜命,和天花板燈等沟沙。
方向光
位置無關緊要,但可以旋轉壁榕。
燈光影響整個場景(但可以被屋頂遮擋矛紫,這與環(huán)境光不同)
使用方向光模擬戶外太陽或者月亮光,或者創(chuàng)建一個室外燈光通過天窗來照亮室內場景护桦。
方向光非常粗糙含衔,產生的陰影也是生硬的。
環(huán)境光
會微微照亮整個場景(顏色可選)
這意味著即使未被照亮的區(qū)域也會有一絲光線
如果希望未照亮區(qū)域完全不可見二庵,就要禁用環(huán)境光贪染。
使用環(huán)境光來改變場景氛圍。
全局光照
全局光照是為了實現更具有真實感的場景而計算來自直接光照的簡單反射光和陰影催享。實時全局光照支持改變場景燈光杭隙,比如改變燈光顏色,移動直射的太陽光因妙,從白天過渡到黑夜等等痰憎。為了提高實時全局光照的質量票髓,增加預計算的分辨率。