Unity Shader实现UI流光效果

效果:

请添加图片描述

shader

Shader "UI/Unlit/Flowlight"
{Properties{[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}_Color("Tint", Color) = (1, 1, 1, 1)[MaterialToggle] PixelSnap("Pixel snap", float) = 0/* Flowlight */_FlowlightColor("Flowlight Color", Color) = (1, 0, 0, 1)_Lengthlitandlar("LangthofLittle and Large", range(0,0.5)) = 0.005_MoveSpeed("MoveSpeed", float) = 5_Power("Power", float) = 1_LargeWidth("LargeWidth", range(0,0.005)) = 0.0035_LittleWidth("LittleWidth", range(0,0.001)) = 0.002/* --------- */_WidthRate("WidthRate",float) = 0_XOffset("XOffset",float) = 0_HeightRate("HeightRate",float) = 0_YOffset("YOffset",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_ColorMask("Color Mask", Float) = 15[Toggle(UNITY_UI_ALPHACLIP)] _UseClipRect ("Use Clip Rect", Float) = 0/* -- */}SubShader{Tags{"Queue" = "Transparent""IgnoreProjector" = "True" // 忽略投影,因为是UI"RenderType" = "Transparent""PreviewType" = "Plane""CanUseSpriteAtlas" = "True"}Cull     OffLighting OffZWrite   OffBlend One OneMinusSrcAlphaColorMask[_ColorMask]/* 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;float4 worldPosition: TEXCOORD1;};fixed4 _Color;/* Flowlight */float _Power;float _LargeWidth;float _LittleWidth;float _Lengthlitandlar;float _MoveSpeed;fixed4 _FlowlightColor;/* --------- */float _UVPosX;v2f vert(appdata_t IN){v2f OUT;OUT.worldPosition = IN.vertex;OUT.vertex = UnityObjectToClipPos(IN.vertex);OUT.texcoord = IN.texcoord;OUT.color = IN.color * _Color;#ifdef PIXELSNAP_ONOUT.vertex = UnityPixelSnap(OUT.vertex);#endifreturn OUT;}sampler2D _MainTex;float4 _MainTex_ST;float _WidthRate;float _XOffset;float _HeightRate;float _YOffset;bool _UseClipRect;float4 _ClipRect;float _ClipSoftX;float _ClipSoftY;// fixed _Factor;fixed4 frag(v2f IN) : SV_Target{fixed4 c = tex2D(_MainTex, IN.texcoord);/*使用裁剪*/if (_UseClipRect){float2 factor = float2(0.0, 0.0);float2 tempXY = (IN.worldPosition.xy - _ClipRect.xy) / float2(_ClipSoftX, _ClipSoftY) * step(_ClipRect.xy, IN.worldPosition.xy);factor = max(factor, tempXY);float2 tempZW = (_ClipRect.zw - IN.worldPosition.xy) / float2(_ClipSoftX, _ClipSoftY) * step(IN.worldPosition.xy, _ClipRect.zw);factor = min(factor, tempZW);c.a *= clamp(min(factor.x, factor.y), 0.0, 1.0);}/* Flowlight */                // _UVPosX = _XOffset + (fmod(_Time.x * _MoveSpeed, 1) * 2 - 0.5) * _WidthRate;_UVPosX = _XOffset + (fmod(_Time.x * _MoveSpeed, 1) * 2 - 0.5); // 【-0.5, 1.5f】//标准uvX倾斜// _UVPosX += (IN.texcoord.y - _HeightRate * 0.5 - _YOffset) * 0.2;//以下是计算流光在区域内的强度,根据到标准点的距离的来确定强度,为了使变化更柔和非线性,使用距离平方或者sin函数也可以float lar = pow(1 - _LargeWidth * _WidthRate, 2);float lit = pow(1 - _LittleWidth * _WidthRate, 2);//第一道流光,可以累加任意条,如下fixed4 cadd = _FlowlightColor * saturate((1 - saturate(pow(_UVPosX - IN.texcoord.x,2))) - lar) * _Power / (1 - lar);cadd += _FlowlightColor * saturate((1 - saturate(pow(_UVPosX - _Lengthlitandlar * _WidthRate - IN.texcoord.x, 2))) - lit) * _Power / (1 - lit);c.rgb += cadd.rgb;c.rgb *= c.a;return c;}ENDCG}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/733123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简洁的在线观影开源项目

公众号:【可乐前端】,每天3分钟学习一个优秀的开源项目,分享web面试与实战知识。 每天3分钟开源 hi,这里是每天3分钟开源,很高兴又跟大家见面了,今天介绍的开源项目简介如下: 仓库名&#xff1…

使用kubectl port-forward 端口转发来快速调试应用

应用场景 只要 pod 在 kubernetes 里面拉起来,就可以在本地终端快速调试应用,注意此方法只适合开发调试,长久使用在生产环境不推荐 使用命令 kubectl port-forward 资源名 本地端口:容器端口 转发原理 本地端口建立的连接将被转发到运行…

海外媒体发稿:7种媒体套餐推广策略解析-华煤舍

有效的媒体宣传策略对于产品或服务的推广至关重要。本文将介绍7种媒体套餐推广策略,帮助您惊艳市场,并取得成功。以下是每种策略的拆解描述: 1. 广告投放 广告投放是最常见的宣传手段之一。通过在各种媒体平台上购买广告,如电视、…

Web渗透测试流程

什么是渗透测试 渗透测试 (penetration test),是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个…

linux 查看打开使用了哪些端口

你可以使用 netstat 命令来查看Linux系统中正在使用的端口。例如,要查看所有正在使用的TCP和UDP端口,你可以运行: sudo netstat -tulpn如果你只想查看所有正在使用的TCP端口,你可以运行: sudo netstat -tpln 如果你只…

全网最最最详细centos7如何安装docker教程

在CentOS 7上安装Docker主要包括以下步骤: 1. 卸载旧版本的Docker 首先,需要确保系统上没有安装旧版本的Docker。可以通过以下命令来卸载它们: sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-late…

代码随想录day40||● 343. 整数拆分 ● 96.不同的二叉搜索树

343. 整数拆分 - 力扣&#xff08;LeetCode&#xff09; 动态规划&#xff0c;本题关键在于理解递推公式&#xff01;| LeetCode&#xff1a;343. 整数拆分_哔哩哔哩_bilibili class Solution { public:int integerBreak(int n) {vector<int> dp(n1);dp[2]1;for(int i3…

【Linux】编译器-gcc/g++使用

个人主页 &#xff1a; zxctscl 文章封面来自&#xff1a;艺术家–贤海林 如有转载请先通知 文章目录 1. 前言2. 初见gcc和g3. 程序的翻译过程3.1 预处理3.1.1 宏替换 去注释 头文件展开3.1.2 条件编译 3.2 编译3.3 汇编3.4 链接 4. 链接4.1 动态链接4.2 静态链接 1. 前言 在之…

吴恩达机器学习-可选实验:特征缩放和学习率(多变量)

文章目录 目标工具概念问题陈述数据集多变量梯度下降学习率a9.9e-7a9e-7a1e-7 特征缩放实现 恭喜致谢 目标 在本实验中&#xff0c;你将: 利用在上一个实验中开发的多变量例程对具有多个特征的数据集运行梯度下降探讨学习率alpha对梯度下降的影响通过使用z-score归一化的特征…

域控操作十:安装包exe转msi软件下发

需要的文件 Advanced Installer 软件用来将exe转换成msi因为域控只能下发msi格式 一个exe安装包这里拿微信举例 一个没有密码的共享文件夹 1.exe转MSI 2&#xff0c;开始下发 服务器和用户刷新策略 #完成

某品零食交易平台设计与实现|基于springboot+ Mysql+Java的某品交易平台设计与实现(源码+数据库+文档+PPT)

目录 基于springboot MysqlJava的某品交易平台设计与实现 摘 要 系统详细设计 数据库设计 论文参考 源码获取 文末获取源码联系 基于springboot MysqlJava的某品交易平台设计与实现 摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的…

html--彩虹爱心

文章目录 js内容cssreset.min.cssstyle.css html内容 js内容 const colors ["#e03776","#8f3e98","#4687bf","#3bab6f","#f9c25e","#f47274"]; const SVG_NS http://www.w3.org/2000/svg; const SVG_XLINK &q…

自动化运维工具----Ansible playbook详解

一.Ansible playbook简介 1.playbook是ansible用于配置&#xff0c;部署&#xff0c;和管理被节点的剧本 2.通过playbook的详细描述&#xff0c;执行其中的一些列tasks&#xff0c;可以让远端的主机达到预期的状态。playbook就像ansible控制器给被控节点列出的一系列to-do-lis…

Spring Boot 多环境配置

Spring Boot 多环境配置 在现代的软件开发中&#xff0c;通常需要将应用程序部署到不同的环境中&#xff0c;如开发环境、生产环境和测试环境等。每个环境可能需要不同的配置参数&#xff0c;例如数据库连接信息、日志级别等。在 Spring Boot 中&#xff0c;我们可以通过简单的…

D. Exam in MAC - 思维

题面 分析 可以计算出 0 0 0 到 c c c 之间所有的对数&#xff0c;一共有 c 1 c 1 c1 个数&#xff0c;所以有(c 1) * (c 2) / 2 对。然后考虑什么情况可以导致出现不符合的情况&#xff1a; 1.可能会存在 x y x y xy 在集合中出现过的&#xff0c;那么对于集合中…

智慧库室管控系统-智慧枪弹管控系统

项目背景&#xff1a; 针对部队装备管理现状&#xff0c;部队在进行硬件系统建设的同时&#xff0c;需通过装备管理系统软件的建设&#xff0c;综合集成监控、报警、出入库、信息发布、库管理、监测、防护等系统&#xff0c;对装备进行立体监控、实时预警、快速处理&#xff0…

springboot255基于spring boot的疫情信息管理系统

疫情信息管理系统的设计与实现 摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定疫情信息管理系统…

【每日刷题】栈与队列-LC394、LC347、LC215

题外话&#xff1a;感觉脑子没长到栈这块…最近刷栈的题都好难啊…哭哭…坚持坚持&#xff01;多刷几遍就好了&#xff01;&#xff01; 1. LC394.字符串解码 题目链接 先说数据结构。 维护两个栈&#xff1a;一个栈存之前的字符串&#xff0c;另一个栈存之后的字符串的重复…

基于命名实体链接的事件抽取与知识图谱在电商领域的应用

开源项目推荐 多模态AI能力引擎平台: 免费的自然语言处理、情感分析、实体识别、图像识别与分类、OCR识别、语音识别接口&#xff0c;功能强大&#xff0c;欢迎体验。 多模态AI能力引擎平台: 免费的自然语言处理、情感分析、实体识别、图像识别与分类、OCR识别、语音识别接口…

RuntimeError: Unable to find a valid cuDNN algorithm to run convolution

这个错误通常出现在尝试使用cuDNN&#xff08;CUDA Deep Neural Network库&#xff09;进行卷积运算时&#xff0c;但cuDNN没有找到一个合适的算法来执行这个运算。这可能是由以下几个原因导致的&#xff1a; CUDA和cuDNN版本不兼容&#xff1a;确保你安装的CUDA和cuDNN版本是相…