目前在做一个小项目, 需要实现战争迷雾效果, 参考了很多文章, 有各种方案, 其中之一是使用camera的后处理技术显示迷雾纹理.

于是实验了一下, 创建个cs脚本, 响应OnRenderImage方法, 把脚本添加到camera上.

在OnRenderImage中加了一句Graphics.blit(source, destination, mat)

我的理解就是, source是屏幕图像, destination就是最终显示的图像, 中间的处理是在mat中做. 我理解mat就是shader和纹理的一个包装. 所以需要一个纹理图和shader

于是准备好一张纹理图, 写个shader处理这个纹理图. shader很简单, 就是取纹理的颜色直接返回.

然后shader和纹理加到材质里. 纹理是赋给了_MainTex. 再把材质赋给这个cs(也可以手动创建, 我是外面创建好, 然后赋给脚本的成员变量)

按我的理解最终显示的应该是我赋给材质的那张纹理.

但是结果出乎意料, 显示的还是原来屏幕. 为什么我的纹理图没有显示呢?

开始以为自己哪里写错了, 各种调试, 实验. 去掉这句话, 显示黑屏没问题, 证明OnRenderImage是工作的. 返回纯颜色显示也没问题, 证明shadert也是工作的.

百思不得其解.

那么为什么不显示我的纹理, 却显示原来的屏幕图像呢?

原来问题出现在blit的工作方式上, blit默认是把source赋给材质的_MainTex. 所以你处理的纹理实际是source而不是你自己设置的纹理. 除非把_MainTex改名, 或者source设为null.

以前看到过例子source是在cs里手动设置给_MainTex的. 这个误导了我, 以为必须手动设置. 其实不必, 官方文档也有说明

于是把_MainTex改名, 实验成功, 最终屏幕显示的是自己的纹理了.

Unity中OnRenderImage屏幕后处理做Graphics.blit时遇到的一个问题相关推荐

  1. Unity中基于屏幕后处理的彩色与黑白渐变效果

    本文将介绍Unity屏幕后处理的基本方法与游戏角色死亡后的屏幕渐变到黑白效果的实现方法. 屏幕后处理是指整个场景每一帧渲染完毕后,再对得到的屏幕图像进行一系列处理并显示到屏幕上的过程.Unity中我们 ...

  2. 在Hive中执行DDL之类的SQL语句时遇到的一个问题

    在Hive中执行DDL之类的SQL语句时遇到的一个问题 作者:天齐 遇到的问题如下: hive> create table ehr_base(id string); FAILED: Execut ...

  3. Android中当一行显示两个TextView时,第一个可“…”,而第二个必须显示全部

    在Android中当一行显示两个TextView时,第一个可"-",而第二个必须全部显示这种布局时: <RelativeLayout android:layout_width ...

  4. 【Unity Shader】屏幕后处理3.0:均值模糊和高斯模糊

    发现之前学习记录的太过详细,导致整理的过程占用太长的时间了,这篇之后博客重要的是掌握实现过程,关于基础的理论会更多的放上别人写得更好的文章. 参考:[Unity Shader编程]之十五 屏幕高斯模糊 ...

  5. 【Unity Shader】屏幕后处理2.0:实现Sobel边缘检测

    边缘检测是描边效果的一种实现方法,关于描边效果其实还有更好的基于深度+法线纹理实现的方法,这里就先以边缘检测为主进行学习. 1 理解卷积 参考:深入理解卷积(卷积核到底要不要翻卷) [深度学习]深度学 ...

  6. 在Unity中实现屏幕空间反射Screen Space Reflection(2)

    traceRay函数 在上一篇中,我们有如下签名的traceRay函数 bool traceRay(float3 start, float3 direction, out float2 hitPixe ...

  7. Unity中设置屏幕常亮

    Screen.sleepTimeout = SleepTimeout.NeverSleep; 转载于:https://www.cnblogs.com/AlanCheng/p/5531345.html

  8. 【unity中运行HTC VIVE的案例场景时一直不显示在头盔上,VR其他都正常】

    在上面添加openVR即可

  9. Unity 中实现截图画笔橡皮擦工具

    Unity 中实现截图画笔橡皮擦工具 好久没写博客了,随着疫情的缓和,工作也忙了起来 ,写博客也成了忙里偷闲的一项娱乐活动了,不以娱乐为目的技术博客写手不是一个好的厨师(我一向自称自己是码农界最帅的厨 ...

最新文章

  1. 一些物品的X透视图片
  2. “外星人”字符串生成算法研究
  3. 禁止冒名顶替Exchange用户发送邮件
  4. TinyDBCluster Vs routing4db
  5. (转)浅析当今视频文件的格式
  6. 从List分组后重新组织数据
  7. win7的vmware中安装ubuntu 13.04看不到共享目录
  8. BZOJ 1257: [CQOI2007]余数之和sum【神奇的做法,思维题】
  9. C++远航之封装篇——数据的封装
  10. 多态计算器的开发 c# 1614095334
  11. WORD如何关闭标题段落分页功能?
  12. 使php支持pdo_mysql
  13. 梦到两个人辞职,一男一女
  14. 3DMAX 创建选择集
  15. 如何备份android10,安卓手机系统怎么备份
  16. OC基础--对象做参数在方法间传递
  17. 苹果测试充电速度软件,ChargerLAB推出iPhone 8快充测试工具POWER-Z
  18. 网络安全行业常见的权威职业证书有哪些?
  19. 如何给女朋友解释为什么200M宽带,打王者荣耀还是会有460ms的延迟?
  20. git常用命令梳理及常见开发场景总结

热门文章

  1. qst -sim 出现 license 错误
  2. 借贷宝java_程序猿去哪儿?——北京JAVA专场
  3. Hang Detect 问题分析案例
  4. 关于Abaqus+python提取s11残余应力(按路径提取)
  5. 天涯明月刀7月5号服务器维护,7月5日服务器临时维护更新公告(已完成)
  6. 跟驰理论 matlab,[经济学]第5章 跟驰理论.ppt
  7. NAO机器人的Walk功能
  8. debian10安装nvidia显卡驱动
  9. Kubernetes基础详解
  10. Lucene 4.X 全套教程