- 最后登录
- 2021-7-6
- 注册时间
- 2012-12-27
- 阅读权限
- 90
- 积分
- 76145
- 纳金币
- 53488
- 精华
- 316
|
最近在学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
- }
- }
- }
复制代码 |
|