Lightmap相關(guān)問題

  • Lightmap在PC上顯示正常,但是轉(zhuǎn)到Android平臺上存在色差,顏色普遍偏暗。

    • Unity烘焙的Lightmap是32bit的HDR圖,而移動設(shè)備通常不支持HDR圖(32bit per channel),會按照LDR圖(8bit per channel)的形式進行處理,因此會出現(xiàn)色偏問題。因此我們建議:

      在移動平臺下使用Mobile/Diffuse材質(zhì),可載入Standard Assets(Mobile) package獲得。如果要獲得更合適的效果,需要自行修改Lightmap的DecodeLightmap函數(shù),該函數(shù)可在Unity\Editor\Data\CGIncludes\UnityCG.cginc文件中找到。需要說明的是,這種方法也不能達到與PC端完全一致的效果。

      如果需要PC和移動平臺的顯示效果一致,可以用圖像編輯軟體修改Lightmap為LDR格式,例如PNG(8bit per channel)。

      為了避免類似問題,請不要使用過于強烈的Light進行烘焙,因為Light的強度(Intensity)越高,色偏問題會越嚴(yán)重。若有陰影丟失時,可以嘗試檢查一下模型的Lightmapindex、Lightmapscaleoffset、UV2等影響Lightmap采樣的一些參數(shù)。

    • 另一種可能是存在過曝現(xiàn)象,可以嘗試將playersettings -> use direct3d 11關(guān)閉,看問題是否解決。

  • Lightmap丟失。用Unity5.1.2的AssetBundle做熱更新,資源導(dǎo)出的時候分析了所有的依賴項單文件導(dǎo)出。比如在導(dǎo)出場景的時候場景的烘焙出來的LightmapSnapshot.asset文件導(dǎo)出不了,導(dǎo)致運行的時候場景的Lightmap丟失了。

    • LightmapSnapshot.asset 本身是Editor下使用的,并不能單獨被打包進AssetBundle。 運行時加載Lightmap,一種方法是把場景(.unity 文件)打成AssetBundle加載,Lightmap 信息會打入場景AssetBundle(因為Lightmap信息和場景綁定)。另一種是通過Lightmapsettings.Lightmaps方法來運行時設(shè)置。需要注意的是,同時還需要重設(shè)Prefab的Lightmap信息(Lightmapindex和Lightmapscaleoffset),因為Lightmap信息在Unity 5.x下不會保存在Prefab 上。

    • 另外存在一種可能,Unity 5.x中加入了Shader Stripping功能,在打包時,默認情況下會根據(jù)當(dāng)前場景的Lightmap及Fog設(shè)置對資源中的Shader進行代碼剝離。這意味著,如果在一個空場景下進行打包,則Bundle中的Shader會失去對Lightmap和Fog的支持,從而出現(xiàn)運行時Lightmap和Fog丟失的情況。 而通過將Edit->Project Settings->Gaphics下Shader Stripping中的modes改為Manual,并勾選相應(yīng)的Mode即可避免這一問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容