纳金网
标题:
简单的波浪shade
[打印本页]
作者:
烟雨
时间:
2016-7-30 22:01
标题:
简单的波浪shade
最近在学shader,当一个学习笔记记载下。原理就是一个正弦波计算公式来改变plane的vertex坐标。模拟下海浪滚动
Shader "Custom/wave" {
SubShader{
pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
float _W;
float _H;
struct v2f {
float4 pos:POSITION;
fixed4 color : COLOR;
};
v2f vert(appdata_base v)
{
//正弦波公式 a*sin(w*x+t) 公式套用如下
// a振幅(也就是波的平缓程度) w角速度(控制正弦周期,也就是波的周期) x也就是开始的顶点坐标位置没有起伏的平面一开始的时候都是0
//t是一个初相,x=0时的相位;反映在坐标系上则为图像的左右移动。可以简单理解为一个当w*x等于0的时候一开始的一个波形
//通过_Time
//v.vertex.y = v.vertex.y + 0.8*sin(v.vertex.z+ _Time.y);//横向波
//v.vertex.y += 0.2*sin(-length(v.vertex.xz) + _Time.y);//圆形波
//下面两个斜向波形组成海浪的翻滚 关键字_Time:表示使用时间的一个变化因子
v.vertex.y += 0.2*sin(v.vertex.z+ v.vertex.x + _Time.y);//斜向波形
v.vertex.y += 0.3*sin((v.vertex.z - v.vertex.x) + _Time.w);//斜向波形 两个斜向叠加制造一个海浪波
v2f o;
//UNITY_MATRIX_MVP Unity提供的矩阵,M-当前模型矩阵 v-摄像机矩阵,p-投影的矩阵
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);//mul-矩阵乘法,也就是矩阵在3d世界中的显示坐标,前面矩阵影响后面的
o.color = fixed4(v.vertex.y, v.vertex.y, v.vertex.y, 1);
return o;
}
float4 frag(v2f IN) :COLOR
{
return IN.color;
}
ENDCG
}
}
}
复制代码
作者:
神的圣诞结
时间:
2016-7-31 11:08
,不错
作者:
elvaad
时间:
2016-8-1 15:51
不能加贴图吗
作者:
walknight
时间:
2016-9-7 16:15
回复做记号有时间学学
作者:
342391201
时间:
2016-9-8 09:48
O(∩_∩)O谢谢分享...........
作者:
毛毛虫
时间:
2016-9-29 16:24
谢谢分享,很厉害啊!!!!!!
欢迎光临 纳金网 (http://wwww.narkii.com/club/)
Powered by Discuz! X2.5