Unity Shader教程之 贴图旋转效果的简单实现

 时间:2024-10-13 15:40:33

1、打开Unity,新建一个工程,在场景中添加一个 Plane,合理放置,具体如下图

Unity Shader教程之 贴图旋转效果的简单实现
Unity Shader教程之 贴图旋转效果的简单实现

2、在场景中导入一张中心对称的图片,具体如下图

Unity Shader教程之 贴图旋转效果的简单实现

3、在工程中新建一个 Shader,命名为 RotateShader,双击打开进行编辑,具体如下图

Unity Shader教程之 贴图旋转效果的简单实现

4、RotateShader 脚本具体代码如下图

Unity Shader教程之 贴图旋转效果的简单实现
Unity Shader教程之 贴图旋转效果的简单实现

5、RotateShader 脚本具体内容如下:Shader "觊皱筠桡Custom/RotateShader" { Properties{ _Color("Color", Color) = (1, 1, 1, 1) _MainTex("Main Texture", 2D) = "white"{} _RSpeed("Rotate Speed", Range(1, 100)) = 10 } SubShader{ tags{"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True" } Blend SrcAlpha OneMinusSrcAlpha Pass{ Name "RotateShader" Cull off CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" float4 _Color; sampler2D _MainTex; float _RSpeed; struct v2f{ float4 pos : POSITION; float4 uv : TEXCOORD0; }; v2f vert (appdata_base v){ v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); o.uv = v.texcoord; return o; } half4 frag(v2f i) : COLOR{ float2 uv = i.uv.xy - float2(0.5, 0.5); uv = float2(uv.x * cos(_RSpeed * _Time.x) - uv.y * sin(_RSpeed * _Time.x), uv.x * sin(_RSpeed * _Time.x) + uv.y * cos(_RSpeed * _Time.x)); uv += float2(0.5, 0.5); half4 c = tex2D(_MainTex, uv) * _Color; return c; } ENDCG } }}

6、脚本编译正确,回到unity,在工程中添加一个材质,可以命名为 RotateMaterial,把材质的 Shader 设置为刚才新建的 RotateShader,并把把贴图设置上,具体如下图

Unity Shader教程之 贴图旋转效果的简单实现

7、然后把材质赋给 Plane,运行场景,具体如效果如下图

Unity Shader教程之 贴图旋转效果的简单实现
Unity Shader教程之 贴图旋转效果的简单实现

8、发现旋转时边缘有重复图案,把贴图的 Wrap Mode 设置为 Clamp,具体如下图

Unity Shader教程之 贴图旋转效果的简单实现

9、运行场景,即会发现边缘的重复图案消失了,具体如下图

Unity Shader教程之 贴图旋转效果的简单实现
  • unity3D怎么插入图片
  • maya自动保存的文件在哪里
  • Unity如何删除场景对象#校园分享#
  • maya展uv贴图步骤
  • 如何使用AE制作文字逐字放大效果
  • 热门搜索
    简单漂亮元旦节手抄报 感恩教师手抄报 普通话手抄报大全简单 祖国我爱你手抄报 尊老爱幼手抄报 亲子阅读手抄报 美丽校园手抄报 庆国庆手抄报简单漂亮 迎国庆手抄报图片 手抄报图片大全2年级