shader代码

Shader "
FlickerEffect"
{Properties{_MainTex ("Texture(RGB)", 2D) = "white" {}_FlickerColor("FlickerColor",Color)=(1,1,1,1)_LerpLevel("LerpLevel",Range(0.0,1.0))=1.0}SubShader{Pass{CGPROGRAM#pragma vertex vert_img#pragma fragment frag#include "UnityCG.cginc"uniform sampler2D _MainTex;half4 _FlickerColor;fixed _LerpLevel;half4 frag(v2f_img i):SV_Target{//如果纹理为null,就单独显示颜色half4 renderTex=tex2D(_MainTex,i.uv);//处理颜色,正常图层叠加  结果色=混合色 * 混合色不透明度值 + 基色 * (100% - 混合色不透明度值)。half r=_FlickerColor.r*_FlickerColor.a+renderTex.r*(1-_FlickerColor.a);half g=_FlickerColor.g*_FlickerColor.a+renderTex.g*(1-_FlickerColor.a);half b=_FlickerColor.b*_FlickerColor.a+renderTex.b*(1-_FlickerColor.a);half a= _FlickerColor.a+(1-_FlickerColor.a)*renderTex.a;half4 targetColor=half4(r,g,b,a);//lerp(x,y,s) return x+s(y-x)half4 finalColor=lerp(renderTex,targetColor,_LerpLevel);return finalColor;}ENDCG}}
}

实现屏幕后处理,调用OnRenderImage,使用shader

public Material material{get {if (curMaterial == null){curMaterial = new Material(curShader);curMaterial.hideFlags = HideFlags.HideAndDontSave;}return curMaterial;}}void Start () {curShader = Shader.Find("ORG/FlickerEffect");
}void OnRenderImage(RenderTexture source, RenderTexture destination){if (curShader != null){material.SetFloat("_LerpLevel", lerpLevel);if (flickerTexture != null)material.SetTexture("MainTex", flickerTexture);material.SetColor("_FlickerColor", flickerColor);Graphics.Blit(source, destination, material);}else{Graphics.Blit(source, destination);}}

使用协程实现等待执行

IEnumerator ToFlicker()
    {
        while (true)
        {
            if (remainDuration < 1)
                break;
            remainDuration--;
            lerpLevel = remainDuration / duration;
            lerpLevel = Mathf.Clamp(lerpLevel, 0, 1f);
            yield return null;
        }
        Destroy(this);
    }

unity设置打包时包含shader文件

保存时对应的工程文件:

unity使用屏幕后处理实现闪烁特效,创建新的shader文件过程相关推荐

  1. 【Unity2D】实现Unity中Player受伤以及闪烁特效

    学习目标: 参考视频:秦无邪OvO的个人空间_哔哩哔哩_Bilibili 上一篇文章:[Unity2D]简单实现相机跟随Player功能以及攻击敌人时相机抖动_dangoxiba的博客-CSDN博客学 ...

  2. 创建新的swap文件

    1)决定swap文件的大小,这个一般参照要安装软件的说明 2)以root用户登录,执行以下命令创建一个swap文件 dd if=/dev/zero of=/swapfile bs=1M count=1 ...

  3. KEIL5创建新工程模板 以及文件简介概述

    STM32中文参考手册 第三章 MDK5软件入门 1.介绍MDK5软件的使用 2.ST官方固件库介绍 3.介绍怎样建立一个基于STM32官方固件库的工程模板 固件库就是函数的集合,固件库的作用就是向下 ...

  4. python清理日志脚本_Python日志:如果在程序运行时删除了日志文件,则创建新的日志文件(RotatingFileHandler)...

    我有一个python程序在运行,它使用timedrotingfilehandler连续记录到一个文件.有时我想在不关闭程序的情况下获取日志文件,所以我只需将日志文件剪切并粘贴到不同的位置.在 程序不会 ...

  5. 使用WinImage创建新的Image文件

    首先下载安装WinImage软件.这个就不叙述了. 选择file->new 选择Image文件格式,我这里选择标准格式,1.44M大小. 新建完成后如图. 可通过Image->Inject ...

  6. 联想笔记本电脑桌面出现计算机白色长条边,笔记本电脑屏幕出现条纹闪烁怎么解决【解决方法】...

    有时候用户在使用电脑的时候屏幕会出现一些条纹闪烁,而且忽闪忽闪的不稳定,那么这种情况是怎么回事呢,是不是电脑的电源不稳定,还是 显示器 的问题呢,用户在使用电脑出现了这种情况,一定要重视这个问题,需要 ...

  7. html屏幕有闪动,笔记本电脑屏幕出现条纹闪烁怎么解决【解决方法】

    有时候用户在使用电脑的时候屏幕会出现一些条纹闪烁,而且忽闪忽闪的不稳定,那么这种情况是怎么回事呢,是不是电脑的电源不稳定,还是 显示器 的问题呢,用户在使用电脑出现了这种情况,一定要重视这个问题,需要 ...

  8. linux创建新文件的命令

    1. vi或vim [root@localhost ~]# vi file1.txt //直接创建并打开一个文件file1.txt 用vi 编辑器编辑文本后,如果是新创建的文件,默认保存在当前目录下, ...

  9. linux文件夹加密访问,技术|Linux系统上用encfs创建和管理加密文件夹

    如果你想使你计算机上的某些信息免于被窥视的话,可以看看这篇文字.保护信息的一种方法就是加密你的home目录,但是一旦你登录系统后,你的home目录下的信息将暴露于外.过去,我已经写过关于怎样在你的系统 ...

  10. linux怎么创建新用户名和密码错误,linux重命名root后,使用su命令切换新用户时,提示密码错误...

    1.考虑到安全因素,用户希望把服务器上的root用户进行重命名,于是把/etc/passwd文件和/etc/shadow文件中的root修改为xxx.修改完毕后,测试正常,普通用户可以通过su - x ...

