Shader的方法都是写在CGPROGRAM和ENDCG里面的,其中最重要的方法就是顶点函数和片元函数,这里有两个概念,顶点是指模型表面有很多三角形切面,每个三角形的三个点就是顶点,三角形的面积就是片元
#pragma vertex vert
顶点函数 这条语句只是声明了顶点函数的函数名 vert (简单说就是确定物体的显示位置)
模型表面有很多三角形切面,每个三角形切面的三个顶点都会执行该函数,顶点函数的基本作用是进行坐标变换 把每个三角形的切面的顶点的坐标从模型空间的坐标(三维视图中,顶点相对于建模时确定的中心点的坐标) 。转换到裁剪空间(通过摄像机视角得到的视锥体平面就是裁剪平面,近裁切平面和远裁切平面的距离为视角的深度范围,两个平面与其余四个平面组成的六边形内的空间就是裁切空间)的切面上的坐标。
#pragma fragment frag
片元函数 这里只是声明了片元函数的函数名 frag (简单说就是确定物体要现实的颜色)
片元函数的基本作用 把模型空间上物体每个像素点上的颜色进行变幻计算,然后得到一个颜色值并渲染到裁剪空间中对象对应的像素点上, 函数的返回值是一个颜色值
Shader中语义的作用是进行解释声明 告诉系统是何作用
语义的用法是 参数/方法 : 语义
如果语义跟在参数后面,那么就是对参数进行解释,比如上述的POSITION是对x进行解释,如果语义跟在方法后面,那么就是对返回值进行解释