ShaderLab结构

Shader ShaderName
{
    //属性
    Properties
    {
         属性名称(面板上显示的属性名称, 属性类型) = 默认值   
    }

    //Shader文件可以包含多个Subshader语义块,Unity扫描所有的Subshader,然后选择第一个可以在平台    上执行的Subshader
    Subshader
    {
        //Subshader标签是一个键值对,用来告诉引擎何时以及如何渲染这个对象
        //如控制渲染顺序,对着色器分类,
        Tags{ 键1 = 值1 键2 = 值2 ......  }
        

        //渲染状态
        //如, 设定剔除模式(Cull), 设置深度测试(ZTest), 
        [RenderSetup]
        
        //渲染管线
        Pass{
            
            [Name]//为了在Shader中使用properties中声明的属性,需要定义一个与该类型相匹配的变量

            //Pass中也可以设置标签,也是用来告诉引擎如何渲染该物体。
            //但是与Subshader中不同,一般有LightMode定义该Pass在Unity的渲染流水线中的角色
            //RequireOptions指定满足某些条件时才渲染该Pass
            [Tags]

            [RenderSetup]

        }
        

        //告诉Unity如果所有的Subshader都运行不了就运行这个最低的
        Fallback "name"
        或者
        Fallback off
    }
}

参考:《 Unityshader入门精要 》

你可能感兴趣的:(UnityShader)