【Unity】Unity Shader样例:顶点根据时间放大缩小

news2024/11/16 19:47:28

文章目录

  • 案例说明
  • 效果展示
  • 适用模型范围
  • 代码示例


案例说明

本案例提供一个单独的Shader,使得模型顶点(仅渲染)根据时间放大缩小,往复循环。

效果展示

在这里插入图片描述

适用模型范围

全部

代码示例

Shader "Unlit/Sha_TestScale"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader
    {
        Tags
        {
            "RenderType"="Opaque"
        }
        LOD 100

        Pass
        {
            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;
            float4 _MainTex_ST;

            v2f vert(appdata v)
            {
                v2f o;

                // 根据时间计算缩放系数
                float scaleFactor = sin(_Time.y * 0.5 * 3.14) * 0.5 + 0.5;
				
				// 修改顶点位置实现大小变化,在模型空间转换到投影空间之前先改变顶点渲染位置
                o.vertex = UnityObjectToClipPos(v.vertex * scaleFactor * 3);
  
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                // 修改UV坐标来模拟缩放效果,物体大小不变
                // o.uv = TRANSFORM_TEX(v.uv, _MainTex) * scaleFactor;
                return o;
            }

            fixed4 frag(v2f i) : SV_Target
            {
                fixed4 col = tex2D(_MainTex, i.uv);
                return col;
            }
            ENDCG
        }
    }
}

功能比较简单,代码中有注释,此处不过多解释了。关键内容为 _Time.y ,这个数值是游戏开始到现在的总秒数,类型为float。根据这个秒数在 Sin 函数的波形中获取某一时间点的数值作为基础系数,再用这个系数来改变顶点在模型空间内的位置即可。


更多内容请查看总目录【Unity】Unity学习笔记目录整理

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

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

相关文章

Multiscale Vision Transformers(MViT)

Multiscale Vision Transformers 多尺度视觉Transformer (MViT) 是一种新型的视觉识别模型,主要用于处理图像和视频。它结合了传统多尺度特征层次结构与Transformer模型的优势,旨在提高视频和图像的识别性能。 1. 多尺度视觉Transformer (MViT) 的概念…

数据可视化与分析:数据时代的关键工具

一、引言 数据可视化与分析是大数据时代中最为重要的技术之一。随着数据量的不断增加,如何有效地理解、解释和利用数据,已经成为各行各业面临的关键挑战。数据可视化通过图表、图形和互动界面将数据以直观的方式呈现,帮助用户快速识别数据中…

运行QWen2-1.5b模型时报错“RuntimeError: cutlassF: no kernel found to launch!”

运行QWen2-1.5b模型时报错“RuntimeError: cutlassF: no kernel found to launch!” #问题:成功加载QWen2-1.5b模型,但是推理时 “model.generate( model_inputs.input_ids, top_pself.top_p, max_new_tokens512 )时”,报错“RuntimeError: …

TCP客户端编码和解码处理:发送和接收指定编码消息

文章目录 引言基于Netty实现TCP客户端Netty发送GBK编码指令Netty接收GBK编码基于Channel发送指令基于ChannelHandlerContext发送指令:建立连接时发送登陆指令开启日志,查看报文信息基于ChannelInboundHandlerAdapter进行业务逻辑处理原生API实现TCP客户端基于DataOutputStrea…

vue2制作高复用页面

记录一下页面搭建记录,利用vue2组件化开发的思想。这个页面适合于大部分信息管理系统~。模板固定,每次使用,直接修改表单表格参数,api接口等。 以上图页面为例,一个基础数据信息页面可以分为,分类&#xff…

数据恢复软件推荐:轻松找回删除的文件!

在使用电脑的过程中,有时我们会误操作或者因为其他原因而删除了一些重要的文件。当我们需要这些文件却找不到时,就会产生很大的困扰。那么,如果你的电脑中的文件被误删了,应该怎么找回被删除的文件呢?下面,小编整理出…

办公必备的高效翻译工具大揭秘

网易翻译是我最早接触的一款翻译工具,随着翻译时候需求的增加让开始了解其他的翻译工具。如果你也正在为你的翻译需求头疼那不妨看看我今天要介绍的工具有没有符合你需求的。 1.福昕在线翻译 链接直达:https://fanyi.pdf365.cn/doc 这个工具比较适合…

