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

    我之前忘加了这个。

  • 相关阅读:
    jinja模板语法
    flask处理cookie
    django模板语法
    django模型操作
    世间有一种坏
    单纯指望运动减肥的是几乎不可能的?
    主题
    slax自启动程序
    搞定TADA68机械键盘的固件修改
    ubuntu中编译安装gcc 9.2.0
  • 原文地址:https://www.cnblogs.com/wantnon/p/5112266.html
Copyright © 2011-2022 走看看