Unity Shader-非主流纹理采样研究(流光,溶解,隐身效果)

Unity中URP下实现能量罩(扭曲流光花纹) 在上一篇文章中,我们实现了能量罩外发光的效果。但是,这样看我们的能量罩十分单调不好看。在这篇文章中,我们给能量罩加上花纹,使其变好看。 阅读详情

简介


今天来研究几个效果,最近比较忙,所以来弄几个比较简单的效果玩一下。不过也是游戏中常用的一些效果,流光效果,按照方向的溶解效果。其实这几个效果主要运用的就是世界空间坐标或者模型空间坐标用于采样的一个方法,总之就是有些非主流的纹理采样方式。不多说,下面进入正题。

流光效果


首先来看一下流光效果。流光效果是一个非常常见的效果,不仅仅是游戏,一些广告之类的也都会有这种效果。流光的原理还是比较简单的:首先就是需要一张流光图,这张流光图的大部分都是黑色,然后有一条亮线,然后我们在采样的时候,最终输出叠加上这张图的采样值,并根据时间调整采样的UV就可以有流光的效果啦。下面是一个比较简单的流光效果实现:
//流光效果
//by:puppet_master
//2017.7.29
Shader "ApcShader/FlashEffect" 
{
	Properties
	{
		_MainTex("MainTex(RGB)", 2D) = "white" {}
		_FlashTex("FlashTex", 2D) = "black" {}
		_FlashColor("FlashColor",Color) = (1,1,1,1)
		_FlashSpeedX("FlashSpeedX", Range(-5, 5)) = 0
		_FlashSpeedY("FlashSpeedY", Range(-5, 5)) = 0.5
		_FlashFactor ("FlashFactor", Range(0, 5)) = 1
	}
	
	CGINCLUDE
	#include "Lighting.cginc"
	uniform sampler2D _MainTex;
	uniform float4 _MainTex_ST;
	uniform sampler2D _FlashTex;
	uniform fixed4 _FlashColor;
	uniform fixed _FlashSpeedX;
	uniform fixed _FlashSpeedY;
	uniform fixed _FlashFactor;

	struct v2f 
	{
		float4 pos : SV_POSITION;
		float3 worldNormal : NORMAL;
		float2 uv : TEXCOORD0;
		float3 worldLight : TEXCOORD1;
	};

	v2f vert(appdata_base v)
	{
		v2f o;
		o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
		o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
		o.worldNormal = UnityObjectToWorldNormal(v.normal);
		o.worldLight = UnityObjectToWorldDir(_WorldSpaceLightPos0.xyz);
		return o;
	}
			
	fixed4 frag(v2f i) : SV_Target
	{
		half3 normal = normalize(i.worldNormal);
		half3 light = normalize(i.worldLight);
		fixed diff = max(0, dot(normal, light));
		fixed4 albedo = tex2D(_MainTex, i.uv);
		//通过时间将采样flash的uv进行偏移
		half2 flashuv = i.uv + half2(_FlashSpeedX, _FlashSpeedY) * _Time.y;
		fixed4 flash = tex2D(_FlashTex, flashuv) * _FlashColor * _FlashFactor;
		fixed4 c;
		//将flash图与原图叠加
		c.rgb = diff * albedo + flash.rgb;
		c.a = 1;
		return c;
	}
	ENDCG

	SubShader
	{
		
		Pass
		{
			Tags{ "RenderType" = "Opaque" }
			
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			ENDCG	
		}
	}
	FallBack "Diffuse"
}
shader比较简单,flashuv是随着时间逐渐增大的,这个值肯定会大于1,而正常纹理的范围是0-1,所以,要想让贴图在采样时大于0-1也有效果,我们就必须要把贴图的WrapMode设置为Repeat,否则当这个值大于1之后,边缘就被截断了,我们也就不会看到流光效果了。注意,流光的贴图是一个方向,采样uv偏移是另一个方向,比如我的流光图是水平方向的,那么流光运动的方向就是竖直方向,效果如下面动图所示:


更通用的流光效果

Unity URP管线ShaderGraph实战:流光、扭曲与波纹UI特效全解析 在Unity游戏开发中,Shader是实现高级视觉效果的底层核心技术,它通过一系列数学运算直接控制GPU渲染管线,将简单的纹理和模型转化为丰富的动态画面。其核心原理在于对纹理坐标(UV)、颜色和像素信息的实时处理与变换。掌握Shader技术对于提升UI的视觉表现力和交互反馈至关重要,能够显著增强产品的质感和沉浸感。在Unity URP(通用渲染管线)环境下,ShaderGraph通过可视化节点编程,大幅降低了Shader的开发门槛,让美术和程序员都能高效协作。本文聚焦于UI特效中最具代表性的流光、扭曲和波纹 阅读详情

相关推荐

Unity 2022 LTS中Spine 4.1骨骼动画完整配置与优化指南

