【Unity3d Shader】眨眼效果
眨眼效果常用于游戏中的剧情表现,先看效果图:
原理很简单:
椭圆公式:
当焦点在x轴时,椭圆的标准方程是:x^2/a^2+y^2/b^2=1,(a>b>0);
当焦点在y轴时,椭圆的标准方程是:y^2/a^2+x^2/b^2=1,(a>b>0);
核心代码如下:
half4 color = IN.color;half x = IN.texcoord.x - 0.5;half y = IN.texcoord.y - 0.5;half oval = x * x / (_Param.x * _Param.x) + y * y / (_Param.y * _Param.y);color.a = oval;
可用代码如下:
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)Shader "mgo/blink_image"
{Properties{[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}_Color("Tint", Color) = (1,1,1,1)_StencilComp("Stencil Comparison", Float) = 8_Stencil("Stencil ID", Float) = 0_StencilOp("Stencil Operation", Float) = 0_StencilWriteMask("Stencil Write Mask", Float) = 255_StencilReadMask("Stencil Read Mask", Float) = 255_ColorMask("Color Mask", Float) = 15[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip("Use Alpha Clip", Float) = 0[Space(100)]_Param("Param", vector) = (0.6, 0.3, 1, 1)}SubShader{Tags{"Queue" = "Transparent""IgnoreProjector" = "True""RenderType" = "Transparent""PreviewType" = "Plane""CanUseSpriteAtlas" = "True"}Stencil{Ref[_Stencil]Comp[_StencilComp]Pass[_StencilOp]ReadMask[_StencilReadMask]WriteMask[_StencilWriteMask]}Cull OffLighting OffZWrite OffZTest[unity_GUIZTestMode]Blend SrcAlpha OneMinusSrcAlphaColorMask[_ColorMask]Pass{Name "Default"CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 2.0#include "UnityCG.cginc"
#include "UnityUI.cginc"#pragma multi_compile __ UNITY_UI_CLIP_RECT
#pragma multi_compile __ UNITY_UI_ALPHACLIPstruct appdata_t{float4 vertex : POSITION;float4 color : COLOR;float2 texcoord : TEXCOORD0;UNITY_VERTEX_INPUT_INSTANCE_ID};struct v2f{float4 vertex : SV_POSITION;fixed4 color : COLOR;float2 texcoord : TEXCOORD0;float4 worldPosition : TEXCOORD1;UNITY_VERTEX_OUTPUT_STEREO};sampler2D _MainTex;fixed4 _Color;fixed4 _TextureSampleAdd;float4 _ClipRect;float4 _MainTex_ST;half3 _Param;v2f vert(appdata_t v){v2f OUT;UNITY_SETUP_INSTANCE_ID(v);UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);OUT.worldPosition = v.vertex;OUT.vertex = UnityObjectToClipPos(OUT.worldPosition);OUT.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);OUT.color = v.color * _Color;return OUT;}fixed4 frag(v2f IN) : SV_Target{//half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;half4 color = IN.color;half x = IN.texcoord.x - 0.5;half y = IN.texcoord.y - 0.5;half oval = x * x / (_Param.x * _Param.x) + y * y / (_Param.y * _Param.y);color.a = oval;#ifdef UNITY_UI_CLIP_RECTcolor.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
#endif#ifdef UNITY_UI_ALPHACLIPclip(color.a - 0.001);
#endifreturn color;}ENDCG}}
}
【Unity3d Shader】眨眼效果相关推荐
- 【浅墨Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 amp; 纹理混合...
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://hpw123.net/a/C__/kongzhitaichengxu/2014/1117/120.html 作者:毛星 ...
- Unity3D Shader入门指南(二)
关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...
- 猫都能学会的Unity3D Shader入门指南(二)
关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...
- 【浅墨Unity3D Shader编程】之一 夏威夷篇:游戏场景的创建 第一个Shader的书写
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨) ...
- 【游戏渲染】【译】Unity3D Shader 新手教程(1/6)
http://gad.qq.com/article/detail/7175490 该文章来自用户转载 点击阅读原文 刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散, ...
- Unity3D Shader 新手教程(1/6)
刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D Shader编程望而却步.该系列教程的第一篇文章(译者注:即本文,后续还有5篇文章) ...
- 【译】Unity3D Shader 新手教程(1/6)
刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D Shader编程望而却步.该系列教程的第一篇文章(译者注:即本文,后续还有5篇文章) ...
- Unity3D Shader 入门
什么是Shader Shader(着色器)是一段能够针对3D对象进行操作.并被GPU所执行的程序.Shader并不是一个统一的标准,不同的图形接口的Shader并不相同.OpenGL的着色语言是GLS ...
- Unity3D Shader系列之描边
目录 1 引言 2 顶点沿法线外拓方式 2.1 法线外拓+ZTest Always 2.1.1 代码 2.1.2 问题点 2.2 法线外拓+Cull Front 2.2.1 代码 2.2.2 改进点 ...
最新文章
- 多域名虚拟空间及DNS配置
- Android将数据库数据导出成excel格式的文本(CSV)
- cisco firewall (ASA Series)
- Linux学习一天一个命令(2)[cd命令]
- Qt文档阅读笔记-Transformations解析及例子
- django-图片上传,用户上传
- java怎么抛出异常_java中如何抛出异常使程序不中断(7)
- 正则表达式 - C语言
- ftp改为sftp_ftp自动传输软件,ftp自动传输软件使用方法详细介绍
- overflow与text-indent:-999em 字体隐藏
- makefile编写规则
- python获取当前星期几
- 手机墙刷APP下载量骗推广费 10人因涉嫌合同诈骗被捕
- .NET ORM 仓储层必备的功能介绍之 FreeSql Repository 实现篇
- linux系统查询服务器型号,Linux系统查看服务器型号
- 学习使用html2canvas生成渐变色背景图片
- 【无标题】SimpleDateFormat,以及date的.parse()方法
- 百度地图多点路线规划_通勤出行该选谁?高德、百度地图对比,看看谁是上班最优选...
- linux查看python解释器位置——及linux虚拟环境中的python解释器位置
- pagerank算法c语言,在hadoop的map-reduce框架下实现经典的pagerank算法