終於仍是到了烘焙這裏。(我用的unity版本是2017.2.0f3.新手一枚,若是有錯誤的地方,各位大哥及時指正.以避免誤人子弟.)html
先來講下燈光的各個參數:app
unity 的燈光有如下幾種:編輯器
注:4 5 6 都是用於烘培的,至關於在編輯器下保存信息,用於遊戲模式下計算.ide
Type:光源的類型。性能
Color:光照顏色。優化
Mode: 光照應用的模塊。Realtime 實時光(燈光會做用於全部物體). mixed:混合模式(光源只對動態物體有效) . Baked:烘培(燈光只做用於靜態物體).spa
Intensity: 光照濃度.net
Indirect Multiplier: 間接光照強度。若是大於1,每次反彈的光線更亮。若是小於1,每次反彈的燈光都會變暗。若是不須要反彈,設爲0.
Shadow Type:陰影類型.(軟陰影,硬陰影,無陰影) 烘培時須要產生影子的話使用軟陰影。3d
硬陰影:調試
軟陰影:
區別:邊緣沒有鋸齒。
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 : 消隱遮罩. 就是燈光只做用在那些層上面。
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個方向看到的圖片保存下來。
反射探球,須要注意的東西:
一、物體須要勾選反射探球標記(static->Reflection Probe Static)。Dynamic Objcts 會反射動態物體。 Realtime 就會反射全部物體 和標記無關。
二、要勾選 culling mask和clipping plane。一個是控制那些物體能渲染到貼圖上,另外一個是控制攝像機看到的遠近。
三、當出現一個物體從一個反射探球,進入到另外一個反射探球的時候,須要調節Importance控制他們之間的過渡。
四、分辨率:當反射細節不是很重要(反射物體很小或很遠)時,能夠將分辨率設置小點兒;
五、貼圖壓縮:能夠經過控制烘焙反射探頭貼圖的壓縮減小gpu消耗。在烘培面板設置。
目的是爲了:即便場景中沒有燈光,人物進入場景的時候,任然有燈光的效果做用在物體上。
進入編輯模式, 點擊Add probe,一個點一個點增長,或者使用Duplicate Selected 複製所選的點,讓點把燈光照射範圍包圍起來.
注意:一、須要啓用 Lightmap static 靜態標記
二、須要關閉掉 被Light Probe Group 包圍的燈光。
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:對此對象執行遮擋剔除。
Optimize Realtime Uvs:
指定創做的網格UV是否針對實時全局照明進行了優化。 啓用時,創做的UV會合並,縮放並打包以實現優化目的。
禁用時,創做的UV將被縮放和打包,但不會合並。
請注意,優化有時會對原始UV貼圖中的不連續性作出錯誤判斷。 例如,有意識的尖銳邊緣可能會被誤解爲連續的表面。
Max Distance:指定用於UV圖表簡化的最大世界空間距離。 若是圖表在這個距離內,它們將被簡化。
Max Angle:指定共享UV邊緣的面之間的最大角度(以度爲單位)。 若是兩面之間的角度低於此值,則UV圖表將被簡化。
Ignore normal:選中此框可防止在實時全局照明照明預計算過程當中分割UV圖表。
Min chart size:指定用於UV圖表的最小紋理元素大小。 若是須要縫合,值爲4將建立一個4x4像素的圖表來存儲照明和方向性。 若是不須要拼接,則值爲2將減小紋理密度並提供更好的照明構建時間和遊戲性能。
Scale in Lightmap:該值指定了光照貼圖中對象UV的相對大小。 值爲0將致使對象未被光照貼圖,但仍有助於照亮場景中的其餘對象。 大於1.0的值會增長用於該對象的像素數量(即光照貼圖分辨率),而小於1.0的值會減小該像素的數量。 您可使用此屬性來優化光照貼圖,以便重要和詳細的區域更加精確。 例如:具備平坦黑色牆壁的孤立建築物將使用較低的光照貼圖比例(小於1.0),而顯示在一塊兒的豐富多彩的摩托車則保證了較高的比例值。
經過調整這個值,能夠控制該物體在Lightmap中所佔的紋理大小。好比調整成0.1,則此物體的光照紋理就只有原來的十分之一,而調整成0,則此物體雖然能夠產生陰影,可是不接收任何光照信息。
Prioritize illumination: Unity始終將此對象包含在光照計算中。 對於強烈發射的物體很是有用,以確保其餘物體將被該物體照亮。
Lightmap Parameters:
選擇烘培的質量參數
到此:light 面板裏面的全部屬性都介紹完了。相信你應該比較清楚了。
下面介紹:lighting的設置面板:全局光照設置窗口
這個纔是重頭戲啊,初學者,拿到這個面板基本上是一片茫然啊。先介紹各個屬性,而後在說裏面的坑。
這個Lighting窗口劃分了三個區域:
一、Scene:設置適用於整個場景而不是單個GameObjects。這些設置控制燈光效果和優化選擇。
二、Global maps:顯示全部lightmap資產文件生成的GI照明過程。
三、Object maps:預覽當前選中的GameObject的GI lightmap紋理(包括陰影遮罩)。
下方有一個Auto Generate,勾上它,unity就會自動更新Lightmap 數據,但更新的過程很是耗時,
所以不建議勾選 Auto Generate。能夠手動點擊Generate Lighting來烘焙。
包含6個模塊:
環境光部分包含設置天空盒,漫反射和鏡面反射。
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哦。固然次數越大烘培越慢哦。
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:實時陰影的顏色
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:
Fog:霧效。霧效的參數就不介紹了。
Halo Texture: 設置您想要用於在燈光周圍繪製光暈的紋理。
Halo Strength:定義燈光周圍暈圈的可見度,從0到1之間的值。
Flare Fade Speed:定義最初出現後鏡頭光斑從視野中消失的時間(以秒爲單位)。 默認設置爲3。
Flare Strength:從0到1之間的值定義燈光鏡頭耀斑的可見性。
Spot Cookie:設置您想要用於投射燈的Cookie紋理。
Light Probe Visualization:
Display Weights:當勾選時,Unity從用於有效選擇的光探針繪製一條直線到用於插值的四面體上的位置。 這是調試探針插值和放置問題的一種方法。
Display Occlusion:勾選時,若是混合照明模式爲距離陰影遮罩或陰影遮罩,Unity會顯示光線探測器的遮擋數據。
生成按鈕 有三個選項哦:
Generate Lighting :烘培光照貼圖
Bake Reflection Probe: 烘培反射探頭
Clear Baked Data: 清楚烘培數據
使用全局地圖選項卡查看照明系統正在使用的實際紋理。 這些包括強度光照貼圖,陰影遮罩和方向性貼圖。 這僅適用於使用烘焙照明或混合照明的狀況; 預覽對於實時照明是空白的。
使用對象貼圖選項卡僅查看當前選定的* *遊戲對象的已烘焙貼圖的預覽,包括遮罩。
一、要作到近處用實時陰影,遠處用靜態烘培效果。
1.Edit->Project Setting->Quality.在Inspector->Shadows->Shadow Mode 選擇Distance Shadowmask. 調整 Shadow Distance 參數。
開啓後的效果。方框處爲靜態烘培的陰影,橢圓裏面的是實時產生的陰影。
二、
注:
最近開發中在對場景進行光照貼圖烘焙時發現一個坑爹問題,在使用自定義shader的時候,shader命名中必須包含Transparent路徑,不然烘焙的時候不對alpha通道進行計算,烘焙出來都是狗皮膏藥
好比一個shader叫
Shader "xx/UnlitAlphaCutout" 要改成
Shader "xx/Transparent/UnlitAlphaCutout" 才能烘焙出正常的效果,不知道Unity作了什麼黑科技,竟然在烘焙的時候判斷了Transparent關鍵字?!