【大模型专栏—实战篇】基于RAG从0到1搭建AI科研知识库

大模型专栏介绍 😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本文为大模型专栏子篇,大模型专栏将持续更新,主要讲解大模型从入门到实战打怪升级。如有兴趣,欢迎您的阅读。 &#x1f4…

nvidia-docker Failed to initialize NVML: Unknown Error

nvidia镜像拉下来了,但是运行不了。 执行以下命令 sudo docker run --rm --runtimenvidia --gpus all ubuntu nvidia-smi报错 Failed to initialize NVML: Unknown Error参考 https://stackoverflow.com/questions/72932940/failed-to-initialize-nvml-unknown-er…

基于springboot 校园闲置物品交换平台设计与实现---附源码74557

摘 要 随着我国互联网技术的飞速发展,网络购物已经成为人们日常生活的重要组成部分。特别是在校园中,由于学生群体的特殊性,闲置物品交易的需求日益增长。然而,目前校园闲置物品物品交易市场仍然存在许多问题,如信息不…

声波的波数,通常用k表示

声波的波数(通常用 k 表示)是描述声波空间变化的一个参数,它与声波的频率和介质中的传播速度有关。波数 k 是一个具体值,并且在均匀介质中它是固定的,计算公式如下: 均匀介质中的波数是一个具体值&#xff…

react crash course 2024 (1)理论概念

state的作用 react hooks 而无需写一个class jsx 样式用 spa

判断当前环境是否为docker容器下

判断当前环境是否为docker容器下 webshell后或登录到系统后台,判断是否为docker容器可使用如下方法: 方式一:使用ls -alh命令查看是否存在.dockerenv来判断是否在docker容器环境内 ls -alh /.dockerenv如下图无.dockerenv文件,所…

Clickhouse使用笔记

clickhouse官方文档:https://clickhouse.com/docs/zh/sql-reference/data-types/decimal 一,建表 create table acitivity_user_record ( id String DEFAULT generateUUIDv4(), -- 主键自增 activityId String, userId String, userName Nullable(Strin…

【论文解读】图像序列识别:CRNN技术在场景文本识别中的应用与突破(附论文地址)

论文地址:https://arxiv.org/pdf/1507.05717 这篇文章的标题是《An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition》,作者是Baoguang Shi, Xiang Bai和Cong Yao&#xff0c…

代码随想录训练营 Day58打卡 图论part08 拓扑排序 dijkstra朴素版 + 堆优化版

代码随想录训练营 Day58打卡 图论part08 一、拓扑排序 例题:卡码117. 软件构建 题目描述 某个大型软件项目的构建系统拥有 N 个文件,文件编号从 0 到 N - 1,在这些文件中,某些文件依赖于其他文件的内容,这意味着如果…

不同的二叉搜索树

题目 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n 3 输出:5示例 2: 输入:n 1 输出&#xff…

JSP经典设计模式流程分析:JSP+JavaBean设计模式+MVC设计模式

JSP两种经典设计模式 Model1设计模式:JSPJavaBean 架构图 什么是JavaBean JavaBean是一种JAVA语言写成的可重用组件,它遵循特定的编程规范,如类必须是公共的、具有无参构造函数,并提供getter/setter方法等。这里的JavaBean不单单指的是实体…

五、回溯算法-算法总结

文章目录 五、回溯算法5.1 背景5.2 模板5.3 集合类5.3.1 子集5.3.2 子集2 5.4 排列类5.4.1 全排列5.4.2 全排列2 5.5 组合类5.5.1 组合总和5.5.2 电话号码的字母组合 五、回溯算法 5.1 背景 回溯法(backtrack)常用于遍历列表所有子集,是 DF…

OpenAI草莓正式发布,命名o1

一、相关介绍 当地时间 9 月 12 日,OpenAI 推出全新模型 o1,它是该公司计划推出的一系列“推理”模型中的首个,也就是此前业内传闻许久的“Strawberry(草莓)”项目。 据悉,o1 模型在众多任务中能够比人类更…