眨眼效果常用于游戏中的剧情表现,先看效果图:

原理很简单:

椭圆公式:

当焦点在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】眨眼效果相关推荐

  1. 【浅墨Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 amp; 纹理混合...

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://hpw123.net/a/C__/kongzhitaichengxu/2014/1117/120.html 作者:毛星 ...

  2. Unity3D Shader入门指南(二)

    关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...

  3. 猫都能学会的Unity3D Shader入门指南(二)

    关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...

  4. 【浅墨Unity3D Shader编程】之一 夏威夷篇:游戏场景的创建 第一个Shader的书写

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨) ...

  5. 【游戏渲染】【译】Unity3D Shader 新手教程(1/6)

    http://gad.qq.com/article/detail/7175490 该文章来自用户转载 点击阅读原文 刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散, ...

  6. Unity3D Shader 新手教程(1/6)

    刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D Shader编程望而却步.该系列教程的第一篇文章(译者注:即本文,后续还有5篇文章) ...

  7. 【译】Unity3D Shader 新手教程(1/6)

    刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D Shader编程望而却步.该系列教程的第一篇文章(译者注:即本文,后续还有5篇文章) ...

  8. Unity3D Shader 入门

    什么是Shader Shader(着色器)是一段能够针对3D对象进行操作.并被GPU所执行的程序.Shader并不是一个统一的标准,不同的图形接口的Shader并不相同.OpenGL的着色语言是GLS ...

  9. Unity3D Shader系列之描边

    目录 1 引言 2 顶点沿法线外拓方式 2.1 法线外拓+ZTest Always 2.1.1 代码 2.1.2 问题点 2.2 法线外拓+Cull Front 2.2.1 代码 2.2.2 改进点 ...

最新文章

  1. 多域名虚拟空间及DNS配置
  2. Android将数据库数据导出成excel格式的文本(CSV)
  3. cisco firewall (ASA Series)
  4. Linux学习一天一个命令(2)[cd命令]
  5. Qt文档阅读笔记-Transformations解析及例子
  6. django-图片上传,用户上传
  7. java怎么抛出异常_java中如何抛出异常使程序不中断(7)
  8. 正则表达式 - C语言
  9. ftp改为sftp_ftp自动传输软件,ftp自动传输软件使用方法详细介绍
  10. overflow与text-indent:-999em 字体隐藏
  11. makefile编写规则
  12. python获取当前星期几
  13. 手机墙刷APP下载量骗推广费 10人因涉嫌合同诈骗被捕
  14. .NET ORM 仓储层必备的功能介绍之 FreeSql Repository 实现篇
  15. linux系统查询服务器型号,Linux系统查看服务器型号
  16. 学习使用html2canvas生成渐变色背景图片
  17. 【无标题】SimpleDateFormat,以及date的.parse()方法
  18. 百度地图多点路线规划_通勤出行该选谁?高德、百度地图对比,看看谁是上班最优选...
  19. linux查看python解释器位置——及linux虚拟环境中的python解释器位置
  20. pagerank算法c语言,在hadoop的map-reduce框架下实现经典的pagerank算法

热门文章

  1. UNICODE 转 UTF8
  2. 盘点互联网十大运营模式
  3. 中小银行如何可持续运营
  4. 斯坦福首席人工智能科学家:如何教计算机看懂一张图?
  5. Danger is My Middle Name – Experimenting with SSL Vulnerabilities in Android Apps 阅读笔记
  6. 【网络安全工程师】从零基础到进阶,看这一篇就够了
  7. 关于哨兵2号数据辐射定标
  8. Ubuntu18.04.2LTS串口调试AXU5EV-P
  9. Photoshop文字特效——火球立体效果文字
  10. 矿物绝缘电缆行业调研报告 - 市场现状分析与发展前景预测