unity之风吹草动雾shader

// Upgrade NOTE: replaced tex2D unity_Lightmap with UNITY_SAMPLE_TEX2D

Shader "Unlit/Grass"
{
Properties {
_MainTex ("Grass Texture", 2D) = "white" {}
_TimeScale ("Time Scale", float) = 1
_alphaValue("alphavalue",range(0,1))=0.5
_Color("Color",Color) = (1,1,1,1)
}

SubShader{
Tags {"Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"}
Pass{
Tags{ "LightMode"="ForwardBase" }
ZWrite On
Cull Back
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fog

#include "UnityCG.cginc"
#include "Lighting.cginc"

sampler2D _MainTex;
float4 _Color;
half _TimeScale;
fixed _alphaValue;
struct a2v {
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
float2 texcoord1 : TEXCOORD1;
};
struct v2f {
float4 pos : SV_POSITION;
float2 uv : TEXCOORD0;
float2 uv2 : TEXCOORD1;
UNITY_FOG_COORDS(2)
};
v2f vert(a2v v){
v2f o;
float4 offset = float4(0,0,0,0);
offset.x = sin(3.1416 * _Time.y * clamp(v.texcoord.y-0.5, 0, 1)) * _TimeScale;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex + offset);
o.uv = v.texcoord.xy;
o.uv2 = ((v.texcoord1.xy * unity_LightmapST.xy) + unity_LightmapST.zw);
UNITY_TRANSFER_FOG(o,o.pos);
return o;
}
fixed4 frag(v2f i) : SV_Target{
fixed4 col = tex2D(_MainTex, i.uv);
col.rgb *= DecodeLightmap(UNITY_SAMPLE_TEX2D(unity_Lightmap, i.uv2)) * _Color;
clip(col.a - _alphaValue);
UNITY_APPLY_FOG(i.fogCoord, col);
return col;
}
ENDCG
}
}
FallBack "Mobile/Diffuse"
}

项目中经常会有草动的效果,此shader可行,

时间: 2024-10-11 17:20:53

unity之风吹草动雾shader的相关文章

【Unity Shaders】Unity里的雾效模拟

写在前面 熟悉Unity的都知道,Unity可以进行基本的雾效模拟.所谓雾效,就是在远离我们视角的方向上,物体看起来像被蒙上了某种颜色(通常是灰色).这种技术的实现实际上非常简单,就是根据物体距离摄像机的远近,来混合雾的颜色和物体本身的颜色即可. Unity里设置雾效有两种方式,一种最简单的就是直接开启全局雾效,也就是在Edit->Render Settings里配置,如下图所示: 而我们只需要把"Fog"选项后面的勾选框打开即可.上图包含了一些设置:雾的颜色,模拟雾采用的方法,

Unity内置的shader include files

Unity内置的shader include files:这些文件都以.cninc结尾, HLSLSupport.cginc:自动包含,一些跨平台编译相关的宏和定义. UnityCG.cginc:常用的全局变量和函数. AutoLight.cginc:光影相关帮助函数,surface shader内部使用此文件. Lighting.cginc:surface shader自动包含,定义了标准的光照模式. TerrainEngin.cginc:地形和植被shader相关的帮助函数.UnityGC.

【Unity Shaders】Mobile Shader Adjustment—— 什么是高效的Shader

本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源(当然你也可以从官网下载). ========================================== 分割线 ========================================== 写在前面 之前学习的各种Shader时,我们从没有考虑在所有平台下的可用性.Unity是一个强大的跨

【Unity Shaders】Mobile Shader Adjustment —— 为手机定制Shader

本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源(当然你也可以从官网下载). ========================================== 分割线 ========================================== 写在前面 在上一篇里,我们学习了一些技巧来初步优化Shader.这次,我们学习更多的技术来实现一个更

unity, 在image effect shader中用_CameraDepthTexture重建世界坐标

我用于渲染_CameraDepthTexture的相机是一个透视相机.正交的情况没试,估计差不多. unity的image effect的机制我们大致都了解:它是画了一个覆盖全屏的quad(具体尺寸和位置未知). 要注意的是image effect使用的投影矩阵并非相机的投影矩阵,而是使用了一个正交投影矩阵(具体形式未知),这一点我卡了好久才意识到,不过一想也很正常合理,毕竟只是想画个全屏quad,直接push个正交矩阵(即切换到2d模式)去画就好了. 虽然image effect使用的投影矩阵

【原创翻译】初识Unity中的Compute Shader

一直以来都想试着自己翻译一些东西,现在发现翻译真的很不容易,如果你直接把作者的原文按照英文的思维翻译过来,你会发现中国人读起来很是别扭,但是如果你想完全利用中国人的语言方式来翻译,又怕自己理解的不到位,反而与作者的愿意相悖.所以我想很多时候,国内的译者也是无奈吧,下次再看到译作也会抱着一些感同身受的态度去读.这是我第一次翻译整篇文章,能力有限,望见谅,翻译不好的地方也希望大家指出来. 其实ComputeShader在Unity中出现已经有蛮长的一段时间了,因为自己一直对Shader比较感兴趣,所

Unity的棋盘格剔除Shader

unity似乎是在5.3之后更新了文档页面,其中有一处棋盘格剔除的脚本 https://docs.unity3d.com/Manual/SL-ShaderSemantics.html 我加了点注释和参数控制,代码如下: Shader "Unlit/Screen Position" { Properties { _MainTex("Texture", 2D) = "white" {} _SizeFactor("SizeFactor&quo

Unity 材质之_stander shader

Unity自带的两个新的Shader, 分别是Standard以及Standard(Specular setup) 如果你没有为你的材质选择这两个Shader之一, 那么你的材质是不会有PBS效果的, 对比一下PBS. 第一幅图是使用了Unity4中的Bumped Specular, 第二幅图使用了Standard(Specular Setup), 值得一提的是为了展现最纯粹的光照效果我特意关掉了PBS的另一大特性, Reflection. 而如果开启了Reflection, 上面的截图差距应该

unity中使用自定义shader进行光照贴图烘培无法出现透明度的坑爹问题

最近开发中在对场景进行光照贴图烘焙时发现一个坑爹问题,在使用自定义shader的时候,shader命名中必须包含Transparent路径,否则烘焙的时候不对alpha通道进行计算,烘焙出来都是狗皮膏药 比如一个shader叫 Shader "xx/UnlitAlphaCutout" 要改为 Shader "xx/Transparent/UnlitAlphaCutout" 才能烘焙出正常的效果,不知道Unity做了什么黑科技,居然在烘焙的时候判断了Transpare