逐行/列扫描

Shader "LSQ/ImageProcessing/PerLineScan"
{Properties{_MainTex ("Texture", 2D) = "white" {}[Enum(Up,1,Down,2,Left,3,Right,4)] _ScanDirection ("Scan Direction", Int) = 1 _Value ("Value", Range(0, 1)) = 0}SubShader{// No culling or depthCull Off ZWrite Off ZTest AlwaysPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.uv;return o;}sampler2D _MainTex;float4 _MainTex_TexelSize;int _ScanDirection;float _Value;fixed4 frag (v2f i) : SV_Target{fixed4 col = tex2D(_MainTex, i.uv);int lineIndex = 1;int valueIndex = 0;if(_ScanDirection == 1) //向上{lineIndex = i.uv.y * _MainTex_TexelSize.w;valueIndex = _Value * _MainTex_TexelSize.w;}else if(_ScanDirection == 2) //向下{lineIndex = (1 - i.uv.y) * _MainTex_TexelSize.w;valueIndex = _Value * _MainTex_TexelSize.w;}else if(_ScanDirection == 3) //向左{lineIndex = i.uv.x * _MainTex_TexelSize.z;valueIndex = _Value * _MainTex_TexelSize.z;}else //向右{lineIndex = (1 - i.uv.x) * _MainTex_TexelSize.z;valueIndex = _Value * _MainTex_TexelSize.z;}clip(lineIndex - valueIndex);return col;}ENDCG}}
}

移动

Shader "LSQ/ImageProcessing/MoveIn"
{Properties{_MainTex ("Texture", 2D) = "white" {}[Enum(Up,1,Down,2,Left,3,Right,4)] _ScanDirection ("Scan Direction", Int) = 1 _Value ("Value", Range(0, 1)) = 0}SubShader{// No culling or depthCull Off ZWrite Off ZTest AlwaysPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.uv;return o;}sampler2D _MainTex;float4 _MainTex_TexelSize;int _ScanDirection;float _Value;fixed4 frag (v2f i) : SV_Target{if(_ScanDirection == 1) //向上{i.uv.y = i.uv.y + 1 - _Value;}else if(_ScanDirection == 2) //向下{i.uv.y = i.uv.y - 1 + _Value;}else if(_ScanDirection == 3) //向左{i.uv.x =  i.uv.x - 1 + _Value;}else //向右{i.uv.x = i.uv.x + 1 - _Value;}fixed4 col = tex2D(_MainTex, i.uv);if(i.uv.x > 1 || i.uv.y > 1 || i.uv.x < 0 || i.uv.y < 0)return 1;return col;}ENDCG}}
}

交叉飞入

Shader "LSQ/ImageProcessing/CrossFlight"
{Properties{_MainTex ("Texture", 2D) = "white" {}[Enum(Horizontal,1,Vertical,2)] _Direction ("Direction", Int) = 1_Value ("Value", Range(0, 1)) = 0}SubShader{// No culling or depthCull Off ZWrite Off ZTest AlwaysPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.uv;return o;}sampler2D _MainTex;float4 _MainTex_TexelSize;int _Direction;float _Value;fixed4 frag (v2f i) : SV_Target{if(_Direction == 1) //水平{if(i.uv.y > 0.5) //上行{i.uv.x = i.uv.x + 1 - _Value;}else //下行{i.uv.x = i.uv.x - 1 + _Value;}}else if(_Direction == 2) //竖直{if(i.uv.x > 0.5) //右列{i.uv.y = i.uv.y + 1 - _Value;}else //左列{i.uv.y = i.uv.y - 1 + _Value;}}fixed4 col = tex2D(_MainTex, i.uv);if(i.uv.x > 1 || i.uv.y > 1 || i.uv.x < 0 || i.uv.y < 0)return 1;return col;}ENDCG}}
}

中间扩张/收缩

Shader "LSQ/ImageProcessing/CenterExtend"
{Properties{_MainTex ("Texture", 2D) = "white" {}[Enum(Horizontal,1,Vertical,2)] _Direction ("Direction", Int) = 1[Enum(Extend,1,Shrink,2)] _Type ("Direction", Int) = 1_Value ("Value", Range(0, 1)) = 0}SubShader{// No culling or depthCull Off ZWrite Off ZTest AlwaysPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.uv;return o;}sampler2D _MainTex;int _Direction;int _Type;float _Value;fixed4 frag (v2f i) : SV_Target{fixed4 col = tex2D(_MainTex, i.uv);float value = 1;if(_Direction == 1) //水平{if(_Type == 1) //扩张{value = abs(i.uv.x - 0.5) * 2;}else //收缩{value = 1 - abs(i.uv.x - 0.5) * 2;}}else if(_Direction == 2) //竖直{if(_Type == 2) //扩张{value = 1 - abs(i.uv.y - 0.5) * 2; }else //收缩{value = abs(i.uv.y - 0.5) * 2;}}clip(_Value - value);return col;}ENDCG}}
}

栅条特效

Shader "LSQ/ImageProcessing/GridBar"
{Properties{_MainTex ("Texture", 2D) = "white" {}[Enum(Horizontal,1,Vertical,2)] _Direction ("Direction", Int) = 1_Count ("Count", int) = 10_Value ("Value", Range(0, 1)) = 0}SubShader{// No culling or depthCull Off ZWrite Off ZTest AlwaysPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.uv;return o;}sampler2D _MainTex;int _Direction;int _Count;float _Value;fixed4 frag (v2f i) : SV_Target{if(_Direction == 1) //水平{float lineIndex = i.uv.y * _Count;lineIndex = floor(lineIndex);if(lineIndex % 2 == 0){i.uv.x =  i.uv.x - 1 + _Value;}else{i.uv.x = i.uv.x + 1 - _Value;}}else if(_Direction == 2) //竖直{float lineIndex = i.uv.x * _Count;lineIndex = floor(lineIndex);if(lineIndex % 2 == 0){i.uv.y = i.uv.y + 1 - _Value;}else{i.uv.y = i.uv.y - 1 + _Value;}}fixed4 col = tex2D(_MainTex, i.uv);if(i.uv.x > 1 || i.uv.y > 1 || i.uv.x < 0 || i.uv.y < 0)return 1;return col;}ENDCG}}
}

图像渐显

Shader "LSQ/ImageProcessing/FadeIn"
{Properties{_MainTex ("Texture", 2D) = "white" {}_Value ("Value", Range(0, 1)) = 0}SubShader{// No culling or depthCull Off ZWrite Off ZTest AlwaysPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.uv;return o;}sampler2D _MainTex;float _Value;fixed4 frag (v2f i) : SV_Target{fixed4 col = tex2D(_MainTex, i.uv);//灰度值float value = (0.299 * col.r + 0.587 * col.g + 0.114 * col.b);clip(_Value - value);return col;}ENDCG}}
}

百叶窗

Shader "LSQ/ImageProcessing/Shutter"
{Properties{_MainTex ("Texture", 2D) = "white" {}[Enum(Horizontal,1,Vertical,2)] _Direction ("Direction", Int) = 1_Count ("Count", int) = 10_Value ("Value", Range(0, 1)) = 0}SubShader{// No culling or depthCull Off ZWrite Off ZTest AlwaysPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.uv;return o;}sampler2D _MainTex;int _Direction;int _Count;float _Value;fixed4 frag (v2f i) : SV_Target{fixed4 col = tex2D(_MainTex, i.uv);float value = 1;if(_Direction == 1) //水平{value = i.uv.x * _Count;value = value - floor(value);}else if(_Direction == 2) //竖直{value = i.uv.y * _Count;value = value - floor(value);}clip(_Value - value);return col;}ENDCG}}
}

马赛克

Shader "LSQ/ImageProcessing/Mosaic"
{Properties{_MainTex ("Texture", 2D) = "white" {}_Value ("Value", Range(0, 1)) = 0}SubShader{// No culling or depthCull Off ZWrite Off ZTest AlwaysPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.uv;return o;}sampler2D _MainTex;float4 _MainTex_TexelSize;float _Value;fixed4 frag (v2f i) : SV_Target{fixed2 uv = round(i.uv * _MainTex_TexelSize.zw * _Value) / (_MainTex_TexelSize.zw * _Value);fixed4 col = tex2D(_MainTex, uv);return col;}ENDCG}}
}

Unity 基于图像处理的图像显示特效制作过场特效相关推荐

  1. 前程无忧招聘网站特效制作(JavaScript特效)

    招聘网站特效制作,实现如下功能: 1.网站首页 2.新用户注册 3.用户登录 4.简历管理:信息填写 5.职位搜索 6.招聘公司页面查看 模板制作:网站底部做成模板,网站其他页面调用模板,模板用DIV ...

  2. android图片抖动,Android基于Shader的图像处理(12)-仿抖音抖动特效

    抖动特效和缩放特效很像,除了图像缩放,还在图像颜色分界处混合了颜色.颜色分界处混合颜色和之前说的高斯模糊,边缘检测很像,找到当前纹理周围的纹理,和当前纹理颜色混在一起.这里将左下角,右上角的颜色分量和 ...

  3. 【Unity】创建一个自己的AR脸部特效安卓程序

    目录 1 创建一个换脸AR场景 2 下载官方提供的BasicFaceFilterAssets资源 3 设置AR面部追踪 4 配置AR Face Manager 5 配置AR Camera为前置摄像头 ...

  4. Unity3d展厅模型预处理UV拆分光影烘焙材质及后处理与特效制作基本流程【2020】

      应很多读者的要求,本文小姐姐将以一个用户的展厅VR场景为例,详细讲解Unity3d的VR开发在美工阶段的模型预处理.UV2拆分.贴图优化.光影烘焙.后处理与特效制作以及最终作品优化的基本方法和流程 ...

  5. Unite 2018|基于照片建模的游戏制作流程

    Unity之前发布了了全新的实时渲染作品<死者之书>的预告片,Unity引擎的画面表现又一次提升到全新的高度.这个Demo的场景包含大量的树木.植被.岩石等素材,非常接近真实照片的感觉.在 ...

  6. Unity3d 游戏特效制作实战教程 第二部

    本套教程是由多年特效制作经验的作者录制,通过多个案例, 演示了xffect粒子系统与unitu3d粒子系统的特效制作的全部流程 包含xffect基础教程,并附送全部项目文件打包和素材. 本教学适合于U ...

  7. Unity3D粒子系统之制作火焰特效

    Unity3D粒子系统之制作火焰特效 本文将会介绍如何使用Unity内的粒子系统制作烟雾效果. 如果想了解Unity粒子系统中的基础属性,可以看这篇博客:Unity3D粒子系统之基础属性介绍 先上预览 ...

  8. Unity 基于eventTriggers的3D场景交互系统

    Unity 基于eventTriggers的3D场景交互系统 Unity里的3D项目有时候需要大量的交互,而且是无UI的交互. 这时候可以像UI系统里,使用eventTrigger去制作交互系统.但是 ...

  9. 使用jQuery 快速高效制作 网页特效

      使用jQuery 快速高效制作 网页特效                                第一章:JavaScript基础 DOM:document object model 文档对 ...

  10. unity 彩带粒子_Unity3D_(Shuriken粒子系统)制作简单的烟花爆炸效果

    Unity中的粒子系统可以用于制作特效,如开枪火花效果,简单爆炸效果等.(毕竟程序员不是设计师,简单的特效都没有问题,要制作一些非常美观的特效还是需要多了解跟美术有关的知识.) 粒子系统实现一个简单的 ...

最新文章

  1. Python入门100题 | 第005题
  2. android paint 圆角 绘制_[BOT] 一种android中实现“圆角矩形”的方法
  3. html5链接mvc,LinkExtensions.ActionLink 方法 (System.Web.Mvc.Html) | Microsoft Docs
  4. Bootstrap 按钮菜单的尺寸
  5. OpenShift 4 - 查看关键证书到期日期
  6. 水墨流动生太极,四式''拳诀''展存储
  7. java动漫项目_狂拽酷炫diao炸天的开源动画项目:lottie-android,拿来就用!
  8. 周赛-mZY寻宝(bfs搜索)
  9. RabbitMq使用demo
  10. w ndows7错误恢复,Win7 0xc000000e启动错误恢复方法
  11. 商务网站建设与维护【12】
  12. Node.js 网页瘸腿爬虫初体验
  13. python3 进程池Pool 详解
  14. 数据库SQL实战 --42.将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
  15. panda3d场景的主要状态
  16. PHP 验证码无法显示的问题
  17. uniapp微信小程序项目启动步骤
  18. 数据库(MySQL + Redis)
  19. GitHub push的时候报:Unable to access ‘https://github.com/xxxx/xxxx.git/‘:OpenSSL SSL_read:Connection was
  20. 珠海拱北口岸停车攻略,拱北口岸地下停车场收费

热门文章

  1. 服务器系统事件id1001,WIN10事件查看器,ID1000,ID1001 問題
  2. 使用Docker发布DNC项目
  3. 服务器的mysql目录在哪,oracle数据库目录在哪
  4. sublime license key
  5. Shiro源码剖析——Subject的创建与获取(一次完整的请求执行流程)
  6. 英特尔芯片组 年代表_英特尔:对不起,但我们的7纳米芯片将延迟到2022年,2023年
  7. 分组交换(Packet Switching)和线路交换(Circuit Switching)
  8. 工具系列 | FPM进程管理器详解
  9. 产业科技创新杂志产业科技创新杂志社产业科技创新编辑部2022年第3期目录
  10. lua 利用os.data和os.time实现运营活动在客户端跨时区换算服务端所在时区时间戳