天天看點

Unity 線性空間對NGUI的影響

本文連接配接:https://blog.csdn.net/t163361/article/details/79919004

上一篇部落格寫的是之前在新項目遇到線性空間對UGUI的影響問題。

當時以為已經解決了。不過最近一個用老項目更新到2017的一個項目上。

發現NGUI也出問題了。才發現其實UGUI也會有差異,隻是比NGUI要好一些。

解決方案,查到的最好的一篇提綱類的文章如下連結

https://answer.uwa4d.com/question/59c1e5c66c8b329c76a5f66e

我們項目也實驗的一下幾種方案

1:使用後處理的方式

很繁瑣,每加一個錄影機,就需要單獨處理一次後處理,而且最終的效果,依然和效果圖有差别。

2:使用shader的方式

也是隻能改善而且,并不能完全解決

3:修改alpha

修改UIDrawCall中的一行語句

我是用的最近的NGUI版本3.11.4

裡面的UpdateGeometry裡面有隊線性空間的修正,但是效果依然不對,不過修改

c.a = Mathf.GammaToLinearSpace(c.a)*1.1f;

1.1f是我加的,會讓效果稍微好一些,也是不能完全解決。

目前就試過這麼幾種方案。

經過這幾天查資料,以及自己試驗,對于沒有半透的圖,Unity是可以做到顔色還原的,關鍵是有半透的UI,因為有混合的問題,導緻效果在兩種模式下無法統一。

官方講解線性空間模式的文章沒找到特别好的。

下面有一篇馮樂樂的文章,很好的闡述了Unity線性空間的渲染模式。

https://blog.csdn.net/candycat1992/article/details/46228771

按照這篇文章的了解,混合的時候,Unity會有一個gamma轉線性,混合完,線性再轉回gamma的過程,目前的了解,問題應該就出在這裡。同時文章提到Unity的轉換不會影響alpha,但是目前的問題很大可能是alpha混合導緻的。

希望後面Unity官方能給一個完善的解決方案~官方解決方案來了 原标題

解決方案

主要看最後的補充 2、PhotoShop中導出的圖檔應該如何設定