unity shader加载序列帧图片

2023-11-15

先设置序列帧图WarpMode 为Repeat;

在这里插入图片描述

Shader部分

Shader "My/Sequence" {
    Properties {
        _Opacity    ("透明度", range(0, 1)) = 0.5
        _Sequence   ("序列帧", 2d) = "gray"{}
        _RowCount   ("行数", int) = 1
        _ColCount   ("列数", int) = 1
        _Speed      ("速度", range(0.0, 15.0)) = 1
    }
    SubShader {
         Tags {
            "Queue"="Transparent"               // 调整渲染顺序
            "RenderType"="Transparent"          // 对应改为Cutout
            "ForceNoShadowCasting"="True"       // 关闭阴影投射
            "IgnoreProjector"="True"            // 不响应投射器
         }
         Pass {
            Name "FORWARD_AD"
            Tags {
                "LightMode"="ForwardBase"
            }
            Blend One One                       // 修改混合方式
            
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"
            #pragma multi_compile_fwdbase_fullshadows
            #pragma target 3.0
            // 输入参数
            uniform sampler2D _Sequence; uniform float4 _Sequence_ST;
            uniform half _Opacity;
            uniform half _RowCount;
            uniform half _ColCount;
            uniform half _Speed;

            // 输入结构
            struct VertexInput {
                float4 vertex : POSITION;       // 顶点位置 总是必要
                float2 uv : TEXCOORD0;          // UV信息 采样贴图用
                float3 normal:NORMAL; //法线
            };
            // 输出结构
            struct VertexOutput {
                float4 pos : SV_POSITION;       // 顶点位置 总是必要
                float2 uv : TEXCOORD0;          // UV信息 采样贴图用
            };
            // 输入结构>>>顶点Shader>>>输出结构
            VertexOutput vert (VertexInput v) {
                VertexOutput o = (VertexOutput)0;
                    // 顶点位置 OS>CS 
                    o.pos = UnityObjectToClipPos( v.vertex);    
                    // UV信息 支持TilingOffset
                    o.uv = TRANSFORM_TEX(v.uv, _Sequence);  
                    //计算序列id       
                    float id=floor(_Time.z*_Speed);  
                    //所在行=当前值/列数   floor 取整
                    float idV=floor(id/_ColCount);  
                    //计算当前id所在列  求余   余数=当前值-所在行*总列数
                    float idU= id - idV * _ColCount; 
                    //计算横向U轴长度(步幅) 1/列数
                    float stepU=1.0/_ColCount;
                    //计算纵向V轴长度(步幅) 1/行数
                    float stepV=1.0/_RowCount;
                    //计算初始uv uv是左下角为原点 序列一般以左上为远点,所用所在列需要倒过来
                    float2 initUV=o.uv*float2(stepU,stepV)+float2(0.0,stepV*(_RowCount-1+idV));
                    o.uv=initUV+float2(idU*stepU,idV*stepV);
                return o;
            }
            // 输出结构>>>像素
            half4 frag(VertexOutput i) : COLOR {
                // 采样贴图 RGB颜色 A透贴不必须
                half4 var_Sequence = tex2D(_Sequence, i.uv);     
                half3 finalRGB = var_Sequence.rgb;
                half opacity = var_Sequence.a * _Opacity;
                // 返回值
                return half4(finalRGB * opacity, opacity);             
            }
            ENDCG
        }

    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unity shader加载序列帧图片 的相关文章

随机推荐

  • 15. Canvas制作汽车油耗仪表盘

    1 说明 本篇文章在14 利用Canvas组件制作时钟的基础上进行一些更改 想查看全面的代码可以点击链接查看即可 效果展示 2 整体代码 import QtQuick 2 15 import QtQuick Controls 2 15 It
  • 深度学习——时间序列模型评价指标总结

    大Y老师 小X 你做的这个时间序列模型用什么指标评价啊 小X 直接把这篇甩给老师 老师您看哪个指标顺眼 就选哪个指标 最近在实现基于深度学习的时间序列模型时 需要对模型进行评价 总结了一些常用的和不常用的评价指标 还有相关概念的辨析 上面是
  • 谷粒学院——Day09【整合阿里云视频点播】

    作者主页 Java技术一点通的博客 个人介绍 大家好 我是Java技术一点通 记得关注 点赞 收藏 评论 认真学习 共同进步 视频点播简介 一 阿里云视频点播技术能力盘点 视频点播 ApsaraVideo for VoD 是集音视频采集 编
  • 图计算:社区发现算法

    一 定义什么是社区 社区是一种局部性结构 该局部性结构内部连接紧密 而不同的局部性结构之间连接稀疏 这种局部性结构是社区 主要应用 好友推荐 广告推送 二 如何评价一个社区的分类好坏的情况 用Modurity衡量 三 社区发现算法 算法1
  • ESP8266开发板+mysql数据库+DHT11

    wemos D1 wifi ESP8266开发板连接mysql wemos D1 wifi ESP8266开发板是一款基于esp8266的开发板 使用这个开发板可以很方便的连接wifi 同时这个开发板有很多IO口供我们使用 这个开发板的可以
  • WPS Office 2019政府定制版本 2019.1.15版

    1 广东省 广东省政府机关单位 http wpspro support wps cn gov guangdong WPS Office 2016 专用版 10 8 0 6423 潮州市党政机关单位 http wpspro support w
  • 基于FPGA的频率计设计

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 频率计是什么 二 使用步骤 1 测量方法 2 测周方法 3 系统框图 总结 前言 所谓 频率 就是周期性信号在单位时间 秒 内变化的次数 一 频率计是什么
  • 线性代数的几何意义(一)——线性代数的意义

    线性代数的几何意义 一 一 线性 代数 的意义 何为 代数 代数 一词的英文是Algebra 源于阿拉伯语 其本意是 结合在一起 就是说代数的功能就是把许多看似不相关的事物 结合在一起 也就是进行抽象 抽象的目的不是故弄玄虚 而是为了更好的
  • zabbix配置钉钉告警、和故障自愈、监控java

    文章目录 1 配置钉钉告警 server 配置 web界面创建媒介 给用户添加媒介 测试告警 实现故障自愈功能 监控Java zabbix server 安装java gateway 配置 Zabbix Server 支持 Java gat
  • 【深度学习】 Python 和 NumPy 系列教程(十五):Matplotlib详解:2、3d绘图类型(1):线框图(Wireframe Plot)

    目录 一 前言 二 实验环境 三 Matplotlib详解 1 2d绘图类型 2 3d绘图类型 0 设置中文字体 1 线框图 Wireframe Plot 一 前言 Python是一种高级编程语言 由Guido van Rossum于199
  • 信号覆盖 蓝桥杯模拟

    信号覆盖 暴力模拟 问题描述 小蓝负责一块区域的信号塔安装 整块区域是一个长方形区域 建立坐标轴后 西南角坐标为 0 0 东南角坐标为 W 0 西北角坐标为 0 H 东北角坐标为 W H 其中 W H 都是整数 他在 n 个位置设置了信号塔
  • postgresql之pgbackrest备份恢复

    1 安装pgbackrest yum install y https download postgresql org pub repos yum reporpms EL 7 x86 64 pgdg redhat repo latest no
  • 重塑未来:AI对教育行业的深远影响与挑战

    自从AI人工智能的发展进入 iPhone时刻 以来 我们已身处一个日新月异的时代 在众多领域 AI已经大放异彩 而教育作为培养下一代的关键领域 自然也受到了这场科技革命的影响 AI对教育行业重大影响 最近可汗学院 Khan Academy
  • Python金融系列第四篇:置信区间和假设检验

    作者 chen h 微信号 QQ 862251340 微信公众号 coderpai 第一篇 计算股票回报率 均值和方差 第二篇 简单线性回归 第三篇 随机变量和分布 第四篇 置信区间和假设检验 第五篇 多元线性回归和残差分析 第六篇 现代投
  • 用chatgpt写论文可行吗,查重率会达到多少

    AI工具国内体验 关注 码视野 回复关键字 1002 选题 题目 物联网技术在智能家居系统中的应用研究 概要生成 问 请以 物联网技术在智能家居系统中的应用研究 为课题 写一篇物联网专业本科毕业论文的摘要 不少于400字 答 随着人们生活水
  • 单内核与微内核

    单内核是个很大的进程 它的内部又能够被分为若干模块 或是层次或其他 但是在运行的时候 他是个单独的二进制大映象 其模块间的通讯是通过直接调用其他模块中的函数实现的 而不是消息传递 在运行效率上 单内核会具有一定的好处 单内核结构是非常有吸引
  • 前端将后端返回的文件流转为excel并下载

    1 目的 将文件流转为excel并进行下载 下面图片是发请求之后 后端返回的文件流 想要实现的效果是将文件流转为excel并进行下载 2 实现步骤 2 1 utils exportFile js export function export
  • npm 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

    npm 无法将 npm 项识别为 cmdlet 函数 脚本文件或可运行程序的名称 请检查名称的拼写 如果包括路径 请确保路径正确 然后再试一次 目录 一 报错 二 解决 1 安装node js node js安装过程中的报错问题 解决nod
  • ThinkPHP5多语言切换项目实战

    ThinkPHP5多语言切换实战 1 在配置文件中开启多语言配置 2 然后添加多语言目录 这里创建你需要的语言包 在语言包里定义需要翻译的文本 中英文数组的键名写成一致 然后在html文件里输入 lang 键名 对应的键名 就是下图的写法
  • unity shader加载序列帧图片

    先设置序列帧图WarpMode 为Repeat Shader部分 Shader My Sequence Properties Opacity 透明度 range 0 1 0 5 Sequence 序列帧 2d gray RowCount 行