查看: 3194|回复: 5
打印 上一主题 下一主题

[Shaders] 简单的波浪shade

[复制链接]

9903

主题

126

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
53456
精华
316

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2016-7-30 22:01:28 |只看该作者 |倒序浏览

最近在学shader,当一个学习笔记记载下。原理就是一个正弦波计算公式来改变plane的vertex坐标。模拟下海浪滚动
  1. Shader "Custom/wave" {
  2.                 SubShader{
  3.                         pass {
  4.                         CGPROGRAM
  5.                         #pragma vertex vert
  6.                         #pragma fragment frag

  7.                         #include "unitycg.cginc"
  8.                                 float _W;
  9.                         float _H;
  10.                         struct v2f {
  11.                                 float4 pos:POSITION;
  12.                                 fixed4 color : COLOR;
  13.                         };

  14.                         v2f vert(appdata_base v)
  15.                         {
  16.                                 //正弦波公式 a*sin(w*x+t)         公式套用如下
  17.                                 // a振幅(也就是波的平缓程度) w角速度(控制正弦周期,也就是波的周期) x也就是开始的顶点坐标位置没有起伏的平面一开始的时候都是0
  18.                                 //t是一个初相,x=0时的相位;反映在坐标系上则为图像的左右移动。可以简单理解为一个当w*x等于0的时候一开始的一个波形
  19.                                        
  20.                                 //通过_Time
  21.                                 //v.vertex.y = v.vertex.y + 0.8*sin(v.vertex.z+ _Time.y);//横向波
  22.                                 //v.vertex.y += 0.2*sin(-length(v.vertex.xz) + _Time.y);//圆形波

  23.                                 //下面两个斜向波形组成海浪的翻滚  关键字_Time:表示使用时间的一个变化因子
  24.                                 v.vertex.y +=  0.2*sin(v.vertex.z+ v.vertex.x + _Time.y);//斜向波形
  25.                                 v.vertex.y += 0.3*sin((v.vertex.z - v.vertex.x) + _Time.w);//斜向波形 两个斜向叠加制造一个海浪波
  26.                                 v2f o;
  27.                                 //UNITY_MATRIX_MVP Unity提供的矩阵,M-当前模型矩阵 v-摄像机矩阵,p-投影的矩阵
  28.                                 o.pos = mul(UNITY_MATRIX_MVP, v.vertex);//mul-矩阵乘法,也就是矩阵在3d世界中的显示坐标,前面矩阵影响后面的
  29.                                 o.color = fixed4(v.vertex.y, v.vertex.y, v.vertex.y, 1);
  30.                                 return o;
  31.                         }
  32.                         float4 frag(v2f IN) :COLOR
  33.                         {
  34.                                 return IN.color;
  35.                         }

  36.                                 ENDCG
  37.                 }
  38.         }
  39. }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

0

主题

1

听众

138

积分

设计实习生

Rank: 2

纳金币
293
精华
0
沙发
发表于 2016-7-31 11:08:44 |只看该作者
,不错
回复

使用道具 举报

0

主题

8

听众

1134

积分

助理设计师

Rank: 4

纳金币
749
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2016-8-1 15:51:20 |只看该作者
不能加贴图吗
回复

使用道具 举报

0

主题

1

听众

387

积分

设计实习生

Rank: 2

纳金币
143
精华
0
地板
发表于 2016-9-7 16:15:52 |只看该作者
回复做记号有时间学学
回复

使用道具 举报

1

主题

8

听众

1419

积分

助理设计师

Rank: 4

纳金币
33
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2016-9-8 09:48:34 |只看该作者

O(∩_∩)O谢谢分享...........
回复

使用道具 举报

13

主题

8

听众

4583

积分

中级设计师

Rank: 5Rank: 5

纳金币
13
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

6#
发表于 2016-9-29 16:24:38 |只看该作者
谢谢分享,很厉害啊!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-4-29 00:41 , Processed in 0.092339 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部