今天 ,接到了个需求,花草的动画。谈到花草动画,立马就想到顶点动画,让顶点动起来就可以实现了。但是有个问题,所有的草都往一个方向运动,这个就麻烦了。因为在shader里没有随机这种概念,提到最多的是用一张噪声图来模拟。在网上搜索了一下,发现有更好的办法,就是用每个顶点到一个点的距离来控制动画的开始,毕竟每个顶点到同一个点的距离很少是一样的。

float dis = distance (v.vertex,_Pos);

效果如下:

_windSize:控制运动的幅度大小

_windSpeed:控制运动的速度

windRandom:控制每个顶点运动的起点时间

代码如下:

Shader "scenes/flower"
{Properties{_Color ("Color",color) = (1,1,1,1)_MainTex ("Texture", 2D) = "white" {}_windSize ("windSize",vector) = (1,1,1)_windSpeed("windSpeed",vector) = (1,1,1)_windRandom("windRandom",vector) = (1,1,1)}SubShader{Tags { "RenderType"="Opaque" }LOD 100Cull OffPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma multi_compile_fog#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;float4 color : COLOR;};struct v2f{float2 uv : TEXCOORD0;UNITY_FOG_COORDS(1)float4 vertex : SV_POSITION;};sampler2D _MainTex;fixed4 _MainTex_ST;fixed4 _Pos;fixed3 _windSpeed;fixed3 _windSize;fixed3 _windRandom;fixed4 _Color;v2f vert (appdata v){v2f o;float4 vert = v.vertex;float dis = distance (v.vertex,_Pos);vert.xyz += (sin (dis*40*_windRandom.xyz +_Time.y*_windSpeed.xyz)) * v.color.a*0.1*_windSize.xyz;o.vertex = UnityObjectToClipPos(vert);o.uv = TRANSFORM_TEX(v.uv, _MainTex);UNITY_TRANSFER_FOG(o,o.vertex);return o;}fixed4 frag (v2f i) : SV_Target{fixed4 col = tex2D(_MainTex, i.uv) * _Color;clip (col.a -0.5);UNITY_APPLY_FOG(i.fogCoord, col);return col;}ENDCG}}
}

亲,如果您觉得本文不错,愿意给我一些动力的话,请用手机扫描二维码即可向我打赏

                                         打赏

Shader之——花草动画shader相关推荐

  1. 1.逐帧动画shader

    最近项目压力不大,抽时间看了些关于shader和游戏引擎的书籍,准备开始shader的学习. 在网上看到这位前辈(http://blog.sina.com.cn/s/articlelist_23127 ...

  2. Unity——通过Shader 制作精灵动画,瀑布

    //精灵动画 Shader "zhaoguanghui/spriteAction" { Properties { _MainTex ("Base (RGB)", ...

  3. UnityShader之Shader格式篇【Shader资料1】

    关于Shader,在Unity里面我们一般叫做ShaderLab,只要你的职业是与渲染搭边,Unity就与ShaderLab有着直接的关联,你都应该试着去学会它,其实我们在新手未有入门的时候,我们总是 ...

  4. 【shader】UE4 Subsurface Profile shader提取

    尝试把UE4里面的人像提取出来(因为无法直接获得UE4使用的shader代码),这个文章是基于UE4使用的sss.此外还有其他的sss呈现方式. 原作连接https://docs.unrealengi ...

  5. 深入URP之Shader篇5: SimpleLit Shader分析(1)

    SimpleLit.shader 本篇开始分析simple lit shader.我们通过分析unlit shader了解了URP shader的结构,以及一些基础功能.而simple lit sha ...

  6. 深入URP之Shader篇3: Unlit Shader分析[下]

    Unlit shader 上篇中我们分析了Unlit shader的Properties在ShaderGUI中的处理,接下来看Sub Shader. SubShader unlit shader以及其 ...

  7. Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板

    写在之前 Shader变体.Shader属性定义技巧.自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用 ...

  8. 【Unity3D Shader编程】之十三 单色透明Shader 标准镜面高光Shader

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://blog.csdn.net/poem_qianmo/article/details/50878538 作者:毛星云(浅 ...

  9. 【Unity3D Shader编程】之十三 单色透明Shader 标准镜面高光Shader

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

最新文章

  1. 微信js sdk 分享 失败 有时候好 有时候坏
  2. node.js 和 HTML5-Canvas 结合实现截图上传交互
  3. mysql int()_简单谈谈MySQL中的int(m)
  4. iOS开发之解决系统数字键盘无文字时delete键无法监听的技巧
  5. 使用bootstrap的相关配置
  6. H264--编码原理以及I帧B帧P帧--1
  7. 医疗行业软件开发流程-立项阶段
  8. 【IMX6UL开发板试用体验】上手试用与资源使用
  9. B站视频缓存 音频和视频批量合并
  10. 小米无线路由器服务器用户名和密码忘了,小米路由器忘记密码怎么解决?设置新密码登陆方法介绍...
  11. 免费的 XShell 替代品,我推荐这5款软件,一个比一个香!
  12. java多数据库开发evn,Java,在多线程evnironments中通过散列统一划分传入的工作
  13. 做自媒体前期如何开始?
  14. airtest获取当前设备序列号,并连接
  15. 并行算法设计与性能优化 刘文志 第2章 现代处理器特性
  16. php拖拽上传_JS实现的文件拖拽上传功能示例
  17. MATLAB报错:位置 1 处的索引无效。数组索引必须为正整数或逻辑值的一种解决办法
  18. Unity3D 游戏开发之内存优化
  19. 通过调试 Nginx 源码来定位有趣 Nginx 转发合并斜杠和编码问题
  20. 通过GitHub Pages 搭建 Hexo 的个人博客

热门文章

  1. MapKit 教程: 覆盖物
  2. 1.6 中国大数据地图
  3. Wikidata数据库表说明
  4. mysql win10 64安装_win10下mysql 8.0.16 winx64安装图文最新教程
  5. 【比赛实战篇】智能算法赛:智慧海洋建设Top1方案代码
  6. 23本科毕业一年,从事C语言单片机工作一年半了,我都不知道以后干嘛了
  7. Go数据结构与算法-双向链表
  8. (Note)多光谱图像(MSI)和高光谱图像(HSI)
  9. 羽坛神雕侠侣 指金为婚
  10. 21:Integer Intervals