1.GLSL OpenGL语言
2.HLSL DirectX语言
3.CG 夸平台语言
4.ShaderLab Unity中对上述语言的通用封装
1.从应用程序传递到顶点函数的语义有哪些a2v POSITION 顶点坐标(模型空间下的) NORMAL 法线( 模型空间下) TANGENT 切线(模型空间) TEXCOORD0 ~n 纹理坐标 COLOR 顶点颜色
2.从顶点函数传递给片元函数的时候可以使用的语义 SV_POSITION 剪裁空间中的顶点坐标(一般是系统直接使用) COLOR0 可以传递一组值 4个 COLOR1 可以传递一组值 4个 TEXCOORD0~7 传递纹理坐标
3.片元函数传递给系统 SV_Target 颜色值,显示到屏幕上的颜色
Shader "Mocha/02 secondshader can run"{ SubShader{ Pass{ CGPROGRAM //顶点函数 这里只是声明了顶点函数的函数名 //基本作用 完成顶点坐标从模型空间到剪裁空间的转换(从游戏环境到相机视野屏幕上) #pragma vertex vert //片元函数 这里只是声明了片元函数的函数名 //基本作用 返回模型对应的屏幕上的每一个像素的颜色值 #pragma fragment frag float4 vert(float4 v : POSITION) : SV_POSITION{//通过语义来告诉系统我这个参数是干嘛的 //比如POSITION是告诉系统我需要顶点坐标 //比如SV_POSITION用来解释说明返回值,返回值是剪裁空间下的顶点坐标 //转换剪裁空间坐标的算法,也可直接调用包装好的方法 float4 pos=mul(UNITY_MATRIX_MVP,v); return pos; } fixed4 frag() : SV_Target{ return fixed4(0.5,0.5,1,1); } ENDCG } } Fallback "VertexLit" }