转载自:https://blog.csdn.net/qq_33537945/article/details/79243699
1. 创建一个新的Shader 我取名叫 SecondShader-02
2. 打开 创建的Shader 并删除里面的所有代码
3. 认识 什么是顶点 顶点函数的作用
一个三角面由三个顶点 如图
渲染模型的时候 每一个顶点都会去经过顶点函数的处理 把 模型空间转换到剪裁空间 因为必须知道这些顶点在屏幕上是什么样子后才知道把这个模型渲染到屏幕哪里 第一步先把模型转换到视野里面确定到他在视野屏幕上的一个位置 这个就是顶点函数的作用 也是它最基本的作用 在这个基本作用的基础之上还可以做一些其他的扩展
什么是模型空间 ?
答:每个模型都有一个Mesh 这里存储了它的顶点信息 这个顶点信息就是他的顶点坐标 这个顶点坐标是相对于这个模型的自身中心来说的 这个中心是建模的时候设定的 这个中心是用来计算所有顶点坐标的一个坐标系 这个坐标系称为模型空间和模型坐标系 (模型空间的一个坐标系)
什么是剪裁空间?
答:(暂时理解为转换到二维的屏幕空间 真实不是这样的 便于理解) 现在的顶点坐标是三维的 把这个三维坐标转换成屏幕的二维坐标 在转换二维坐标的时候可以在顶点里面存储一些颜色和我们需要的一些信息或者我们稍微对顶点做一些变换 这样这个模型会有一些变形的效果
4. 认识 什么是片元 片元函数的作用
片元理解为是一个像素 我们这个模型对应到屏幕上的这些像素
在片元函数里可以做什么: 我们这个模型对应到屏幕上的这些像素 这些像素点都会经过片元函数处理 我们可以对每个像素值 像素的颜色做一些 算法的处理 做一些颜色的处理 这样的话就可以显示处理我们想要的效果了
5.总结 顶点函数和片元函数的作用
顶点函数用来确定位置 片元函数 用来去处理模型对应到屏幕的每一个像素他会返回一个颜色值这个颜色值就是模型显示出来的效果
6. 定义顶点函数与片元函数
Shader"Nongxiaodi/seconder"{
// 如果不需要任何属性的话 是可以不设置属性的
SubShader{
Pass{
CGPROGRAM
<span class="hljs-comment">// 定义两个系统函数 由系统自己调用的函数</span>
<span class="hljs-comment">// 顶点函数 这里是声明了,顶点函数的函数名</span>
// 顶点函数的基本作用是: 完成顶点坐标到剪裁空间的转换(从游戏环境转换到视野相机屏幕上)
<span class="hljs-comment">// 片元函数 这里是声明了,片元函数的函数名</span>
// 片元函数的基本作用:返回模型对应屏幕上的每一个像素的颜色值
ENDCG
}
}
Fallback <span class="hljs-string">"VertexLit"</span>
}