Shader中,编译指令分为两种,一种是常规的编译指令,也就是顶点片元着色器(Vetex & Fragment Shader)使用的编译指令,另一种就是表面着色器(Surface Shader)使用的编译指令。二者都使用#pragma语句来编写,并且都需要写在CGPROGRAM和ENDCG之间。区别在于,VF编译指令写在Pass里面,而表面着色器编译指令写在SubShader里面,表面着色器会自行编译到多通道里去,并且需要使用#pragma surface …指令来标识这是一个表面着色器。
VF编译指令:
#pragma vertex name | 编译name函数为顶点着色器 |
#pragma fragment name | 编译name函数为片元着色器 |
#pragma geometry name | 编译name函数为DX10的几何着色器 注:会自动开启#pragma target 4.0 |
#pragma hull name | 编译name函数为DX10的壳着色器 注:会自动开启#pragma target 5.0 |
#pragma domain name | 编译name函数为DX10的域着色器 注:会自动开启#pragma target 5.0 |
#pragma target name | 表明编译目标 参考着色器编译目标等级 |
#pragma only_renderers space_separated_names | 只为指定的渲染平台渲染着色器 包括下列值: d3d9:Direct3D 9 d3d11:Direct3D 11/12 glcore:OpenGL 3.x/4.x gles:OpenGL ES 2.0 gles:OpenGL ES 3.x metal:IOS&Mac Metal d3d11_9x:Direct3D 11 9.x特性等级一般用于WSA平台 xbox360:Xbox 360 xboxone:Xbox One ps4:PlayStation 4 psp2:PlayStation Vita n3ds:Nintendo 3DS wiiu:Nintendo Wii U |
#pragma exclude_renderers space_se |