Shader特效之图片波动炫光效果
1.前言
今天给大家介绍一个非常炫酷的UV流光特效。可以用于UI的Image的图片波动+炫光的效果。
效果使用ShaderForge实现的,原因是ShaderForge可以很方便的导出源码,而ShaderGraph不可以。
ShaderForge虽然对Unity新版本不再支持了,但是这个仓库:ShaderForge,作者兼容了很多新版本的Unity,我们依然还是可以使用。
2.素材
素材1:主图片,用于效果的主体显示和波动颜色
素材2:噪波图,用于干扰主图渲染UV的干扰图,控制显示流动效果
3.UV波动效果
普通的UV波动效果如下图所示:
下面是再ShaderForge中使用节点链接的,逻辑非常简单清晰
4.波动+炫光效果
我们也可以根据自己的需要,给shader添加不同的参数,比如炫光,颜色叠加等。比如看下我加的炫光效果如下:
白色流光:
彩色炫光:
ShaderForge实现:
5.UV流动原理
使用了时间节点Time和自定义参数pannerUV,来控制图片的UV流动,其中噪波图的流动和主图的流动原理一样。详见下图:
6.参数解释
tex1_pannerUV:噪波图的uv流动速度
tex2_pannerUV:主图的uv流动速度,例子中是0,不需要主图流动
disturbance_stronger:噪波图的强度,可以是扰动更剧烈
flow_color:炫光的颜色
t1_stronger:噪波产生的炫光的强度
t2_stronger:主图的亮度
7.Shader源码
最后我们贴出Shader的源码,让大家可以直接使用:
Shader "Shader Forge/uv_flow_pure" {Properties {_Tex1 ("Tex1", 2D) = "white" {}_Tex2 ("Tex2", 2D) = "white" {}_tex1_panner_U ("tex1_panner_U", Range(-5, 5)) = 0.1_tex1_panner_V ("tex1_panner_V", Range(-5, 5)) = 0.1_tex2_panner_U ("tex2_panner_U", Range(-5, 5)) = 0_tex2_panner_V ("tex2_panner_V", Range(-5, 5)) = 0_disturbance_stronger ("disturbance_stronger", Range(0, 5)) = 0.2_flow_color ("flow_color", Color) = (1,1,1,1)_t1_stronger ("t1_stronger", Range(0, 10)) = 1_t2_stronger ("t2_stronger", Range(0, 10)) = 1}SubShader {Tags {"RenderType"="Opaque"}Pass {Name "FORWARD"Tags {"LightMode"="ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma multi_compile_instancing#include "UnityCG.cginc"#pragma multi_compile_fwdbase_fullshadows#pragma target 3.0uniform sampler2D _Tex1; uniform float4 _Tex1_ST;uniform sampler2D _Tex2; uniform float4 _Tex2_ST;UNITY_INSTANCING_BUFFER_START( Props )UNITY_DEFINE_INSTANCED_PROP( float, _tex1_panner_U)UNITY_DEFINE_INSTANCED_PROP( float, _disturbance_stronger)UNITY_DEFINE_INSTANCED_PROP( float, _t2_stronger)UNITY_DEFINE_INSTANCED_PROP( float, _tex1_panner_V)UNITY_DEFINE_INSTANCED_PROP( float, _tex2_panner_V)UNITY_DEFINE_INSTANCED_PROP( float, _tex2_panner_U)UNITY_DEFINE_INSTANCED_PROP( float, _t1_stronger)UNITY_DEFINE_INSTANCED_PROP( float4, _flow_color)UNITY_INSTANCING_BUFFER_END( Props )struct VertexInput {UNITY_VERTEX_INPUT_INSTANCE_IDfloat4 vertex : POSITION;float2 texcoord0 : TEXCOORD0;float4 vertexColor : COLOR;};struct VertexOutput {float4 pos : SV_POSITION;UNITY_VERTEX_INPUT_INSTANCE_IDfloat2 uv0 : TEXCOORD0;float4 vertexColor : COLOR;};VertexOutput vert (VertexInput v) {VertexOutput o = (VertexOutput)0;UNITY_SETUP_INSTANCE_ID( v );UNITY_TRANSFER_INSTANCE_ID( v, o );o.uv0 = v.texcoord0;o.vertexColor = v.vertexColor;o.pos = UnityObjectToClipPos( v.vertex );return o;}float4 frag(VertexOutput i) : COLOR {UNITY_SETUP_INSTANCE_ID( i );
// Lighting:float _t1_stronger_var = UNITY_ACCESS_INSTANCED_PROP( Props, _t1_stronger );float _tex1_panner_U_var = UNITY_ACCESS_INSTANCED_PROP( Props, _tex1_panner_U );float _tex1_panner_V_var = UNITY_ACCESS_INSTANCED_PROP( Props, _tex1_panner_V );float4 node_5719 = _Time;float2 node_2527 = ((float2(_tex1_panner_U_var,_tex1_panner_V_var)*node_5719.g)+i.uv0); // UV流动float4 _Tex1_var = tex2D(_Tex1,TRANSFORM_TEX(node_2527, _Tex1)); // 噪波干扰float _disturbance_stronger_var = UNITY_ACCESS_INSTANCED_PROP( Props, _disturbance_stronger );float node_6101 = (_Tex1_var.r*_disturbance_stronger_var);float4 _flow_color_var = UNITY_ACCESS_INSTANCED_PROP( Props, _flow_color );float _tex2_panner_U_var = UNITY_ACCESS_INSTANCED_PROP( Props, _tex2_panner_U );float _tex2_panner_V_var = UNITY_ACCESS_INSTANCED_PROP( Props, _tex2_panner_V );float4 node_7472 = _Time;float2 node_326 = (node_6101+((float2(_tex2_panner_U_var,_tex2_panner_V_var)*node_7472.g)+i.uv0));float4 _Tex2_var = tex2D(_Tex2,TRANSFORM_TEX(node_326, _Tex2)); // 叠加效果float _t2_stronger_var = UNITY_ACCESS_INSTANCED_PROP( Props, _t2_stronger );float3 finalColor = (i.vertexColor.rgb*((_t1_stronger_var*node_6101*_flow_color_var.rgb)+_Tex2_var.rgb)*_t2_stronger_var);return fixed4(finalColor,1);}ENDCG}}FallBack "Diffuse"CustomEditor "ShaderForgeMaterialInspector"
}
好了,这篇文章就到这里,希望对你有所帮助
Shader特效之图片波动炫光效果相关推荐
- flash特效原理 图片滑动放大效果 2
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! flas ...
- Shader 特效 —— Film Burn (炫光光晕)效果【GLSL】
Shader 实例详解,揭秘酷炫特效背后的算法,一起感受算法之美+数学之美 -- CSDN 专栏 "ShaderJoy" 阅读全文: http://gitbook.cn/gitch ...
- flash特效原理 图片滑动放大效果
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 这几天, ...
- java图片滚动特效_js图片各种滚动效果
向上下左右不间断无缝滚动图片的效果(兼容火狐和IE) var speeds=30; var colee2s=document.getElementById("colee2s"); ...
- 【Shader特效3】旋转扭动效果顶点着色器实现
旋转扭动效果顶点着色器实现 说在开头: 此小节基于顶点着色器开发一个旋转扭动的效果 作者:尹豆(憨豆酒),联系我yindou97@163.com,熟悉图形学,图像处理领域,本章代码: https:// ...
- 如何用CSS动画特效让图片旋转起来
杜老师逆战班学员 2020.02.22 我们通常浏览网页,基本上看过去都是呈现着各种文字加图片的2D效果信息,作为一名前端开发工程师非常重要的工作就是要让用户看到网页时有眼前一亮.耳目一新的感觉,用户 ...
- 【Three.js】shader特效之能量盾
shader特效之能量盾 前言 效果噪点图 主要代码 index.html depth-fs.js depth-vs.js shield-fs.js shield-vs.js 相关项目 前言 效果噪点 ...
- flash特效原理:图片滑动放大效果(2)
flash特效原理:图片滑动放大效果(1) http://blog.csdn.net/hero82748274/archive/2009/10/22/4715312.aspx 最近看了一些关于动态注册 ...
- Unity 屏幕特效 之 简单地使用 Shader 获取深度,实现景深效果
Unity 屏幕特效 之 简单地使用 Shader 获取深度,实现景深效果 目录
- css3鼠标悬停图片特效,图片悬停效果
css3鼠标悬停图片特效,图片悬停效果 代码如下: <title>css3鼠标悬停图片特效,图片悬停效果源码</title><style>*{box-sizing: ...
最新文章
- OS_CORE.C(6)
- 2.自定义变量调节器
- 打造最舒适的webview调试环境
- 结对开发——返回一个整数数组中最大子数组的和 (首尾相接版)
- C++工作笔记-多继承下的一个大坑
- python 3d游戏记录路径_基于osg的python三维程序开发(五)------沿路径运动
- linux ftp ssl客户端,Linux下ftp+ssl实现ftps-Go语言中文社区
- A*寻路算法的探寻与改良(一)
- 【Java】15分钟快速体验阿里Java诊断工具Arthas
- Java语言基础:IPO编程模式
- 69个网盘搜索引擎资源(最全)
- 致第一次安装(yong)小小输入法的你
- 如何破解HIT的孤岛效应,一起关于患者主索引的案例分享
- yolov3选取正负样本
- matlab:代码输出矢量图
- Jupyter Notebook打开出现“python.exe无法找到入口 无法定位程序输入点...动态链接库E:\Anaconda3\pythoncom36.dll上”
- 构建OctoberCMS插件:Google Analytics(分析)
- 理解置信区间和置信水平
- 远程监控养猪监控系统
- SVN常用命令集合_艾孜尔江撰
热门文章
- 云计算之云计算和虚拟化的区别
- BZOJ3509. [CodeChef] COUNTARI
- allgro pcb铜皮编辑_Allegro设计PCB基础知识:快捷键设置、铜皮处理、DC-DC布局布线、电源分割等等...
- LTE: 小区特定参考信号功率与RRU发射功率的计算
- flink 作业提交流程
- 什么是驻点和拐点_临界点、驻点、拐点的定义是什么?
- 对物理量“角速度”与“波矢”的理解
- 宇视摄像机媒体流达到上限
- 公有云与私有云优劣势调研
- soundbar未来发展_Soundbar专题:一条走天下,属于客厅影院的未来