使用imageEffect做了個景深特效,原理很簡單,就是一張清晰大圖和一張模糊小圖根據z值進行混合,z值小的像素清晰大圖的比例高一些,z值大的像素模糊小圖的比例高一些。
在pc上是ok的,但打出android包安到android手機上景深特效就沒了。
后來折騰了半天,並請教了一些有經驗的人,終於搞好了:
1,在pc上和在android上通過render to texture渲染出來的depthTex正倒立情況是不同的,在pc上渲染出來的depthTex是倒立的,在android上渲染出來的depthTex是倒立的。所以shader里訪問depthTex的代碼應該這樣寫:
#if UNITY_UV_STARTS_AT_TOP
float texcoord_y=1-i.texcoord.y;
#else
float texcoord_y=i.texcoord.y;
#endif
float depth=tex2D(_depthTex,float2(i.texcoord.x,texcoord_y)).r;
2,android的playersetting里Auto Graphics API后面的勾去掉,Graphics APIs改成只留OpenGLES2,(同時留OpenGLES2和OpenGLES3行不行我沒試)。
3,另外我還把unity從5.2.1升級到了5.2.4,這一步有沒有作用我現在不確定。
總之,使用以上三步,在android上后處理特效正常了。
----補充:
另外在調試android的時候,如果好點兒的android機和奇葩的android機同時出現了問題,建議先用好點兒的android機進行調試,在好點兒的android機上沒問題了再試奇葩android機,這樣避免奇葩手機問題太多而造成不好查找問題。