10.热空气扭曲效果

Shader "Study/10_Distortion" {Properties{_NoiseTex("絮乱图", 2D) = "white" {}           // 絮乱图_AreaTex("区域图(Alpha):白色为显示区域,透明为不显示区域", 2D) = "white" {} // 区域图_MoveSpeed("絮乱图移动速度", range(0,1.5)) = 1        // 絮乱图移动速度_MoveForce("絮乱图叠加后移动强度", range(0,0.1)) = 0.1      // 絮乱图叠加强度,多张运动纹理叠加后再相乘的系数}Category{// 【渲染队列】在透明物体前,类型为【透明】Tags{ "Queue" = "Transparent+1" "RenderType" = "Transparent" }// 最终透明混合 = 贴图RGB*贴图A + 背景RGB*(1-贴图A)// 透明混合【源的A值】【1-SrcAlpha】Blend SrcAlpha OneMinusSrcAlpha   // 该写法为最常用最真实的透明混合显示,半透明图的正常显示// GEuqal 点的alpha值大于等于0.01时渲染AlphaTest Greater .01     // 在PS区域图时,不显示的地方透明度为0即可。// 关闭剔除,关闭灯光,不记录深度Cull Off Lighting Off ZWrite OffSubShader{GrabPass{Name "BASE"//在后续的通道中可以使用给定的名字来引用这个纹理。当你在1个场景中有多个对象使用grab pass 时候,这样做会提高效率。Tags{ "LightMode" = "Always" }}Pass{Name "BASE"Tags{ "LightMode" = "Always" }CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"struct appdata_t {float4 vertex : POSITION; // 输入的模型坐标顶点信息float2 texcoord: TEXCOORD0; // 输入的模型纹理坐标集};struct v2f {float4 vertex : POSITION; // 输出的顶点信息float4 uvgrab : TEXCOORD0; // 输出的纹理做标集0float2 uvmain : TEXCOORD1; // 输出的纹理坐标集1};float _MoveSpeed;  // 声明絮乱图移动速度float _MoveForce;  // 声明运动强度float4 _NoiseTex_ST; // 絮乱图采样float4 _AreaTex_ST;  // 区域图采样sampler2D _NoiseTex; // 絮乱图样本对象sampler2D _AreaTex;  // 区域图样本对象sampler2D _GrabTexture; // 全屏幕纹理的样本对象,由GrabPass赋值v2f vert(appdata_t v){v2f o;// 从模型坐标-世界坐标-视坐标-(视觉平截体乘以投影矩阵并进行透视除法)-剪裁坐标o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);// 将裁剪坐标中的【顶点信息】进行换算给uvgrab赋值
#if UNITY_UV_STARTS_AT_TOP  // Direct3D类似平台scale为-1;OpenGL类似平台为1。float scale = -1.0;
#elsefloat scale = 1.0;
#endifo.uvgrab.xy = (float2(o.vertex.x, o.vertex.y * scale) + o.vertex.w) * 0.5;o.uvgrab.zw = o.vertex.zw;// 区域图纹理:获取输入的纹理坐标集,并且使用_MainTex_ST采样图,支持在视检器调节缩放和偏移值o.uvmain = TRANSFORM_TEX(v.texcoord, _AreaTex);//o.uvgrab = TRANSFORM_TEX(v.texcoord, _AreaTex);return o;}half4 frag(v2f i) : COLOR{// 控制【UV的运动】,这样在进行采样时,offsetColor1拿到的颜色也是运动的。half4 offsetColor1 = tex2D(_NoiseTex, i.uvmain + _Time.xz * _MoveSpeed);// 将xy与xz交叉位移half4 offsetColor2 = tex2D(_NoiseTex, i.uvmain - _Time.yx * _MoveSpeed);// 将xy与yx交叉位移// 将【正在移动的絮乱图纹理信息】的rg用于给uvgrab累加,加2个col就会出现2个絮乱图纹理i.uvgrab.x += ((offsetColor1.r + offsetColor2.r) - 1) * _MoveForce; // 叠加强度i.uvgrab.y += ((offsetColor1.g + offsetColor2.g) - 1) * _MoveForce;// 本来只会显示物体背后的屏幕纹理(视觉上该物体透明了)// 但是上面给x,y叠加了运动的rg值,所以就形成透明絮乱图运动的效果half4 noiseCol = tex2Dproj(_GrabTexture, UNITY_PROJ_COORD(i.uvgrab));// 屏幕纹理不需要透明,所以设置为1。noiseCol.a = 1.0f;// 对区域图进行采样。half4 areaCol = tex2D(_AreaTex, i.uvmain);// 纹理相乘:区域纹理RBG都为1,区域纹理A为O的像素将不会显示// 即可达到絮乱图在区域图中才显示的效果。return  noiseCol * areaCol;}ENDCG}//end pass }//end subshader// 用于老式显卡SubShader{Blend DstColor ZeroPass{Name "BASE"SetTexture[_MainTex]{ combine texture }}}}
}


原理大概如下:

1:通过grabpass 获取全屏得到图像

2:通过维护一个grabuv(包括通过时间位移该uv)从获取的截屏图像中取出相应纹理信息

3:通过正常的uv取出纹理信息,并与从截屏图像中取出的纹理信息进行混合


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11.Wave Shader

这个shader是在这位博主点击打开链接的文章基础上进行修改得到的,原作是在shadertoy网站上。不得不说,被shadertoy上的大神们震精了,真的是令我叹为观止,啥也不说了,慢慢学吧。 shader的效果: Shader的代码…

macpro台式计算机,Mac Pro正式上架 真的可以用来刨土豆丝

12月15日消息,早在6月4号WWDC全球开发者大会上就已经发布的新版Mac Pro电脑,近期正式上架苹果官网开销,某一外媒在收到2019年新版Mac Pro后,第一件事竟不是体验其性能,而是验证它是否可以用来给土豆或者奶酪刨丝。在视…

中专选计算机应用很难,对中专计算机应用基础改革的思考.pdf

对中专计算机应用基础改革的思考对 中 专 计 算 机 应 用 基 础 改 革 的 思 考许建英(许昌技术经济学校 ,河南 长葛 461500)随着我国经济 、社会 的发展和科技 的进步.计算机应用技 动性 ,让学生掌握 自主学习的学习方法 .提高学…

12.屏幕高斯模糊

本系列文章由浅墨_毛星云 出品,转载请注明出处。 文章链接: http://blog.csdn.net/poem_qianmo/article/details/51871531 作者:毛星云(浅墨) 微博:http://weibo.com/u/1723155442 本文工程使用的Uni…

广东东软学院计算机系主任罗,广东东软学院副校长朱爱红一行来访我校

3月27日,广东东软学院副校长朱爱红、教务部部长程江涛、品牌发展部部长李惠旋、计算机学院院长黄迅、SOVO主任吴志成、网络与信息中心主任付冬波、实验教学中心主任谢振华、图书馆馆长刘春林等一行18人来访我校。我校副校长郭权接待来访嘉宾。嘉宾一行参加调研会议嘉…

事业单位职称工资计算机,终于!事业单位绩效工资、职称变了!关系上千万人收入!...

原标题:终于!事业单位绩效工资、职称变了!关系上千万人收入!大学生热烈追捧事业单位和公务员,并将其称为铁饭碗!有很多大学生们在大学毕业之后就选择了去考公务员或者事业单位!甚至不少同学甚至…

Unity-Find-Script-References 查找脚本的引用

背景: 有时候我们需要找出项目中所有的引用到某个脚本的地方(比如Prefabs/Scene GameObjects等)。当项目比较大时,手工寻找还是非常费时费力的事情。本文尝试通过插件自动搜索。 分析: 基本的思路是:首先筛…

remove是什么意思计算机语言,remove是什么意思?remove是什么意思?

remove()是C语言中的函数,一般作用是删除数组、链表对象所有的元素。函数原型是intremove(char*filename)。函数功能remove()函数用于删除指定的文件,其原型如下:int remove(char *filename);函数声明2:templateinline bool remov…

Unity3D_NGUI_安卓APK安装包瘦身实践

减包瘦身是个精细活。本文整理了0907版本操作过程,以备日后参考。 经过一番折腾,各位攻城狮的努力,美术设计师的支持,策划爷的理解,UI资源(图集、字体、单局外模型贴图)从45.4MB减少到24.5MB。如…

太原理工大于丹计算机,于丹作客太原理工大 给4000理科生讲佛学

中新网太原5月17日电(贾子娴)17日,著名文化学者于丹走进太原理工大学清泽讲坛,为近4000名师生作了一场题为“阅读经典 感悟成长”的讲座,并引用佛道教中的若干经典来领悟、指导人生。于丹认为,在这纷繁复杂的中国社会中无论男女老…

Unity3D之Shader自定义编辑器功能拓展

一、前言最近在开发一个关卡类的游戏,在导入一些3D物体的时候,发现很多时候同一个3D物体需要渲染的方式不一样,比如这颗树要双面渲染(Cull Off),但在很多情况下是可以剔除背面(Cull Back&#x…

零基础怎么学好计算机函数,零基础要学会的15个常用函数

这些函数是最基本的,但应用面却非常广,学会这些基本函数可以让工作事半功倍。1、SUM加法是最基本的数学运算之一。函数SUM就是用来承担这个任务的。SUM的参数可以是单个数字、一组数字。因此SUM的加法运算功能十分强大。统计一个单元格区域:s…

理解依赖注入(IOC)

IOC:英文全称:Inversion of Control,中文名称:控制反转,它还有个名字叫依赖注入(Dependency Injection)。 作用:将各层的对象以松耦合的方式组织在一起,解耦,各层对象的调…

局域网win7计算机如何互访,局域网win7电脑的互访步骤

局域网win7电脑的互访步骤Windows7如何实现局域网内的互访?下面是局域网win7电脑互访的步骤,为大家提供参考。步骤一:同步工作组 不管使用的是什么版本的Windows操作系统,第一步,要保证联网的各计算机的工作组名称一致步骤二&…

服务器自动挂载硬盘,Linux硬盘分区及开机自动挂载

本文以CentOS 6.4为例,查看当前linux服务器分区:df -h查看当前linux服务器硬盘:fdisk -l/dev/sda 第一块硬盘/dev/sdb 第二块硬盘依此类推以/dev/sdb为新增硬盘为例,需要进行以下操作方可正常使用1、分区fdisk /dev/sdb依次输入n&…

GPU Pro2 - 1.Terrain and Ocean Rendering with Hardware Tessellation

最近时间多了起来,准备捡起扔下了的渲染部分的知识。想拜读下GPU Pro系列并且做个笔记,不知道自己能否坚持下来,但愿可以吧。自己能力也有限,写的东西也只是自己的理解,肯定有很多理解不到位甚至错误的地方&#xff0c…

更改微软更新服务器地址,更新服务 | Microsoft Docs

您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.更新服务10/21/2020本文内容使用指定的更新说明更新 Service Fabric 服务。此 API 允许更新正在运行的 Service…

GPU Pro2 - 3.Procedural Content Generation on the GPU

GPU Pro2 - 3.Procedural Content Generation on the GPU 这篇文章着重介绍了基于Brownian 噪声和高度图在GPU中实时生成和渲染无限大地形系统。 Procedural content generation (PCG)程序化生成在许多游戏中已经有广泛应用,从简单的随机物体摆放,到全…

巨控 自建服务器,GRM云服务器的Web数据接口.PDF

GRM云服务器的Web数据接口.PDFGRM 云服务器的 Web 数据接口版本2.092019-06-281目录一.系统简介31.客户端的操作原理32.客户端登录的推荐作法43.历史数据的容量档次5二.客户端操作命令说明61.[登录] 62.[读变量] 63.[重复上次读] 74.[写变量] 75.[枚举变…

GPU Gems1 - 1 用物理模型进行高效的水模拟(Effective Water Simulation from Physical Models)

该读书笔记大多内容参照了大神浅墨的该篇文章https://zhuanlan.zhihu.com/p/35974789 本章介绍了一种在GPU中模拟和渲染大的水体的系统。它把基本网格的集合波动于动态发现贴图的生成结合起来。 1.1 目标和范围 这章里,我们将由计算简单正弦函数之和开始&#xf…