unityunity3d shaderr 草丛效果人物走入草丛,草的晃动特效特效怎么做

shader实例(三十五)屏幕特效之模糊
今天有空就找到了shaderlab书中的模糊效果学习学习。之前对于模糊效果只是听说过有个叫高斯模糊的算法,但是这个shader不是高斯模糊,它的原理是取当前点周围的六个点的颜色进行叠加,最终也能达到一个不错的模糊效果。
shader代码:
Shader&"Tut/Effects/Blur"&{&&
&&&&Properties&{&&
&&&&&&&&_MainTex&("Base&(RGB)",&2D)&=&""&{}&&
&&&&Subshader&{&&
&&&&&Pass&{&&
&&&&&&&&&&ZTest&Always&Cull&Off&ZWrite&Off&&
&&&&&&&&&&Fog&{&Mode&off&}&&&&&&&&
&&&&&&&&&&&&CGPROGRAM&&
&&&&&&&&&&&&#pragma&fragmentoption&ARB_precision_hint_fastest&&
&&&&&&&&&&&&#pragma&vertex&vert&&
&&&&&&&&&&&&#pragma&fragment&frag&&
&&&&&&&&&&&&#include&"UnityCG.cginc"&&
&&&&&&&&&&&&struct&v2f&{&&
&&&&&&&&&&&&&&&&float4&pos&:&POSITION;&&
&&&&&&&&&&&&&&&&float2&uv&:&TEXCOORD0;&&
&&&&&&&&&&&&&&&&//&启用3个纹理坐标,就能使用6个tex2D&&
&&&&&&&&&&&&&&&&float4&uv01&:&TEXCOORD1;&&
&&&&&&&&&&&&&&&&float4&uv23&:&TEXCOORD2;&&
&&&&&&&&&&&&&&&&float4&uv45&:&TEXCOORD3;&&
&&&&&&&&&&&&};&&
&&&&&&&&&&&&float4&&&
&&&&&&&&&&&&sampler2D&_MainT&&
&&&&&&&&&&&&v2f&vert&(appdata_img&v)&{&&
&&&&&&&&&&&&&&&&v2f&o;&&
&&&&&&&&&&&&&&&&o.pos&=&mul(UNITY_MATRIX_MVP,&v.vertex);&&
&&&&&&&&&&&&&&&&o.uv.xy&=&v.texcoord.&&
&&&&&&&&&&&&&&&&//&将uv向右上和左下做偏移,*2放大2倍&&
&&&&&&&&&&&&&&&&o.uv01&=&&v.texcoord.xyxy&+&offsets.xyxy&*&float4(1,1,&-1,-1);&&
&&&&&&&&&&&&&&&&o.uv23&=&&v.texcoord.xyxy&+&offsets.xyxy&*&float4(1,1,&-1,-1)&*&2.0;&&
&&&&&&&&&&&&&&&&o.uv45&=&&v.texcoord.xyxy&+&offsets.xyxy&*&float4(1,1,&-1,-1)&*&3.0;&&
&&&&&&&&&&&&&&&&return&o;&&&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&half4&frag&(v2f&i)&:&COLOR&{&&
&&&&&&&&&&&&&&&&half4&color&=&float4&(0,0,0,0);&&
&&&&&&&&&&&&&&&&color&+=&0.40&*&tex2D&(_MainTex,&i.uv);&&
&&&&&&&&&&&&&&&&//&这样每个像素点的颜色叠加周围6个点的颜色,形成模糊效果&&
&&&&&&&&&&&&&&&&color&+=&0.15&*&tex2D&(_MainTex,&i.uv01.xy);&&
&&&&&&&&&&&&&&&&color&+=&0.15&*&tex2D&(_MainTex,&i.uv01.zw);&&
&&&&&&&&&&&&&&&&color&+=&0.10&*&tex2D&(_MainTex,&i.uv23.xy);&&
&&&&&&&&&&&&&&&&color&+=&0.10&*&tex2D&(_MainTex,&i.uv23.zw);&&
&&&&&&&&&&&&&&&&color&+=&0.05&*&tex2D&(_MainTex,&i.uv45.xy);&&
&&&&&&&&&&&&&&&&color&+=&0.05&*&tex2D&(_MainTex,&i.uv45.zw);&&&&&&
&&&&&&&&&&&&&&&&return&&&
&&&&&&&&&&&&}&&&
&&&&&&&&&&ENDCG&&
&&&&Fallback&off&&
C#代码【挂在摄像机上】:
using&UnityE&&
using&System.C&&
public&class&_DepthOfField_1&:&MonoBehaviour&&&
&&&&public&Shader&blurShader&&;&&
&&&&private&Material&blurMat&&=&null;&&
&&&&//&假设屏幕宽高为512&&
&&&&//&这里就是一个像素在值域为[0,1]上的值&&
&&&&private&float&onePixelWidth&=&1.0f&/&512.0f;&&
&&&&private&float&onePixelHeight&=&1.0f&/&512.0f;&&
&&&&void&Start&()&&&
&&&&&&&&blurMat&=&new&Material(blurShader);&&
&&&&///&&&
&&&&///&在所有渲染完成后被调用,来渲染图片的后期处理效果&&
&&&&///&source理解为进入shader过滤器的纹理&&
&&&&///&destination理解为渲染完成的纹理&&
&&&&///&&&
&&&&void&OnRenderImage&(RenderTexture&source&,RenderTexture&destination&)&&&
&&&&&&&&blurMat.SetVector("offsets",&new&Vector4(0.0f,&onePixelHeight,&0.0f,&0.0f));&&
&&&&&&&&//&Graphics.Blit拷贝源纹理到目的渲染纹理,通过shader&&
&&&&&&&&//&先修改y偏移&&
&&&&&&&&Graphics.Blit(source,&source,&blurMat);&&
&&&&&&&&//&再修改x偏移&&
&&&&&&&&blurMat.SetVector("offsets",&new&Vector4(onePixelHeight,&0.0f,&0.0f,&0.0f));&&
&&&&&&&&Graphics.Blit(source,&destination,&blurMat);&&
学习来源:shaderlab实例教程
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。(原) 解读Unity中的CG编写Shader系列3——表面剔除与剪裁模式 | Imagination中文技术社区unity2D 游戏 人物走进草丛 草丛晃动效果 怎么实现? - 生活_【北京联盟】
unity2D 游戏 人物走进草丛 草丛晃动效果 怎么实现?
/ 作者:admin
北京联盟摘要:
unity2D 游戏 人物走进草丛 草丛晃动效果 怎么实现?,上一篇:
下一篇: 。人物进入草丛一片区域草丛晃动 , unity2D 的实现办法. 草该怎么处理 人物怎么处理,求破.
进入草丛一片区域草丛晃动 ,
unity2D 的实现办法. 草该怎么处理 人物怎么处理,求破.
unity2D 游戏 人物走进草丛 草丛晃动效果 怎么实现?
免责声明:本站文章除注明来源“北京联盟”外的文章均来自网络和网友投稿,著作权归原作者所有。北京联盟不承担任何连带责任!}

我要回帖

更多关于 unity3d shader教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信