Shader "name" { [Properties] Subshaders [Fallback] } Defines a shader.
每个Shader结构由Shader开始,后面跟一个shader名字的字符串,其次是由大括号包围起来的shader体,shader体中包含属性Properties,以及具体的处理函数Subshaders。
Details
Properties
Shaders can have a list of properties. Any properties declared in a shader are shown in the material inspector inside Unity. Typical properties are the object color, textures, or just arbitrary values to be used by the shader.
SubShaders & Fallback
Each shader is comprised of a list of sub-shaders. You must have at least one. When loading a shader, Unity will go through the list of subshaders, and pick the first one that is supported by the end user's machine. If no subshaders are supported, Unity will try to use fallback shader.
Examples
Here is one of the simplest shaders possible:
// colored vertex lighting Shader "Simple colored lighting" { // a single color property Properties { _Color ("Main Color", Color) = (1,.5,.5,1) } // define one subshader SubShader { Pass { Material { Diffuse [_Color] } Lighting On } } }
This shader defines a color property _Color (that shows up in material inspector as Main Color) with a default value of (1, 0.5, 0.5, 1). Then a single subshader is defined. The subshader consists of one Pass that turns on vertex lighting and sets up basic material for it.