URP - 序列图动画的实现

效果:

【太妃糖耶】更新了一条视频,快来围观!

序列图动画的实现

首先先了解下序列图样式的纹理图片

如上图一可在Shader中使用该图片制作燃烧的火的动画,但是如何实现呢?接下来一起来看一下吧

序列图动画的实现原理大概是顺序采样序列图纹理中的每一个小格子块,从最上方的左边开始一直到最右边然后再继续下一行的采样,从而形成动画效果

所以序列图动画的实现分为两个步骤:

1.首先采样最上方左侧小格子中的纹理

2.完成UV的走格,通过变化的UV来采样对应的格子块从而形成动画效果


第一步:采样最上方左侧小格子中的纹理

o.uv = float2(v.uv.x/_Column,v.uv.y/_Row+1/_Row*(_Row-1));

其中_Row代表行数,_Column代表列数 (两者必须为float类型)

上面的代码相当于   v.uv.x=v.uv.x/_Column;       v.uv.y=v.uv.y/_Row+1/_Row*(_Row-1);

 v.uv.x=v.uv.x/_Column; 用原UV中U方向的值除以列数,得到新的U方向上的值(如果列数为3,U方向上的值则为(0,0.333))

v.uv.y=v.uv.y/_Row+1/_Row*(_Row-1); 用原UV中V方向的值除以行数,表示一个小格子中U方向的值。再加上1/_Row*(_Row-1)代表将U方向的值移动到原UV中V方向的最上侧。

第二步:完成UV走格,通过变化的UV来采样对应的格子块从而形成动画效果

首先我们可以用o.uv.x+=_Time.y;来看一下效果(可见不是我们想要的走格的效果)

  • U方向的走格: 

o.uv.x += frac(floor(_Time.y*_Column*_Speed)/_Column);

floor(_Time.y*_Column)/_Column : 实现一秒之内完成一行的走格

  • V方向的走格: 

 o.uv.y - = frac(floor(_Time.y*_Speed)/_Row);

floor(_Time.y)/_Row : 每秒向下偏移一格(用减法实现向下偏移)

 frac取小数的作用是优化纹理采样,使得采样纹理的UV在0-1的范围内


 实现透贴效果

Tags{"Queue"="Transparent"}

当序列图为透贴格式时,使用 Blend SrcAlpha OneMinusSrcAlpha 来实现背景透明

还可以在片元着色器中使用 c.rgb *= c.a; , 透明区域的a通道中的值为0,所以此时透明背景就变为黑色,所以要配合 Blend One One 来使用

若序列图的背景是黑色时,可以使用 Blend One One 

综上所述,可以使用 c.rgb *= c.a 和 Blend One One 共同实现透贴图片和黑底图片的半透明效果

