博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity shader UI的3D效果
阅读量:6326 次
发布时间:2019-06-22

本文共 3532 字,大约阅读时间需要 11 分钟。

原创,转载请标明出处

1、效果

scene视图中的效果:

game视图中效果:

 2、核心思想:改变UI的顶点坐标

3、好处:可以用正交相机来实现3D效果。

4、Shader 实现

// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)Shader "UI/UI3DEffects"{    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        _Change("Change",Range(0,1)) = 1.0    }    SubShader    {        Tags        {            "Queue"="Transparent"            "IgnoreProjector"="True"            "RenderType"="Transparent"            "PreviewType"="Plane"            "CanUseSpriteAtlas"="True"        }        Stencil        {            Ref [_Stencil]            Comp [_StencilComp]            Pass [_StencilOp]            ReadMask [_StencilReadMask]            WriteMask [_StencilWriteMask]        }        //Cull Off //是否剔除背面        Lighting Off        ZWrite Off        ZTest [unity_GUIZTestMode]        Blend SrcAlpha OneMinusSrcAlpha        ColorMask [_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_ALPHACLIP            struct 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            };            fixed4 _Color;            fixed4 _TextureSampleAdd;            float4 _ClipRect;            float _Change;            v2f vert(appdata_t v)            {                v2f OUT;                UNITY_SETUP_INSTANCE_ID(v);                UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);                //修改顶点位置                if (v.vertex.x< 0)                {                    OUT.worldPosition = v.vertex;                }                else                 {                    OUT.worldPosition = v.vertex*_Change;                }                                OUT.vertex = UnityObjectToClipPos(OUT.worldPosition);                OUT.texcoord = v.texcoord;                OUT.color = v.color * _Color;                return OUT;            }            sampler2D _MainTex;            fixed4 frag(v2f IN) : SV_Target            {                half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;                #ifdef UNITY_UI_CLIP_RECT                color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);                #endif                #ifdef UNITY_UI_ALPHACLIP                clip (color.a - 0.001);                #endif                return color;            }        ENDCG        }    }}

5、使用:

通过修改Change的值修改效果

 

转载于:https://www.cnblogs.com/Jason-c/p/9772106.html

你可能感兴趣的文章
LeetCode 17. Letter Combinations of a Phone Number
查看>>
HDU1287 破译密码
查看>>
【原】iOS学习之文件管理器(NSFileManager)和文件对接器(NSFileHandle)
查看>>
【转】iOS学习之Storyboard中的UIScrollView使用自动布局
查看>>
yii2 邮件插件设置全局报警日志
查看>>
我的博客
查看>>
搭建 Docker-Registry 私有仓库
查看>>
jquery选择器
查看>>
Oracle执行计划
查看>>
js 时间格式化 兼容safari 苹果手机
查看>>
Yii 中,render 和 renderPartial 的区别[转]
查看>>
第67天:面向对象的声明、封装
查看>>
51nod 1105 第K大的数
查看>>
javaScript异常示范案例
查看>>
Android中如何实现EditText的自动换行
查看>>
01-Scrum 概述
查看>>
bzoj 4556 [Tjoi2016&Heoi2016]字符串——后缀数组+主席树
查看>>
TensorFlow+实战Google深度学习框架学习笔记(10)-----神经网络几种优化方法
查看>>
SECTION 4: THE TIMEQUEST GUI
查看>>
window's chkdsk
查看>>