使用Unity实现一个简单的UV动画
来源:互联网 发布:teamviever网络未就绪 编辑:程序博客网 时间:2024/05/22 00:25
这一篇文章中,我们将讲解如何在unity3D中通过shader来实现UV动画,来修改纹理Uv坐标以滚动贴图。
先看效果图
UV动画是一种常用的渲染技巧,经常用来描述水的流动、霓虹灯的闪烁等。实现的原理就是动态修改贴图的UV坐标,使物体表面产生变化。采用不同的算法模型可以实现很多很复杂的效果,以下是shader代码:
Shader "Unlit/MyShader/UVAim"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_ScrollY("Scroll Speed", Float) = 1.0
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// make fog work
#pragma multi_compile_fog
#include "UnityCG.cginc"
float _ScrollY;
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;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex) + frac(float2(0, _ScrollY) * _Time.y);
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
// sample the texture
fixed4 col = tex2D(_MainTex, i.uv);
// apply fog
UNITY_APPLY_FOG(i.fogCoord, col);
return col;
}
ENDCG
}
}
Fallback "VertexLit"
}
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_ScrollY("Scroll Speed", Float) = 1.0
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// make fog work
#pragma multi_compile_fog
#include "UnityCG.cginc"
float _ScrollY;
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;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex) + frac(float2(0, _ScrollY) * _Time.y);
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
// sample the texture
fixed4 col = tex2D(_MainTex, i.uv);
// apply fog
UNITY_APPLY_FOG(i.fogCoord, col);
return col;
}
ENDCG
}
}
Fallback "VertexLit"
}
阅读全文
1 0
- 使用Unity实现一个简单的UV动画
- Unity简单修改UV的动画脚本
- Unity创建UV动画
- Unity Shader uv 动画
- unity基础开发----unity中的UV动画实现代码
- 使用属性动画实现一个简单的加载动画
- unity UV 序列动画 shader
- 【猫猫的Unity Shader之旅】之UV动画
- Unity 动画插件 DOTween 的简单使用
- Unity Shader UV动画(序列帧动画)
- 在 unity 中使用三种简单的方式实现实时时钟动画
- 实现一个简单动画
- Unity Shaders and Effects Cookbook (2-2) 修改 UV 坐标实现 帧动画
- 使用Unity制作一个简单的聊天室
- Unity简单的实现动画三连击脚本
- UV动画:UV映射 + UV旋转 + UV偏移 实现 太空旅行、烟云内旋,旋涡效果
- Unity 3D UV实现小地图
- 使用J2ME技术实现简单的动画
- perl基础学习1
- 等价表达式
- lua function 可变参数
- selenium在eclipse中的使用(详细介绍)
- shell
- 使用Unity实现一个简单的UV动画
- HP-Socket v5.0.1:支持 IPv6 及多 SSL 证书
- perl基础学习-哈希
- python基础——文件读写
- opencv 能读取到图片,但是显示灰色
- perl基础学习-读文件
- ZOJ2345Gold Coins 简单分块
- java transient简介
- 数据结构~算法