树叶婆娑 shader

效果是树叶摇曳:

 1 Shader "LeafAnim" {
 2 Properties {
 3     _MainTex ("Base (RGB)", 2D) = "white" {}
 4     _Dist ("_Dist", float) = 0.04
 5     _Speed ("_Speed", float) = 0.2
 6 }
 7
 8 SubShader {
 9     Tags {"IgnoreProjector"="True" "RenderType"="Transparent"}
10     LOD 350
11
12 CGPROGRAM
13 #pragma surface surf Lambert vertex:vert
14
15 sampler2D _MainTex;
16
17 struct Input {
18     half2 uv_MainTex;
19 };
20
21 fixed _Dist;
22 fixed _Speed;
23
24 struct appdata_t {
25     float4 vertex : POSITION;
26     float2 texcoord : TEXCOORD0;
27     float3 normal : NORMAL;
28 };
29
30 void vert (inout appdata_t v)
31 {
32     float4 vertex = mul(v.vertex, _Object2World);
33     float a = vertex.x * vertex.z;//沿x和z轴距离作为偏离的一个依据,这样各个地方的叶子偏离的大小就不同,就“摇曳”起来了。    //通过偏移顶点让叶子摇动起来
34      v.vertex.xyz += float3(1,0,1) * _Dist * sin(_Time.w * (_Speed)+a);//dist是整体偏离放大缩小倍数,用Time.w做循环,sin做距离约束
35 }
  void surf (Input IN, inout SurfaceOutput o)   {
    fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
    o.Albedo = c;
  }
36 ENDCG
37 }
38
39 Fallback "Transparent/VertexLit"
40 }

效果肯定是gif才看得到,所以这里就不贴图了,但叶子摇曳的原理依据讲了,并且简单,读者一试便知。

时间: 2024-10-08 23:46:09

树叶婆娑 shader的相关文章

火云开发课堂 - 《Shader从入门到精通》系列 第十八节:在Shader中实现树叶摇动处理

<Shader从入门到精通>系列在线课程 优惠链接:http://edu.csdn.net/combo/detail/90 第十八节:在Shader中实现树叶摇动处理 视频地址: http://edu.csdn.net/course/detail/1441/22682?auto_start=1 交流论坛:http://www.firestonegames.com/bbs/forum.php 工程下载地址:请成为正式学员获取工程 课程截图: 版权声明:本文为博主原创文章,未经博主允许不得转载.

【浅墨Unity3D Shader编程】之四 热带雨林篇: 剔除、深度测试、Alpha测试以及基本雾效合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://hpw123.net/a/C__/kongzhitaichengxu/2014/1222/163.html 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 邮箱: [email protected] QQ交流群:330595914 更多文章尽在:http://www.hpw123.net 本文介绍了Unity中Shader书写中会用到的剔除.深度测试.Alpha测试以及基

Unity3D教程宝典之Shader篇:第十三讲 Alpha混合

转载自风宇冲Unity3D教程学院 Alpha Blending,中文译作Alpha混合 Blending就是控制透明的.处于光栅化的最后阶段. 这里例如我们给一个模型贴一个材质,那么在某个点计算出来颜色值称为源,而该点之前累积的颜色值,叫目标. 语法 Blend Off     不混合 Blend SrcFactor DstFactor  SrcFactor是源系数,DstFactor是目标系数 最终颜色 = (Shader计算出的点颜色值 * 源系数)+(点累积颜色 * 目标系数) 属性(往

[转] Shader Blending

引用:1.Unity3D shader Blending2.[风宇冲]Unity3D教程宝典之Shader篇:第十三讲 Alpha混合 混合(Blending)是计算机呈现渲染结果的最后阶段,每一个像素将被绘制到屏幕上. 混合的基本公式:Blend SrcFactor DstFactor  将前面各种计算产生的颜色(fragment_output )*SrcFactor+当前屏幕的颜色(pixel_color)*DstFactor  等价于float4  result = SrcFactor *

Shader结构

Shader "Custom/BasicDiffuse" { Properties { _EmissiveColor ("Emissive Color", Color) = (1,1,1,1) _AmbientColor  ("Ambient Color", Color) = (1,1,1,1) _MySliderValue ("This is a Slider", Range(0,10)) = 2.5 } SubShader

unity shader笔记

clip函数可以用来切割mesh clip(var); var 的值小于0时就会被切割 表面着色器 其实就是生成了定点片元着色器,相当于一种包装和简化吧 标准的填充结构 struct SurfaceOutput { fixed3 Albedo; // diffuse color fixed3 Normal; // tangent space normal, if written fixed3 Emission; half Specular; // specular power in 0..1 r

火云开发课堂 - 《Shader从入门到精通》系列 第一节:Shader介绍与工程搭建

<Shader从入门到精通>系列在线课程 第一节:Shader介绍与工程搭建 视频地址:http://edu.csdn.net/course/detail/1441/22665?auto_start=1 交流论坛:http://www.firestonegames.com/bbs/forum.php 工程下载地址:请成为正式学员获取工程 课程截图: 项目实例: 版权声明:本文为博主原创文章,未经博主允许不得转载.

Qt 3D的研究(五):Gooch Shader

Qt 3D的研究(五):Gooch Shader Qt 3D的一个很大的优势就是采用数据驱动的方式,将C++和GLSL使用QML来表示,动态语言的优势尽显.在上一次的研究中,我实现了一个非常简单的着色器,接下来,我们可以在此基础上,通过设定着色器的数据,制作出更加绚丽的着色效果.作为开始,我们先从几个非真实渲染(Non-Photorealistic Rendering,NPR)开始吧. 蒋彩阳原创文章,首发地址:http://blog.csdn.net/gamesdev/article/deta

游戏框架其九:网和着色器( Mesh and Shader )

网的重要作用可以导入3DMAX等创建的模型,到游戏中:着色器可以实现特定绚丽的效果.它们的实现如下 1. 网 Mesh的实现: #pragma once //======================================================================== // File: Mesh.h - classes to render meshes in D3D9 and D3D11 // 主要是导入3DMAX等软件生成的模型文件 基于Windows Dir