Unity Shader:闪烁

还是一样的分为UI闪烁和物体闪烁,其中具体可分为:UI闪烁、物体闪烁与半透明闪烁
1,UI闪烁
对于UI 还是一样的,改写UI本身的shader:
Shader "UI/YydUIShanShder"
{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[Toggle]_Switch("Switch", Float) = 0_value("Speed",Range(1,3)) = 1_overlayCol("OtherColor",Color) = (0.2146,1,0,0.6039)}SubShader{Tags{"Queue" = "Transparent""IgnoreProjector" = "True""RenderType" = "Transparent""PreviewType" = "Plane""CanUseSpriteAtlas" = "True"}Stencil{Ref[_Stencil]Comp[_StencilComp]Pass[_StencilOp]ReadMask[_StencilReadMask]WriteMask[_StencilWriteMask]}Cull OffLighting OffZWrite OffZTest[unity_GUIZTestMode]Blend SrcAlpha OneMinusSrcAlphaColorMask[_ColorMask]Pass{Name "Default"CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 2.0#include "UnityCG.cginc"
#include "UnityUI.cginc"#pragma multi_compile_local _ UNITY_UI_CLIP_RECT
#pragma multi_compile_local _ UNITY_UI_ALPHACLIPstruct 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;half4 mask : TEXCOORD2;UNITY_VERTEX_OUTPUT_STEREO};sampler2D _MainTex;fixed4 _Color;fixed4 _TextureSampleAdd;float4 _ClipRect;float4 _MainTex_ST;float _UIMaskSoftnessX;float _UIMaskSoftnessY;float _value;float4 _overlayCol;half _Switch;v2f vert(appdata_t v){v2f OUT;UNITY_SETUP_INSTANCE_ID(v);UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);float4 vPosition = UnityObjectToClipPos(v.vertex);OUT.worldPosition = v.vertex;OUT.vertex = vPosition;float2 pixelSize = vPosition.w;pixelSize /= float2(1, 1) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);float2 maskUV = (v.vertex.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);OUT.texcoord = TRANSFORM_TEX(v.texcoord.xy, _MainTex);OUT.mask = half4(v.vertex.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_UIMaskSoftnessX, _UIMaskSoftnessY) + abs(pixelSize.xy)));OUT.color = v.color * _Color;return OUT;}fixed4 frag(v2f IN) : SV_Target{half4 color = IN.color * (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd);#ifdef UNITY_UI_CLIP_RECThalf2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw);color.a *= m.x * m.y;
#endif#ifdef UNITY_UI_ALPHACLIPclip(color.a - 0.001);
#endifhalf _g = dot(color.rgb, unity_ColorSpaceLuminance);//这部分是自定义处理的if (_Switch == 1){fixed4 col = _overlayCol;float t = abs(sin(_Time.w * _value));col.a = lerp(0, _overlayCol.a, t);color = lerp(color, col, col.a);//将col叠加在color上}return color;}ENDCG}}
}
实现原理我们可以理解为,在原有的图片上,叠加了一层会随着时间变化而变化透明度的纯色。
和原image的shader相比,基本没做太大改动。只是为了实现闪烁效果,自定义了如下部分:
//这部分是自定义处理的if (_Switch == 1){fixed4 col = _overlayCol;float t = abs(sin(_Time.w * _value));col.a = lerp(0, _overlayCol.a, t);color = lerp(color, col, col.a);//将col叠加在color上}
2,物体闪烁

原理相同,实现代码如下:
Shader "YaDong/YydShanShader"
{Properties{_MainTex("Texture", 2D) = "white" {}[Header(twinkle)]_twinkleCol("闪光色",Color) = (0.7735,0.7735,0.7735,1)_twinkleValue("闪烁 Speed",float) = 1_middleValue("中间值",float) = 0.5_volatilityValue("波动",float) = 0.6}SubShader{Tags { "RenderType" = "Opaque" }LOD 100Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag// make fog work//#pragma multi_compile_fog#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;//UNITY_FOG_COORDS(1)float4 vertex : SV_POSITION;};sampler2D _MainTex, _YydChangeInterval;float4 _MainTex_ST;float4 _twinkleCol;float _twinkleValue;float _middleValue;float _volatilityValue;v2f vert(appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);// UNITY_TRANSFER_FOG(o,o.vertex);return o;}fixed4 frag(v2f i) : SV_Target{// sample the texturefixed4 col = tex2D(_MainTex, i.uv);float t = abs(sin(_Time.w * _twinkleValue)* _volatilityValue)+ _middleValue;// +0.5;col.rgb = lerp(col.rgb, saturate(col.rgb + _twinkleCol.rgb), t);return col;}ENDCG}}
}
3,纯色半透明闪烁

与上述物体闪烁不同的是,这个只是在颜色基础上加了半透明闪烁,实现代码如下:
Shader "YaDong/YydGreenShader"
{Properties{_MainTex("Texture", 2D) = "white" {}_value("速度",Range(1,3)) = 1_overlayCol("叠加色",Color) = (0.2146,1,0,0.6039)}SubShader{//Tags { "RenderType" = "Opaque" }Tags { "Queue" = "Transparent" "RenderType" = "Transparent" }zWrite offblend srcAlpha one//LOD 100Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag// make fog work//#pragma multi_compile_fog#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;//UNITY_FOG_COORDS(1)float4 vertex : SV_POSITION;};sampler2D _MainTex, _YydChangeInterval;float4 _MainTex_ST;float _value;float4 _overlayCol;v2f vert(appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);// UNITY_TRANSFER_FOG(o,o.vertex);return o;}fixed4 frag(v2f i) : SV_Target{fixed4 col = _overlayCol;float t = abs(sin(_Time.w * _value));col.a = lerp(0.3, _overlayCol.a, t);return col;}ENDCG}}
}
相关文章:
Unity Shader:闪烁
还是一样的分为UI闪烁和物体闪烁,其中具体可分为:UI闪烁、物体闪烁与半透明闪烁 1,UI闪烁 对于UI 还是一样的,改写UI本身的shader: Shader "UI/YydUIShanShder" {Properties{[PerRendererData] _MainTex(…...
c++开发模式桥接模式
将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。 #include <iostream> using namespace std;// Abstractionclass Abstraction { public:virtual void Op…...
javaScript 树形结构 递归查询方法。
1. 函数递归定义 程序调用自身的编程技巧称为递归( recursion)。 2.使用条件 1.存在限制条件,当满足这个限制条件的时候,递归便不再继续。 2.每次递归调用之后越来越接近这个限制条件。 3.既然是自己调用自己,那么整个…...
MySQL语法2
DQL语句介绍 DQL是数据查询语言,用来查询数据库中表的记录 DQL-基本查询语句 SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVIMG 分组后条件列表 ORDER BY 排列字段列表 LIMIT 分页参数 讲解过程:基本查询、条件查询…...
Mysql on duplicate key update用法及优缺点
在实际应用中,经常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时则进行更新, 在刚碰到的时候,一般思路是将其实现分为两块,分别是判断增加,判断更新,后来发现在mysql…...
【Linux】-进程概念之进程优先级(如何去进行调度以及进程切换),还不进来看看??
💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …...
《在细雨中呼喊》阅读笔记
《在细雨中呼喊》阅读笔记 2023年2月5号在家读完,本书就是以作者者回忆的形式来写,男一号叫孙光林,有一个哥哥孙光平,一个弟弟叫孙光明,父亲叫孙光才。书中写了四篇故事。 第一篇写的就是作者对于老家生活的回忆 小的时…...
01-1 搭建 pytorch 虚拟环境
pytorch 管网:PyTorch 一 进入 Anaconda 二 创建虚拟环境 conda create -n pytorch python3.9注意要注意断 VPN切换镜像: 移除原来的镜像 # 查看当前配置 conda config --show channels conda config --show-sources# 移除之前的镜像 conda config --…...
RocketMQ 事务消息
事务消息是 RocketMQ 的高级特性之一 。这篇文章,笔者会从应用场景、功能原理、实战例子三个模块慢慢为你揭开事务消息的神秘面纱。 1 应用场景 举一个电商场景的例子:用户购物车结算时,系统会创建支付订单。 用户支付成功后支付订单的状态…...
Windows安装ElasticSearch
安装环境:java环境。新版本需要安装高版本的java,所有本次安装的为 7.x版本的ElasticSearch 。所以要java11 1、安装java11 2、下载 Elasticsearch 安装包 官网地址:(https://www.elastic.co/cn/) 安装包下载地址:https://www…...
【深度学习】SMILEtrack: SiMIlarity LEarning for Multiple Object Tracking,论文
论文:https://arxiv.org/abs/2211.08824 代码:https://github.com/WWangYuHsiang/SMILEtrack 文章目录 AbstractIntroductionRelated WorkTracking-by-DetectionDetection methodData association method Tracking-by-Attention Methodology架构概述外观…...
【Kubernetes】Kubernetes之二进制部署
kubernetes 一、Kubernetes 的安装部署1. 常见的安装部署方式1.1 Minikube1.2 Kubeadm1.3 二进制安装部署2. K8S 部署 二进制与高可用的区别2.1 二进制部署2.2 kubeadm 部署二、Kubernetes 二进制部署过程1. 服务器相关设置以及架构2. 操作系统初始化配置3. 部署 etcd 集群4. 部…...
京东开源的、高效的企业级表格可视化搭建解决方案:DripTable
DripTable 是京东零售推出的一款用于企业级中后台的动态列表解决方案,项目基于 React 和 JSON Schema,旨在通过简单配置快速生成页面动态列表来降低列表开发难度、提高工作效率。 DripTable 目前包含以下子项目:drip-table、drip-table-gene…...
STL C++学习背景
STL C学习背景 背景知识 背景知识 STL前置知识 STL,英文全称 standard template library,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,是 C 提供的一个基础模板的集合,用于完成诸如输入/输出、数…...
C#踩坑:谨慎在XML数据列上绑定鼠标事件!
按照计划,昨天晚上就完成最后的公式自动计算,程序的流程就算完整了,可以正常运行了,一般情况下,是可以完成的。 10点开始干,窗体上放置一个Treeview,然后针对XML对Treeview进行数据绑定…...
逻辑代数运算
逻辑代数运算中的三种基本运算 与(AND):只有满足全部条件,才会产生结果 或(OR) :只要满足一个条件,就会产生结果 非(NOT):只要满足条件ÿ…...
win10笔记本显示器根据页面显示亮度自动调节亮度的问题
系统是win10企业版,针对这个问题查了很多种方法,比如: 1、控制面板->硬件和声音->电源选项->点击当前电源计划的更改计划设置->更改高级电源设置->显示->启用自适应亮度 但是我发现我的电源计划只有平衡这一种,…...
无人驾驶实战-第一课(自动驾驶概述)
在七月算法上报了《无人驾驶实战》课程,老师讲的真好。好记性不如烂笔头,记录一下学习内容。 课程入口,感兴趣的也可以跟着学一下。 ————————————————————————————————————————— 无人驾驶汽车的定义…...
15.节点操作
15.1 DOM节点 1.DOM节点 DOM树里每一个内容都称之为节点 2.节点类型 ●元素节点 所有的标签 比如body、div html是根节点 ●属性节点 所有的属性 比如href ●文本节点 所有的文本 15.2查找节点 1.父节点查找: parentNode属性 返回最近一级的父节点找不到返回为n…...
C语言自定义类型 — 结构体、位段、枚举、联合
前言 本期主要对通讯录三篇博客文章进行补充 通讯录文章:通讯录系列文章 对结构体进行详细介绍,其次讲解位段、枚举、联合体 文章目录 前言一、结构体1.什么是结构体2.结构声明2.1 声明格式2.2 如何声明(代码演示) 3.特殊声明3.1…...
终极指南:如何让Intel Mac保持凉爽的3个简单技巧
终极指南:如何让Intel Mac保持凉爽的3个简单技巧 【免费下载链接】smcFanControl Control the fans of every Intel Mac to make it run cooler 项目地址: https://gitcode.com/gh_mirrors/smc/smcFanControl 你是否曾经在使用Intel Mac进行视频剪辑或编程时…...
Ostrakon-VL-8B惊艳效果:在严重反光/水渍/褶皱包装袋上仍识别品牌
Ostrakon-VL-8B惊艳效果:在严重反光/水渍/褶皱包装袋上仍识别品牌 想象一下,你是一家连锁超市的巡检员,每天要检查上百个货架。有些商品包装袋在运输中压皱了,有些被顾客不小心洒上了水,还有些在灯光下反光严重。传统…...
闲置机顶盒秒变Linux服务器:Armbian 20.10 Buster搭配rtl8188eu网卡实战教程
闲置机顶盒改造指南:Armbian系统与rtl8188eu网卡的完美融合方案 家里积灰的旧机顶盒除了占地方还能做什么?今天我们就来解锁它的隐藏技能——低成本打造一台高性能Linux服务器。不同于常规教程的流水账式操作,本文将深入探讨硬件适配原理与实…...
【反蒸馏实战 05】数据库管理员:当云数据库接管了80%的日常运维,你的价值在哪里?@从“数据库运维”到“数据架构师”实战指南
摘要:2026年,甲骨文47人DBA团队被3名架构师+AI取代,AI接管94%的数据库维护工作——这标志着传统DBA的“操作时代”终结。本文结合Redgate 2026数据库行业报告、TiDB全员信等权威数据,拆解AI对DBA的冲击全景,提出“思维-能力-工作流”三级反替代模型。通过4个核心实操模块(…...
龙芯k - 走马观碑组VLLX驱动移植汕
一、什么是urllib3? urllib3 是一个用于处理 HTTP 请求和连接池的强大、用户友好的 Python 库。 它可以帮助你: 发送各种 HTTP 请求(GET, POST, PUT, DELETE等)。 管理连接池,提高网络请求效率。 处理重试和重定向。 支…...
3分钟掌握Vue大屏自适应:终极解决方案让复杂布局轻松适配
3分钟掌握Vue大屏自适应:终极解决方案让复杂布局轻松适配 【免费下载链接】v-scale-screen Vue large screen adaptive component vue大屏自适应组件 项目地址: https://gitcode.com/gh_mirrors/vs/v-scale-screen 还在为不同屏幕尺寸的大屏项目头疼吗&#…...
别再只用柱状图了!用Origin玩转‘柱状+点线’组合图,轻松应对论文审稿人的图表挑剔
科研图表升级指南:用Origin打造兼具数据对比与趋势分析的组合图表 在学术论文写作中,图表是研究成果最直观的呈现方式。许多研究者习惯使用单一的柱状图展示数据,但当审稿人要求同时体现数值比较和时间趋势时,这种简单图表就显得力…...
LangGraph完整指南:如何构建企业级智能体应用
LangGraph完整指南:如何构建企业级智能体应用 【免费下载链接】langgraph Build resilient language agents as graphs. 项目地址: https://gitcode.com/GitHub_Trending/la/langgraph LangGraph是一个强大的低层编排框架,专门用于构建长期运行、…...
终极网页转Markdown工具:MarkDownload高效内容提取全攻略
终极网页转Markdown工具:MarkDownload高效内容提取全攻略 【免费下载链接】markdownload A Firefox and Google Chrome extension to clip websites and download them into a readable markdown file. 项目地址: https://gitcode.com/gh_mirrors/ma/markdownload…...
芯驰X9车规级芯片实战:如何用6核Cortex-A55打造智能座舱(附开发板评测)
芯驰X9车规级芯片开发实战:从选型到多屏异显的智能座舱全流程解析 在智能汽车快速普及的今天,座舱系统的智能化程度已成为消费者购车的重要考量因素。作为国内领先的车规级芯片解决方案,芯驰X9凭借其6核Cortex-A55架构和丰富的接口资源&#…...
