当前位置: 移动技术网 > IT编程>开发语言>c# > Unity3D Ui利用shader添加效果

Unity3D Ui利用shader添加效果

2019年07月18日  | 移动技术网IT编程  | 我要评论
本文实例为大家分享了unity3d ui利用shader添加效果的具体代码,供大家参考,具体内容如下 // upgrade note: replaced

本文实例为大家分享了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
 }
 }
}

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网