Unity 有三种编写shader的方式:
surface shaders,
vertex and fragment shaders,
fixed function shaders.编程
Unity建议从ShaderLab语法开始学习shader。Fixed function shader 只能被ShaderLab编写。(可是 vertex and fragment shader 和surface shader 是不限于shaderlab的,可使用Cg/HLSL/GLSL)。编辑器
Shader "MyShader" { Properties { _MyTexture ("My Texture", 2D) = "white" { } //其余属性 } SubShader { // - surface shader or // - vertex and program shader or // - fixed function shader } SubShader { // 一个更简单的shader,能够运行在更弱的硬件上 } Fallback "Legacy Shaders/VertexLit" [CustomEditor] }
首先是一些属性定义,属性名是前面带下划线的,显示在编辑器的名字是后面字符串中的。
接下来是一个或者多个的子着色器,只有一个能被执行,哪个子着色器被使用是由运行的平台所决定的。子着色器是代码的主体,每个子着色器中包含一个或者多个的Pass。
最后指定一个回滚,用来处理全部Subshader都不能运行的状况(好比目标设备实在太老,全部Subshader中都有其不支持的特性)。
CustomEditor是定制编辑器。学习
须要提早说明的是,在实际进行 surface shader 的开发时,咱们将直接在Subshader这个层次上写代码,系统将把咱们的代码编译成若干个合适的Pass。spa