前言
本文僅討論內(nèi)置渲染管線,高清渲染管線和通用渲染管線不在討論范圍之內(nèi)
內(nèi)置渲染管線就是最普通的工程自帶的渲染管線
本文使用的Unity版本為2019.4 ,。如果你的版本不同,參數(shù)和參數(shù)的功能可能不同。
由于作者并非專業(yè)技美,只是一個苦逼的碼農(nóng),難免有錯誤,請大佬不吝斧正。
一 Unity的光照 與 烘焙光照
1 unity完整的光照組成
Unity的完整光照由直接光+間接光+光照貼圖+環(huán)境光+反射+后處理組成
并非所有的組成部分都一定會用到,一個場景里可能只有直接光,可能只有光照貼圖,一切根據(jù)實(shí)際需求決定
直接光:即光源直接發(fā)射出來,打到物體表面的光,不需要烘焙
間接光:光線打到物體表面后,經(jīng)過反射,反射到其他表面上的光,需要烘焙
環(huán)境光:模擬現(xiàn)實(shí)中大氣、天空、周圍環(huán)境對物體顏色的影響,需要烘焙
反射:物體表面反射的天空和周圍環(huán)境的顏色,游戲中不存在真正的反射,需要用到反射探針模擬反射效果,需要烘焙
后處理:使用后處理組件對畫面進(jìn)行的額外調(diào)整
2 光的亮度與顏色
一個很常見的誤區(qū)是,光是用來照明提供亮度的,但這并不完全正確,光除了有亮度,還有顏色。
亮度
亮度也就是灰度,最暗為純黑,最亮為純白,中間過渡區(qū)域會各種灰,我們認(rèn)為默認(rèn)情況下太陽光是純白的。
顏色
除了亮度,光線還會攜帶顏色信息,例如一盞紅色的燈照到白色的墻上,墻看起來是紅色的。特別需要注意的是,反色的光同樣會攜帶顏色,攜帶的顏色為反色表面的顏色。
3 全局光照=直接光+間接光
上帝說要有光,就有了直接光和間接光。
全局光照
在現(xiàn)實(shí)世界的白天時,我們總能看清陽光下的一個物體的向陽面和背陰面,這是因?yàn)楝F(xiàn)實(shí)世界中的光線在各種物體表面進(jìn)行了折射,這些光線最后進(jìn)入了我們的眼睛里。
在渲染領(lǐng)域中,這種模擬光線運(yùn)動的技術(shù)被稱為全局光照技術(shù)(GI)
實(shí)現(xiàn)全局光照有兩種方式:
1是光線追蹤
2 直接光+間接光(光照貼圖)。
光線追蹤并不是什么新技術(shù),在離線渲染領(lǐng)域(電影,動畫)已經(jīng)使用了很多年,但是其渲染計算量太大,渲染一幀的時間要以分鐘甚至小時計算,但是以游戲?yàn)榇淼膶?shí)時渲染要求速度要快,一秒鐘要輸出幾十張圖像,很顯然光線追蹤目前尚不適合大規(guī)模應(yīng)用。
直接光和間接光
unity的光照由直接光和間接光組成
直接光即光源直接打在物體表面上的光
間接光即打在物體表面上又反射到其他物體表面上的光,在unity中,所有的間接光都必須經(jīng)過烘焙才能得到,一個完全未烘焙的場景,只有直接光,不存在任何間接光(但有環(huán)境光,所以背光面不一定是純黑色)
5 間接光≠光照貼圖
另一個常見的誤區(qū)是將間接光和光照貼圖等同起來,但實(shí)際上間接光和光照貼圖是不同的,在烘焙完成后,間接光是光,受到光源的影響,通過燈光的indirectMultiplier參數(shù)控制(必須烘焙了實(shí)時GI且光源是realtime模式),而光照貼圖是一個靜態(tài)的貼圖,不會再發(fā)生改變,而光照貼圖上保存了間接光的信息,請務(wù)必區(qū)分清除這兩個概念。
當(dāng)然了,Untiy的動態(tài)間接光本質(zhì)上也是一個實(shí)時修改的光照貼圖,但我們拋開實(shí)現(xiàn)方式,分清間接光是光,而光照貼圖是圖這個區(qū)別,不要簡單的等同起來。
二 色彩空間與自動烘焙
1 unity的色彩空間
Unity中有伽馬色彩空間和線性色彩空間,默認(rèn)的是伽馬空間。
伽馬空間性能更好,受支持的平臺更多,如果我們需要發(fā)布在手機(jī)、web等性能較弱的平臺上,首選伽馬空間。
線性空間下色彩更豐富,明暗過渡更自然,效果更好,如果發(fā)布在PC、主機(jī)等平臺上,建議使用線性空間,注意不是所有的硬件都支持線性空間。
推薦在項(xiàng)目啟動后首先更改色彩空間,因?yàn)檗D(zhuǎn)換色彩空間后會重新導(dǎo)入材質(zhì),非常耗時。
我們可以在Editor/ProjectSettings/Player/OtherSettings/Color Space里設(shè)置社彩空間。
2 自動烘焙光照
建議關(guān)閉自動烘焙
優(yōu)美締默認(rèn)是開啟光照的,這非常不友好,因?yàn)槊慨?dāng)我對光源做出一點(diǎn)改變的時候,編輯器就會自動開始烘焙,而烘焙是非常消耗性能的,所以我們應(yīng)該關(guān)閉自動烘焙
點(diǎn)擊右下角的AutoGenerate Lighting On 字樣(2022版本點(diǎn)擊右下角的燈泡圖標(biāo)),就可以打開光照面板,取消勾選最下方的AutoGenerate,這樣當(dāng)我們調(diào)整好光照后,手動點(diǎn)擊一次 Generate Lighting按鈕就可以生成光照貼圖了。
三 烘焙
1 什么是烘焙,烘焙的是什么
什么是烘焙
在Untiy中,烘焙是進(jìn)行光照預(yù)計算,將光照信息存到一張貼圖上,運(yùn)行時直接讀取貼圖的信息,而不是實(shí)時計算。
在烘焙中會產(chǎn)生多種信息,根據(jù)設(shè)置的不同,我們可以產(chǎn)生 靜態(tài)光照貼圖、動態(tài)光照貼圖,反射信息等。
我們的光照處理就是圍繞烘焙光照貼圖和處理實(shí)時光進(jìn)行的。
烘焙的是什么
首先只有靜態(tài)物體會參與烘焙,烘焙會將以下
1 mixed光源的間接光照,
2 baked光源的直接光照和間接光照,
3 環(huán)境光,
烘焙到光照貼圖里。
此外還會準(zhǔn)備反射探針、光照探針、實(shí)時全局光信息。
2 如何進(jìn)行烘焙
首先,將需要烘焙的物體設(shè)置為靜態(tài)
實(shí)際上只要勾選ContributeIGI就行了(早期版本的unity是LightingMap Static),如果需要烘焙反射球,再勾上最后一項(xiàng)即可,當(dāng)然最簡單的還是直接勾選static前的對鉤。
如果特別需要注意的是,靜態(tài)物體烘焙的影子只能被另一個靜態(tài)物體接收,所以如果你烘焙后地面上的影子不是烘焙的,看一下地面是不是靜態(tài)的。
然后將希望烘焙的光源的模式改為Mixed或Baked
光照模式為realtime的光源永遠(yuǎn)不會參與烘焙
AreaLight只支持烘焙模式
然后點(diǎn)擊烘焙按鈕
點(diǎn)擊右下角的AutoGenerateLighting Off打開烘焙面板,然后點(diǎn)擊右下的GenerateLighting按鈕。
如果使用了自動烘焙,將會自動烘焙,但不會真的有人用自動烘焙吧。
3 烘焙的優(yōu)點(diǎn)和缺點(diǎn)
優(yōu)點(diǎn)
1光源的光照信息被保存到一張光照貼圖上,untiy通過讀取光照貼圖的信息來決定這里的光照顏色,節(jié)省實(shí)時計算的性能
2由于烘焙時離線計算,烘焙后的光照效果要遠(yuǎn)好于實(shí)時計算的光照
缺點(diǎn)
1只能烘焙靜態(tài)物體,動態(tài)物體無法被烘焙(可以用實(shí)時間接光和光照探針改善)
2 靜態(tài)物體不能移動,移動后影子會留在原地,因?yàn)楹姹汉蟮墓庥靶畔⑹且粡堎N圖
4 查看光照貼圖
可以在光照面板最下方查看光照貼圖的尺寸等信息
在光照面板的BakedLightmaps里查看光照貼圖
5 清除光照貼圖
光照面板,右下角,展開,Clear Baked Data,即可清理已有的光照貼圖
6 烘焙時的注意點(diǎn)
1 絕對不要勾選光源本身為靜態(tài),會導(dǎo)致頂點(diǎn)數(shù)暴漲
2 當(dāng)目前沒有光照貼圖時(沒有烘焙過或刪除了已有的光照貼圖),移動baked模式的光源,其光照效果和影子也是會跟著變的(但運(yùn)行時沒有光照效果),第一次烘焙后,再移動baked光源,光照效果和影子就不再變化了。
3 對光照系統(tǒng)進(jìn)行任何修改(修改了參數(shù),修改了燈光的模式)后,都應(yīng)該重新進(jìn)行烘焙,否則可能光照效果不會發(fā)生預(yù)期的變化。
四 燈光
我們看一下燈光的參數(shù) 以直接光為例,其余燈光會稍有不同,但都很簡單,不在贅述
type
燈光的類型,一共有四種 聚光燈,直接光(太陽光),點(diǎn)光源,和區(qū)域光,其中區(qū)域光只支持烘焙,其他三種燈光可以是實(shí)時的
color
燈光的顏色
mode
可選項(xiàng)為 realtime實(shí)時、mixed混合、baked烘焙
- realtime: 實(shí)時光會隨燈光位置改變而改變光照效果
- baked: 烘焙光只能通過烘焙來照亮物體,且烘焙后改變燈光,光照效果不會變化,有趣的是,如果沒有烘焙好的光照貼圖,烘焙光的行為模式和realtime的燈光一致
- mixed:同時具有realtime和baked的特點(diǎn),既可以參與烘焙,也可以提供實(shí)時光照,但不是所有的燈光設(shè)成mixed就行了,為了節(jié)省性能,我們通常只將主光源設(shè)為mixed。
混合光源無法對實(shí)時間接光產(chǎn)生影響。
對于動態(tài)物體,混合光源將提供實(shí)時直接光,和實(shí)時陰影
對于靜態(tài)物體,混合光源同樣將提供實(shí)時直接光和實(shí)時陰影,同時將烘焙間接光信息
intensity
光源的強(qiáng)度
indirectMultiplier
間接光的強(qiáng)度,有兩個作用
1對于Mixed和Baked類型的燈,影響烘焙的間接光的強(qiáng)度。
2 對于Realtime類型的燈,如果開啟了實(shí)時全局光,且完成了烘焙,會影響實(shí)時全局光的亮度,調(diào)高會讓畫面出現(xiàn)不正常的過曝和漏光,建議直接光的這個值調(diào)為0
shadowType
影子類型 沒有影子 硬陰影 軟陰影
Baked ShadowAngle
僅在烘焙模式下出現(xiàn),不知道什么用
realtime shadows 僅在realtime模式下出現(xiàn)
Stength:影子的強(qiáng)度
Resolution:影子分辨率
Bias:陰影偏移,陰影繪制起點(diǎn)的距離,值越大,起點(diǎn)越遠(yuǎn),不要設(shè)置為零,容易出現(xiàn)自陰影問題
可以看到一道道的自陰影
NormalBias: 法線偏移,不要設(shè)到0,否則當(dāng)Bias較小時,遠(yuǎn)處看會出現(xiàn)明顯以下問題
這是一個沒有任何影子的純色平面,但是明顯中間有個更亮的圓形
NeraPlane: 影子的近平面,同樣用于緩解自陰影問題
插句題外話,如果物體距離世界原點(diǎn)非常遠(yuǎn),由于浮點(diǎn)數(shù)精度丟失,陰影會出現(xiàn)錯誤,使用上邊三個參數(shù)可以緩解問題
Cookie:燈光的cookie,可以為燈光設(shè)置假陰影,例如一個燈罩里的燈,被燈罩遮住的地方會有陰影,但是直接用untiy模擬是得不到正確的效果的,正確的做法是為燈罩模型添加一個layer,讓燈光忽略這個Layer,然后為燈光添加一個cookie,這里比較麻煩,且這一部分文章很多,自己搜吧。
DrawHalo
渲染光暈,同時叫醒士官長
需要為攝像機(jī)添加 FlareLayer組件才能看到效果
Flare
一個耀斑,需要提供一個耀斑貼圖,可以實(shí)現(xiàn)鏡頭在強(qiáng)光下產(chǎn)生的耀斑效果,也可以做類似《質(zhì)量效應(yīng)》的收割者眼睛的效果
模擬鏡頭耀斑
收割者眼前的橫線也是耀斑
需要為攝像機(jī)添加 FlareLayer組件才能看到效果
RenderMode
設(shè)置光源是否是主光源,如果設(shè)置為Auto,DirectionalLight會是主光源。
在某些烘焙模式下,如MixedLighting的LightingMode設(shè)置為Subtractive,對于所有mixed類型的燈光,將只有主光源可以在動態(tài)物體上透射陰影
Cullingmask
可以設(shè)置這個光照到哪那一層,忽略哪那一層
五 光照面板LightingSettings
1 打開光照面板
方法1:
方法2:
點(diǎn)擊右下角的 AutoGenerateLighting Off/On 字樣
2 光照面板區(qū)域介紹
3 Scene選項(xiàng)卡
3.1Environment 環(huán)境光
用于指定天空盒、環(huán)境光、環(huán)境反射
3.1.1skyboxMaterial
天空盒的材質(zhì),我們可以在這里替換天空盒
3.1.2SunSource
太陽光的光源,當(dāng)我們使用了untiy的程序化天空盒(也就是默認(rèn)的藍(lán)天灰地),通過這個屬性可以指定一個DirectionalLight作為陽光,此時程序模擬的太陽將會出現(xiàn)在直接光的方向。如果不指定,則場景中最亮的DirectionalLight會被當(dāng)做SunSource。
3.1.3EnvironmentLighting 環(huán)境光設(shè)置
環(huán)境光用于模擬天空、大氣、周圍環(huán)境對物體產(chǎn)生的光照效果,如下,物體本事是白色,但是被天空映成了紅色
Source
環(huán)境光的來源,通常設(shè)置為天空盒或者固定顏色
Intensity Multiplier
環(huán)境光的強(qiáng)度,烘焙后改變值,對于動態(tài)物體,可以立刻看到效果,靜態(tài)物體需要重新烘焙。
Ambient Mode
環(huán)境光的模式,只有同時打開了Realtime Global Illumination和Baked Global Illumination,才能使用RealTime模式,否則只能用Baked模式,注意更改模式后需要再次烘焙
Realtime:動態(tài)物體和靜態(tài)物體都能實(shí)時接受環(huán)境光
Baked:動態(tài)物體可以實(shí)時改變環(huán)境光,靜態(tài)物體改變光照效果需要重新烘焙
3.1.4EnvironmentReflections 環(huán)境光反射
用于為光滑物體提供反射信息,注意只能反射天空盒或我們指定的反射貼圖,不能反射周圍的物體,反射周圍的物體用反射探針,且當(dāng)物體處于反射探針內(nèi)時,會使用反射探針的反射信息,而不是環(huán)境反射的信息
Source
反射源,通常就是天空盒
Resolution
反射貼圖的分辨率,分辨率越高反射效果越好
Compression
反射貼圖的壓縮方式
Intensity Multiplier
反射的強(qiáng)度,推薦為1,如果值太低,對于一個全反射的物體,會變成黑色
Bounces
這個值控制的是反射的反彈次數(shù),決定了當(dāng)我們烘焙了一個反射探針時,物體的環(huán)境反射效果是否會被反射探針捕捉,值為1時,物體的環(huán)境反射效果不會被捕捉,物體將會是黑色的,設(shè)置為2時,將會進(jìn)行1次采樣,反射探針將可以捕捉到物體表面的顏色,但是如果物體表面上還能反射到第二個具有反射效果的物體,則在反射球中,第二個物體在第一個物體表面上看上起來是黑色的,因?yàn)椴蓸拥膶訑?shù)不夠多。當(dāng)場景中有大量反射物體時,建議至少設(shè)置為2,值越大,相互反射層數(shù)越多。
如下,值為1,靜態(tài)cube在反射探針里看起來是黑色的,設(shè)置為2后恢復(fù)正常
3.2Realtime Lighting 實(shí)時全局光
3.2.1Realtime Global Illumination 實(shí)時全局光照
勾選后打開實(shí)時全局光,需要重新烘焙才能生效。
實(shí)時全局光也是一張光照貼圖,只不過這個光照貼圖是實(shí)時改變的。他有以下貼點(diǎn)
1 通過改變realtime模式光源的indirectMultiplier參數(shù),可以控制實(shí)時全局光的強(qiáng)弱,但不建議太高,否則會出現(xiàn)過曝的地板、墻壁漏光等問題。如下為過高的實(shí)時間接光帶來的過曝錯誤
2 只有靜態(tài)物體可以參與烘焙實(shí)時全局光信息,所以實(shí)時間接光效果只會在靜態(tài)物體周圍出現(xiàn),動態(tài)物體永遠(yuǎn)不會參與烘焙實(shí)時全局光,因?yàn)閷?shí)時全局光也是光照的預(yù)計算,動態(tài)物體的位置無法預(yù)計算。
3 計算實(shí)時全局光不需要任何光源參與,因?yàn)橹皇穷A(yù)計算光的反射路徑。
4 只有realtime模式的光源可以對烘焙后的實(shí)時全局光產(chǎn)生影響,mixed光源不會影響實(shí)時全局光效果。
5 實(shí)時全局光的效果變化不是立刻的,而是在多幀之間插值,如果你突然關(guān)閉一個實(shí)時光,會看到實(shí)時全局光的消失有一個過程。如果你的場景里有需要快速變化的燈光,不建議使用實(shí)時全局光。
6 烘焙完成后,可以修改本屬性的值,動態(tài)的開關(guān)實(shí)時全局光,不必再次烘焙,除非靜態(tài)物體發(fā)生了變化。
3.3Mixed Lighting 烘焙全局光
3.3.1Baked Global Illumination
是否啟用烘焙全局光
3.3.2LightingMode
烘焙全局光的模式,一共有三大類,四種模式
Subtractive:
這是效果最差的一種模式,同理這也是速度最快,性能消耗最小的一種模式
對于mixed和baked模式的光源,烘焙后移動禁用光源,光照效果都不會有變化
這種模式下,完成烘焙后,對于mixed類型的燈光,動態(tài)物體將只接收場景中的主光源的陰影,其余mixed類型光源的陰影將被忽略。兩個注意點(diǎn) 1 realtime模式燈光的陰影不會受限 2 主光源是燈光的 RenderMode類型為Imporent類型的燈光,如果是Auto,通常是DirectonalLight是主光源(也就說我們可以通過修改RenderMode屬性將非DirectionalLight設(shè)置為主光源)
Shadowmask:
shadowmask是效果最好的一種模式,具體來說分為shadowmask和distanceShadowmask兩種模式,兩種模式可以在Editor/ProjectSettings/Quality/ShowmaskMode里切換
對于baked模式的燈光,烘焙后移動禁用光源光照效果和光照效果都不會有變化
對于mixed模式的燈光,烘焙后移動光源,包括靜態(tài)物體的光照效果會改變(因?yàn)閙ixed模式的燈光依然會為靜態(tài)物體提供實(shí)時直接光),靜態(tài)物體的影子不會移動。禁用光源后,靜態(tài)物體的烘焙影子也會消失(兩種shadowmask都是),只保留間接光
兩種模式的區(qū)別是
- shadowmask:動態(tài)物體物體展示所有實(shí)時陰影,靜態(tài)物體只有烘焙陰影,且陰影無法在動態(tài)物體上產(chǎn)生遮蓋效果。陰影被保存在一張陰影貼圖里,最多支持四個光源的貼圖,分別被保存在RGBA通道里,貼圖可以在BakedLightingmaps里點(diǎn)擊LightingData找到
- distanceShadowmask:和shadowmask的區(qū)別在于,在相機(jī)到物體的一定距離內(nèi),靜態(tài)物體也將使用動態(tài)陰影,可以遮蓋住動態(tài)物體。距離可以在Editor/ProjectSettings/Quality/ShadowDistance里設(shè)置,注意個距離也是動態(tài)陰影的最大渲染距離
BakedIndirect:
不烘焙陰影,陰影將實(shí)時渲染
3.4 LightingmappingSetting 烘焙設(shè)置
注意這個面板只有勾選了MixedLighting/Backed Global Illumination才會出現(xiàn),且各個版本的unity之間參數(shù)差異比較大
3.4.1 Lightmapper
烘焙方式
- Enlighten Unity早期版本使用的第三方烘焙引擎,目前已經(jīng)不再更新,unity最終在2021版本中徹底剔除了這個烘焙引擎。由于個引擎趨于淘汰,我們不討論這個引擎的參數(shù)
- Progressive untiy自己開發(fā)的漸進(jìn)式烘焙引擎,有CPU和GPU兩個版本。本文的烘焙參數(shù)以這個引擎為準(zhǔn)
PrioritizeView
勾選后將優(yōu)先烘焙scene攝像機(jī)能看到的部分
Multiple Importance Sampling
多重重點(diǎn)采樣。可以加快烘焙速度,但有可能產(chǎn)生更多噪點(diǎn)。
Direct Samples
直接光采樣數(shù),值越大,直接光貼圖越精細(xì),烘焙時間越長,建議取2的整數(shù)次冪
Indirect Samples
間接光采樣數(shù),值越大,間接光貼圖越精細(xì),烘焙時間越長,建議取2的整數(shù)次冪
Environment Samples
環(huán)境光采樣數(shù),值越大,環(huán)境光貼圖越精細(xì),烘焙時間越長,建議取2的整數(shù)次冪
Light Probe Sample multiplier
光照探針采樣乘數(shù),值越大,對光照探針的采樣越精細(xì)。要啟用此功能,請選擇 Project Settings > Editor,然后禁用 Use legacy Light Probe sample counts。
Bounces
光線的反彈次數(shù),增加這個值可以讓讓光線多次反彈,會使間接光更亮,更容易照亮一些角落。建議保持默認(rèn)值,如果是復(fù)雜的室內(nèi)場景,可以提高次數(shù)。
Filtering
過濾光照貼圖,以減少噪點(diǎn)。將對直接光、間接光、環(huán)境光遮罩分別進(jìn)行過濾。
如果設(shè)置為Auto,將根據(jù)機(jī)器選擇過濾策略,如果開發(fā)計算機(jī)滿足運(yùn)行 OptiX (NVIDIA OptiX AI-Accelerated Denoiser) 的要求,漸進(jìn)光照貼圖程序?qū)⒋私翟肫髋c Gaussian 過濾器結(jié)合使用。對于所有目標(biāo),該過濾器的半徑均為 1 紋素。
如果開發(fā)計算機(jī)無法運(yùn)行 OptiX,漸進(jìn)光照貼圖程序?qū)⑹褂?Gaussian 過濾器。對于 Direct、Indirect 和 Ambient Occlusion 目標(biāo),該過濾器的半徑分別為 1 紋素、5 紋素和 2 紋素。
如果設(shè)置為高級,則可以手動控制三種光的過濾策略。
3.4.2 IndirectRsolution
間接光的分辨率,參考下一個LightmapResolution屬性
3.4.3 LightmapResolution
光照貼圖的分辨率,對應(yīng)untiy中的一米會在光照貼圖上烘焙幾個像素點(diǎn),默認(rèn)一米烘焙40個像素低點(diǎn),通過調(diào)整這個值,我們可以顯著的提高或降低光照貼圖的質(zhì)量(包括烘焙的陰影),影響烘焙時間。
注意分辨率和烘焙貼圖大小的變化不是線性相關(guān)的,而是近似于指數(shù)變化,例如分辨率40時貼圖是8兆,20時會變成2兆,這個不絕對,還跟場景的復(fù)雜度有關(guān),但肯定不是線性關(guān)系。
3.4.4 LightmapPadding
光照貼圖的間隙,因?yàn)楣庹召N圖是基于物體UV的平面圖,所有物體的光照信息都在一張圖上,如果各個物體的光照圖之間沒有間隙,有可能會導(dǎo)致滲色,使一個物體有了另一個物體的光照顏色,如果發(fā)生了不正常的滲色,可以嘗試提高這個值。通常保持默認(rèn)值即可。
3.4.5 LightmapSize
光照貼圖的尺寸,如果光照貼圖很小,會烘焙出多張光照貼圖。
3.4.6 CompressLightmaps
壓縮光照貼圖,啟用后可以提高烘焙速度。
3.4.7 AmbientOcclusion
是否使用環(huán)境光遮蔽效果,只有靜態(tài)物體(勾選了Contribute GI)才會產(chǎn)生AO效果,建議使用后處理的AO,而不是烘焙AO
Max Distance
決定可以產(chǎn)生遮蔽效果的兩個物體之間的最大距離,值越大,越遠(yuǎn)的物體之間可以相互遮蔽,值為0,表示距離無限。
增大這個值會顯著的增加烘焙的預(yù)計算時間。
Indirect Contribution
范圍0-5,間接光(和環(huán)境光)在AO中的貢獻(xiàn)程度,值越大由間接光引起的環(huán)境光遮罩效果就越強(qiáng)烈(原本應(yīng)該更亮的地方現(xiàn)在更黑)
Direct Contribution
值0-10,由直接光貢獻(xiàn)的環(huán)境光遮罩效果,注意直接光的遮罩會和間接光的亮度混在一起,非常不真實(shí),建議為0。
這里很明顯的黑色遮罩和間接光進(jìn)行了混合,效果很不理想。
3.4.8 DirectionalMode
是否烘焙方向貼圖,烘焙光照貼圖時,會額外烘焙一張存儲了光源方向信息的貼圖,這張貼圖將為法線貼圖和漫反射提供方向信息,如果沒有這個貼圖,Unity將會把物體表面當(dāng)做平面處理,這將丟失部分光照細(xì)節(jié)(光照探針和環(huán)境光遮蔽會為其提供陰影細(xì)節(jié),但來自光源的直接光和間接光信息會丟失),對于一個顏色豐富的物體,這種細(xì)節(jié)的丟失通常是難以分辨的。
3.4.9 Indirect Intensity
整體上調(diào)節(jié)間接光的強(qiáng)度,場景里所有光源都會受到影響,查看效果需要重新烘焙。
3.4.10 Albedo Boost
提高這個值可以讓物體的本色在烘焙時更明顯一些。
3.4.11 LightmapParameters
提供一些預(yù)制的參數(shù)設(shè)置,也可以手動創(chuàng)建自己的預(yù)制參數(shù)。
3.5 OtherSettings
注意這里的值是可以實(shí)時看到效果的,不需要重新烘焙
3.5.1 Fog 霧效
啟用后幾個參數(shù)很簡單,不啰嗦
3.5.2 HaloTexture
為場景里的光暈指定一個貼圖,所有開啟光暈效果的燈光(參考本文燈光部分)都會使用同一個光暈貼圖,且貼圖的顏色會隨著燈光改變。
注意不建議為DirectionalLight開啟光暈,因?yàn)楣鈺灂苯永L制在燈物體身上。
3.5.3 HaloStrength
光暈的強(qiáng)度
3.5.4 FlareFadeSpeed
耀斑和光暈在進(jìn)入和離開鏡頭時,淡入淡出的時間,單位是秒,但是貌似如果時間過長或者小于1,會變成瞬間出現(xiàn)和消失。
3.5.5 FlareStrength
耀斑和光暈的強(qiáng)度
3.5.6 Spot Cookie
決定了聚光燈的光斑的樣子,會對所有的聚光燈生效。同時會影響影子的效果,不建議修改。
將默認(rèn)的聚光燈圖案換成一張其他圖片
3.6 DebugSetting
調(diào)試相關(guān)設(shè)置
3.6.1 Light Probe Visualization
光照探針相關(guān)設(shè)置,注意這些設(shè)置必須烘焙后才能看到效果。這些效果都是在scene里顯示的,且想要顯示這些效果,不能選中任何一個光照探針。
三種模式
-
Only Probes Used By Selection:只顯示影響當(dāng)前選中物體的探針。烘焙后,選中一個物體,影響它的探針將顯示在scene上。
-
All Probes No Cells: 顯示所有的探針,不帶插值四面體
-
All Probes With Cells:顯示所有探針,帶插值四面體,也就是下圖里的黃色線
-
None :不顯示探針
Display Weight
文檔里這么寫的:啟用此復(fù)選框時,Unity 將從用于有效選擇的光照探針到用于插值的四面體上的位置繪制一條線。這是一種調(diào)試探針插值和放置問題的方法。
但我沒試出來怎么用,也沒有自帶的解釋,應(yīng)該不重要。
Display Occlusion
文檔里這么寫的:啟用此復(fù)選框時,如果 Lighting Mode 設(shè)置為 Shadowmask,則 Unity 將顯示光照探針的遮擋數(shù)據(jù)。
實(shí)際使用中沒感覺出來有多大變化。
3.7 統(tǒng)計面板
也就是Light面板最下的文字區(qū)域
- Unity 已創(chuàng)建的光照貼圖數(shù)量
- 內(nèi)存使用量 (Memory Usage):當(dāng)前光照貼圖所需的內(nèi)存量。
- 占用的紋理像素 (Occupied Texels):在光照貼圖 UV 空間中占用的紋理像素數(shù)量。
- 視圖中的光照貼圖 (Lightmaps in view):Scene 視圖中的光照貼圖數(shù)量。
- 不在視圖中的光照貼圖 (Lightmaps not in view):不在視圖中的光照貼圖數(shù)量。
- 融合 (Converged):這些光照貼圖的所有計算都已完成。
- 未融合 (Not Converged):這些光照貼圖的烘焙仍在進(jìn)行中。
- 烘焙性能 (Bake Performance):每秒的光線數(shù)量。如果此值很低(即小于 2),則應(yīng)調(diào)整設(shè)置或硬件以便一次處理更多光線。
- 烘焙時間(Total Bake Time):烘焙耗時。
- 烘焙用的設(shè)備(Daking Device)。
4 RealtimeLightmaps選項(xiàng)卡
這里展示的是實(shí)時間接光照貼圖,只有在Scene選項(xiàng)卡里啟用了實(shí)時間接光照貼圖,并烘焙后,才能在這里看到看到貼圖。
5 Baked Lightmaps選項(xiàng)卡
烘焙光照貼圖,這里可以看到烘焙后的光照貼圖,點(diǎn)擊光照貼圖可以進(jìn)入光照貼圖所在的文件夾,在文件夾里可以看到其他的光照貼圖,如shadowmask,direction貼圖等等
六 物體的MeshRenderer
網(wǎng)格渲染器上也有一些影響光照效果的選項(xiàng)
1Lighting
1.1Cast Shadows
是否投射陰影
- Off 沒有影子。
- On 可以產(chǎn)生影子,對于一個單面的模型(例如一個自帶的plane)只有可以看到那一面可以產(chǎn)生影子。
- Two Sided 對于一個單面的模型,看不見的那面也可以透射影子。
- ShadowsOnly 看不見物體,只能看見影子。只有可見的一面可以產(chǎn)生影子。
1.2 Receive Shadows
其他物體的影子是否可以投射到這個物體上
1.3 Contribute Global Illumination
是否參與烘焙靜態(tài)光照,完全等同于static選項(xiàng)里的Contribute GI,且是同步的,改一個值,另一個也會變。
1.4 Receive Global Illumation
從光照貼圖還是光照探針接收全局光照。
要求這個物體必須勾選了Contribute Global Illumination(也就是成為靜態(tài)光照物體) ,且必須要烘焙了全局實(shí)時光或靜態(tài)光,才能調(diào)整這個屬性。
如果調(diào)整為光照探針模式,如果場景里有光照探針,那么這個靜態(tài)物體將會從光照探針處獲取光照信息,而不是固定的光照貼圖的顏色。這樣當(dāng)我們移動一個靜態(tài)物體時(我為什么要移動靜態(tài)物體),他的全局光照(光照探針不烘焙直接光)效果會發(fā)生變化。
2Lightingmapping
必須勾選為靜態(tài)光照物體,且上方1.4里選擇為Lightmaps時這個選項(xiàng)才可見
2.1 Scale in Lightmap
縮放這個物體在光照貼圖上的尺寸,為0時不再烘焙光照貼圖,但仍然可以影響其余物體的光照貼圖,0-1時縮小光照貼圖尺寸,這將降低這個物體的光照貼圖的質(zhì)量,可以對遠(yuǎn)處的非主要物體使用來節(jié)約內(nèi)存。大于1 時會增加光照貼圖尺寸。
2.2 Stitch Seams
建議啟用,Untiy會嘗試平滑物體邊緣接口處的光照。
2.3 Lightmap Parameters
選擇一組光照參數(shù),這些光照參數(shù)只會作用于當(dāng)前使用他們的物體,可以在Lighting面板外,更細(xì)顆粒的控制具體一個物體的光照效果。
關(guān)于光照參數(shù)請參閱:
光照參數(shù)
2.4 Optimize Realtime UVs
此選項(xiàng)只在物體為靜態(tài)時出現(xiàn)。
網(wǎng)格是否對實(shí)時全局光進(jìn)行優(yōu)化。計算實(shí)時全局光時,模型的網(wǎng)格將會被打包成“圖表”,如果不勾選,每一個UV面都會被單獨(dú)制成一個圖表,勾選后,符合規(guī)則的UV將會被合并成連續(xù)的圖表,以節(jié)省空間提性能。但是注意,這可能會破壞一些銳利邊緣的光照效果(因?yàn)楸缓喜⒘耍?/p>
Max Distance
可以合并的UV的最大世界空間距離
Max Distance
可以合并的UV的最大角度
2.5 Ignore Normals
配合2.4的功能,勾選后可以防止untiy拆分UV
2.6 Min Chart Size
指定用于 UV 圖表的最小紋理像素大小。如果需要拼接,則值 4 將創(chuàng)建一個 4x4 紋理像素的圖表來存儲光照和方向性。如果不需要拼接,則值 2 將降低紋理像素密度并提供更好的光照構(gòu)建時間和游戲性能。
如果啟用了2.4 Optimize Realtime UVs,則應(yīng)該設(shè)為4,如果不需要拼接圖標(biāo),可以設(shè)為2,這會降低效果,但會提高速度。
3 Probes
光照探針和反射探針
3.1 Light Probes
光照探針,只有動態(tài)物體才能設(shè)置,靜態(tài)物體即使設(shè)置了從光照探針接收光照也不能調(diào)整這個選項(xiàng)。
這個只建議用默認(rèn)的BlendProbes,在臨近的光照探針之間進(jìn)行插值,
如果物體太大,同時跨過了多個探針組的范圍,可以使用 "user Proxy Volume"光照探針代理體,具體用法參考官方手冊
3.2 Reflection Probes
反射探針
- Blend Probes:在反射探針之間進(jìn)行插值,適用于室內(nèi)環(huán)境
- Blend Probes and Skybox:在反射探針和天空盒之間插值,適合室外
- Simple:不插值
3.3 Anchor Override
重新指定光照和反射探針的插值位置,默認(rèn)是物體包圍盒的幾何中心。
七 Quality面板
嚴(yán)格來說,這個面板控制的并非只有光照質(zhì)量,但許多參數(shù)會影響光照效果。
注意,任何好的游戲質(zhì)量必定是以犧牲 性能/內(nèi)存 為代價換來的 。
1 Levels
這里展示了幾個預(yù)設(shè)的質(zhì)量等級,我們也可以自己創(chuàng)建自己的質(zhì)量等級,我們對Quality面板的任何操作都是針對當(dāng)前選中的質(zhì)量等級來的,修改一個質(zhì)量等級的參數(shù)不會影響其他質(zhì)量等級。
2 Rendering
2.1 Render Pipeline Asset
我們可以將參數(shù)保存在這個文件里,方便在其他地方快速復(fù)用
2.2 PixedLightCount
向前渲染中,最大的逐像素實(shí)時(RealTime+Mixed)光照數(shù)量,當(dāng)值為N,如果場景中(不是攝像機(jī)視角內(nèi))實(shí)時光源(RealTime+Mixed)數(shù)量超過上限,Untiy將會只保留“主要”的N個光源為逐像素光照,其余的光照會被降級為球諧函數(shù)近似處理。通常保留的燈光為距離物體最近的光源。
2.3 Anisotropic Textures
紋理的各項(xiàng)異性。
2.4 AntiAliasing
多重采樣抗鋸齒的級別。
2.5 Soft Particles
混合粒子,獲得更柔和的效果。用于緩解粒子和物體交界處的硬邊緣,如下為非常明顯的硬邊緣:
2.6 Realtime Reflection Probes
是否允許實(shí)時更新反射探針,以便對動態(tài)物體做出反應(yīng)。
2.7 Billboards Face Camera Position
強(qiáng)制廣告牌面面向攝像機(jī)。
2.8 Resolution Scaling Fixed DPI Factor
將設(shè)備的屏幕分辨率降到原始分辨率以下。
2.9 Texture Streaming
紋理串流,如果不使用紋理串流,建議關(guān)閉,因?yàn)闀黾觾?nèi)存消耗。
3 Shadows
3.1shadowmask Mdoe
當(dāng)烘焙模式為shadowmask時
shadow Distance:對于靜態(tài)物體,Shadow Distance范圍內(nèi)使用實(shí)時影,遠(yuǎn)處使用烘焙陰影。
shadow Mask:對于靜態(tài)物體,永遠(yuǎn)使用烘焙陰影。
3.2 Shadows
陰影的軟硬。
3.3 Shadow Resolution
陰影的分辨率。
3.4 Shadow Projection
產(chǎn)生陰影的方法
ClsoeFit 質(zhì)量更高,但相機(jī)移動時,陰影會抖動。
Stable Fit 質(zhì)量更低,但當(dāng)相機(jī)移動時,不會抖動。
3.5 Shadow Distance
陰影渲染的最大距離
3.6Shadow Near Plane Offset
輸入陰影近平面偏移(用于解決大三角形由于陰影平墜而扭曲的問題)。不太明白
3.7 Shadow Cascades
級聯(lián)陰影
官方描述
簡單來說,級聯(lián)陰影可以提高近處陰影的質(zhì)量,減少陰影鋸齒。級聯(lián)越多,效果越好。
七 光照探針
1 光照探針的作用是為動態(tài)物體提供間接,他并不能像靜態(tài)物體一樣獲取準(zhǔn)確的間接光照,只能通過收集探針附近的光照信息,然后為動態(tài)物體疊加上臨近探針之間的插值顏色,這個效果只能是近似的,但是仍然比完全沒有間接光照要好的多。
2 需要注意的是,一旦使用光照探針,就必須鋪滿整個玩家可到達(dá)區(qū)域,如果有玩家可到達(dá)區(qū)域里沒有光照探針,那么動態(tài)物體會從最近的光照探針獲取間接光照,無論他離這個“最近”的光照探針多遠(yuǎn)。
3 必須烘焙才能讓光照探針獲取光照信息,光源必須是baked模式才能將光照烘焙到光照探針上。
4 當(dāng)我們選中一個動態(tài)物體時,物體上會顯示一個小圓球,指示當(dāng)前物體受到的光照探針的影響,當(dāng)前左側(cè)偏藍(lán),右側(cè)偏黃。
5 完成烘焙后,即使刪除光照探針組物體,物體仍然會受到光照探針影響,除非再次烘焙。
創(chuàng)建與編輯光照探針
創(chuàng)建
實(shí)際上創(chuàng)建的是光照探針組,光照探針組的一個小黃球才是一個探針。
編輯
選中光照探針,在Inspector面板上選擇EditLightProbes,選中場景里的小黃球,即可移動光照探針,選中光照探針ctrl+D即可復(fù)制。
放置光照探針
1 不要均勻的布置光照探針,這不僅會造成性能浪費(fèi),還會導(dǎo)致光照效果不準(zhǔn)確,在光照區(qū)域變化小的區(qū)域,可以只布置少量的探針,而在光照(顏色)變化大的區(qū)域,應(yīng)該沿顏色的分界線布置較多探針。需要額外注意的是,除了靜態(tài)物體本身的顏色,烘焙陰影的邊界處同樣需要布置大量探針,因?yàn)檫@也屬于“顏色”的變化區(qū)域,如下一個簡單的例子,在顏色交界處使用了更多的光照探針。
2 不要讓所有的光照探針處于同一個平面,光照探針必須有體積。
3 不要讓光照探針穿過游戲物體,不能直接接觸物體。
八 反射探針
反射探針的原理就是一個cubeTexure,物體將從這個cubeTexure上獲取顏色貼到自己的紋理表面,從而獲得反射效果。
反射探針通常有兩種使用方法,烘焙反射探針和實(shí)時反射探針。
反射探針的范圍是指這個范圍內(nèi)的物體可以有反射效果,而不是將范圍內(nèi)的物體烘焙到自己的反射紋理上。
任何物體只要包圍盒有一部分接觸了反射探針就可以有反射效果,不需要完整的進(jìn)入反射探針內(nèi)。
使用反射探針
1 新建一個材質(zhì),將金屬度和光滑度拉滿,為一個物體賦予這個材質(zhì),這樣他就是一個全反射的物體了,當(dāng)然不是全反射的物體同樣可以使用反射探針。
2 新建一個反射探針,默認(rèn)為烘焙模式,我們需要烘焙一次光照
3 然后當(dāng)物體與反射探針的范圍有接觸時,即可看到反射效果
靜態(tài)反射探針的效果是有局限的,首先靜態(tài)反射探針必須先烘焙光照,其次物體的反射效果并不是以物體為中心展現(xiàn)的,而是以反射探針為中心展現(xiàn)的,且當(dāng)物體移動,反射效果不會有任何改變。
右側(cè)是反射探針
動態(tài)反射探針
很顯然靜態(tài)反射探針有很多限制,且無法實(shí)時反應(yīng)游戲內(nèi)容的變化,當(dāng)我們需要一面鏡子,或則游戲物體表面有較強(qiáng)的反射效果時,我們會需要一個動態(tài)反射探針。
將反射探針的模式改為實(shí)時,且刷新模式改為每幀,這樣我們就可以使用一個不需要烘焙的實(shí)時探針。
對于一些移動的物體,例如汽車,可以將反射探針綁定在物體上,然后縮小反射探針的范圍,讓探針只能為物體提供反射效果,這么做是為了節(jié)省性能。需要注意的是,此時我們需要讓反射探針忽略物體所在的層,否則探針上可能有不正確的黑色區(qū)域,這部分區(qū)域就是我們綁定的物體。
反射探針會微弱的提高受影響物體的亮度,因?yàn)樵谖矬w的表面上疊加了反射的顏色。文章來源:http://www.zghlxwxcb.cn/news/detail-582876.html
九 后處理
后處理參考
鏈接
文章寫的很好,我就不狗尾續(xù)貂了。文章來源地址http://www.zghlxwxcb.cn/news/detail-582876.html
到了這里,關(guān)于unity 2019 內(nèi)置渲染管線 光照與Lighting面板 參數(shù)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!