unity水面波纹着色器
来源:互联网 发布:淘宝客学生采集群 编辑:程序博客网 时间:2024/06/07 23:37
#unity水波纹
转
Shader "Custom/AnimTextureShader" { Properties { _MainTex("Base (RGB)",2D) = "white"{} // 资源图 _NumTexTiles("Num tex tiles",Vector) = (4,4,0,0) //图片瓦块的数量 4*4 _ReplaySpeed("Replay speed",float) = 4 //纹理移动速度 _Color("Color",Color) = (1,1,1,1) //背景色 } SubShader { Tags { "Queue"="Transparent" "IgnoreProjector" = "True" "RenderType"="Transparent" } Blend One One // 贴图和背景叠加 无Alpha透明通道处理 Blend zero one:仅显示背景的RGB部分 Blend one zero: 仅显示贴图的RGB部分,无Alpha透明通道处理。 Cull Off // cull off 双面都渲染 cull back 单面渲染 Cull Front 剔除正面 Lighting Off //关闭灯光 ZWrite Off Fog{ Color(0,0,0,0) } CGINCLUDE #include"UnityCG.cginc" sampler2D _MainTex; float4 _Color; float4 _NumTexTiles; float _ReplaySpeed; float _Randomize; struct v2f { float4 pos : SV_POSITION; //裁剪空间中的顶点坐标 float4 uv : TEXCOORD0; //顶点的纹理坐标 fixed4 col : COLOR; //顶点颜色 }; float2 Rand(float2 ij) //得到x方向 和y 方向上的随机数 { const float4 a = float4(97.409091034f,54.598150033f,56.205410758f,44.687805943f); float4 result = float4(ij ,ij); for( int i = 0; i < 2 ; i++) { result.x = frac(dot(result,a)); result.y = frac(dot(result,a)); result.z = frac(dot(result,a)); result.w = frac(dot(result,a)); } return result.xy; } v2f vert(appdata_full v) //顶点计算 appdata_full 可用于顶点着色器的输入 { v2f o; float time = (v.color.a*60 + _Time.y) * _ReplaySpeed; float itime = floor(time); float ntime = itime +1; float ftime = time - itime; float2 texTileSize = 1.0f / _NumTexTiles.xy; float4 tile; #if 0 if (_Randomize > 0) { itime = floor(Rand(itime) * 1000); ntime= floor(Rand(ntime) * 1000); } #endif #if 1 tile.xy = float2(itime,floor(itime /_NumTexTiles.x)); tile.zw= float2(ntime,floor(ntime /_NumTexTiles.x)); #endif tile = fmod(tile,_NumTexTiles.xyxy); o.pos= mul(UNITY_MATRIX_MVP, v.vertex); // UNITY_MATRIX_MVP 用于将顶点/方向矢量从模型空间转换到剪裁空间 mul() 矩阵转换函数 o.uv = (v.texcoord.xyxy + tile) * texTileSize.xyxy; //得到UV值 o.col = float4(_Color.xyz * v.color.xyz,ftime); //得到颜色值 return o; } ENDCG Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma fragmentoption ARB_precision_hint_fastest // fragmentoption 用于限制编译出的frag函数 fixed4 frag (v2f i) : COLOR //片元计算 { return lerp(tex2D (_MainTex, i.uv.xy),tex2D (_MainTex, i.uv.zw),i.col.a) * i.col; } ENDCG } } }
http://blog.csdn.net/zjw1349547081/article/details/53929610
阅读全文
0 0
- unity水面波纹着色器
- 水面波纹.shader
- OpenGL 动态波纹效果(着色器)
- Unity创建着色器
- Unity 着色器
- Unity着色器学习
- Unity着色器基础
- OpenGL学习笔记与水面波纹实例
- Unity水面Shader
- 【Unity手册】着色器参考
- Unity Shaders表面着色器
- Unity 简单渐变着色器
- Unity顶点着色器和片段着色器
- Unity Shader 表面着色器(Surface Shader)
- Unity着色器常用关键字及属性
- Unity模型部分隐藏着色器
- 【Unity Shader】一个简单的着色器
- Unity Shader(ShaderLab)着色器简介
- 机器学习——决策树与随机森林
- SQL Server 2008 R2 企业版/开发版/标准版(中英文下载,带序列号)
- 开发中经常用到的20个正则表达式
- 稳定排序和不稳定排序
- 深度解析LoRa与NB-IoT的区别
- unity水面波纹着色器
- Android系统导图
- new和malloc的区别深入解析
- opencv判断摄像头是否断开
- node跨域请求方法小结
- 对Ul下的li标签执行点击事件
- NB-IoT、LoRa的这一波红利到底在哪里?
- selenium之unittest的简单用法(二)
- LightOJ-1010-Knights in Chessboard [规律]