骨骼动画是2D游戏开发中实现角色流畅动作的核心技术,它通过骨骼层级驱动网格变形,相比传统逐帧动画能大幅减少资源占用并提升动画灵活性。其原理是将角色拆分为骨骼结构和附着其上的网格皮肤,通过变换骨骼来控制顶点位置,从而实现复杂的角色动作。这项技术的工程价值在于实现了动画资源的高效复用与运行时动态控制,广泛应用于横版动作、卡牌对战等需要细腻角色表现的2D游戏场景。本文聚焦于Spine这一行业标准的骨骼动画工具,针对其4.1版本在Unity 2022 LTS环境下的集成,详细解析了从运行库导入、数据资源配置到动画状

weixin_34279246的博客 479

Unity UGUI流光特效Shader实战教程

本文还有配套的精品资源,点击获取 简介:Unity UGUI是Unity引擎的内置UI系统,用于创建2D和3D用户界面。流光特效在游戏开发中用来增强视觉体验。本资源包含流光特效Shader源码,教授开发者如何实现自定义UI元素的动态效果。源码基于GLSL的Surface Shader编写,开发者可学习如何运用时间变量、颜色渐变和UV坐标操作来实现流动效果,并能通过调整Sha...

weixin_42527589的博客 2808

UnityShader 实现2D流光效果

很多游戏Logo中都可以看到流光效果,实现方案就是对带有光条的图片uv根据时间进行移动,然后和原图进行叠加实现。

Unity Shader - 3D流光效果

3D流光需要将流光贴图的UV坐标和模型UV的XY坐标对应了起来,再将它进行UV动画移动起来,就实现了3D的流光效果。

Unity Shader实现流光效果Shader-FlowEffect-master.zip

unity 流光效果shader,具体效果,请点击链接:https://blog.youkuaiyun.com/luckydogyxx/article/details/110424139

基于CANoe的车载以太网测试

以太网测试 CANoe

Yafet 4546

通达信源码-主力建仓-AI投研图灵室出品

AI投研图灵室1:=3*SMA((CLOSE-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1)-2*SMA(SMA((CLOSE-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1),15,1);AI投研图灵室2W:=100-100*(HHV(HIGH,14)-CLOSE)/(HHV(HIGH,14)-LLV(LOW,14));AI投研图灵室3:=SMA(SMA(AI投研图灵室2,3,1),3,1);

qq_57222058的博客 4370

Allegro模块复用:从原理图到PCB的完整流程与关键细节

本文详细介绍了Allegro模块复用从原理图到PCB的完整流程与关键细节,包括DSN和MDD文件的创建、模块调用的实战技巧以及双向同步与版本控制方法。通过标准化处理和高级复用技巧,能显著提升PCB设计效率,减少重复工作时间。适用于智能硬件和工业控制等领域的工程师。

weixin_30252709的博客 332

使用网分对晶体ESR/L1/C1/C0进行测量计算

Use R&S Vector Network Analyzer test XTAL ESR/L1/C1/C0 測量方法:使用儀器的Port1端口,測量XTAL的S11,通過諧振的參數計算出ESR/L1/C1/C0的值。 實際晶體的等效模型:通常方便晶體分析,使用下圖(b)的等效模型,但實際測量發現晶體存在多個串聯諧振點,實際等效模型更接近(c)。 儀器測量到的S11,其中M...

qq_39138630的博客 2082

【DDSCAT——离散偶极近似仿真程序04】参数理解和模型设计

在这一部分,我们开始理解DDSCAT程序设计中的一些参数问题。 承接第二部分内容中的ddscat.par文件,我们来聊一聊偶极子、实际体积、有效半径等关键词。 一、偶极子点阵 手册中说,我们需要设计模型(target/目标),它是有偶极子点阵组成的。偶极子,顾名思义,是由一对电荷组成的,但我们不用设计一对,我们设计一个点就行,...

XD_Yangf的博客 7552

5分钟搞定!用Coze+剪映小助手批量生成萌宠视频(附完整工作流配置)

本文详细介绍了如何利用Coze工作流与剪映小助手快速批量生成萌宠视频的完整方案。通过智能内容生成、素材处理、剪辑组装和输出适配四大模块的协同,实现5分钟内完成高质量视频制作。特别适合多宠物账号运营者,工作流支持模板切换和参数修改,大幅提升内容生产效率。

weixin_28678151的博客 389

SAP ABAP Web Service 的创建与消费:保姆级教程

SOAP 定义了消息的格式和传输规则,使得 Web Service 可以在不同的操作系统和网络环境中通信。通过 WSDL,服务的提供者可以明确地定义服务的功能,而服务的使用者则可以通过解析 WSDL 文件,了解如何正确地调用该服务。它封装了与 Web 服务通信的所有复杂性,如消息格式的构建、传输协议的选择、请求的发送和响应的处理等。除了本文介绍的 ABAP 编程语言之外,我们还可以通过 Java,Node.js,C++,C#,Python 等其他编程语言来消费本文创建的 ABAP Web Service.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 713

【史上最全面esp32教程】网络篇和tcp/ip的使用

ESP32史上最全面wifi和tcp/ip连接及示例程序

m0_62599305的博客 9520

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: Unity3D默认的快捷键
下一篇: CPU GPU设计工作原理(转载)
puppet_master
puppet_master 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄12年 2695粉丝 161原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值