zoukankan      html  css  js  c++  java
  • unity, imageEffect的最后一步blit所用的shader,应该关闭zwrite和ztest

    给项目组做了个imageEffect特效,结果导致ngui不显示(ugui则不存在此问题),看ngui的一些shader,其中ztest是开着的,而且ui相机的Clear Flags用的是Don't Clear。试了一下,无论是将ngui的shader中的ztest改成Always还是将ui相机的Clear Flags改成Depth Only,ui都能正常显示。但问题是在没加我的imageEffect特效之前什么都不用改也能正常显示ui,所以以上解法都不太本质。

    其实经过上面的观察已经明白了问题的原因,就是加了我的imageEffect之后zbuffer跟之前相比发生了变化。我在主相机的OnRenderImage里做了一个blit链:

      Graphics.Blit(sourceTexture,RT1,mat1);

      Graphics.Blit(RT1,RT2,mat2);

      Graphics.Blit(RT2,RT3,mat3);

      ...

      Graphics.Blit(RT(n-1),RT(n),mat(n));

      Graphics.Blit(RT(n),destTexture,mat(n+1));

    最后一步blit到destTexture上时,所用的shader应该是不读写zbuffer的,即:

    ZWrite off
    ZTest Always

    我之前忘加了这个。

  • 相关阅读:
    1052: 最大报销额
    1036: 小希的数表
    1050: 找出直系亲属
    1048: 导弹防御系统
    1051: 魔咒词典
    以大数据眼光欣赏唐人文墨(一)
    Java 内部类详解
    那些“不务正业”的IT培训公司
    Brackets 前端编辑器试用
    Emmet 快速编写html代码
  • 原文地址:https://www.cnblogs.com/wantnon/p/5112266.html
Copyright © 2011-2022 走看看