unity3d 植物风力晃动材质 非地形风力
因为需要使用unity3d自带的风力,需要speedtree或者unity3d里面自己做树
这个比较麻烦,当然商城里也有一堆类似的插件,或者类似Custom Tree Importer都比较麻烦
不过我找了一个方便双面顶点动画材质对于小地方可以解急
Shader "Custom/Grass/GrassBending" {
Properties {_Color ("Main Color", Color) = (1,1,1,1)_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5_ShakeDisplacement ("Displacement", Range (0, 1.0)) = 1.0_ShakeTime ("Shake Time", Range (0, 1.0)) = 1.0_ShakeWindspeed ("Shake Windspeed", Range (0, 1.0)) = 1.0_ShakeBending ("Shake Bending", Range (0, 1.0)) = 1.0
}
SubShader {Tags {"Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"}LOD 200Cull OffCGPROGRAM
#pragma target 3.0
#pragma surface surf Lambert alphatest:_Cutoff vertex:vert addshadow
sampler2D _MainTex;
fixed4 _Color;
float _ShakeDisplacement;
float _ShakeTime;
float _ShakeWindspeed;
float _ShakeBending;
float dist;
float _GrassAlpha;
struct Input {float2 uv_MainTex;float3 worldPos;
};
void FastSinCos (float4 val, out float4 s, out float4 c) {val = val * 6.408849 - 3.1415927;float4 r5 = val * val;float4 r6 = r5 * r5;float4 r7 = r6 * r5;float4 r8 = r6 * r5;float4 r1 = r5 * val;float4 r2 = r1 * r5;float4 r3 = r2 * r5;float4 sin7 = {1, -0.16161616, 0.0083333, -0.00019841} ;float4 cos8 = {-0.5, 0.041666666, -0.0013888889, 0.000024801587} ;s = val + r1 * sin7.y + r2 * sin7.z + r3 * sin7.w;c = 1 + r5 * cos8.x + r6 * cos8.y + r7 * cos8.z + r8 * cos8.w;
}
void vert (inout appdata_full v) {float factor = (1 - _ShakeDisplacement - v.color.r) * 0.5;const float _WindSpeed = (_ShakeWindspeed + v.color.g ); const float _WaveScale = _ShakeDisplacement;const float4 _waveXSize = float4(0.048, 0.06, 0.24, 0.096);const float4 _waveZSize = float4 (0.024, .08, 0.08, 0.2);const float4 waveSpeed = float4 (1.2, 2, 1.6, 4.8);float4 _waveXmove = float4(0.024, 0.04, -0.12, 0.096);float4 _waveZmove = float4 (0.006, .02, -0.02, 0.1);float4 waves;waves = v.vertex.x * _waveXSize;waves += v.vertex.z * _waveZSize;waves += _Time.x * (1 - _ShakeTime * 2 - v.color.b ) * waveSpeed *_WindSpeed;float4 s, c;waves = frac (waves);FastSinCos (waves, s,c);float waveAmount = v.texcoord.y * (v.color.a + _ShakeBending);s *= waveAmount;s *= normalize (waveSpeed);s = s * s;float fade = dot (s, 1.3);s = s * s;float3 waveMove = float3 (0,0,0);waveMove.x = dot (s, _waveXmove);waveMove.z = dot (s, _waveZmove);v.vertex.xz -= mul ((float3x3)_World2Object, waveMove).xz;}
void surf (Input IN, inout SurfaceOutput o) {fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color * _Color;o.Albedo = c.rgb;float dist = distance(_WorldSpaceCameraPos, IN.worldPos);dist = clamp(dist / 300, 0.4, 1.0);o.Alpha = c.a - dist - _GrassAlpha;
}
ENDCG
}
Fallback "Transparent/Cutout/VertexLit"
}
虽然只能一张贴图,但是也能控制alpha
这个也很好扩展
下面四个属性是控制风力大小的
原始shader网址
https://forum.unity.com/threads/custom-vegetation-mesh-wind-sway.305105/
unity3d 植物风力晃动材质 非地形风力相关推荐
- unity3d双面材质_[转]unity3d中创建双面材质
在其它三维软件中设置好的双面材质导入到unity3d中就失去了效果,不过我们可以通过自定义材质来在unity3d中实现双面材质的效果.步骤如下: 1.在资源库中新建一新shader:代码如下: Sha ...
- ue4风格化材质_ue4商城资源Stylized Terrain Pack of 50 Materials50种材质风格化地形包
Unreal Engine虚幻游戏引擎素材资源 Unreal Engine Marketplace –Stylized Terrain Pack of 50 Materials风格化地形包,50种材质 ...
- 离网型风力发电机与并网型风力发电机之间的区别
离网型风力发电机与并网型风力发电机之间的区别: 离网型风力发电机主要是指:不用接连国家用电,就可以发电的,他主要是完全靠风力发电或者是靠太阳能光伏板发电的,是完全靠的大自然的风力或者是太阳光设发电的, ...
- matlab xfoil计算风力,低风速长叶片风力机翼型气动分析及优化研究
太原科技大学 机械工程学院 硕士 2018 TN83 低风速长叶片风力机翼型气动分析及优化研究 Aerodynamic Analysis and Optimization of Airfoil of ...
- Unity3D代码动态修改材质球的颜色
代码动态修改材质球的颜色: gameObject.GetComponent<Renderer>().material.color=Color.red;//当材质球的Shader为标准时,可 ...
- 基于matlab的风力发电,基于matlab的风力发电机组的建模与仿真
基于matlab的风力发电机组的建模与仿真 实验一 :风力发电机组的建模与仿真 姓名: 学号: 一.实验目标: 1.能够对风力发电机组的系统结构有深入的了解. 2.能熟练的利用MATLAB软件进行模块 ...
- 【UE4 006】材质 自适应 地形海拔高度
先看效果图: 可以看到山顶是岩石,山腰和下面都是绿色草地 一.需要用到的资源: 草地: 岩石: 二.蓝图节点 选中系统材质属性节点 设置为自定义材质 这一步设置之后,材 ...
- 【Unity3D】物体、材质的设置、物体位移与旋转
Unity3D和Flash一样,甚至可以说是和C#一样,拖完组件,再写一系列的脚本,完成编程,甚至可以说,就是带编程脚本的3DSMAX.那么如何完成最基本的物体.材质的设置.物体位移与旋转呢?下面用一 ...
- 关于Unity3d模型导入的材质问题
我遇到的问题是,使用网上下好的模型在3dmax中打开,都是正常的有材质的.但是导入到unity3d里面之后,会发现模型都是灰色的,没有材质或者贴图.把模型重新用3dmax导出,调整导出的设置,也没起作 ...
最新文章
- 0709 C语言常见误区----------函数指针问题
- 最简单的方式实现一棵二叉树
- linux mysql 5.6.24_Mysql实例Linux安装MySQL5.6.24使用文字说明
- java excel表格数据导入
- HDU 1727 Hastiness(模拟)
- 安卓下拉框获取序号_中文编程:安卓的右上角菜单
- 【nodejs原理源码赏析(4)】深度剖析cluster模块源码与node.js多线程(上)
- 也许你需要在 Antergos 与 Arch Linux 中查看印度语和梵文?
- 安全工具系列 -- 信息收集(二)
- Office 检测到一个与此文件相关的问题为帮助保护您的计算机,无法打开此文件。
- 金蝶应收应付模块流程_金蝶财务软件里的应收应付模块核算哪些会生
- android博客园蓝牙指令,【安卓相关】蓝牙开发、扫描、通知、发送指令
- Java--制作乱字游戏
- Mybatis 报错Mapper method ‘xxx‘ has an unsupported return type,解决办法
- 为一加七Pro(LineageOs17.1 4.14内核版本)编译KernelSu
- Windows 环境配置Github 的SSH key
- MOFs/氧化硅;MOFs/石墨烯;MOFs/生物相容性水凝胶合成方法
- CSS实现强制换行的解决方法
- c语言中%p和%x的意思
- mysql got signal 11_从库crash一直自动重启(mysqld got signal 11)问题解决