Unity中 UI Shader的基本功能

2023-09-15 17:00:35


前言

Unity中 UI Shader的基本功能

一、实现思路

1、暴露一个 2D 类型的属性来接受UI的纹理

//命名要按标准来,这个属性才可以和Unity组件中的属性产生关联
//比如说,在更改 Image 的源图片时,同时更改这个
[PerRendererData]_MainTex(“MainTex”,2D) = “white”{}

2、设置shader的层级为TransParent半透明渲染层级,一般UI都是在这个渲染层级

//更改渲染队列(UI的渲染队列一般是半透明层的)
Tags {“Queue” = “TransParent”}

3、更改混合模式,是 UI 使用的纹理,该透明的地方透明

//混合模式
Blend SrcAlpha OneMinusSrcAlpha

二、代码实现

Shader"MyShader/P1_1_1"
{
    Properties
    {
        //命名要按标准来,这个属性才可以和Unity组件中的属性产生关联
        //比如说,在更改 Image 的源图片时,同时更改这个
        
        [PerRendererData]_MainTex("MainTex",2D) = "white"{}
    }
    SubShader
    {
        //更改渲染队列(UI的渲染队列一般是半透明层的)
        Tags {"Queue" = "TransParent"}
        //混合模式
        Blend SrcAlpha OneMinusSrcAlpha
        Pass
        {
            CGPROGRAM
            #pragma vertex  vert
            #pragma fragment frag
            #include "UnityCG.cginc"
            //存储 应用程序输入到顶点着色器的信息
            struct appdata
            {
                //顶点信息
                float4 vertex:POSITION;

                float2 uv : TEXCOORD;
            };
            //存储 顶点着色器输入到片元着色器的信息
            struct v2f
            {
                //裁剪空间下的位置信息
                float4 pos:SV_POSITION;
                float2 uv : TEXCOORD;
            };
            
            sampler2D _MainTex;
            
            v2f vert(appdata v)
            {
                v2f o;
                //把顶点信息转化到裁剪坐标下
                o.pos = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                return o;
            }
            fixed4 frag(v2f i) : SV_Target
            {
                fixed4 mainTex = tex2D(_MainTex,i.uv);
                return  mainTex;
            }
            
            ENDCG
        }
    }
}

属性设置:
在这里插入图片描述

效果:
在这里插入图片描述

更多推荐

社交媒体商业禁令冲击:TikTok如何应对印尼政策变化?

随着社交媒体的普及和发展,各国政府开始越来越关注这一领域的监管和控制。印尼政府最近的决定,禁止在社交媒体上进行商品交易,引起了广泛的关注。这一政策变化对TikTok等社交媒体平台带来了巨大的挑战,要求它们重新审视商业模式并采取应对措施。政策背景近年来,印尼的进口条件不断收紧,免税门槛逐渐下调,甚至发布了新的进口规则,限

Python Q-learning 算法 --2023博客之星候选--城市赛道

Q-learning是一种强化学习算法,用于解决马尔可夫决策过程(MDP)问题。什么是马尔可夫决策过程(MDP)问题?马尔可夫决策过程(MDP)是一种用于建模序贯决策问题的数学框架。在MDP中,决策问题被建模为一个基于马尔可夫链的数学模型。MDP由以下要素组成:状态空间(StateSpace):一组可能的状态,用来描述

微服务如何改变软件开发:实战经验与最佳实践分享

文章目录什么是微服务?微服务实战经验1.定义明确的服务边界2.使用API网关3.自动化部署和持续集成4.监控和日志记录微服务最佳实践1.文档和通信2.弹性设计3.安全性4.版本控制5.监控和警报微服务的未来🎉欢迎来到架构设计专栏~微服务如何改变软件开发:实战经验与最佳实践分享☆*o(≧▽≦)o*☆嗨~我是IT·陈寒�

中秋特辑——3D动态礼盒贺卡(可监听鼠标移动)

前言「作者主页」:雪碧有白泡泡「个人网站」:雪碧的个人网站「推荐专栏」:★java一站式服务★★React从入门到精通★★前端炫酷代码分享★★从0到英雄,vue成神之路★★uniapp-从构建到提升★★从0到英雄,vue成神之路★★解决算法,一个专栏就够了★★架构咱们从0说★★数据流通的精妙之道★★后端进阶之路★文章目

MySQL数据库下的Explain命令深度解析

Explain是一个非常有的命令,可以用来获取关于查询执行计划的信息,以及如何解释输出。Explain命令是查看查询优化器如何决定执行查询的主要方法。这个功能有一定的局限性,并不总是会说出真相,但是它的输出是可以获取的最好信息,值得花时间了解,可以学习到查询是如何执行的。01调用Explain要使用Explain,只需

消息队列的模拟实现(二)

消息队列的创建消息队列代码部分-(1)一、构思项目的组成创建项目后添加依赖建立交换机表、队列表和绑定表ExchangeQueueBindingMessage实现信息属性类在`Sqlite`中建表SQL建表语句实现接口调用建表操作`Map`数据结构的序列化创建数据库和连接数据库添加数据添加接口方法操作数据库在`MateM

java内嵌浏览器CEF-JAVA、jcef、java chrome

java内嵌浏览器CEF-JAVA、jcef、javachromejcef是老牌cef的chrome内嵌方案,可以进行java-chrome-h5-桌面开发,下面为最新版本(2023年9月22日10:33:07)JCEF(JavaChromiumEmbeddedFramework)是一个基于GoogleChromium

如何通过AI视频智能分析技术,构建着装规范检测/工装穿戴检测系统?

众所周知,规范着装在很多场景中起着重要的作用。违规着装极易增加安全隐患,并且引发安全事故和质量问题,例如,在化工工厂中,倘若员工没有穿戴符合要求的特殊防护服和安全鞋,将有极大可能受到有害物质的侵害,对身体健康和生命安全带来严重的威胁。TSINGSEE青犀视频AI算法平台的着装规范检测/工装穿戴检测算法,是基于AI深度学

Android11 Wifi开启、扫描和连接

开启Wifi开启Wifi开关,Wifi开关是WifiEnabler,WifiEnabler实现了SwitchWidgetController.OnSwitchChangeListener监听,打开/关闭开关会回调至//处理Switch控件的状态变化事件publicbooleanonSwitchToggled(boole

基于HTML5架构的综合管廊系统网络结构设计

摘要:从网络拓扑结构、开放式实时以太网协议、控制层系统配置方面介绍了综合管廊的系统网络架构设计,分析了无线网络特性,阐述了基于HTML5架构所能实现的功能的初步构想,以便于综合管廊运维人员巡检,确保管廊本体安全。安科瑞李亚俊壹捌柒贰壹零玖捌柒伍柒。关键词:综合管廊;网络架构设计;无线网络;人员定位0引言综合管廊的控制部

YashanDB荣获“鼎新杯”数字化转型应用奖项

近日,深算院YashanDB团队与深燃集团联合共建的深圳燃气集团数据库国产化建设项目,荣获第二届“鼎新杯”数字化转型应用大赛信息技术应用创新赛道二等奖!此次获奖,彰显了崖山数据库系统YashanDB自主领先的国产数据库技术优势和优秀的创新实践能力,为关键行业的数字化、国产化转型提供了支撑和示范!一直以来,深算院Yash

热文推荐