Shader"unity/UV"
{Properties{[NoScaleOffset]_MainTex("MainTex",2D)="white"{}_Row("Row",float)=1_Column("Column",float)=1_Speed("Speed",float)=3[Enum(Billaboard,1,VerticalBillaboard,0)]_BillaboardType("BillaboardType",int)=1}SubShader{Tags{"RenderPipeline"="UniversalPipeline""Queue"="Transparent"}//常用于透贴// Blend SrcAlpha OneMinusSrcAlpha//用于黑底图片Blend One OnePass{HLSLPROGRAM#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"#pragma vertex vert#pragma fragment fragTEXTURE2D(_MainTex);float4 _MainTex_ST;#define sampler_MainTex samplerState_Linear_RepeatSAMPLER(sampler_MainTex);CBUFFER_START(UnityPerMaterial)float _Row,_Column,_Speed;int _BillaboardType;CBUFFER_ENDstruct Attributes{float4 positionOS : POSITION;float2 uv : TEXCOORD;};struct Varyings{float4 positionCS : SV_POSITION;float2 uv : TEXCOORD;};Varyings vert(Attributes v){Varyings o = (Varyings)0;o.positionCS = TransformObjectToHClip(v.positionOS);o.uv = TRANSFORM_TEX(v.uv,_MainTex);//序列图动画的起始位置o.uv = float2(v.uv.x/_Column,v.uv.y/_Row+1/_Row*(_Row-1));//frac取小数的作用是优化纹理采样,使得采样纹理的UV在0-1的范围内//U方向上的走格 floor(_Time.y*_Column)/_Column代表一秒钟走完一行中的所以列的格子o.uv.x+=frac(floor(_Time.y*_Column*_Speed)/_Column);//V方向上的走格 floor(_Time.y)/_Row 代表每一秒走一行o.uv.y-=frac(floor(_Time.y*_Speed)/_Row);return o;}float4 frag(Varyings i):SV_Target{float4 c;float4 mainTex = SAMPLE_TEXTURE2D(_MainTex,sampler_MainTex,i.uv);c=mainTex;//用于透贴图片消除Alpah为0的区域 Alpha=1为不透明,Alpha=0为透明c.rgb*=c.a;return c;}ENDHLSL}}}

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

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

相关文章

python中 str.strip() 是什么意思

在 Python 中,str.strip() 是字符串(str)类型的一个方法,用于移除字符串两端的空白字符(默认情况下)或指定字符,并返回处理后的新字符串。 语法: str.strip([chars])chars&#xf…

记录idea可以运行但是maven install打包却找不到问题

解决idea使⽤maven多模块install报依赖模块的包找不到的问题 如果被依赖项⽬是springboot项⽬,那么可以把相关的springboot的东西移除掉,改造成普通项⽬。如果不想改造项⽬,那就添加部分的配置,因为springboot项⽬打包的时候会⽣…

uniapp如何获取安卓原生的Intent对象

通过第三方app唤起,并且获取第三方app唤起时携带的参数 因为应用a唤起应用b时,应用b第一时间就要拿到参数token,所以需要将获取参数的方法写在APP.vue中的onLaunch钩子里,如果其他地方要用可以选择vuex或者采用本地缓存。 uniapp中plus.run…

《多端统一的终极答案:X5内核增强版的渲染优化全解析》

跨端应用的需求呈爆发式增长,无论是电商购物、社交互动,还是金融理财类应用,都期望能够在不同平台上为用户提供一致且流畅的体验。而在这一过程中,跨端渲染技术成为了关键瓶颈。腾讯X5内核增强版的出现,犹如一道曙光&a…

深入理解算力:从普通电脑到宏观计算世界

在科技飞速发展的当下,“算力” 一词频繁出现在我们的视野中,无论是前沿的人工智能领域,还是新兴的区块链世界,算力都扮演着至关重要的角色。但对于大多数普通人来说,算力仿佛是一个既熟悉又陌生的概念。今天&#xff…

Paramiko复用 Transport 连接解析

1. 什么是 Transport 连接? 在 Paramiko 中,Transport 是负责底层 SSH 协议通信的核心类,它封装了以下功能: 加密通信:处理 SSH 协议的加密和解密。会话管理:维护与远程服务器的 TCP 连接。多路复用&…

sd webui 安装插件sd-webui-EasyPhoto依赖安装失败解决办法

在最新版的SD webui中,可以安装easyphoto插件,官方建议通过github安装,对无法科学上网的用户很不友好。对我自己来说是通过地址: https://gitee.com/wowai/sd-webui-EasyPhoto.git 分支:anyid 点击安装即可。 在安装…

WEBSTORM前端 —— 第2章:CSS —— 第3节:背景属性与显示模式

目录 1.Emmet写法 2.背景属性 (1) background-color (2) background-image (3) background-repeat (4)background-position (5)background-size &…

【android bluetooth 协议分析 01】【HCI 层介绍 2】【Malformed Packet 介绍】

在实际工作中遇到了 malformed packet , 我这里来分析一下。 遇到这种问题的处理思路。 1. Malformed packet 36982 2025-04-29 14:15:34.899760 controller host HCI_EVT 4 Rcvd Role Change[Malformed Packet]Frame 36982: 4 bytes on wire (32 bits), 4 bytes captured (32…

【视频生成模型】通义万相Wan2.1模型本地部署和LoRA微调

目录 1 简介2 本地部署2.1 配置环境2.2 下载模型 3 文生视频3.1 运行命令3.2 生成结果 4 图生视频4.1 运行命令4.2 生成结果 5 首尾帧生成视频5.1 运行命令5.2 生成结果 6 提示词扩展7 LoRA微调 1 简介 通义万相 2.1 在 2025 年 1 月推出,2 月 25 日阿里巴巴宣布全…

模式识别的基本概念与理论体系

前面在讨论专家系统时曾经说过,为了使计算机具有自动获取知识的能力,除了应使它具有学习能力外,还应使它具有能识别诸如文字、图形、图象、声音等的能力,计算机的这种识别能力是模式识别研究的主要内容。当然,模式识别…

树的序列化 - 学习笔记

树的序列化可以有很多种类:可以变成 dfs 序,可以变成欧拉序,还有什么括号序的科技。 但是除了第一个以外其他的都没什么用(要么也可以被已有的算法给替代掉)。所以表面上是讲树的序列化,实际上还是讲的 df…

KBEngine 源代码分析(三):组网逻辑

machine 服务 machine 服务是 KBEngine 用来做服务治理的 每个节点上都需要部署 machine 服务 machine 服务使用 UDP 进行通信 服务发现的方法是其他服务使用 UDP 广播的方式,通知所有 machine 服务 machine 服务启动初始化 mahcine 服务初始化过程,主要做了监听 UDP 端…

git 怎样把本地仓库推送到新建的远程仓库

将本地 Git 仓库推送到一个新的远程仓库是一个常见的操作。以下是详细的步骤: 步骤 1: 创建一个新的远程仓库 首先,你需要在 GitHub、GitLab 或其他代码托管平台上创建一个新的远程仓库。 例如,在 GitHub 上创建一个新仓库: 登…

SPSS PCA+判别分析

1, 主成分分析PCA 我们只要对数化的变量数据: (1)对数据进行标准化处理: 选择【分析】—【描述统计】—【描述】 添加要标准化的变量,勾选【将标准化值另存为变量(Z)】,再点确定 SPSS软件本身不…

XWPFDocument生成word文档介绍(格式 .docx)

以下是针对 XWPFDocument 的详细解析,涵盖其核心功能、常见用法及实际开发中的关键点: XWPFDocument 1. XWPFDocument 简介2. 核心结构与类3. 核心操作详解**3.1 段落与文本****3.2 表格操作****3.3 列表与编号****3.4 图片插入** 4. 高级功能**4.1 页眉…

crashpad 编译

一环境配置 1.1设置系统UTF8编码 1.2vs2017语言环境设置英文包 二.获取depot_tools(此步骤可以跳过 最新工具包已上传下载使用即可) windows下载压缩包,然后放到系统PATH中 下载完以后,基本就是靠depot_tools这个工具集合了&am…

基于标注数据的情感分析模型研究

标题:基于标注数据的情感分析模型研究 内容:1.摘要 随着互联网的快速发展,大量文本数据蕴含着丰富的情感信息,对其进行情感分析具有重要的商业和社会价值。本研究的目的是构建基于标注数据的情感分析模型,以准确识别文本中的情感倾向。方法上…

【数据链路层深度解析】从帧结构到协议实现

目录 一、数据链路层核心定位1.1 OSI模型中的位置1.2 三大核心职责 二、帧结构详解2.1 以太网帧标准格式(IEEE 802.3)2.2 帧封装代码示例 三、核心协议机制3.1 MAC地址体系3.2 介质访问控制CSMA/CD(以太网冲突检测)现代交换机的演…

在若依前后端分离项目中集成 ONLYOFFICE 以实现在线预览、编辑和协作功能

在若依前后端分离项目中集成 ONLYOFFICE 以实现在线预览、编辑和协作功能 概述 ONLYOFFICE 是一款开源的在线文档编辑套件,可实现文档预览、编辑、协作与转换等功能,可通过 Docker 部署 DocumentServer 服务,并通过 HTTP API 或 WOPI 接口与…