最新文章

  1. 【POJ】1308 Is It A Tree?((并查集 + set)or (map))
  2. 炎症标记物辅助评估银屑病活动度以及依那西普疗效
  3. VS2017+OpenCV3.4.0 折腾(5)
  4. 对几种二叉树的简单理解
  5. QT 文字字体和颜色设置
  6. mac os域名解析处理 清缓存 映射
  7. Java 集合List、Set、HashMap操作二(Map遍历、List反向、Set删除指定元素,集合只读、TreeMap操作、List转Array、List移动元素)
  8. html div数据替换,在contenteditable div中替换innerHTML
  9. Java学习笔记--导航
  10. 第二十二届中国科协年会开幕,百度CTO王海峰等共话产业发展机遇
  11. 关于AI与高性能计算加速融合,这里有英伟达最新的4个应用案例
  12. python免费全套教程-2020全网 最详细的Python入门教程完整版,无偿分享,收藏
  13. 苹果如何分屏_玩转mac—苹果电脑操作教程
  14. PHPstorm链接服务器自动保存
  15. 怎么使用水经注万能地图下载器制作百度行政区划个性化地图
  16. 【.Net】.Net操作AD域账号,获取AD用户后可以获取的属性列表 directoryEntry Properties list
  17. div水平垂直居中的常用方法
  18. I210 网卡设定 force link mode 并关闭 EEE mode
  19. html导出excel合并单元格,JS导出EXCEL,动态设置单元格格式,合并单元格(横向或纵向)等操作...
  20. autoconf使用环境

热门文章

  1. 资管运营BAND原创|那些年,资管运营业务交互中的酸甜苦辣
  2. (转)国内各家智能投顾比较
  3. Github上Stars最多的53个深度学习项目,TensorFlow遥遥领先(转)
  4. 【快讯】Hyper创始人赵鹏、王旭加盟蚂蚁金服
  5. 【多目标优化求解】基于matlab布谷鸟算法多目标(成本+时间+质量)优化求解【含Matlab源码 118期】
  6. 【TWVRP】基于matlab蚁群算法求解带时间窗的车辆路径规划问题【含Matlab源码 921期】
  7. 【优化求解】基于matlab粒子群算法求解货物配装优化问题【含Matlab源码 414期】
  8. Matlab R2020a版安装下载详细操作步骤【Matlab 140期】
  9. postgresql保存图片_第一章 PostgreSQL中的数据库集群、数据库和表
  10. Vmware里Ubuntu安装Vmware Tools时提示:客户机操作系统己将 CD-ROM 门锁定,并且可能正在使用 CD-ROM.....