参考链接:http://blog.sina.com.cn/s/blog_89d90b7c0102vaqy.html

1.首先回顾一下透明度混合的实现。在片段着色器输出源颜色后,经过Blend后与目标颜色混合,即可达到颜色混合的效果。

Shader "Custom/AlphaBlend"
{Properties{_RGB ("颜色", Color) = (1, 0, 0, 1)_Alpha ("透明度", Range(0, 1)) = 0.5}SubShader{Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }Blend SrcAlpha OneMinusSrcAlphaZWrite OffPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;};struct v2f{          float4 vertex : SV_POSITION;};fixed4 _RGB;fixed _Alpha;v2f vert (appdata v){v2f o;o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);return o;}fixed4 frag (v2f i) : SV_Target{return fixed4(_RGB.rgb, _Alpha);}ENDCG}}
}

2.然后是使用GrabPass捕捉被遮挡的纹理:http://blog.csdn.net/lyh916/article/details/46471797

3.分析一下热扭曲效果的实现,看下图,用蓝色笔圈出来的部分,会发现原本一个完整的灯光,被分割成了两部分。因此不难得出,所谓的热扭曲,其实就是对背后的纹理进行偏移而已。

4.至于具体的实现,还需要一张遮罩图,为什么呢?可以看一下下面的对比效果,无遮罩vs有遮罩。无遮罩的话,可以看到很明显的边界效果(我这里使用的是Image),而使用遮罩的话,就可以把边缘模糊掉。因此返回的颜色会有三种,一是剑颜色,二是被扭曲的捕捉纹理颜色,三是未被扭曲的捕捉纹理颜色。

Shader "Custom/ThermalDistortion"
{Properties{_MainTex ("Texture", 2D) = "white" {}_MaskTex ("Mask Texture", 2D) = "white" {}}SubShader{Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }Blend SrcAlpha OneMinusSrcAlphaZWrite OffGrabPass {}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{            float4 vertex : SV_POSITION;float2 uv : TEXCOORD0;float2 uvGrab : TEXCOORD1;};sampler2D _MainTex;float4 _MainTex_ST;sampler2D _MaskTex;sampler2D _GrabTexture;v2f vert (appdata v){v2f o;o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);o.uvGrab = ComputeGrabScreenPos(o.vertex);return o;}fixed4 frag (v2f i) : SV_Target{fixed4 mainCol = tex2D(_MainTex, i.uv);fixed4 maskCol = tex2D(_MaskTex, i.uv);fixed4 grabCol = tex2D(_GrabTexture, i.uvGrab);fixed4 grabColOffset = tex2D(_GrabTexture, i.uvGrab + float2(sin(_Time.y) * 0.01, sin(_Time.y) * 0.01));//使用遮罩if(mainCol.a > 0) return mainCol;else if(maskCol.a > 0) return grabColOffset;else return grabCol;//不使用遮罩//if(mainCol.a > 0) return mainCol;//else return grabColOffset;}ENDCG}}
}

5.其实上面的实现有个问题,那就是应用到Image是正常的,但是应用到Sprite和Quad上却得不到想要的结果,知道的麻烦告诉我一下,谢谢啦!

这是unitypackage:

http://pan.baidu.com/s/1boTiVCz

