Shader学习笔记_Vertex Shader_几何变换_波
来源:互联网 发布:php 使用aes加密 编辑:程序博客网 时间:2024/06/04 22:43
这篇文章是根据某Unity教学网站的shader教程来写的笔记。
由于本人技术水平方面的欠缺可能会有各种各样严重的错误,没有任何参考价值,欢迎各位大佬指正。
本次由于是根据之前的课程中途开始写的笔记,所以是在先贴出基本的顶点和片段代码块,和操作步骤。
先在Unity中创建Material,shader各一个, 随你命名什么 之后在场景中创建一个plane
在shader中添加如下代码
Shader "Custom/Wave" {SubShader {pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "unitycg.cginc"struct v2f{float4 pos:POSITION;float4 col:Color;};v2f vert(appdata_base v){v2f o;o.pos = mul(UNITY_MATRIX_MVP,v.vertex); <span style="white-space:pre"></span>o.col= fixed4(0,1,1,1);return o;}fixed4 frag(v2f IN):COLOR{return IN.col;}ENDCG } }}还是简要说一下,Unity一共有三种形态, 固定管线 Shader, vertex和fragment shader和SubFace shader
对于固定管线Shader,据说已经在unity5.1中已经完全移除,目前所针对的是顶点和片段shader
一般来说顶点函数用于处理顶点位置,大小,片段函数用于处理像素
目标:顶点和片段shader水波变换
首先在vert函数中加入
v.vertex.y += sin(_Time.y + _Time.y);绑上物体后可以看到物体顶点开始上下的移动...这是因为上述代码是对所有顶点进行上下运动。
_Time是Cg语言中的内置函数 下表可以看到是float4类型 x,y,z,w分别对应如下,下面的t是时间
之后再更改如下
<span style="white-space:pre"></span>v.vertex.y += sin(v.vertex.x + _Time.y);
可以看到plane会沿着 x方向波动,有了似乎是旗帜的效果。
这时可以试着自由更改v.vertex.x为v.vertex.z可以发现会沿z来运动,这时把参数进行乘除法会相应减少波动振幅
咳咳,这似乎好像是一个高中数学叫正弦波的概念……我不太了解。
额,看来得看看数学了
然后再试着更改颜色
o.col= fixed4(v.vertex.y,v.vertex.y,v.vertex.y,1);
由于之前是根据顶点来变换的,所以颜色参数更改为顶点会随着波动上下来变色,会出现一点所谓伪光线的效果
但是这个效果仍然不是很好…
据老师说在04年那本CG语言里提出了用4个正弦波才能模仿出比较好的湖面效果
由于机能限制,我们可以先用两个正选波,可以把相应行改为
v.vertex.y += 0.2 * sin((v.vertex.x + v.vertex.z) + _Time.y);v.vertex.y += 0.3 * sin((v.vertex.x - v.vertex.z) + _Time.w);
可以看到一个斜着的水面效果.
小提示!
如果你尝试更改为
<pre name="code" class="plain">v.vertex.y += sin(length(v.vertex.xz)*2 + _Time.w);
会看到一个很恶心的从原心波动的效果! 根据这个自由扩展吧!
这是我的第一次在CSDN上写博客,之后我会尽量把学习的东西都搬上CSDN上,请大家多多关照。
0 0
- Shader学习笔记_Vertex Shader_几何变换_波
- unity shader 之 几何变换--波
- Unity Shader学习笔记:变换
- OpenGL学习08_几何变换
- OpenGL学习08_几何变换
- Cg入门15:Vertex Shader - 几何变换 —波
- 【OpenCV学习笔记】十四、图像几何变换
- OpenCV学习笔记七:几何变换
- OpenCV学习笔记9-几何变换
- unity shader 之 几何变换--顶点位移
- unity shader 之 几何变换--扭曲
- [Shader学习笔记]一些向量的几何知识
- Unity3D shader(7)——Vertex Shader(顶点几何变换)
- (学习笔记4)BMP位图照片的几何变换
- OPENGL 变换_视图模型变换与部分透视变换_学习笔记
- 图像处理学习笔记之图像的几何变换(2)平移变换
- 图像处理学习笔记之图像的几何变换(3)旋转变换
- 图像处理学习笔记之图像的几何变换(4)镜像变换
- NSURLSession学习笔记(三)Download Task
- JAVA——对象所占内存空间大小的计算
- android优化图片内存
- UVa 11221 - Magic square palindromes.
- 成员变量命名规范,类方法,self
- Shader学习笔记_Vertex Shader_几何变换_波
- CSU 1541- There is No Alternative(克鲁斯卡尔)
- Android打包APK遇到的错误]conversion to dalvik format failed with error 1的解决办法
- 信号量与互斥锁
- Javascript基本语法,与html,C 语言比较
- poj 1200
- VC MainFrame接收SendMessageToDescendants传进消息 CDockablePane 悬浮时接收不到
- JSP中的Tld文件
- Dialog学习之旅