Unity3D Ui利用shader添加效果

本文实例为大家分享了Unity3D Ui利用shader添加效果的具体代码,供大家参考,具体内容如下

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "UI/Unlit/Flowlight"
{
 Properties
 {
 [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}
 _Color("Tint", Color) = (1, 1, 1, 1)
 [MaterialToggle] _OffSet("OffSet", float) = 0
 [MaterialToggle] PixelSnap("Pixel snap", float) = 0

 /* Flowlight */
 _FlowlightMaskTex("Mask Texture", 2D) = "white" {}
 _FlowlightTex("Add Move Texture", 2D) = "white" {}
 _FlowlightColor("Flowlight Color", Color) = (0, 0, 0, 1)
 _Power("Power", float) = 1
 _SpeedX("SpeedX", float) = 1
 _SpeedY("SpeedY", float) = 0
 /* --------- */

 /* UI */
 _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
 /* -- */
 }

 SubShader
 {
 Tags
 {
 "Queue" = "Transparent"
 "IgnoreProjector" = "True"
 "RenderType" = "Transparent"
 "PreviewType" = "Plane"
 "CanUseSpriteAtlas" = "True"
 }

 Cull Off
 Lighting Off
 ZWrite Off
 Blend One OneMinusSrcAlpha

 /* UI */
 Stencil
 {
 Ref[_Stencil]
 Comp[_StencilComp]
 Pass[_StencilOp]
 ReadMask[_StencilReadMask]
 WriteMask[_StencilWriteMask]
 }
 /* -- */
 Pass
 {
 CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _ PIXELSNAP_ON
#include "UnityCG.cginc"

 struct appdata_t
 {
 float4 vertex : POSITION;
 float4 color : COLOR;
 float2 texcoord : TEXCOORD0;
 };

 struct v2f
 {
 float4 vertex : SV_POSITION;
 fixed4 color : COLOR;
 half2 texcoord : TEXCOORD0;

 /* Flowlight */
 half2 texflowlight : TEXCOORD1;
 /* --------- */
 };

 fixed4 _Color;

 /* Flowlight */
 fixed4 _FlowlightColor;
 float _Power;
 sampler2D _FlowlightTex;
 fixed4 _FlowlightTex_ST;
 sampler2D _FlowlightMaskTex;
 fixed4 _FlowlightMaskTex_ST;
 fixed _SpeedX;
 fixed _SpeedY;
 fixed x = 0;
 float _OffSet;
 /* --------- */
 v2f vert(appdata_t IN)
 {
 v2f OUT;
 OUT.vertex = UnityObjectToClipPos(IN.vertex);
 OUT.texcoord = IN.texcoord;
 /* Flowlight */
 OUT.texflowlight = TRANSFORM_TEX(IN.texcoord, _FlowlightTex);
 OUT.texflowlight.x += _Time * _SpeedX;
 OUT.texflowlight.y += _Time * _SpeedY;
 OUT.color = IN.color * _Color;
#ifdef PIXELSNAP_ON
 OUT.vertex = UnityPixelSnap(OUT.vertex);
#endif
 return OUT;
 }

 sampler2D _MainTex;

 fixed4 frag(v2f IN) : SV_Target
 {
 fixed4 c = tex2D(_MainTex, IN.texcoord)*IN.color;
 fixed4 cmask = tex2D(_FlowlightMaskTex, IN.texcoord);
 if (cmask.a != 0)
 {
 /* Flowlight */
 fixed4 cadd = tex2D(_FlowlightTex, IN.texflowlight) * _Power;
 cadd.rgb *= c.rgb;
 c.rgb += cadd.rgb;
 }
 c.rgb *= c.a;
 /* --------- */

 return c;
 }
 ENDCG
 }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Unity实现旋转扭曲图像特效

    旋转扭曲特效是指在一个圆形区域内扭曲所渲染的图像,其他像素的旋转程度随着距离的变化而变化.具体可以通过修改Shader来实现. 原始图片 扭曲图片 /*==================================================== 屏幕扭曲特效Shader ======================================================*/ Shader "Hidden/TwirlEffects" { Properties { _M

  • Unity3D实现扭动挤压浏览效果

    最近的项目中,想做到一种能够吸引眼球的一种角色选择浏览效果 Demo源码:点击打开链接 最终实现了下按如下图这么一种浏览效果: 效果图一 效果图二 可能要实现这么一种效果用动画插件会很快,但总感觉有点大材小用 这里我向大家分享一个极简方式来实现这么一种效果 目录结构如下 其中Items有4个Image子节点 在父节点Items下添加如下图横向布局组件 在其4个Image子节点下添加如下图布局元素组件 完成这些步骤后接下来就是代码实现了 在Items添加如下脚本组件 using System.Co

  • Unity3D Ui利用shader添加效果

    本文实例为大家分享了Unity3D Ui利用shader添加效果的具体代码,供大家参考,具体内容如下 // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' Shader "UI/Unlit/Flowlight" { Properties { [PerRendererData] _MainTex("Sprite Texture", 2D) = "w

  • Unity实现UI渐隐渐显效果

    本文实例为大家分享了Unity实现UI渐隐渐显效果的具体代码,供大家参考,具体内容如下 1.在UI对象上添加组件:CanvasGroup; 2.在对象上添加脚本:UI_FadeInFadeOut 脚本: 脚本信息: (Blocks Raycasts=true可以交互:Blocks Raycasts=false无法交互) using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summa

  • Unity3d实现跑马灯广播效果

    本文实例为大家分享了Unity3d实现跑马灯广播效果的具体代码,供大家参考,具体内容如下 废话不多说,直接上代码 using DG.Tweening; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using Utils; //挂在UI上面 public class BroadcastUI : MonoBehaviour {     priv

  • 利用Selenium添加cookie实现自动登录的示例代码(fofa)

    介绍 Selenium可以模拟浏览器进行自动化操作,但一些网站需要进行登录才能进行一些操作,比起输入账号密码,cookie是更加方便的.而且fofa首先登录邮箱账号时获得的cookie并不是fofa的cookie,因此我们直接选择利用fofa的cookie进行自动登录.但是selenium需要先打开一个网站才会加载进去cookies,因此我们需要将cookies写在代码中,加载进去 扩展 get_cookies(): 获得所有cookie信息. get_cookie(name): 返回字典的ke

  • 如何利用MySQL添加联合唯一索引

    目录 联合唯一索引 扩展延伸: 附:mysql中如何用命令创建联合索引 总结 联合唯一索引 项目中需要用到联合唯一索引: 例如:有以下需求:每个人每一天只有可能产生一条记录:处了程序约定之外,数据库本身也可以设定: 例如:t_aa 表中有aa,bb两个字段,如果不希望有2条一模一样的记录(即:aa字段的值可以重复: bb字段的值也可以重复,但是一条记录(aa,bb)组合值不允许重复),需要给 t_aa 表添加多个字段的联合唯一索引: alter table t_aa add unique ind

  • js 实现Material UI点击涟漪效果示例

    目录 正文 HTML CSS JS 实现效果 正文 我个人而言还是挺喜欢Material UI这套设计风格的.一些细节方面做的还不错.就比如今天要给大家分享的点击涟漪效果.Material UI里面叫做Ripples.好了,话不多说,开始吧. HTML <div class="example">Click me</div> CSS .example { position: relative; width: 300px; height: 300px; line-h

  • Unity3D实现模型淡入淡出效果

    开发中我们不仅需要UI界面淡入淡出,有时候还需要模型淡入淡出.我们在面板上修改color的a值时发现并没有效果.那是因为我们设置的RenderingMode是Opaque.官方标准shader中的Opaque pass段是不能显示半透明效果的,所以我们需要设置RenderingMode为Fade或者Transparent.然后在修改color的a值,达到淡入淡出的效果.效果如下: 通常我们淡入一个模型只会传入这个模型的GameObject,所以我们自写一个类来处理这个模型淡入的一些事件.代码如下

  • jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)

    使用jQuery ui首先需要引入jQuery类库,jQuery ui js脚本和jQuery ui css样式表.代码示例如下: 复制代码 代码如下: <script src="js/jquery-1.7.1.js"></script>   <script src="js/jquery-ui-1.8.18.custom.min.js"></script><link rel="stylesheet&qu

  • 简单实用的Android UI微博动态点赞效果

    说起空间动态.微博的点赞效果,网上也是很泛滥,各种实现与效果一大堆.而详细实现的部分,讲述的也是参差不齐,另一方面估计也有很多大侠也不屑一顾,觉得完全没必要单独开篇来写和讲解吧.毕竟,也就是两个view和一些简单的动画效果罢了. 单若是只讲这些,我自然也是不愿花这番功夫的.虽然自己很菜,可也不甘于太菜.所以偶尔看到些好东西,可以延伸学写下,我还是很情愿拿出来用用,顺带秀一秀逼格什么的. 不扯太多,先说说今天实现点赞效果用到的自以为不错的两个点: Checkable 用来扩展View实现选中状态切

随机推荐