[UnityShader3]热扭曲效果相关推荐

  1. [小明学Shader]14.热扭曲效果

    1.代码 Shader "AAAA/HeatIsland" { Properties {_MainTex ("Base (RGB)", 2D) = " ...

  2. Unity Shader - GrabPass 实现武器热扭曲拖尾效果

    文章目录 先来看看效果 实现思路 Unity带的TrailRender组件 编写脚本实现 CSharp Shader 参数 注意性能 还可以优化 总结 Project 以前龙之谷喜欢选战士,帅气. 战 ...

  3. unityShader热空气扭曲效果

    本文转载自http://blog.csdn.net/puppet_master/article/details/70199330?locationNum=2&fps=1 简介 千等万等终于等到 ...

  4. Unity Shader-热空气扭曲效果(多种实现方案,包括移动平台)

    原文地址:https://blog.csdn.net/puppet_master/article/details/70199330 简介 千等万等终于等到了<耻辱2>打折,本以为可以爽一发 ...

  5. Shaders for Game Programmers and Artists(4) - 热雾效果

    一.原理 先看下面的图 产生的原理及其就是折射. 深入探究的话,可以去搜搜波粒二象性,斯涅尔定律等等. 当太阳照射地面的时候,靠近地面的空气会变得很热,热空气比较轻会往上走,冷的空气会往下沉.冷热空气 ...

  6. Python实现PS滤镜Fish lens图像扭曲效果示例

    Python实现PS滤镜Fish lens图像扭曲效果 这篇文章主要介绍了Python实现PS滤镜Fish lens图像扭曲效果,结合实例形式分析了Python实现PS滤镜的图像扭曲效果相关操作技巧 ...

  7. android 下拉窗帘,Android 窗帘(Curtain)效果二之波浪式动态扭曲效果

    上一篇文章已经实现了如何把一张图片扭曲成波浪效果,那么这一篇文章我们介绍如何动态调整系数,去改变波浪图片的皱褶成度.我们自一次观察下图morning routine的效果: 仔细观察我们发现,当往右滑 ...

  8. python 艺术照片滤镜_Python实现PS滤镜Fish lens图像扭曲效果示例

    本文实例讲述了Python实现PS滤镜Fish lens图像扭曲效果.分享给大家供大家参考,具体如下: 这里实现 PS 滤镜中的一种几何变换– Fish lens, 对图像做扭曲,感觉就像通过一个凸镜 ...

  9. psql屏幕输出全部结果_CommandBuffer实现Distort屏幕扭曲效果

    现在的游戏中很多特效都喜欢用到扭曲效果,常见的实现方案都是在Shader中使用GrabPass,来获取屏幕的画面然后去做计算.关于获取屏幕画面的几种方案的性能分析可以参考我上篇文章. idleworm ...

最新文章

  1. IOS设计模式第六篇之适配器设计模式
  2. Java中程序初始化的顺序
  3. A-Softmax的总结及与L-Softmax的对比——SphereFace
  4. 为何高并发系统中都要使用消息队列
  5. 26Java中的多态
  6. (计算机组成原理)第四章指令系统-第一节2:扩展操作码
  7. 云原生应用Go语言:你还在考虑的时候,别人已经应用实践
  8. cshop是什么开发语言_国内程序员那么多,为什么不开发一个属于自己的编程语言?...
  9. 存储过程(简单入门)
  10. 论计算机网络的发展及运用,试论计算机网络发展及其应用研究
  11. win10简洁之道(有效去广告)
  12. 纪念 C语言之父 丹尼斯·里奇 逝世11周年:他发明了计算机世界的钢筋水泥!...
  13. Android6.0 camera个数探测
  14. css 背景颜色默认,css改变文字选择时的默认背景颜色
  15. android飞信群发助手
  16. 嵌入式如何学习与职业规划
  17. Semantic-UI 的词语
  18. php 滑块 爬虫_phpspider爬虫框架如何爬取异步加载的数据?
  19. 微信H5端网页授权流程(在H5中的openid获取,网页绑定微信)
  20. Hudson使用之执行Hudson

热门文章

  1. 点击箭头180°动画旋转
  2. JavaScript 打印 使用 Lodop
  3. java判断三角形形状
  4. IT运维之自动化运维
  5. 总是空驶、排队等货怎么办?货运要想网络化,运力画像看一看!
  6. 二项式系数的递归算法
  7. UNIQLO验厂优衣库验厂结果标准
  8. idea中actiBPM插件生成png文件 ,右键xml文件没有Diagrams
  9. BUUCTF Reverse/[网鼎杯 2020 青龙组]jocker
  10. CVPR‘23投稿量再创新高? CCF会议投稿量大比拼, 谁才是卷王?