Unity中Shader实现UI流光效果

news/2025/3/14 22:11:52/

文章目录

  • 前言
  • 一、实现思路1:
    • 1、采集两张贴图,一张是主纹理,一张是扫光纹理
    • 2、在 v2f 定义一个二维变量 “uv2” 来存放 uv 偏移后的值
    • 3、在顶点着色器中,仿照之前的 uv 流动效果,与 _Time相乘后存放于 uv2 中
    • 4、最后,流光纹理使用 uv2 采样 和 主纹理 使用 uv 采样的结果相加输出即可
  • 二、实现思路2(计算出区域):
  • 参考文章


前言

在很多游戏的 UI 中,都有实现 一道光扫过 UI 的效果


一、实现思路1:

1、采集两张贴图,一张是主纹理,一张是扫光纹理

2、在 v2f 定义一个二维变量 “uv2” 来存放 uv 偏移后的值

3、在顶点着色器中,仿照之前的 uv 流动效果,与 _Time相乘后存放于 uv2 中

  • Unity中Shader的时间_Time

4、最后,流光纹理使用 uv2 采样 和 主纹理 使用 uv 采样的结果相加输出即可

注意:因为,这是UGUI的Shader,记着修改渲染顺序为 透明层级 和 混合模式
Tags {“Queue” = “TransParent”}
Blend SrcAlpha OneMinusSrcAlpha

二、实现思路2(计算出区域):

代码:

Shader "MyShader/UILight"
{Properties{_MainTex ("Texture", 2D) = "white" {}// 速度 默认左->右_Speed ("Speed", range(-2, 2)) = 1.04// 宽度_Width ("Width", range(1, 10)) = 5.83// 角度_Angle ("Angle", range(-1, 1)) = 0.33// 亮度_Light ("Light", range(0, 1)) = 0.51}SubShader{Tags {"Queue" = "TransParent"}LOD 100//混合模式Blend SrcAlpha OneMinusSrcAlphaPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};sampler2D _MainTex;v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.uv;return o;}float _Speed; float _Width; float _Angle; float _Light; fixed4 frag (v2f i) : SV_Target{fixed4 col = tex2D(_MainTex, i.uv);float x = i.uv.x + i.uv.y * _Angle;float v = sin(x - _Time.w * _Speed);v = smoothstep(1 - _Width / 1000, 1.0, v);float3 target = float3(v, v, v) + col.rgb;col.rgb = lerp(col.rgb, target, _Light);return col;}ENDCG}}
}

效果:
请添加图片描述


参考文章

  • Unity3D Shader系列之UI流光效果
  • Unity流光shader,无需图片

http://www.ppmy.cn/news/1171357.html

相关文章

whois人员信息python批处理读入与文本输出

使用pytho读取一个ip列表文本,批量获取whois输出并写入到一个文本 import socketif __name__ __main__:# 江苏电信DNS地址mylog open(whois.log, mode a,encodingutf-8)for line in open("ip.txt"):s socket.socket(socket.AF_INET, socket.SOCK_STR…

基于Django开发的图书管理推荐、电影推荐、课程推荐系统、大众点评店铺推荐系统、健身课程管理系统

基于Django开发的图书管理推荐、电影推荐、课程推荐系统、大众点评店铺推荐系统、健身课程管理系统、资讯推荐系统 一、简介 推荐系统的目的是信息过载所采用的措施,面对海量的数据,从中快速推荐出用户可能喜欢的物品。 推荐系统的方法有以下几种&…

【Python机器学习】零基础掌握QuadraticDiscriminantAnalysis判别分析

如何准确地区分不同种类的水果? 在日常生活中,人们经常面临需要区分不同种类物品的情况。以水果店为例,假设有一个水果店主希望通过水果的颜色、大小、重量和甜度等特征来自动区分出苹果、橙子和香蕉。 解决思路:收集一些水果的样本数据,包括颜色、大小、重量和甜度等。…

Codeforces Round 905 Div 1 (CF1887)

A1. Dances (Easy version) 把 \(a,b\) 序列都从小到大排序,\(a\) 贪心删大的,\(b\) 贪心删小的,二分答案并 \(O(n)\) \(\text{check}\)。 Code cpp const int N1e55; int T,n,m; int a[N],b[N]; il bool check(int mid) { for(int i1,jmid1;…

跨越单线程限制:Thread类的魅力,引领你进入Java并发编程的新纪元

线程的概述 线程是一个程序的多个执行路径,执行调度的单位,依托于进程存在。 线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间也叫做线程栈,是在建立线程时由系统分配的,主要用…

什么是云迁移?迁移到云的基本指南

企业可以执行多种类型的云迁移。一种常见的模型是将数据和应用从本地数据中心传输到公共云。然而,云迁移还可能需要将数据和应用从一个云平台或提供商迁移到另一个云平台或提供商;这种模式称为云到云(C2C)迁移。第三种类型的迁移是反向云迁移、云遣返或云退出&#…

大语言模型(LLM)综述(二):开发大语言模型的公开可用资源

A Survey of Large Language Models 前言3. RESOURCES OF LLMS3.1 公开可用的模型CheckPoints或 API3.2 常用语料库3.3 库资源 前言 随着人工智能和机器学习领域的迅速发展,语言模型已经从简单的词袋模型(Bag-of-Words)和N-gram模型演变为更…

html+js实现自定义弹窗

哈哈 转载 这个还不错 但是我暂时用不到 htmljs实现自定义弹窗_html自定义弹框-CSDN博客 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>自定义弹窗</title><style>body,P{margin:0;padding:0;}.popup {disp…