unity, imageEffect的最后一步blit所用的shader,应该关闭zwrite和ztest
2024-09-30 09:40:10
给项目组做了个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
我之前忘加了这个。
最新文章
- Linux目录结构
- Go语言的GOPATH与工作目录详解
- ArcGIS图层和要素的过滤显示
- [Java][Weblogic] weblogic.net.http.SOAPHttpsURLConnection incompatible with javax.net.ssl.HttpsURLConnection解决办法
- new/delete和malloc/free的区别
- javascript quine
- POJ 3670 Eating Together (DP,LIS)
- elecworks 电缆型号管理器
- HTTPS协议学习总结
- Excel——使用VLOOKUP函数关联跨工作薄数据
- 面向服务的体系架构SOA
- elasticsearch集群内部节点超时解决
- PHP基础入门(一)
- git 琐碎
- Js 常用调试的方法
- 2018ccpc湖南邀请赛后记
- JMeter学习笔记2-图形界面简单介绍
- mysql误删root
- discuz代码转为html代码
- conv1d UpSampling1D aotoencoder 自编码代码摘录