終於還是到了烘焙這里。(我用的unity版本是2017.2.0f3.新手一枚,如果有錯誤的地方,各位大哥及時指正.以免誤人子弟.)
先來說下燈光的各個參數:
unity 的燈光有以下幾種:
- Directional Light : 平行光(方向光) 最省資源 可以改變角度 聯想:太陽
- Point light :點光源(由一個點向四周發射光源) 可以改變位置 聯想:燈泡
- Spotlight:聚光燈(聚光/錐光) 最耗費資源 可以改變位置和角度 聯想:手電 探照燈
- Area Light:面燈,區域光(創造燈光貼圖烘焙時使用) 無法應用於實時光照
- Reflection Probe: 反射探頭(在探頭位置生成反射貼圖,cube圖的取樣內容) 基於效能考慮反射探頭越少越好,反射探頭並非用來讓物理得到精確結果,而是讓游戲世界有更好的反射
- Light Probe Group: 燈光探測器組(保存燈光信息,讓物體有真實的光照效果.)
注:4 5 6 都是用於烘培的,相當於在編輯器下保存信息,用於游戲模式下計算.
- Directional Light

Type:光源的類型。
Color:光照顏色。
Mode: 光照應用的模塊。Realtime 實時光(燈光會作用於所有物體). mixed:混合模式(光源只對動態物體有效) . Baked:烘培(燈光只作用於靜態物體).
Intensity: 光照濃度
Indirect Multiplier: 間接光照強度。如果大於1,每次反彈的光線更亮。如果小於1,每次反彈的燈光都會變暗。如果不需要反彈,設為0.
Shadow Type:陰影類型.(軟陰影,硬陰影,無陰影) 烘培時需要產生影子的話使用軟陰影。
硬陰影:
軟陰影:
區別:邊緣沒有鋸齒。
Strength:陰影的陰暗程度。
Resolution:分辨率,陰影的質量。如果陰影有
Bias:微調陰影的位置
Normal Bias:微調陰影的位置
Shadow Near Plane:解決這種陰影泄流的問題。 應該時這個效果:
Cookie: 指定投射陰影的紋理遮罩。這個紋理的阿爾法(alpha)通道作為一個遮罩,使光線在不同的地方有不同的亮度。如果燈光是聚光燈或方向光,這必須是一個2D紋理。如果燈光是一個點光源,它必須是一個立方圖(Cubemap)。
可以用於制作:類似某些汽車,開門下車的時候,地上有汽車的標志 或者 提示文字的效果。 ,alpha 的通道就是 標志.
Cookie Size: 縮放 遮罩的縮放,可以放大上圖的 BMW 效果 也可以縮小其效果。
Draw Halo :繪制光暈,光線帶有一定半徑范圍的球形光暈被繪制. 勾選后:
Flare: 耀斑,在光的位置渲染出來. 制作方式:http://www.zf3d.com/bbs_list.asp?id=163486 后面詳解
Render Mode: 渲染模式, auto Important 燈光是逐個像素渲染. Not Important 燈光總是以最快的速度渲染
Culling Mask : 消隱遮罩. 就是燈光只作用在那些層上面。
-
Point light : Range 調節點光源的范圍. Bake Shadow Radius: 陰影的柔化效果范圍。
-
Spotlight :Spot Angel :spot 燈光的角度范圍。 Range 調節點光源的范圍. Bake Shadow Radius: 陰影的柔化效果范圍。
-
Reflection Probe: 反射探頭。只有標記為”ReflectionProbe Static”的對象才會被反射探頭取樣
Type:選擇類型, 三種可選.
Baked:用於烘焙模式的,在Lighting面板下點擊Bake進行烘焙光照貼圖時,生成對應的反射貼圖。
Custom:自定義一個cubeMap來指定反射貼圖,選擇Dynamic Objects可將非靜態物體也給Bake出來.
Dynamic Objcts:動態物件也會被渲染到cubemap 上
Cubemap:指定反射Cubemap
Realtime:實時生成反射貼圖,但是和實時光照一樣的消耗性能.很少用, 一般作用於鏡子效果。
如果要啟用 實時的反射球,必須在QualitySetting里面勾選 是否支持realtime reflection probes。
Refresh Mode:刷新模式,On Awake 在創建的時候。Every Frame:每幀都刷新。 Via Scripting:腳本調用
TimeSlicing:反射貼圖的刷新頻率
All faces at once---9幀, 性能消耗中等. (9幀之內再次通過Via Scripting調用刷新是無效的)
Individual faces---14幀(在9幀的基礎上加了將六個面分為六幀的那多出來的五幀), 性能消耗最低.(14幀之內再次通過Via Scripting調用刷新是無效的)
No time slicing---1幀. 所有動作都在同一幀執行, 這種性能消耗最大. (1幀之內再次通過Via Scripting調用刷新是無效的)
Importance:-自動混合比例
影響了一個MeshRenderer中的多個ReflectionProbe的Weight的自動混合比例. 當一個物體處在多個Reflection Probe的”領地”內的時候, 首先會考慮每個Reflection Probe的Importance, 之后, 在此基礎上才會考慮每個Reflection Probe與該物體之間的分別的交叉的體積的大小. 也就是說Importance的優先級高於交叉體積的計算.
關於交叉體積的計算: For ex., if the first volume is 1.0 and the second is 2.0, then first probe’s influence will be 1.0 / (1.0 + 2.0) = 0.33, the second probe’s influence will be 2.0 / (1.0 + 2.0) = 0.67. 還有一種特殊情況, 就是就是一個小的Probe套在一個大的Probe里面, 而一個物體又完全在這個小的Probe里面, 那么對這個物體來說, 小的Probe的Weight會是1, 大的會是0. 而當這個物體逐漸脫離這個小的Probe的時候, 那么小的Probe和大的Probe對於這個物體的Weight會進行一個混合.
Intensity:強度,生成的CubeMap的明暗強度。
Box projection :
一般情況下,反射cubemap是被假設在無限遠出投射出來的圖像,不同的角度都能看到反射的團,但是當你距離反射物體遠近改變時,這個反射的圖案不會發生改變,這個特性,一般情況下,在室外場景很適用,但是到了室內就不行了,
開啟Box projection 選項,(支持Shader Model3以上平台可用)允許我們創建一個投射有限距離內的物體,當我們與反射物體距離發生變化時,反射圖案的尺寸也同樣發生變化,Probe Size以及Probe Origin會影響Reflection Probe的映射圖案的效果.
Blend Distance:兩個反射探球的 混合距離
Box Size:反射探針的 box 大小
Box Offset:反射探針的 box 偏移值
Resolution:反射探針 生成的 CubeMap的分辨率,值越大,性能越耗,效果越好。
HDR: 高動態范圍
Shadow Distance:反射陰影距離, 特性和Quality Setting中的特性一樣, 數值越小, 在反射畫面中陰影顯示越近, 但陰影越精細, 調成0會完全關閉陰影.
Clear Flags:清除標記。決定屏幕的哪部分將被清除。
Skybox:天空盒。默認模式。在屏幕中的空白部分將顯示當前攝像機的天空盒。如果當前攝像機沒有設置天空盒,會默認用Background色。
Solid Color:純色。選擇該模式屏幕上的空白部分將顯示當前攝像機的background色。
Back Ground :調整Cube Map的背景色
Culling Mask:剔除層標記,那些層要渲染,那些層不渲染。提高效率。
Use Occlusion Culling:啟用遮擋剔除。
Clipping Planes: Near:近切面. Far:遠切面。
調整攝像機的近遠切面,生成CubeMap的實質,其實就是攝像機看6個方向,將6個方向看到的圖片保存下來。
反射探球,需要注意的東西:
1、物體需要勾選反射探球標記(static->Reflection Probe Static)。Dynamic Objcts 會反射動態物體。 Realtime 就會反射所有物體 和標記無關。
2、要勾選 culling mask和clipping plane。一個是控制那些物體能渲染到貼圖上,另一個是控制攝像機看到的遠近。
3、當出現一個物體從一個反射探球,進入到另一個反射探球的時候,需要調節Importance控制他們之間的過渡。
4、分辨率:當反射細節不是很重要(反射物體很小或很遠)時,可以將分辨率設置小點兒;
5、貼圖壓縮:可以通過控制烘焙反射探頭貼圖的壓縮減少gpu消耗。在烘培面板設置。
-
Light Probe Group: 燈光探測器組 (可以看下這篇文章: https://blog.csdn.net/qq617119142/article/details/41674755)
目的是為了:即使場景中沒有燈光,人物進入場景的時候,任然有燈光的效果作用在物體上。
進入編輯模式, 點擊Add probe,一個點一個點增加,或者使用Duplicate Selected 復制所選的點,讓點把燈光照射范圍包圍起來.
注意:1、需要啟用 Lightmap static 靜態標記
2、需要關閉掉 被Light Probe Group 包圍的燈光。
-
Mesh Render Lighting
Light Probes: 照明插值模式
Off: 關閉
Blend Probes: 探針插值。 默認
Use Proxy Volume:渲染器使用插入光探針的3D網格。
Reflection Probes: 指定對象如何受場景中的反射影響。延遲渲染模式下,無法禁用。
Off:反射探頭被禁用,天空盒將被用於反射。
Blend Probes: 反射探頭已啟用。 混合只發生在探頭之間,適用於室內環境。 如果附近沒有反射探針,渲染器將使用默認反射,但默認反射和探針之間不會混合。
Blend Probes And Skybox:反射探頭已啟用。 探頭或探頭與默認反射之間會發生混合,這對室外環境很有用。
Simple:反射探針已啟用,但當有兩個重疊的體積時,探針之間不會發生混合。
Anchor Override:用於確定使用光探針或反射探針系統時的插值位置的變換。
Cast Shadows:
On:當陰影投射在它上面時,網格會投下陰影
Off:當陰影投射在它上面時,網格不會投下陰影
Two Sided:雙面陰影從網格的兩側投射。 Enlighten或Progressive Lightmapper不支持雙面陰影。 無用選項,lightmapper 只有2種格式 2種都不支持,哈哈。是不是我理解錯了?
Shadows Only:網格中的陰影將可見
Receive Shadows:啟用此復選框可使Mesh顯示投射在其上的任何陰影。 僅在使用漸進式光照貼圖時才支持“審查陰影”
Motion Vectors:指定運動矢量渲染的模式。運動矢量從一幀到下一幀追蹤每像素對象的速度。 使用這些信息,您可以應用特定的圖像效果,如運動模糊或時間消除鋸齒。
Lightmap Static:啟用此復選框可向Unity指示對象的位置已修復,並且將參與全局照明計算。 如果一個物體沒有標記為Lightmap Static,那么它仍然可以使用Light Probes點亮。
Dynamic Occluded:對此對象執行遮擋剔除。
UV Charting Control
Optimize Realtime Uvs:
指定創作的網格UV是否針對實時全局照明進行了優化。 啟用時,創作的UV會合並,縮放並打包以實現優化目的。
禁用時,創作的UV將被縮放和打包,但不會合並。
請注意,優化有時會對原始UV貼圖中的不連續性做出錯誤判斷。 例如,有意識的尖銳邊緣可能會被誤解為連續的表面。
Max Distance:指定用於UV圖表簡化的最大世界空間距離。 如果圖表在這個距離內,它們將被簡化。
Max Angle:指定共享UV邊緣的面之間的最大角度(以度為單位)。 如果兩面之間的角度低於此值,則UV圖表將被簡化。
Ignore normal:選中此框可防止在實時全局照明照明預計算過程中分割UV圖表。
Min chart size:指定用於UV圖表的最小紋理元素大小。 如果需要縫合,值為4將創建一個4x4像素的圖表來存儲照明和方向性。 如果不需要拼接,則值為2將減少紋理密度並提供更好的照明構建時間和游戲性能。
Lightmap settings
Scale in Lightmap:該值指定了光照貼圖中對象UV的相對大小。 值為0將導致對象未被光照貼圖,但仍有助於照亮場景中的其他對象。 大於1.0的值會增加用於該對象的像素數量(即光照貼圖分辨率),而小於1.0的值會減少該像素的數量。 您可以使用此屬性來優化光照貼圖,以便重要和詳細的區域更加精確。 例如:具有平坦黑色牆壁的孤立建築物將使用較低的光照貼圖比例(小於1.0),而顯示在一起的豐富多彩的摩托車則保證了較高的比例值。
通過調整這個值,可以控制該物體在Lightmap中所占的紋理大小。比如調整成0.1,則此物體的光照紋理就只有原來的十分之一,而調整成0,則此物體雖然可以產生陰影,但是不接收任何光照信息。
Prioritize illumination: Unity始終將此對象包含在光照計算中。 對於強烈發射的物體非常有用,以確保其他物體將被該物體照亮。
Lightmap Parameters:
選擇烘培的質量參數
到此:light 面板里面的所有屬性都介紹完了。相信你應該比較清楚了。
下面介紹:lighting的設置面板:全局光照設置窗口
這個才是重頭戲啊,初學者,拿到這個面板基本上是一片茫然啊。先介紹各個屬性,然后在說里面的坑。
這個Lighting窗口划分了三個區域:
1、Scene:設置適用於整個場景而不是單個GameObjects。這些設置控制燈光效果和優化選擇。
2、Global maps:顯示所有lightmap資產文件生成的GI照明過程。
3、Object maps:預覽當前選中的GameObject的GI lightmap紋理(包括陰影遮罩)。
下方有一個Auto Generate,勾上它,unity就會自動更新Lightmap 數據,但更新的過程非常耗時,
因此不建議勾選 Auto Generate。可以手動點擊Generate Lighting來烘焙。
- Scene Tab
包含6個模塊:
- 1、Environment
環境光部分包含設置天空盒,漫反射和鏡面反射。
Skybox Material : 天空盒材質。
改變當前天空盒的材質。也可以選擇一個 帶流光效果的材質,這樣可以做牢籠 等魔法效果。 不要限制死了,認為天空盒,只能放天空的貼圖。
Sun Source:設置一個定向光(directional Light)作為場景里的太陽,如果設置為None,unity則將最亮的定向光作為太陽(太陽:不管你設置的多大遠多,光都會照到場景里)。
Environment Lighting 環境光設置 這下知道unity的環境光在哪里了吧。哎。
Source :漫反射環境光(背景光),默認以天空盒作為環境光。
Color: 以某種顏色作為環境光。
Gradient: //梯度 sky, Equator and Ground分別選擇一種顏色,混合出一種環境光。
Skybox: 天空盒作為環境光.
Ambient Mode:微光模式. 場景中GI的模式。Realtime 實時更新。 Baked 烘焙(預先計算場景中的燈光).
//
Environment Reflections 全局設置反射參數。
Source:反射源。 Skybox:天空盒作為反射源。Custom :用一個cube map作為反射源。
Resolution: 反射貼圖的分辨率
Compression//壓縮 反射貼圖是否被壓縮。 Auto :如果適合壓縮,那就壓縮。Uncompressed:不壓縮。Compressed:壓縮。最好不要選 不壓縮。
Intensity Multiplier:控制天空盒 和自定義的反射貼圖對 場景的影響大小. 不用修改,默認為1即可。
Bounces:控制反射次數。如果為1的話,鏡子里面看到的就是黑色。鏡面需要看到反射的話,需要設置為2哦。當然次數越大烘培越慢哦。
-
Realtime Lighting:實時光設置。 Realtime Global Illumination: 是否開啟實時全景光照。 直接選關閉吧。沒必要用實時的,太耗了。效果也一般。
-
Mixed Lighting:混合燈光
Baked Global Illumination :是否采用烘焙的全局光照。
Lighting Mode:決定混合燈光和GameObject的陰影,修改了Light Mode需要重新烘焙
照明模式決定混合燈光和陰影在場景中與GameObjects一起使用的方式。
Baked Indirect:烘焙間接模式。(https://docs.unity3d.com/Manual/LightMode-Mixed-BakedIndirect.html)
混合光線提供實時直接照明,而間接光線則烘焙成光照貼圖和光線探針。只有間接照明的路線是預先計算的。
烘焙間接模式的性能要求使其成為構建中檔PC和高端移動設備的理想選擇。
優點
它提供與實時照明相同的視覺效果。 它為靜態和動態GameObjects的所有組合提供實時陰影。 它提供間接照明。
缺點
與其他混合光模式相比,它具有更高的性能要求,因為它會將陰影投射靜態GameObjects渲染到陰影貼圖中。 陰影不會超出陰影距離。
Shadow Mask:陰影遮罩。間接照明和直接遮擋的路線是預計算的。
啟用該效果 還需要設置:Edit > Project Settings > Quality 。選擇模式:
ShadowMask:投射陰影的靜態GameObjects始終使用烘焙陰影。
Distance Shadowmask:Unity使用達到陰影距離的實時陰影以及超出陰影的烘焙陰影。距離之內的實時計算,距離之外的用烘焙的。
Subtractive:所有的光路都是預先計算好的。主方向光(通常是太陽)是唯一的光源,它將來自動態GameObject的實時陰影投射到靜態GameObjects上。
Subtractive模式的性能要求使其成為構建低端移動設備的理想選擇。
優點
它在光照貼圖中的靜態GameObjects之間提供高品質陰影,無需額外的性能要求。
Shader中的一個紋理操作處理靜態GameObject之間的所有光照和陰影。
它提供間接照明。
缺點
它不提供實時直接照明,因此不提供鏡面照明。
它不會在靜態GameObjects上提供動態陰影,除了一個方向燈(主燈)。
它僅通過Light Probes將靜態GameObject上的低分辨率陰影提供給動態GameObjects。
它提供了不准確的動態和靜態陰影組合。
它增加了光照貼圖紋理集的內存要求(與沒有光照貼圖相比)。
Realtime Shadow Color:實時陰影的顏色
-
Lightmapping 光照貼圖設置
Lightmapper:使用此選項指定要使用哪個內部照明計算軟件來計算場景中的光照貼圖。(https://docs.unity3d.com/Manual/ProgressiveLightmapper.html)
Enlighten :
Progressive (experimental): 選他。原因是他快。 后續空了好好看下他們之間更細致的區別。
Prioritize View :烘培的先后順序,先烘培攝像機視錐體里面已經啟用的元素,然后在烘培視錐體以外的。一個字 選上
Direct Samples: 直射光的采樣數量。對於一些場景,尤其是戶外場景,100個樣本可能就足夠了。 對於具有發射幾何形狀的室內場景,將需要更多。這個需要自己去把控。
Indirect Samples: 間接光的采樣數量。
Bounces: 間接光的反射次數。跟蹤路徑時要執行的間接反彈次數。 對於大多數場景來說,兩次反彈就足夠了。 對於一些室內場景,可能需要更多。
Filtering:配置光照貼圖的后期處理。
None:無
Auto:自動。具體什么限制我也不知道。
Advanced:高級模式
Direct Filter:直射光的后期處理模式。None:無。Gaussian:在有些細節丟失的地方進行高斯模糊。A-Trous:減少噪點。
Direct Radius/Sigma:元素中高斯過濾器的半徑,用於光照貼圖中的直射光。 更高的半徑會增加模糊強度。
還有間接光 和 ao。
Indirect Resolution:使用此值指定用於間接照明計算的每個單元的紋理元素數。 增加此值可提高間接光的視覺質量,但也會增加烘烤光照貼圖所需的時間。 默認值是2。
Lightmap Resolution:使用此值指定用於光照貼圖的每個單位的紋理像素數。 增加此值可提高光照貼圖質量,但也會增加烘烤時間。 默認值是40。
Lightmap Padding:使用此值可指定烘焙光照貼圖中不同形狀之間的分隔(以texel為單位)。 默認值是2。
Lightmap Size:光照貼圖大小
Compress Lightmaps:壓縮的光照貼圖需要較少的存儲空間,但壓縮過程會將不需要的視覺效果引入到紋理中。 選中此復選框可壓縮光照貼圖,或取消選中它以保持其未壓縮狀態。 該復選框默認打勾。
Ambient Occlusion:允許您控制環境遮擋中表面的相對亮度。 較高的值表示遮擋區和全亮區之間的較大對比度。 這僅適用於由GI系統計算的間接照明。
Max Distance:設置一個值來控制射線的射程,以確定對象是否被遮擋。 較大的值會生成較長的光線,並為光照貼圖提供更多陰影,而較小的值會生成較短的光線,這些光線僅在物體彼此非常接近時才會貢獻陰影。 值為0的投射無限長射線,沒有最大距離。 默認值是1。(ao 是需要計算面與面之間的距離的。通過射線來計算距離)
Indirect Contribution:調整最終光照貼圖中看到的間接光亮度。默認為1
Direct Contribution:調整最終光照貼圖中看到的直射光亮度.
Final Gather:啟用最終聚集時,GI計算中的最終光線反射將以與烘焙光照貼圖相同的分辨率進行計算。 這提高了光照貼圖的視覺質量,但是以編輯器中額外的烘焙時間為代價。 需要更長的烘培時間,但是效果好,最后效果需要開啟。預覽階段關閉。
Ray Count:使用此值來定義為每個最終聚集點發射的光線數量。 默認值是256。
Denoising:將去噪濾鏡應用於最終聚集輸出。 此框默認打勾。
Directional Mode:您可以設置光照貼圖來存儲關於物體表面上每個點處主導入射光的信息。(https://docs.unity3d.com/Manual/LightmappingDirectional.html)
Directional:在方向模式下,會生成第二個光照貼圖來存儲入射光的主要方向。 這允許漫射法線貼圖材料與GI一起工作。 定向模式需要大約兩倍的額外光照貼圖數據的存儲空間。 定向光照貼圖無法在SM2.0硬件或使用GLES2.0時解碼。 他們將回退到非定向光照貼圖。
Non-directiona:選它。不要考慮。
Indirect Intensity:控制實時存儲的間接光照和烘焙光照貼圖的亮度,亮度值介於0和5之間。大於1的值會增加間接光的強度,而小於1的值會降低間接光的強度。 默認值是1。不用調
Albedo Boost:控制通過強化場景中材質的反照率來控制表面之間反射的光量,數值介於1和10之間。增加此值可將反射率值繪制為白色以進行間接光線計算。 默認值1是物理上准確的。 不用調
Lightmap Parameters:
-
Other Settings
Fog:霧效。霧效的參數就不介紹了。
Halo Texture: 設置您想要用於在燈光周圍繪制光暈的紋理。
Halo Strength:定義燈光周圍暈圈的可見度,從0到1之間的值。
Flare Fade Speed:定義最初出現后鏡頭光斑從視野中消失的時間(以秒為單位)。 默認設置為3。
Flare Strength:從0到1之間的值定義燈光鏡頭耀斑的可見性。
Spot Cookie:設置您想要用於投射燈的Cookie紋理。
-
Debug Setting 調試設置
Light Probe Visualization:
Display Weights:當勾選時,Unity從用於有效選擇的光探針繪制一條直線到用於插值的四面體上的位置。 這是調試探針插值和放置問題的一種方法。
Display Occlusion:勾選時,如果混合照明模式為距離陰影遮罩或陰影遮罩,Unity會顯示光線探測器的遮擋數據。
生成按鈕 有三個選項哦:
Generate Lighting :烘培光照貼圖
Bake Reflection Probe: 烘培反射探頭
Clear Baked Data: 清楚烘培數據
- 2、Global maps:顯示所有lightmap資產文件生成的GI照明過程。
使用全局地圖選項卡查看照明系統正在使用的實際紋理。 這些包括強度光照貼圖,陰影遮罩和方向性貼圖。 這僅適用於使用烘焙照明或混合照明的情況; 預覽對於實時照明是空白的。
- 3、Object maps:預覽當前選中的GameObject的GI lightmap紋理(包括陰影遮罩)。
使用對象貼圖選項卡僅查看當前選定的* *游戲對象的已烘焙貼圖的預覽,包括遮罩。
-
烘培總結:
1、要做到近處用實時陰影,遠處用靜態烘培效果。
1.Edit->Project Setting->Quality.在Inspector->Shadows->Shadow Mode 選擇Distance Shadowmask. 調整 Shadow Distance 參數。
開啟后的效果。方框處為靜態烘培的陰影,橢圓里面的是實時產生的陰影。
2、
注:
最近開發中在對場景進行光照貼圖烘焙時發現一個坑爹問題,在使用自定義shader的時候,shader命名中必須包含Transparent路徑,否則烘焙的時候不對alpha通道進行計算,烘焙出來都是狗皮膏葯
比如一個shader叫
Shader "xx/UnlitAlphaCutout" 要改為
Shader "xx/Transparent/UnlitAlphaCutout" 才能烘焙出正常的效果,不知道Unity做了什么黑科技,居然在烘焙的時候判斷了Transparent關鍵字?!